GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

pytorch

pytorch – 強力なGPUアクセラレーションを備えたPythonのテンソルとダイナミックニューラルネットワーク

投稿日:

強力なGPUアクセラレーションを備えたPythonのテンソルとダイナミックニューラルネットワーク http://pytorch.org


PyTorchはPythonパッケージで、2つの高度な機能を提供します:

  • 強いGPU加速を用いたテンソル計算(NumPyなど)
  • テープベースのオートグラッドシステムで構築されたディープニューラルネットワーク

NumPy、SciPy、CythonなどのPythonパッケージを再利用して、必要に応じてPyTorchを拡張することができます。

私たちは早期リリースのベータ版です。 いくつかの冒険と荒い縁を期待してください。

システム 2.7 3.5
Linux CPU
Linux GPU
Windows GPU

PyTorchの詳細

詳細レベルでは、PyTorchは次のコンポーネントで構成されるライブラリです。

トーチ NumPyのような強力なGPUサポートを備えたTensorライブラリ
torch.autograd トーチ内のすべての微分可能なテンソル操作をサポートするテープベースの自動微分ライブラリ
トーチ.nn 柔軟性を最大限に高めるように設計されたオートグラッドと深く統合されたニューラルネットワークライブラリ
torch.multiprocessing Pythonマルチプロセッシングですが、プロセス全体でトーチのテンソルを魔法のように共有します。 データ読み込みとHogwildトレーニングに役立ちます。
torch.utils 便宜上、DataLoader、Trainerおよびその他のユーティリティ関数
torch.legacy(.nn / .optim) 後方互換性の理由からトーチから移植されたレガシーコード

通常、PyTorchは次のいずれかの方法で使用されます。

  • NumPyの代わりにGPUのパワーを使用する。
  • 最大限の柔軟性とスピードを提供する深い学習研究プラットフォーム

さらに精緻化:

GPU対応テンソルライブラリ

NumPyを使用している場合は、Tensors(別名ndarray)を使用しています。

PyTorchは、CPUまたはGPUのいずれかに存在するTensorsを提供し、膨大な量の計算を高速化します。

我々は、スライシング、インデクシング、数学演算、線形代数、リダクションなどの科学計算のニーズを加速し、適合させるために、さまざまなテンソルルーチンを提供しています。 そして、彼らは速いです!

動的ニューラルネットワーク:テープベースのオートグラッド

PyTorchには、テープレコーダーを使用して再生するニューラルネットワークを構築するユニークな方法があります。

TensorFlow、Theano、Caffe、CNTKなどのほとんどのフレームワークは、世界の静的なビューを持っています。 ニューラルネットワークを構築し、何度も同じ構造を再利用する必要があります。 ネットワークの振る舞いを変えることは、最初から始めなければならないということです。

PyTorchでは、リバースモードの自動微分と呼ばれる手法を使用して、ネットワークがゼロラグまたはオーバーヘッドで任意に動作する方法を変更できます。 私たちのインスピレーションは、このトピックに関するいくつかの研究論文、 トーチオートグラードオートグラードチェーン ナーなどの現在および過去の研究からもたらされます。

このテクニックはPyTorchに特有のものではありませんが、これまでの実装方法の中で最も速いものの1つです。 あなたは狂った研究のスピードと柔軟性を最大限に引き出します。

Python First

PyTorchは、モノリシックなC ++フレームワークへのPythonバインディングではありません。 これは、Pythonに深く組み込まれるように作られています。 あなたはNumPy / SciPy / scikit-learnなどを使うのと同じように自然に使うことができます。あなたの好きなライブラリを使って新しい神経ネットワーク層をPython自体で書くことができ、CythonやNumbaなどのパッケージを使うことができます。 私たちの目標は、必要に応じてホイールを再構築しないことです。

命令的な経験

PyTorchは、直感的で直感的で使いやすく設計されています。 コード行を実行すると、実行されます。 世界の非同期的な視点はありません。 デバッガにドロップしたり、エラーメッセージやスタックトレースを受け取ったりすると、それらを理解するのは簡単です。 スタックトレースは、コードが定義された場所を正確に示します。 スタックトレースが不完全であるか非同期で不透明な実行エンジンが原因で、コードのデバッグに時間を費やすことは決してありません。

ファスト・アンド・リーン

PyTorchは最小限のフレームワークオーバーヘッドを持ちます。 Intel MKLやNVIDIA(cuDNN、NCCL)などのアクセラレーションライブラリを統合して速度を最大化します。 コアでは、CPUとGPU Tensorとニューラルネットワークのバックエンド(TH、THC、THNN、THCUNN)はC99 APIを使って独立したライブラリとして書かれています。 彼らは成熟しており、何年もテストされています。

したがって、PyTorchは非常に高速です – 小規模または大規模なニューラルネットワークを実行するかどうか。

PyTorchのメモリ使用量は、Torchやいくつかの選択肢に比べて非常に効率的です。 GPUのカスタムメモリアロケータを作成して、深い学習モデルが最大のメモリ効率を発揮できるようにしました。 これにより、以前よりも深い学習モデルを訓練することができます。

痛みのない拡張機能

新しいニューラルネットワークモジュールの作成やPyTorchのTensor APIとのインターフェースは、最小限の抽象化を伴って簡単であるように設計されました。

Torch API やSciPyなどの好きなNumPyベースのライブラリを使って、Pythonで新しいニューラルネットワーク層を書くことができます

C / C ++でレイヤーを作成したい場合、効率的で最小限の定型文を使用してcffiに基づく拡張APIを提供します。 書き込まれる必要のあるラッパーコードはありません。 ここでのチュートリアルとここの例を見ることができます

インストール

バイナリ

Condaまたはピップホイール経由でバイナリからインストールするコマンドは、弊社のWebサイトにあります。

http://pytorch.org

ソースから

ソースからインストールする場合は、 Anaconda環境をインストールすることを強くお勧めします。 高品質のBLASライブラリ(MKL)を取得し、Linuxディストリビューションに関係なく、コンパイルされたバージョンを取得できます。

Anacondaをインストールしたら、ここに指示があります。

CUDAサポートでコンパイルする場合は、

CUDAサポートを無効にする場合は、環境変数NO_CUDA=1エクスポートします。

オプションの依存関係をインストールする

Linuxの場合

export CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" # [anaconda root directory]

# Install basic dependencies
conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing

# Add LAPACK support for the GPU
conda install -c pytorch magma-cuda80 # or magma-cuda90 if CUDA 9

macOSについて

export CMAKE_PREFIX_PATH=[anaconda root directory]
conda install numpy pyyaml setuptools cmake cffi typing

PyTorchソースを入手する

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch

PyTorchをインストールする

Linuxの場合

python setup.py install

macOSについて

MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install

ドッカー画像

Dockerfileは、cudaサポートとcudnn v7でイメージを構築するために提供されています。 いつものように構築する

docker build -t pytorch .

また、ランタイムイメージを使用する場合は、Docker Hubのあらかじめ構築されたものを使用して、nvidia-dockerを使用して実行できます。

nvidia-docker run --rm -ti --ipc=host pytorch/pytorch:latest

PyTorchはプロセス間でデータを共有するために共有メモリを使用するため、トーチマルチプロセッシングを使用する場合(マルチスレッドデータローダの場合など)、コンテナが実行するデフォルトの共有メモリセグメントサイズは不十分で、共有メモリサイズを--ipc=host nvidia-docker run --ipc=hostまたは--shm-sizeコマンドラインオプション。

以前のバージョン

以前のPyTorchバージョンのインストール手順とバイナリは、 当社のWebサイトにあります。

入門

あなたが始めるための3つの指針:

コミュニケーション

  • フォーラム:実装、研究などを議論するhttp://discuss.pytorch.org
  • GitHubの問題:バグレポート、機能要求、インストールの問題、RFC、思考など
  • スラック:一般的なチャット、オンラインディスカッション、コラボレーションなどhttps://pytorch.slack.com/ 私たちの余裕のないチャンネルは、パワーユーザーと初心者の健全なバランスを促進するためにのみ招待されています。 余裕のない招待状が必要な場合は、 soumith@pytorch.orgまでpingしてください
  • ニュースレター:ノン・ノイズ、片方向のEメールニュースレター。 ここにサインアップできます: http : //eepurl.com/cbG0rv

リリースと貢献

PyTorchには90日間のリリースサイクル(メジャーリリース)があります。 現在の状態はベータですが、明白なバグはありません。 問題を報告してバグが発生した場合は、お知らせください。

私たちはすべての貢献に感謝します。 あなたがバグフィックスを返すことを計画しているなら、それ以上の議論なしにそれをしてください。

新しい機能、ユーティリティ機能、またはコアの拡張機能を提供する予定の場合は、まず問題を開いて機能をご相談ください。 ディスカッションなしにPRを送信すると、拒否されたPRが発生する可能性があります。なぜなら、われわれはあなたが知っている方向とは異なる方向にコアを取り込んでいるかもしれないからです。

チーム

PyTorchはコミュニティに基づいたプロジェクトで、いくつかの熟練したエンジニアと研究者がそれに貢献しています。

PyTorchは現在、 Adam PaszkeSam GrossSoumith ChintalaGregory Chananによって管理されており、10代の才能豊かな人物が様々な形式と手段で貢献しています。 トレバー・キリーン、サザン・チラルクーシー、セルゲイ・ザゴルイコ、アダム・レアラー、フランシスコ・マッサ、アリーカン・テジャニ、ルカ・アンティガ、アルバン・デスマイゾン、アンドレアス・コプフ、ジェームス・ブラッドベリー、林志林、アントン・ティエン、ギヨーム・ルンプル、マラート・デュカン、ナタリア・ギメルシェイン、クリスチャン・サロフィーン、マーティン・レゾン、エドワード・ヤン、ザカリー・デヴィート。

注:このプロジェクトは、同じ名前のhughperkin / pytorchとは無関係です。 HughはTorchコミュニティの貴重な貢献者であり、TorchとPyTorchの多くの活動に貢献しています。







-pytorch
-, , , , , ,

執筆者: