Torch7 オープンソース PyTorch: Python ファーストのディープラーニング フレームワーク

Torch7 オープンソース PyTorch: Python ファーストのディープラーニング フレームワーク

PyTorch は、次の 2 つの高レベル機能を提供する Python パッケージです。

強力な GPU アクセラレーションによる Tensor 計算 (NumPy に類似) を使用する

テープベースの自動グラッドシステム上に構築されたディープニューラルネットワーク

必要に応じて、お気に入りの Python パッケージ (numpy、scipy、Cython など) を再利用して PyTorch を拡張することもできます。現在、このバージョンは初期ベータ版であり、すぐにさらに多くの機能が追加される予定です。

PyTorch の紹介

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

PyTorch を使用する理由は通常 2 つあります。

強力な GPU を使用するための numpy の代替として;

これまでにない柔軟性とスピードを提供するディープラーニング研究プラットフォームと考えてください。

さらに詳しく説明すると次のようになります。

GPU対応のTensorライブラリ

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

PyTorch は、CPU と GPU をサポートする Tensor を提供しており、計算を大幅に高速化できます。

スライス、インデックス作成、数学演算、線形代数、リダクションなど、さまざまな科学計算ニーズを満たすために、さまざまな高速テンソル ルーチンを提供しています。そして超速いです!

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

PyTorch には、テープレコーダーを使用して再生するという、ニューラル ネットワークを構築するための独自のアプローチがあります。 TensorFlow、Theano、Caffe、CNTK などのほとんどのフレームワークは、世界に対して静的な視点を持っているため、ニューラル ネットワークを構築し、同じ構造を何度も使用する必要があります。ネットワークの動作を変更したい場合は、最初からやり直す必要があります。

しかし、PyTorch では、「リバースモード自動微分化」と呼ばれる手法により、遅延やコストをゼロにしてネットワークの動作を任意に変更できます。私たちは、このトピックに関する多くの研究論文や、autograd、autograd、Chainer などの現在および過去の研究からインスピレーションを得ました。

オートグラッド: https://github.com/twitter/torch-autograd

オートグラッド: https://github.com/HIPS/autograd

チェイナー: http://chainer.org/

この手法は PyTorch に固有のものではありませんが、それでも現時点では最速の実装です。クレイジーな研究に究極のスピードと究極の柔軟性をもたらします。

Pythonファースト

PyTorch は、単なるモノリシック C++ フレームワーク上の Python バインディングではありません。これは Python 上に深く構築されています。 PyTorch は、numpy/scipy/scikit-learn と同じくらい簡単に使用できます。 Cython や Numba などのお気に入りのライブラリやパッケージを使用して、Python で新しいニューラル ネットワーク レイヤーを作成できます。私たちの目標は、できる限り車輪の再発明をしなくて済むようにすることです。

必須の経験

PyTorch は、直線的で直感的、そして使いやすいように設計されています。実行する必要があるコード行がある場合、忠実に実行されます。 PyTorch には、世界に対する非同期のビューがありません。デバッガーを開いたり、エラー コードとスタック トレースを受け取ったりすると、この情報が非常に簡単に理解できることがわかります。スタック トレースは、コードが定義された正確な場所を直接指します。誤った方向や非同期で不透明なエンジンのせいで、デバッグに時間を無駄にしてほしくありません。

ファストリーン

PyTorch には軽量フレームワークがあります。速度を最適化するために、Intel MKL、NVIDIA の CuDNN、NCCL などのさまざまなアクセラレーション ライブラリを統合します。本質的には、CPU および GPU テンソルとニューラル ネットワーク バックエンド (TH、THC、THNN、THCUNN) は、C99 API を備えたスタンドアロン ライブラリとして記述されています。

この構成は成熟しており、長年にわたって使用されてきました。

その結果、実行する必要があるニューラル ネットワークのサイズに関係なく、PyTorch は非常に効率的になります。

PyTorch では、メモリの使用は Torch や他の方法よりも効率的です。ディープラーニング モデルが実行時に最高のメモリ効率を発揮できるように、GPU 用のカスタム メモリ アロケータを作成しました。つまり、同じハードウェアを使用して、以前よりも複雑なディープラーニング モデルをトレーニングできるということです。

拡張が簡単

新しいニューラル ネットワーク モジュールの作成や PyTorch の Tensor API とのインターフェイスは簡単で、それほど抽象的ではありません。

Torch API または Scipy などのお気に入りの numpy ベースのライブラリを使用して、Python で新しいニューラル ネットワーク レイヤーを作成できます。

ネットワーク層を C++ で記述したい場合は、非常に効率的で定型文が少ない cffi (http://cffi.readthedocs.io/en/latest/) に基づく拡張 API が提供されます。

ラッパーコードを記述する必要はありません。ここに例があります: https://github.com/pytorch/extension-ffi

インストール

バイナリ

アナコンダ

conda をインストール pytorch torchvision -c soumith

出典

Anaconda環境の説明

CUDA サポートを使用してコンパイルする場合は、以下をインストールします。

NVIDIA CUDA 7.5 以降

NVIDIA CuDNN v5.x

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

  1. export CMAKE_PREFIX_PATH=[anaconda ルートディレクトリ]  
  2. conda インストール numpy mkl setuptools cmake gcc cffi
  3. conda install -c soumith magma-cuda75 # CUDA 8.0の場合はmagma- cuda80

PyTorchをインストールする

  1. export MACOSX_DEPLOYMENT_TARGET=10.9 # OSXの場合 
  2. pip インストール -r 要件.txt
  3. python setup.py インストール

始める

PyTorch の使い方の学習は、次の 3 つのポイントから始めましょう。

チュートリアル: PyTorch を使い始めるためのチュートリアル。

例: すべてのドメインにわたる PyTorch コードを簡単に理解します。

API リファレンス: http://pytorch.org/docs/

通信する

フォーラム: 実装、研究などについて議論します (http://discuss.pytorch.org)

GitHub の問題: バグ通知、機能リクエスト、インストールの問題、RFC、アイデアなど。

Slack: 一般的なチャット、オンラインディスカッション、コラボレーションなど (https://pytorch.slack.com/)。

電子メールの購読 迷惑メールはありません。PyTorch の重要な通知を一方的に電子メールでプッシュします。購読: http://eepurl.com/cbG0rv.

リリースと貢献

PyTorch のリリース サイクル (メジャー バージョン) は 90 日です。現在のバージョンは v0.1.6 ベータ版であり、リリース前にバグを最小限に抑えることを期待しています。バグを見つけた場合は、下記までご報告ください:

pytorch の最新バージョンは、pytorch.org から入手可能です。

PyTorch に新しい機能、ユーティリティ関数、またはコア拡張機能を追加したい場合は、問題を開いて全員と話し合ってください。注意: 議論なしで送信された PR は、別の方法で解決される可能性があるため、拒否される可能性があります。

次のバージョンでは、次の 3 つの新機能を導入する予定です。

分散型 PyTorch

(すでに試用実装がここにあります: https://github.com/apaszke/pytorch-dist)

Backward of Backward: バックプロパゲーション プロセス中にプロセス最適化を実行します。 Double Backprop や Unrolled GAN などの過去および最近の研究では、このプロパティが必要です。

autograd の遅延実行エンジン: これにより、キャッシュと JIT コンパイラを導入して autograd コードを最適化できるようになります。

開発チーム

PyTorch は、経験豊富なエンジニアと研究者によって開発されたコミュニティ主導のプロジェクトです。

現在、PyTorch は Adam Paszke、Sam Gross、Soumith Chintala によって主導されています。その他の主な寄稿者には、Sergey Zagoruyko、Adam Lerer、Francisco Massa、Andreas Kopf、James Bradbury、Zeming Lin、Tian Yuandong、Guillaume Lample、Marat Dukhan、Natalia Gimelshein などが含まれます。

<<:  TensorFlow から Theano まで: 7 つのディープラーニング フレームワークの水平比較

>>:  ハードウェアクラッキングに耐えられるハッシュアルゴリズムにはどのようなものがありますか?

ブログ    
ブログ    
ブログ    

推薦する

AI(人工知能)について知っておくべきこと

どのような AI テクノロジーが人気があり、人間の生活に影響を与えるでしょうか? [[398271]...

MLOpsの助けにより、AIは開発の黄金期を迎えることになる

12月21日、デロイトコンサルティングが最近発表したレポートでは、企業が一貫した機械学習運用(MLO...

テキストからキーワードを抽出するにはどうすればいいですか? Daguan Dataが使用する3つのアルゴリズムから始めましょう

導入自然言語処理の分野では、膨大なテキストファイルを処理する上で、ユーザーが最も関心を持っている問題...

...

現在世界で最も重要な古典的アルゴリズムトップ10

最近、誰かが StackExchange で、ネットユーザーに現在世界で最も古典的なアルゴリズムのト...

OpenAIの従業員が996の勤務スケジュールを公開、ネットユーザー「本当の競争は強制する必要はない」

OpenAI も 996 で動作することが確認されています (doge)。 『Thinking C...

...

AIとIoTが教育に与える影響

高度なデジタル科学技術の革命は私たちの生活のあらゆる分野に影響を及ぼしており、教育業界も例外ではあり...

5GはAI、クラウド、エッジコンピューティングで爆発的に成長する

5G時代が到来し、あらゆる分野がその将来の発展に向けて準備を進めています。最近、OPPOは、Futu...

人工知能技術は民族言語の保護に大きな可能性を秘めている

現在、経済や文化の交流のグローバル化に伴い、主流言語や共通言語が勢力を増し、不利な立場にある言語は絶...

AIの分野を深く探究しよう!新しい機能が次々と登場し、携帯電話で包括的なスマート体験を提供します

AIは人工知能の略称で、応用分野は多岐にわたります。特に急速な発展の時代において、多くの産業が新しい...

...

...

3省庁:AI分野の大学院生の育成を加速し、世界の科学技術の最先端を掌握

教育部のウェブサイトによると、教育部、国家発展改革委員会、財政部はこのほど、「『双一流』建設大学にお...