PyTorch は、次の 2 つの高度な機能を提供する Python パッケージです。
必要に応じて、NumPy、SciPy、Cython などのお気に入りの Python パッケージを再利用して PyTorch を拡張できます。
トランクの健全性 (継続的統合シグナル) は、hud.pytorch.org で確認できます。
PyTorch の基本を学ぶ
詳細レベルでは、PyTorch は次のコンポーネントで構成されるライブラリです。
成分 | 説明 |
---|---|
トーチ | 強力な GPU サポートを備えた NumPy のような Tensor ライブラリ |
トーチ.オートグラード | torch ですべての微分可能な Tensor 演算をサポートするテープベースの自動微分ライブラリ |
トーチジット | PyTorch コードからシリアル化可能で最適化可能なモデルを作成するためのコンパイル スタック (TorchScript) |
トーチ.nn | autograd と深く統合されたニューラル ネットワーク ライブラリは、最大限の柔軟性を実現するように設計されています |
トーチ.マルチプロセッシング | Python マルチプロセッシングですが、プロセス間でトーチ Tensor の魔法のようなメモリ共有が行われます。データのロードと Hogwild トレーニングに役立ちます |
トーチユーティリティ | DataLoader およびその他の便利なユーティリティ関数 |
通常、PyTorch は次のいずれかとして使用されます。
さらに詳しく:
NumPy を使用している場合は、Tensor (別名 ndarray) を使用していることになります。
PyTorch は、CPU または GPU 上で実行できる Tensor を提供し、計算を大幅に高速化します。
スライス、インデックス付け、数学的演算、線形代数、リダクションなどの科学計算のニーズに合わせて高速化する、さまざまなテンソル ルーチンを提供します。そして彼らは速いです!
PyTorch には、テープ レコーダーを使用して再生するという、ニューラル ネットワークを構築する独自の方法があります。
TensorFlow、Theano、Caffe、CNTK などのほとんどのフレームワークは、世界の静的なビューを持っています。ニューラル ネットワークを構築し、同じ構造を何度も再利用する必要があります。ネットワークの動作方法を変えるということは、最初から始めなければならないことを意味します。
PyTorch では、リバースモード自動微分と呼ばれる技術を使用しています。これにより、遅延やオーバーヘッドをゼロにしながら、ネットワークの動作方法を任意に変更できます。私たちのインスピレーションは、このトピックに関するいくつかの研究論文や、torch-autograd、autograd、Chainer などの現在および過去の研究から得ています。
この手法は PyTorch に固有のものではありませんが、これまでで最も高速な実装の 1 つです。クレイジーな研究に最高のスピードと柔軟性をもたらします。
PyTorch は、モノリシック C++ フレームワークにバインディングする Python ではありません。 Python に深く統合されるように構築されています。 NumPy / SciPy / scikit-learn などを使用するのと同じように自然に使用できます。お気に入りのライブラリを使用し、Cython や Numba などのパッケージを使用して、Python 自体で新しいニューラル ネットワーク層を作成できます。私たちの目標は、必要に応じて車輪の再発明を行わないことです。
PyTorch は、直観的で直線的な考え方で使いやすいように設計されています。コード行を実行すると、そのコードが実行されます。非同期的な世界観はありません。デバッガにドロップしたり、エラー メッセージやスタック トレースを受信したりすると、それらを理解するのは簡単です。スタック トレースは、コードが定義された場所を正確に示します。不正なスタック トレースや非同期で不透明な実行エンジンのせいで、コードのデバッグに何時間も費やすことがないよう願っています。
PyTorch のフレームワークのオーバーヘッドは最小限です。 Intel MKL や NVIDIA (cuDNN、NCCL) などのアクセラレーション ライブラリを統合して、速度を最大化します。その中核となる CPU と GPU Tensor およびニューラル ネットワーク バックエンドは成熟しており、何年にもわたってテストされています。
したがって、小規模または大規模なニューラル ネットワークを実行するかどうかに関係なく、PyTorch は非常に高速です。
PyTorch のメモリ使用量は、Torch やその他の代替手段と比較して非常に効率的です。深層学習モデルのメモリ効率を最大限に高めるために、GPU 用のカスタム メモリ アロケータを作成しました。これにより、以前よりも大規模な深層学習モデルをトレーニングできるようになります。
新しいニューラル ネットワーク モジュールの作成、または PyTorch の Tensor API とのインターフェイスは、最小限の抽象化で簡単に行えるように設計されています。
torch API または SciPy などのお気に入りの NumPy ベースのライブラリを使用して、Python で新しいニューラル ネットワーク層を作成できます。
C/C++ でレイヤーを作成する場合は、効率的で最小限の定型文を使用する便利な拡張 API が提供されます。ラッパーコードを記述する必要はありません。チュートリアルはこちら、例はこちらでご覧いただけます。
Conda または pip ホイール経由でバイナリをインストールするコマンドは、当社の Web サイトにあります: https://pytorch.org/get-started/locally/
NVIDIA の Jetson Nano、Jetson TX1/TX2、Jetson Xavier NX/AGX、Jetson AGX Orin 用の Python ホイールはここで提供されており、L4T コンテナはここで公開されています
JetPack 4.2 以降が必要で、@dusty-nv と @ptrblck がメンテナンスしています。
ソースからインストールする場合は、次のものが必要です。
* PyTorch CI は、Visual Studio Enterprise、Professional、または Community Edition に付属する Visual C++ BuildTools を使用します。 https://visualstudio.microsoft.com/visual-cpp-build-tools/ からビルド ツールをインストールすることもできます。デフォルトでは、ビルド ツールには Visual Studio Code が付属していません。
* Anaconda 環境をインストールすることを強くお勧めします。高品質の BLAS ライブラリ (MKL) を入手し、Linux ディストリビューションに関係なく、制御された依存関係のバージョンを入手します。
環境設定例を以下に示します。
$ source < CONDA_INSTALL_DIR > /bin/activate
$ conda create -y -n < CONDA_NAME >
$ conda activate < CONDA_NAME >
$ source < CONDA_INSTALL_DIR > S cripts a ctivate.bat
$ conda create -y -n < CONDA_NAME >
$ conda activate < CONDA_NAME >
$ call " C:Program FilesMicrosoft Visual Studio<VERSION>CommunityVCAuxiliaryBuildvcvarsall.bat " x64
CUDA サポートを使用してコンパイルする場合は、サポート マトリックスから CUDA のサポートされているバージョンを選択し、次のものをインストールします。
注: サポートされているさまざまな CUDA、CUDA ドライバー、および NVIDIA ハードウェアを備えた cuDNN バージョンについては、cuDNN サポート マトリックスを参照してください。
CUDA サポートを無効にする場合は、環境変数USE_CUDA=0
をエクスポートします。その他の役立つ可能性のある環境変数がsetup.py
にある場合があります。
NVIDIA の Jetson プラットフォーム (Jetson Nano、TX1、TX2、AGX Xavier) 用に構築している場合、Jetson Nano 用の PyTorch をインストールする手順はここで参照できます。
ROCm サポートを使用してコンパイルする場合は、インストールします。
デフォルトでは、ビルド システムは ROCm が/opt/rocm
にインストールされることを想定しています。 ROCm が別のディレクトリにインストールされている場合は、 ROCM_PATH
環境変数を ROCm のインストール ディレクトリに設定する必要があります。ビルド システムは AMD GPU アーキテクチャを自動的に検出します。オプションで、AMD GPU アーキテクチャをPYTORCH_ROCM_ARCH
環境変数で明示的に設定できます。 AMD GPU アーキテクチャ
ROCm サポートを無効にする場合は、環境変数USE_ROCM=0
をエクスポートします。その他の役立つ可能性のある環境変数がsetup.py
にある場合があります。
Intel GPU サポートを使用してコンパイルする場合は、次に従ってください。
Intel GPU サポートを無効にする場合は、環境変数USE_XPU=0
をエクスポートします。その他の役立つ可能性のある環境変数がsetup.py
にある場合があります。
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive
一般
conda install cmake ninja
# Run this command on native Windows
conda install rust
# Run this command from the PyTorch directory after cloning the source code using the “Get the PyTorch Source“ section below
pip install -r requirements.txt
Linux の場合
pip install mkl-static mkl-include
# CUDA only: Add LAPACK support for the GPU if needed
conda install -c pytorch magma-cuda121 # or the magma-cuda* that matches your CUDA version from https://anaconda.org/pytorch/repo
# (optional) If using torch.compile with inductor/triton, install the matching version of triton
# Run from the pytorch directory after cloning
# For Intel GPU support, please explicitly `export USE_XPU=1` before running command.
make triton
MacOSの場合
# Add this package on intel x86 processor machines only
pip install mkl-static mkl-include
# Add these packages if torch.distributed is needed
conda install pkg-config libuv
Windows の場合
pip install mkl-static mkl-include
# Add these packages if torch.distributed is needed.
# Distributed package support on Windows is a prototype feature and is subject to changes.
conda install -c conda-forge libuv=1.39
Linux の場合
新しい C++ ABI を有効にして PyTorch をコンパイルする場合は、まず次のコマンドを実行します。
export _GLIBCXX_USE_CXX11_ABI=1
PyTorch 2.5 以降、XPU を使用した PyTorch ビルドは新旧両方の C++ ABI をサポートすることに注意してください。以前は、XPU は新しい C++ ABI のみをサポートしていました。 Intel GPU サポートを使用してコンパイルする場合は、Intel GPU サポートに従ってください。
AMD ROCm 用にコンパイルしている場合は、まず次のコマンドを実行します。
# Only run this if you're compiling for ROCm
python tools/amd_build/build_amd.py
PyTorch をインストールする
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
python setup.py develop
macOS の場合
python3 setup.py develop
Windows の場合
レガシー Python コードを構築したい場合は、レガシー コードと CUDA での構築を参照してください。
CPUのみのビルド
このモードでは、PyTorch の計算は GPU ではなく CPU で実行されます。
python setup.py develop
OpenMP に関する注意: 望ましい OpenMP 実装は Intel OpenMP (iomp) です。 iomp に対してリンクするには、ライブラリを手動でダウンロードし、 CMAKE_INCLUDE_PATH
とLIB
を調整して構築環境をセットアップする必要があります。ここでの手順は、MKL とインテル OpenMP の両方をセットアップする例です。 CMake のこれらの構成がないと、Microsoft Visual C OpenMP ランタイム (vcomp) が使用されます。
CUDAベースのビルド
このモードでは、PyTorch の計算は CUDA 経由で GPU を活用し、数値計算を高速化します。
NVTX は、CUDA を使用して Pytorch を構築するために必要です。 NVTX は CUDA ディストリビューションの一部であり、「Nsight Compute」と呼ばれます。すでにインストールされている CUDA にインストールするには、CUDA インストールをもう一度実行し、対応するチェックボックスをオンにします。 Nsight Compute を備えた CUDA が Visual Studio の後にインストールされていることを確認してください。
現在、CMake のジェネレーターとして VS 2017 / 2019、Ninja がサポートされています。 PATH
でninja.exe
が検出された場合は、Ninja がデフォルトのジェネレーターとして使用されます。それ以外の場合は、VS 2017 / 2019 が使用されます。
Ninja がジェネレーターとして選択されている場合、最新の MSVC が基礎となるツールチェーンとして選択されます。
Magma、oneDNN、別名 MKLDNN または DNNL、Sccache などの追加ライブラリが必要になることがよくあります。これらをインストールするには、インストール ヘルパーを参照してください。
他の環境変数構成については、build_pytorch.bat スクリプトを参照してください。
cmd
:: Set the environment variables after you have downloaded and unzipped the mkl package,
:: else CMake would throw an error as `Could NOT find OpenMP`.
set CMAKE_INCLUDE_PATH = {Your directory}mklinclude
set LIB = {Your directory}mkllib; %LIB%
:: Read the content in the previous section carefully before you proceed.
:: [Optional] If you want to override the underlying toolset used by Ninja and Visual Studio with CUDA, please run the following script block.
:: "Visual Studio 2019 Developer Command Prompt" will be run automatically.
:: Make sure you have CMake >= 3.12 before you do this when you use the Visual Studio generator.
set CMAKE_GENERATOR_TOOLSET_VERSION = 14.27
set DISTUTILS_USE_SDK = 1
for /f " usebackq tokens=* " %i in (`"% ProgramFiles(x86) %Microsoft Visual StudioInstallervswhere.exe" -version [15^,17^) -products * -latest -property installationPath`) do call "% iVCAuxiliaryBuildvcvarsall.bat " x64 -vcvars_ver= %CMAKE_GENERATOR_TOOLSET_VERSION%
:: [Optional] If you want to override the CUDA host compiler
set CUDAHOSTCXX = C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.27.29110binHostX64x64cl.exe
python setup.py develop
次の手順を実行することで、(最初にビルドせずに) オプションで cmake 変数の構成を調整できます。たとえば、CuDNN または BLAS の事前検出されたディレクトリの調整は、このような手順で実行できます。
Linux の場合
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
python setup.py build --cmake-only
ccmake build # or cmake-gui build
macOS の場合
export CMAKE_PREFIX_PATH= " ${CONDA_PREFIX :- ' $(dirname $(which conda))/../ ' } : ${CMAKE_PREFIX_PATH} "
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build --cmake-only
ccmake build # or cmake-gui build
また、事前に構築された Docker イメージを Docker Hub からプルし、docker v19.03 以降で実行することもできます。
docker run --gpus all --rm -ti --ipc=host pytorch/pytorch:latest
PyTorch は共有メモリを使用してプロセス間でデータを共有するため、トーチのマルチプロセッシングが使用されている場合 (マルチスレッド データ ローダーなど)、コンテナが実行されるデフォルトの共有メモリ セグメント サイズでは十分ではないため、次のいずれかの方法で共有メモリ サイズを増やす必要があることに注意してください--ipc=host
または--shm-size
コマンド ライン オプションをnvidia-docker run
に指定します。
注: Docker バージョン 18.06 以降でビルドする必要があります
Dockerfile
、CUDA 11.1 サポートおよび cuDNN v8 を使用してイメージをビルドするために提供されます。 PYTHON_VERSION=xy
make 変数を渡して Miniconda で使用する Python バージョンを指定することも、未設定のままにしてデフォルトを使用することもできます。
make -f docker.Makefile
# images are tagged as docker.io/${your_docker_username}/pytorch
CMAKE_VARS="..."
環境変数を渡して、ビルド中に CMake に渡す追加の CMake 変数を指定することもできます。使用可能な変数のリストについては、setup.py を参照してください。
make -f docker.Makefile
さまざまな形式でドキュメントを作成するには、Sphinx と readthedocs テーマが必要です。
cd docs/
pip install -r requirements.txt
その後、 docs/
フォルダーからmake <format>
実行してドキュメントを構築できます。 make
を実行して、利用可能なすべての出力形式のリストを取得します。
katex エラーが発生した場合は、 npm install katex
実行します。問題が解決しない場合は、 npm install -g katex
を試してください。
注: 別のパッケージ マネージャー (
conda
など) を使用してnodejs
インストールした場合、npm
おそらく、nodejs
のバージョンと互換性のないバージョンのkatex
をインストールし、ドキュメントのビルドは失敗します。動作することがわかっているバージョンの組み合わせは、[email protected]
と[email protected]
です。後者をnpm
でインストールするにはnpm install -g [email protected]
を実行します。
以前の PyTorch バージョンのインストール手順とバイナリは、当社の Web サイトで見つけることができます。
始めるための 3 つのポイント:
通常、PyTorch は年に 3 回のマイナー リリースを行います。バグが発生した場合は、問題を提出してお知らせください。
皆様のご貢献に感謝いたします。バグ修正に貢献する予定がある場合は、それ以上の議論をせずに貢献してください。
新しい機能、ユーティリティ関数、または拡張機能をコアに提供する予定がある場合は、まず問題を作成し、その機能について私たちと話し合ってください。議論せずに PR を送信すると、PR が拒否される結果になる可能性があります。これは、あなたが認識しているものとは異なる方向に核心を持っている可能性があるためです。
Pytorch への貢献について詳しくは、「貢献」ページをご覧ください。 PyTorch リリースの詳細については、「リリース」ページを参照してください。
PyTorch はコミュニティ主導のプロジェクトであり、数人の熟練したエンジニアや研究者が貢献しています。
PyTorch は現在、Soumith Chintala、Gregory Chanan、Dmytro Dzhulgakov、Edward Yang、Nikita Shulga によって保守されており、数百人の才能ある個人がさまざまな形や手段で多大な貢献を行っています。網羅的ではありませんが、リストは増え続けています。トレバー・キリーン、ササンク・チラムクルティ、セルゲイ・ザゴルイコ、アダム・レラー、フランシスコ・マッサ、アリカン・テジャニ、ルカ・アンティガ、アルバン・デスメゾン、アンドレアス・ケプフ、ジェームズ・ブラッドベリ、ゼミン・リン、ユアンドン・ティアン、ギョーム・ランプル、マラット・ドゥカン、ナタリア・ギメルシャイン、クリスチャン・サロフィーン、マーティンレゾン、エドワード・ヤン、ザカリー・デヴィート。
注: このプロジェクトは、同じ名前のhuhperkins/pytorchとは無関係です。 Hugh は、Torch コミュニティへの貴重な貢献者であり、Torch と PyTorch の多くのことに貢献してきました。
PyTorch には、LICENSE ファイルにあるように、BSD スタイルのライセンスがあります。