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 支援による意思決定より...

Pythonアルゴリズムの正しい実装の紹介

経験豊富な Python プログラマーにとって、Python アルゴリズムの実装は難しくありません。...

自動運転テストシステムを1つの記事で理解する

[[433515]]自動運転のテストは非常に複雑なシステムです。この記事では、小さなものから大きなも...

...

魚眼カメラと超音波センサーの融合により、鳥瞰図による近距離障害物認識を実現

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

ディープラーニングとデータセンターの関係

ディープラーニングは、教師なし特徴学習または特徴学習とも呼ばれ、人工知能の研究分野の 1 つであり、...

GoogleはコードネームGenesisと呼ばれるAIニュースライティング製品をテストしていると報じられている。

ニューヨーク・タイムズ紙は7月20日、3つの情報源を引用して、グーグルがAI技術を使ってニュース記事...

中国は人工知能研究で米国を追い越している

米スタンフォード大学の報告によると、2020年の学術誌におけるAI関連論文の引用率は中国が20.7%...

顔認識のためのディープラーニングとオブジェクト検出のステップバイステップガイド

[[277051]]これまでの共有を通じて、顔認識の一般的なプロセスを理解しました。主に次のプロセス...

4大産業用ロボット産業の市場分析と産業用ロボットの中長期的発展

中国製造2025の状況下で、イノベーションと起業家精神を奨励し、経済を高品質発展へと転換する中、中国...

...

将来のシステム設計のための機械学習

エリアス・ファロン氏は、電子設計自動化技術の大手プロバイダーである Cadence Design S...