PyTorchは、Metaが開発する深層学習フレームワークです。先に計算グラフ全体を固定するのではなく、コードを実行しながらグラフの形が決まる——いわゆる動的計算グラフ——Kerasの「層を宣言してfit」とは対照的に、Pythonのif文やループと自然に組み合わせる書き方が研究現場で広く採用されています。
動的計算グラフの意味
ニューラルネットの学習では、順伝播で出力を計算し、誤差逆伝播で勾配を求め、勾配降下で重みを更新します(G-171)。この一連の計算を計算グラフとして表現します。
PyTorchの特徴は、実行(Eager)しながらグラフを組み立てる点です。入力の長さや分岐で処理が変わるモデル——可変長系列や条件付き計算——を、デバッグしやすいPythonコードのまま書けます。
| スタイル | グラフの決まり方 | 試験向け |
|---|---|---|
| 動的(PyTorch) | 実行と同時に組み立て | 研究・実験向き。柔軟 |
| 宣言的(Keras等) | 層を先に積んで定義 | 定型モデルを短く記述 |
| 交換フォーマット(ONNX) | 学習後に固定化 | 運用・移植向き |
典型的なワークフロー
- 定義 —
nn.Moduleを継承し、層とforwardを実装 - 順伝播 — 入力テンソルをモデルへ通す
- 損失計算 — 損失関数で誤差を算出
- 逆伝播 —
loss.backward()で勾配を計算(G-171) - 更新 — 最適化手法(Adam等)でパラメータを更新
G-117の「順伝播→損失→逆伝播→更新」というサイクルは、Kerasのfitに隠れていても、PyTorchでは学習ループを明示的に書く形が典型です。試験ではループの細部より、フレームワークがこのサイクルを支える道具と整理すれば十分です。
ハードウェアから見た位置
| 層 | 例 | 役割 |
|---|---|---|
| ハードウェア | GPU、TPU | 並列演算チップ(G-202、TF-055) |
| 実行基盤 | CUDA | GPU上の並列実行 |
| フレームワーク | PyTorch | テンソル演算・自動微分・学習ループ |
| 高水準API | torchvision等 | データセット・定番モデル |
PyTorchはGPUそのものではない——行列演算をGPU上で動かすためのソフトウェア層です。CUDAやGPUと名前を入れ替えないことが重要です。
Keras・JAX・ONNXとの対比
| 名称 | 位置づけ | 試験向けの整理 |
|---|---|---|
| PyTorch | DLフレームワーク本体 | 動的グラフ・研究で広い |
| Keras | TensorFlow上の高水準API | 層を積んでfit |
| JAX | 数値計算+自動微分 | 下位層。Flax等を載せる |
| ONNX | モデル交換フォーマット | 学習後の持ち運び。FWではない |
どれもCNNやTransformerを実装するための道具——AlexNetやLLMそのものではありません(TF-416)。
学習から運用へ
研究室やプロトタイプではPyTorchで実験し、本番環境では別ランタイムへ渡す——という流れがよくあります。
- 学習 — PyTorchでモデル定義・学習
- エクスポート — ONNXなどへ変換
- 推論 — ONNX Runtimeや専用エンジンで高速化(G-406)
2020年代のLLM研究でもPyTorchベースの実装が多く、LoRAやPEFTによるファインチューニングのコード例もPyTorchで語られることが多い——ただし試験では「PyTorch=LoRA」と答える必要はありません。層を分けて整理します。
試験で押さえるポイント
- 定義 — Meta発の深層学習フレームワーク
- 特徴 — 動的計算グラフ(実行しながらグラフを組み立て)
- 役割 — モデル定義・自動微分・GPU学習・推論
- 対比 — Keras(高水準API)、JAX(数値計算基盤)、ONNX(交換フォーマット)、GPU/CUDA(ハード・実行基盤)
すり替えに注意
| 誤った説明 | 正しい理解 |
|---|---|
| PyTorch=Keras | フレームワーク本体 vs TensorFlow上のAPI |
| PyTorch=ONNX | 学習FW vs モデル交換フォーマット |
| PyTorch=CUDA | DLフレームワーク vs GPU実行基盤 |
| PyTorch=GPU | ソフトウェア vs ハードウェア |
| PyTorch=AlexNet | 組み立て道具 vs 特定モデル |
| PyTorch=LLM | 学習ライブラリ vs 言語モデル |
よくある質問
PyTorchは何をするフレームワークですか?
テンソル演算・自動微分・GPU実行を備え、ニューラルネットワークを定義して学習・推論するための深層学習フレームワークです。nn.Moduleで層を組み立て、損失関数と最適化手法を組み合わせて学習ループを回すのが典型です。
PyTorchとKerasは同じですか?
同じではありません。KerasはTensorFlow上の高水準APIで、層を積んでcompile/fitする宣言的スタイルが特徴です。PyTorchはフレームワーク本体で、Pythonの制御構造と組み合わせやすい動的な記述スタイルが特徴です。別エコシステムとして整理します。
PyTorchとONNXは同じですか?
同じではありません。PyTorchは学習・実験のためのフレームワークです。ONNXは学習済みモデルを共通フォーマットで書き出し、別環境へ運ぶための交換規格です。PyTorchで学習したモデルをONNXへエクスポートする、という関係が典型です。