PyTorchは、もともとMeta Platformsによって開発され、現在はLinux Foundationによって支援されているオープンソースの深層学習ライブラリである。これはTorchの後継であり、トランスフォーマーやSGD変種などのアルゴリズムとアーキテクチャの最適化された低レベル実装に基づく高レベルAPIを提供する。このライブラリは、モデルのトレーニングと推論を数行のコードに簡素化し、自動並列化を可能にし、GPUリソースを活用するためのCUDAバインディングを実装している。2025年時点でも、TensorFlowやKerasと並んで最も人気のある深層学習ライブラリの1つであり、ChatGPT、Tesla Autopilot、UberのPyro、Hugging FaceのTransformersなどの商用システムを支えている。
PyTorchは、NumPy配列に似た基本データ型としてテンソルを使用するが、GPU操作をサポートしている。トレーニングは、順伝播中に操作の有向非巡回グラフを構築し、損失関数による逆伝播を可能にする逆方向自動微分システムであるAutogradによって容易になる。このライブラリはAnacondaパッケージマネージャーを介してインストールでき、研究と産業の両方で広く採用されている。
歴史と開発
元のTorchライブラリは、2001年にIdiap Research InstituteによってGPLライセンスでリリースされ、C++とCUDAで書かれ、ニューラルネットワークやサポートベクターマシンなどの手法をサポートしていた。2010年頃、Ronan Collobert、Clement Farabet、Koray KavukcuogluによってTorch7またはLuaTorchとして書き直され、CバックエンドとLuaフロントエンドを備えていた。2016年半ば、開発者はtorch-autogradとChainer(これらはHIPS/autogradから派生)の影響を受け、フロントエンドとバックエンドを分離するためにリファクタリングした。Torch7の開発は2018年に終了し、PyTorchプロジェクトに吸収された。
MetaはCaffe2も運営していたが、2つのフレームワークのモデルは互換性がなかった。2017年9月、MetaとMicrosoftはOpen Neural Network Exchange(ONNX)プロジェクトを創設し、フレームワークをハードウェア固有のランタイムから分離して、NVIDIAのTensorRTなどの実行プロバイダー向けのモデル変換と最適化を可能にした。Caffe2は2018年3月末にPyTorchに統合された。2022年9月、MetaはPyTorchがLinux Foundationの子会社である独立したPyTorch Foundationによって管理されることを発表した。PyTorch 2.0は2023年3月15日にリリースされ、コードを最大2倍高速化するPythonレベルのコンパイラであるTorchDynamoを導入し、主要なクラウドプラットフォーム全体で改善が行われた。
テンソル操作
PyTorchは、同種の多次元長方形数値配列を格納および操作するためにTensorクラス(torch.Tensor)を定義している。テンソルはNumPy配列に似ているが、CUDA対応のNVIDIA GPUで操作できる。このライブラリは、AMDのROCmやAppleのMetal Frameworkなど、他のGPUプラットフォームのサポートも開発している。この柔軟性により、多様なハードウェア環境での効率的な計算が可能になる。
ニューラルネットワークモジュール
torch.nnモジュールは、レイヤーや活性化関数を含むニューラルネットワークの包括的なビルディングブロックのコレクションを提供する。ネットワークは、このモジュールを継承し、forward()関数で操作のシーケンスを定義することによって構築される。この設計は、単純な線形レイヤーから残差ネットワークやU-Netなどの高度な構造まで、複雑なモデルアーキテクチャをサポートし、研究と展開を容易にする。
シリアライゼーションとファイル形式
PyTorchは、モデルの重みをPython pickleファイルに含むZIP64アーカイブと、バイト順などのメタデータを含む独自のファイル形式を使用してモデルを保存および読み込みできる。一般的なファイル拡張子は.ptと.pthである。このシリアライゼーションにより、モデルの永続化と共有が可能になり、本番展開と協調開発に不可欠である。
使用例
次のプログラムは、ライブラリの低レベル機能を示している。nnモジュールを使用して線形レイヤーを持つ単純なニューラルネットワークが定義され、モデルの構築とトレーニングの容易さを示している。この例は、ネットワークの定義、損失関数の指定、Adamなどのオプティマイザーによる逆伝播の実行という中核的なワークフローを強調している。
関連項目
関連トピックには、深層学習ソフトウェアの比較、微分可能プログラミング、DeepSpeed、オープンソース人工知能、PyTorch Lightningが含まれる。これらのリソースは、エコシステムと代替案に関するより広い文脈を提供する。