AI

PyTorchとは?読み方・できること・TensorFlowとの違いと入れ方【2.14対応】

機械学習とディープラーニングの関係性

PyTorch(パイトーチ)は、Pythonでニューラルネットワークを組み、学習させ、推論に使うためのオープンソースのライブラリです。この記事では、PyTorchで何ができるのか、TensorFlowやKerasとどう違うのかを整理したうえで、2026年10月時点の最新版2.14.1を前提にOS別のインストール手順と最小コードを示します。2.x系で起きた変化(torch.compileの導入、TorchServeの開発終了、conda配布の終了)も扱うので、数年前の解説記事で覚えた手順を更新したい人にも使えます。

まとめ

  • PyTorchとは:Meta(旧Facebook)のAI研究部門が開発し、2022年9月からLinux Foundation傘下のPyTorch Foundationが運営する機械学習ライブラリ。ライセンスはBSD-3-Clauseで、商用利用も無料。
  • 最新版は2.14.1(2026年9月30日公開):Python 3.10以上が必要。2026年はおよそ2か月ごとにマイナー版が出ている。
  • インストールは pip が基本:公式のconda配布は2.6以降では行われない。LinuxではそのままpipするとCUDA 13.0版、WindowsではCPU版が入る。GPU版は公式の --index-url を指定する。
  • TensorFlowとの選び方:これから学ぶなら、生成AI・LLMの周辺ツールがPyTorch前提でそろっているPyTorchを選ぶ。既存のTensorFlow資産を使い続ける場合はTensorFlowを優先する。モバイル向けのLiteRTはPyTorchモデルも変換できるので、それだけでTensorFlowを選ぶ理由にはならない。
  • 2.x系での変化:高速化は torch.compile が標準の入口になり、TorchScriptは非推奨になった。推論サーバーのTorchServeは2025年8月にアーカイブされたため、新規採用はしない。

PyTorchとは:読み方・開発元・ライセンス

PyTorchは「パイトーチ」と読みます。Lua言語で書かれた機械学習ライブラリ「Torch」の設計をPython向けに作り直したもので、名前はPythonとTorchを組み合わせています。開発を始めたのはMetaのAI研究部門FAIRで、2016年に開発が始まり、2017年に一般公開されました。

2022年9月12日、PyTorchはLinux Foundationの最上位プロジェクト「PyTorch Foundation」へ移管されました(PyTorch公式ブログの移管告知)。現在はMeta単独の製品ではなく、複数企業が参加する中立の団体が運営しています。

ライセンスは、本体の pyproject.toml に「The main Pytorch project license is BSD-3-Clause.」と明記されています。BSD-3-Clauseは商用利用を認めており、再配布時の条件は著作権表示・条件・免責条項の保持と、権利者や貢献者の名前を許可なく宣伝に使わないことです。なお、PyPIのtorchパッケージのライセンス欄にはApache-2.0やMITなども並びます。これは同梱しているサードパーティ部品のライセンスで、配布物に組み込む場合はそれらの表示義務も確認してください。

torchとPyTorchの違い

Pythonで使うときのパッケージ名とimport名は、どちらも torch です。PyPIの pytorch という名前のパッケージは誘導用の空箱で、入れようとするとYou tried to install "pytorch". The package named for PyTorch is "torch"と表示されます。一方、単に「Torch」と書かれている場合は、PyTorchの前身であるLua版を指していることがあります。

PyTorchでできること:画像・言語・音声・生成AI

主な分野と、分野ごとに使う公式・周辺ライブラリは次のとおりです。

PyTorchの仕組み:テンソル・autograd・nn.Module

PyTorchのコードは、ほぼ次の3つの部品の組み合わせでできています。

テンソル:GPUで計算できる多次元配列

テンソル(torch.Tensor)はNumPyの配列に近い多次元配列で、スライスや行列積の書き方もほぼ同じです。違いは、.to("cuda") のように1行でGPUへ移せることと、計算の履歴を記録して微分に使えることです。NumPy自体の基本は「NumPyとは?読み方・インストール・基本的な使い方をPythonで解説」を参照してください。

autograd:計算グラフと勾配の自動計算

requires_grad=True を付けたテンソルから計算すると、PyTorchは計算の手順をその場でグラフとして記録します(define-by-run、動的計算グラフ)。backward() を呼ぶと、そのグラフを逆にたどって勾配を自動で求めます。Pythonの if や for で計算の形が毎回変わってもそのまま微分でき、途中でprintやデバッガーを挟めるのが、PyTorchが研究で好まれた理由です。勾配計算の原理は「誤差逆伝播法とは?連鎖律で勾配を求める仕組みと自動微分の実装判断を解説」で詳しく扱っています。

nn.Module:層とパラメータをまとめる単位

モデルは torch.nn.Module を継承したクラスで定義し、__init__ で層を作り、forward で計算の流れを書きます。層が持つ重みは自動でパラメータとして登録され、model.parameters() でまとめて最適化器(torch.optim)に渡せます。データは Dataset と DataLoader でミニバッチに分けて流します。

PyTorchのインストール:2.14時点のOS別コマンド

2026年10月時点の最新安定版は2.14.1で、PyPIのtorchによるとPython 3.10以上が必要です。PyPIで配布されるのは3.10〜3.14向けです。2.14のリリース告知によるとPython 3.15向けはdownload.pytorch.orgからのみ配布され、3.15では torch.compile を呼ぶとRuntimeErrorになります。compileを使うなら3.14以下にしてください。インストールは仮想環境を作ってからpipで行います。

環境ごとの公式コマンド

公式のGet Startedページのセレクターが2.14.1で表示するコマンドを、環境別に並べると次のとおりです。同じ pip3 install torch torchvision でも、OSによって入るビルドが違う点に注意してください。

OS 計算環境 --index-url の指定
Linux CUDA 13.0 不要(PyPIの既定)
Linux CUDA 12.6 whl/cu126
Linux CUDA 13.2(試験提供) whl/cu132
Linux CPUのみ whl/cpu
Linux AMD GPU(ROCm 7.14) whl/rocm7.14
Windows CPUのみ 不要(PyPIの既定)
Windows CUDA 12.6/13.0/13.2 whl/cu126/cu130/cu132
macOS CPU・Apple GPU(MPS) 不要(CUDAは非対応)

たとえばWindowsでCUDA 13.0版を入れる場合と、LinuxでGPUを使わない場合のコマンドは次のようになります。

# Windows・CUDA 13.0
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130

# Linux・CPUのみ(CUDA版より大幅に小さい)
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cpu

CUDA版は、ドライバーの対応範囲とGPUの世代の両方で選びます。CUDA 13.x版はMaxwell・Pascal・Volta世代(GTX 10シリーズやTesla V100など)に対応しないため、PyTorchの告知どおりこれらのGPUではCUDA 12.6版を選びます。CUDAとドライバーの関係は「CUDAとは?読み方・仕組み・CUDAコア・バージョン13までNVIDIAのGPU並列計算を解説」を参照してください。

condaとtorchaudioの扱い

以前の解説記事でよく見る conda install pytorch -c pytorch では、公式チャネルから2.6以降を導入できません。旧版の配布は残っています。PyTorch 2.6のリリース告知に「Starting with this release we are not going to publish on Conda」とあり、公式のconda配布は2.6以降では行われません。conda環境を使う場合も、環境の中でpipを実行して入れます。

公式コマンドから torchaudio が外れているのにも理由があります。torchaudioのリポジトリは保守フェーズへの移行を告知しており、最新版の2.11は「torch 2.11以降のすべての版で動く」とされています。torchの版を上げるたびにtorchaudioを入れ直す必要はなく、音声の前処理が要るときだけ pip install torchaudio を追加します。

インストールの確認

入ったかどうかは、次の1行で版とGPUの認識を確かめられます。

python -c "import torch; print(torch.__version__, torch.cuda.is_available())"

NVIDIA GPUがあるのに False と出る場合、多くはCPU版が入っています。Windowsで --index-url を付けずにpipした場合がこれに当たります。pip uninstall torch torchvision で消してから、上の表のCUDA版を入れ直してください。Apple Silicon搭載のMacでは torch.backends.mps.is_available() でGPU(MPS)の可否を確かめます。

PyTorchの基本的な使い方:テンソルから学習・保存まで

ここからのコードは、torch 2.2.2(Python 3.11、macOSのCPU)で実行し、記載の出力を得たものです。使っているAPIは2.14でも変わっていません。

テンソルの演算とNumPyとの変換

四則演算や行列積(@)はNumPyと同じ感覚で書けます。torch.from_numpy() で作ったテンソルは元の配列とメモリを共有するため、片方を書き換えるともう片方も変わります。コピーが必要なら torch.tensor(a) を使います。

import numpy as np
import torch

x = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
y = torch.ones(2, 2)
print(x + y)   # tensor([[2., 3.], [4., 5.]])
print(x @ y)   # tensor([[3., 3.], [7., 7.]])

a = np.array([1.0, 2.0, 3.0])
t = torch.from_numpy(a)   # aとメモリを共有する
a[0] = 100.0
print(t)                  # tensor([100.,   2.,   3.], dtype=torch.float64)
print(t.numpy())          # [100.   2.   3.]

autogradによる微分計算の実装例

(w+1)² をw=3で微分すると、理論値は 2w+2=8 です。backward() を呼ぶと、その値が w.grad に入ります。

import torch

w = torch.tensor(3.0, requires_grad=True)
loss = w ** 2 + 2 * w + 1   # (w + 1)^2
loss.backward()
print(w.grad.item())        # 8.0

nn.ModuleとDataLoaderによる学習ループの実装

傾き2.0・切片0.5の直線にノイズを足したデータを、ミニバッチ32件ずつ学習させます。「予測→損失→zero_grad→backward→step」の5行が、画像分類でもLLMのファインチューニングでも変わらないPyTorchの学習の骨格です。device を切り替えるだけで、同じコードがCUDAやApple GPUでも動きます。

import torch
from torch import nn
from torch.utils.data import TensorDataset, DataLoader

torch.manual_seed(0)
X = torch.linspace(-1, 1, 200).unsqueeze(1)
Y = 2.0 * X + 0.5 + 0.1 * torch.randn_like(X)   # 正解: 傾き2.0・切片0.5
loader = DataLoader(TensorDataset(X, Y), batch_size=32, shuffle=True)

class LinearModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(1, 1)

    def forward(self, x):
        return self.fc(x)

if torch.cuda.is_available():
    device = "cuda"
elif torch.backends.mps.is_available():
    device = "mps"
else:
    device = "cpu"

model = LinearModel().to(device)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
loss_fn = nn.MSELoss()

for epoch in range(50):
    for xb, yb in loader:
        xb, yb = xb.to(device), yb.to(device)
        loss = loss_fn(model(xb), yb)
        optimizer.zero_grad()   # 前回の勾配を消す
        loss.backward()         # 勾配を計算
        optimizer.step()        # パラメータを更新

print(f"傾き={model.fc.weight.item():.3f}, 切片={model.fc.bias.item():.3f}")
# CPUでの出力: 傾き=1.982, 切片=0.500

zero_grad() を書き忘れると、前のバッチの勾配が累積し、意図した更新にならず学習が不安定になることがあります。PyTorchは勾配を自動では消さない設計なので、初心者が最初につまずく箇所です。より深いネットワークの組み方は「ニューラルネットワークとは?仕組み・種類・PyTorch実装まで実装目線で解説」で扱っています。

学習済みモデルの保存と読み込み

保存はモデル全体ではなく、パラメータの辞書(state_dict)を保存するのが公式の推奨です。上のコードの続きで次のように書きます。

torch.save(model.state_dict(), "model.pt")

restored = LinearModel()
restored.load_state_dict(torch.load("model.pt", map_location="cpu", weights_only=True))
restored.eval()                       # 推論モードに切り替える
with torch.no_grad():                 # 推論では勾配を記録しない
    print(restored(torch.tensor([[1.0]])))   # tensor([[2.4820]])

torch.load の weights_only は、2.6のリリースノートでセキュリティ対策として既定値が変わりました。現在の既定は True で、任意のPythonオブジェクトを含むファイルは読み込みを拒否します。古い記事のとおりモデル全体を torch.save(model) で保存すると、2.6以降では読み込みでエラーになることがあります。信頼できない配布元のファイルに weights_only=False を付けて読むのは避けてください。

PyTorch 2.x系で変わったこと:compile・TorchScript・TorchServe

2023年3月の2.0以降、性能と配布の面で次の3点が変わりました。2020年前後の記事で覚えた知識は更新が必要です。

高速化の入口はtorch.compile

torch.compile は、2023年3月15日公開の2.0で導入された機能です。既存のモデルを1行包むだけで、初回の呼び出し時にグラフを取り出して最適化したコードを生成します。

import torch
from torch import nn

model = nn.Sequential(nn.Linear(1, 16), nn.ReLU(), nn.Linear(16, 1))
compiled = torch.compile(model)   # 初回の呼び出し時にコンパイルされる
x = torch.randn(8, 1)
print(torch.allclose(compiled(x), model(x)))   # True

初回のコンパイルに数秒から数分かかるため、数回しか呼ばない処理では逆に遅くなります。同じ形の入力を何千回も流す学習ループや推論で使ってください。

TorchScriptは非推奨

モデルをPythonから切り離して保存・実行するTorchScript(torch.jit)は、PyTorch本体のソース(torch/jit/__init__.py)に「TorchScript is deprecated, please use torch.compile instead.」と書かれています。Hugging Face Transformersもv5でTorchScript対応を削除しました。新しくモデルを書き出すなら、torch.export か、他の実行環境へ持ち出せるONNX形式を使います。ONNXへの変換は「ONNXとは?.onnxファイルの中身・変換・ONNX Runtimeでの推論【onnx 1.23対応】」で解説しています。

TorchServeの開発終了と代替推論基盤

PyTorch公式の推論サーバーだったTorchServeは、GitHubリポジトリが2025年8月7日にアーカイブされました。READMEには「no planned updates, bug fixes, new features, or security patches」とあり、脆弱性が見つかっても修正されません。新規には採用しないでください。代わりの選択肢(Triton Inference Server、KServe、LLMならvLLMなど)は「モデルサービングとは?推論APIの構成とKServe・Triton・BentoMLの選定基準を解説【2026年版】」で比べています。

PyTorchとTensorFlow・Kerasの違いと選び方

比較対象になりやすいTensorFlowとKerasの現在の位置づけを表にまとめます。

項目 PyTorch TensorFlow Keras
開発・運営 PyTorch Foundation Google Google(Kerasチーム)
最新版(2026年10月) 2.14.1 2.21.0 3.15.1
位置づけ 深層学習の基盤 深層学習の基盤 複数基盤の上で動く高レベルAPI
計算の実行方式 逐次実行が既定 Eager実行が既定(2.0以降) 選んだ基盤に従う
モバイル・エッジ展開 ExecuTorch LiteRT(旧TensorFlow Lite) 基盤側の仕組みを使う

計算グラフの方式は、かつて最大の違いでした。TensorFlow 1.x はグラフを先に定義してから実行する方式(define-and-run)で、PyTorchの逐次実行のほうがデバッグしやすいと言われていました。TensorFlowも2.0からEager実行が既定になり、この差は現在ほぼありません。

Kerasは、Keras 3のREADMEにあるとおりJAX・TensorFlow・PyTorchを切り替えて動くマルチバックエンドの枠組みになりました。「KerasはTensorFlow専用の簡単API」という理解は古く、PyTorchの上でKerasを使うこともできます。TensorFlow側の詳細は「TensorFlowをPythonで使う方法:対応版・インストール・GPU設定と動くコード【2026年10月】」を参照してください。

PyTorchとTensorFlowの用途別選定基準

これから機械学習を学ぶ人、LLMや画像生成のモデルを動かしたい人は、PyTorchを選んでください。Hugging Face TransformersがPyTorch専用になったことで、公開モデルの多くはPyTorchで読み込む前提になっています。

TensorFlowを選ぶ理由が残るのは、社内に学習済みのTensorFlowモデルや学習パイプラインがある場合、既存のTensorFlowからLiteRTへの変換工程を使い続ける場合、ブラウザーやNode.jsでTensorFlow.jsを使う場合です。端末に載せること自体は理由になりません。LiteRTはPyTorchモデルの変換経路(LiteRT Torch)を公式に用意しています。

PyTorchが向かない環境と注意点

次のどれかに当てはまる場合は、導入前に環境か計画を見直してください。

  • Intel CPUのMac:PyPIにmacOS(x86_64)向けのwheelがあるのは2.2.2が最後です。それ以降の版を使うには、Apple Silicon搭載のMacかLinux・Windowsのマシン、またはGoogle Colabなどのクラウド環境が要ります。
  • Python 3.9以前:2.14はPython 3.10以上が必要です。古いPythonのままpipすると、要件を満たす古いtorchが入るか、インストールに失敗します。
  • Apple GPU(MPS)での学習:一部の演算はMPSに未実装で、CPUへの切り替えやエラーが起きます。大きなモデルの学習はCUDA環境で行い、Macで手軽に動かしたいならApple純正のMLXも候補です(「MLXとは?Apple SiliconでLLMを動かすmlx-lmの導入手順と採用判断」)。
  • 学習コードの量:PyTorchは学習ループを自分で書く設計なので、検証用のログ出力や複数GPUへの分散まで含めるとコードが長くなります。定型部分を任せたい場合は「PyTorch Lightningのインストール方法とpip install lightning/pytorch-lightningの違い」で紹介しているLightningを併用します。

PyTorchで作ったモデルを業務システムへ組み込むときは、データ準備から推論APIの運用までの設計が別途必要になります。社内で体制を組めない場合は、機械学習モデル開発の支援の利用も検討してください。

よくある質問

PyTorchの読み方は?

「パイトーチ」と読みます。Python(パイソン)とTorch(トーチ)を合わせた名前です。

PyTorchは無料で商用利用できますか?

できます。本体はBSD-3-Clauseで、再配布時に著作権表示・条件・免責条項を残し、権利者や貢献者の名前を許可なく宣伝に使わなければ、商用製品にも組み込めます。同梱するサードパーティ部品のライセンス表示も必要です。

PyTorchとTensorFlowはどっちを学ぶべきですか?

特に制約がなければPyTorchです。Hugging Face Transformersなど生成AIの主要ライブラリがPyTorchを前提にしています。勤務先のシステムがTensorFlowで作られている場合は、そちらに合わせてください。

GPUがなくてもPyTorchは使えますか?

使えます。この記事のコードもすべてCPUで実行しています。大きなモデルの学習には十分なメモリと計算資源が必要です。NVIDIA GPU(CUDA)が代表的ですが、対応するAMD GPU(ROCm)なども利用できます。手元にGPUがなければ、Google Colabの無料枠でもGPUを試せます。ただし、利用制限や空き状況によりGPUを割り当てられない場合があります。

pip install pytorch でインストールできないのはなぜですか?

PyPI上のパッケージ名が torch だからです。pip install torch torchvision と入力してください。GPU版が必要な場合は、OSとCUDAの版に合った --index-url を付けます。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

ほか 7 件の記事からもリンクされています。

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.07.21 テックブログ Apache Tomcatの脆弱性一覧【2026年10月】最新版11.0.27・10.1.61・9.0.123とCVE-2026-59083ほかの影響確認・対応手順
  2. 2026.10.22 テックブログ Tomcatバージョン一覧とサポート期限【2026年10月】9.0系は2027年3月末で終了・9.1系と11.0系への移行判断
  3. 2026.10.21 テックブログ NEC委託先の不正アクセスとは|顧客システム暗号化・情報漏えいの経緯と委託元が点検する正規アカウント
  4. 2026.05.15 テックブログ scrcpyの最新版は5.0|ハードウェアデコード対応とインストール・使い方【2026年10月】
  5. 2026.10.21 テックブログ ふるさとチョイス不正アクセスで445万件流出:対象確認・パスワード変更と再開時期

RELATED POSTS 関連記事

目次