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 つのディープラーニング フレームワークの水平比較

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

ブログ    
ブログ    

推薦する

純粋なテキスト モデルは「視覚的な」表現をトレーニングします。 MITの最新研究:言語モデルはコードで絵を描くことができる

「本を読む」ことしかできない大規模な言語モデルは、現実世界の視覚的認識を備えているのでしょうか?文字...

「概念のドリフト」問題と闘おう! Google が新しい時間認識フレームワークをリリース: 画像認識精度が 15% 向上

機械学習の分野では、コンセプトドリフトという問題が長い間研究者を悩ませてきました。つまり、データの分...

アメリカン・エキスプレスはAIを活用して不正行為を検出し、セキュリティを強化

アメリカン・エキスプレスは長年にわたり、人工知能と認知技術のリーダーとして活躍してきました。大規模で...

GoogleからNvidiaまで、テクノロジー大手はAIモデルを解読するためにレッドチームハッカーを採用している

ChatGPTの一般公開の1か月前に、OpenAIはケニアの弁護士Boru Golloを雇い、AIモ...

エンドツーエンドの自動運転に向けて、Horizo​​n Robotics が Sparse4D アルゴリズムを正式にオープンソース化

Horizo​​n Roboticsは1月22日、純粋な視覚ベースの自動運転アルゴリズムであるSpa...

【ビッグネームが勢揃い、第1話】新小売時代のスマートミドルプラットフォーム

小売業界は急速に進化しています。フロントエンドの入り口とバックエンドのテクノロジーは、変革のたびに絶...

MySQLにおける結合アルゴリズムの実装原理の分析

MySQL には、有名なネスト ループ結合という結合アルゴリズムが 1 つだけあります。他の多くのデ...

自動機械学習でニューラルネットワークを進化させる方法

機械学習に携わるほとんどの人にとって、ニューラル ネットワークの設計は芸術作品の作成に似ています。ニ...

アルゴリズムの視覚化: 理解しにくいコードをゴッホの星空に描く

厳選記事 | 呉嘉楽翻訳 | 黄年校正 | フェン・チェン、ヤオ・ジアリンマイク・ボストック出典 |...

海外メディア:NvidiaはARMアーキテクチャに基づくPCチップを設計しており、早ければ2025年に発売される予定

10月24日、チップ大手のNvidiaが人工知能(AI)コンピューティングチップ市場を独占した。現在...

エラー率が44%減少しました!ニューヨーク大学の最新の「顔生成」は、年齢を自由に変えることが可能で、10代から高齢者まであらゆる人をカバーできる。

現在の「顔認識システム」は老化防止能力が非常に弱く、人の顔が老化すると認識性能が大幅に低下し、一定期...

...

香港大学の黄凱斌氏:6G時代のエッジインテリジェンス、シャノンとチューリングの出会い

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...