プラットフォームハブ

PyTorch(ディープラーニングフレームワーク)

研究と本番の学習の大半で標準となっているディープラーニングフレームワーク。PyTorch Foundationが運営し、eager実行、torch.compile、そしてCUDA・ROCm・Apple Siliconの第一級バックエンドを備えます。

組織PyTorch Foundation(Linux Foundationのプロジェクト、サンフランシスコ)。Meta AI発
ウェブサイトpytorch.org/
ライセンスPyTorch本体およびtorchvision、torchaudio、torchaoライブラリはBSD-3-Clause
価格無料かつオープンソース。本稿執筆時点で、費用がかかるのは実行するハードウェアやクラウドのみ
更新2026年11月13日

モデルと提供内容 #

名称種類位置づけ
PyTorch (torch)
バージョン2.15.0、2026年10月28日リリース
フレームワークテンソル、autograd、nnモジュール、オプティマイザ。ほぼすべてのオープンモデルのリリースの基盤
torch.compile and Inductorツールeagerコードを書き換えずに高速化するグラフキャプチャとカーネル生成
torch.distributed, FSDP2 and pipeliningライブラリマルチGPU・マルチノード学習。2.15からは書き直されたNCCLバックエンドがデフォルト
torchvision, torchaudioライブラリ画像・音声向けのデータセット、変換、リファレンスモデル
ExecuTorchランタイムスマートフォン、組み込みボード、マイクロコントローラ向けのオンデバイス推論
torchaoライブラリ学習・推論向けの量子化と低精度カーネル(int8、FP8、NVFP4)

どんな組織か

このハブは学習コードを書くすべての人のためのページです。2026年において、それはほぼPyTorchを書くことを意味します。このフレームワークは2017年初頭にMetaの研究所から、TorchのPythonファーストな後継として登場しました。eager実行と読みやすいスタックトレースで研究者の支持を集め、2020年までには発表論文においてTensorFlowに取って代わりました。2022年にMetaはガバナンスをLinux Foundation傘下のPyTorch Foundationに移管し、AMD、Google、Microsoft、NVIDIA、Intelなどがメンバーとして参加しています。コミットの最大の割合を占めるのは依然としてMetaです。

PyTorchは、このサイトで扱うほぼすべてのものの土台にあります。Hugging Face Transformersはv5で他のバックエンドを廃止し、PyTorch専用になりました。vLLM、NVIDIA TensorRT-LLM、Apple MLXはいずれもPyTorchモデルを読み込むか変換して使います。新しい研究コードの主な代替はJAXで、TPUで作業するなら知っておく価値があります。

ツールとAPI

インストールはpip install torchか、Get Startedページのセレクタで行います。セレクタは使用するアクセラレータに合ったコマンドを組み立ててくれます。PyTorch 2.15.0(2026年10月28日)はPython 3.11から3.15を必要とし、3.10向けのwheelはもう配布されません。LinuxとWindowsのデフォルトwheelはCUDA 13.2を同梱し、並行してCUDA 13.4のwheelも提供されており、こちらはNVIDIAのRubin世代への実験的サポートを加えています。AMDユーザー向けにはAMDのTheRockパッケージ上に構築されたROCm 7.14とROCm 10.0のwheelがあり、ROCmを同梱するのではなくpipの依存関係として取り込むようになりました。Intel GPUはXPUバックエンドを使います。Macでは、MPSバックエンドにmacOS 15以降が必要で、2.15ではFP8(float8_e4m3fn)、公開APIのtorch.mps.Stream、より高速なデコードカーネルが加わりました。当サイトのPyTorch学習ループのチートシートは日常的に使うAPIを、テンソルの形状とブロードキャストは最初にぶつかるエラーを扱っています。

学習ステップの最小の形は1.0以来変わっていません。

import torch

torch.manual_seed(0)
x = torch.randn(256, 4)
y = (x @ torch.tensor([1.0, -2.0, 0.5, 3.0]) + 0.1).unsqueeze(1)

model = torch.nn.Sequential(torch.nn.Linear(4, 16), torch.nn.ReLU(), torch.nn.Linear(16, 1))
optimiser = torch.optim.Adam(model.parameters(), lr=0.02)
loss_fn = torch.nn.MSELoss()

for step in range(300):
    optimiser.zero_grad()
    loss = loss_fn(model(x), y)
    loss.backward()
    optimiser.step()

print(f"torch {torch.__version__}, final mse {loss.item():.4f}")

当サイトのパイプラインマシンでの期待される出力はtorch 2.14.1, final mse 0.0036で、バージョン文字列はインストールしたものに応じて変わります。各行がなぜそこにあるのかは学習ループの入門レッスンを参照してください。

すべてBSD-3ライセンスで無料です。費用はハードウェアにかかります。つまずきやすい点を、遭遇する順に挙げます。CUDA wheelとドライバの不一致、動的な形状でのtorch.compileの再コンパイルによる停滞、以前は診断が難しかった分散学習のハング(2.15では集団通信が詰まった際にダンプを出力するフライトレコーダーが加わり、助けになります)、そしてMPSバックエンドの演算子カバレッジがCUDAに遅れていることです。

移行メモ

TensorFlowやKerasから: メンタルモデルが、コンパイル済みグラフから1行ずつ実行されるPythonへと切り替わります。tf.keras.Modelは明示的なforwardを持つtorch.nn.Moduleに、model.fitは自分で書くループになり、デフォルトのchannels-lastはchannels-first(N, C, H, W)になります。Kerasのコードを残したいなら、Keras 3はPyTorchバックエンド上で動作します。

JAXから: jax.jitはおおむねtorch.compileに、jax.gradはrequires_gradを持つテンソルに対するloss.backward()に、vmapはtorch.func.vmapに対応します。状態は純粋関数を通して受け渡すのではなくモジュールに保持されるため、便利である一方、合成しにくくなります。

モデル形式: 安全な交換形式はsafetensorsで、Hugging Faceがデフォルトにし、PyTorchが直接読み込めます。torch.saveのpickleは便利ですが読み込み時にコードを実行するため、信頼できるソースからのものだけを読み込んでください。エクスポート経路は、シリアライズ可能なグラフを得るtorch.export、ONNX Runtime向けにtorch.onnx.exportで出力するONNX、モバイル向けのExecuTorchです。フレームワークのリファレンスでこれらを並べて比較しています。

注意点

2.x系ではデフォルトの変更が挙動を静かに変えてきました。2.15ではncclというバックエンド名が書き直されたNCCL実装を選択します。先月動いていたマルチノードジョブが今はハングするなら、TORCH_DIST_USE_NCCL2=0で旧来の経路に戻せます。FSDP2はシャーディングされた勾配とされていない勾配のdtypeを分離するようになり、reduce_dtypeをNoneのままにしていると数値が変わります。毎回のリリースブログの後方互換性のないセクションを読んでください。

古いGPUは対象から外れつつあります。CUDA 13.xはMaxwell、Pascal、Voltaを対象にできないため、GTX 1080やV100には別途CUDA 12.6のレガシーwheelが必要で、そのwheelには新機能が入りません。Python 3.10は2.15で外れ、残っているコードパスも削除される予定です。

ライブラリ自体にテレメトリはありませんが、torch.compileは~/.cache以下に成果物をキャッシュし、torch.hubは初回使用時にGitHubリポジトリからコードをダウンロードします。本番ではバージョンを固定してください。マイナーリリースはおよそ2か月ごとに届き、torch.compileの出力はその間に変わることがあります。ベンダーのフォーク(NVIDIAやAMDのコンテナビルド)に依存している場合、そのバージョン文字列はPyPIのリリースと一致しないことがあり、そのパッチはまだ上流に入っていない可能性があることに留意してください。