読者の皆様へ: 皆様のご要望にお応えするべく、ノイズを削減する機能セットを開発しました。皆様が関心をお持ちのトピックを、EメールとWeb通知で受け取ることができます。新機能をぜひお試しください。
先日のブログ記事で、Facebook副社長のBill Jia氏が、PyTorchの新バージョン1.0を発表した。PyTorchは、Tensor演算によるオープンソースのPython用AIフレームワークパッケージで、強力なGPUアクセラレーションと、テープベースのautodiffシステム上に構築されたディープニューラルネットワークを備える。今回の新リリースで重要なのは、AI中心のプロジェクトを研究フェーズから製品に移行するために必要な時間の短縮と、対象アプリケーションの精度とパフォーマンス向上を両立させている点だ。これらの改善に一役買っているのが、命令的実行モードと宣言的実行モードを移行するハイブリッドフロントエンドである。
PyTorchの中核的な長所は、適応型プログラミングモデルを通じて反復的なプロトタイピングや実験を可能にする、その命令型のフロントエンドにある。2017年始めに公開された最初のリリースには、110万回を越えるソフトウェアパッケージのダウンロードがあった。この注目度について、Jia氏は次のように語っている。
そのスピードと生産性、ダイナミックグラフなどの最先端のAIモデルをサポートする能力が短期間で人気を博し、AI研究者にとって重要な開発ツールになったのです。
PyTorchで可能なことを示す例として有名なのが、UC Berkleyのコンピュータチームが構築した、Cycle-Consistent Adversarial Networksを使用したUnpaired Image-to-Image Translationプロジェクトである。このプロジェクトは、イメージを整理したトレーニングセットを使用して、イメージ入力の学習とマッピングの出力を可能にするものだ。
イメージ引用: https://junyanz.github.io/CycleGAN/
現在のバージョンはすでに成功を収めており、AIの研究開発に必要な柔軟性と実用レベルのパフォーマンスを提供しているが、一方でいくつかの課題も存在する。Jia氏の説明によれば、
Pythonと緊密に結合しているため、実用規模で実行するために、研究コード -- トレーニングスクリプトあるいはトレーニングモデルの -- からCaffe2のグラフモデル表現への変換が必要になることが少なくありません。Caffe2のグラフベースのエグゼキュータを使用すれば、グラフ変換、効率的なメモリ再利用、ハードウェアインターフェースとの緊密な統合といった、最先端の最適化機能を利用できるからです。
代用としてPyTorch 1.0では、Caffe2とONNXの機能を統合してPyTorchの機能と組み合わせることで、研究レベルのプロトタイピングから実稼働環境へのシームレスなパスを提供している。Caffe2を活用することで、PyTorchに依存した製品を開発している企業は、より高い拡張性と信頼性のサポートが期待できる。PyTorchのブログには、Caffe2を使うことの重要性について、さらに説明がある。
スタートアップであれ大企業であれ、PrTorchによる製品開発を望む人はすべて、製品レベルのサポートを求めています。Facebook(PyTorchの最大のステークホルダ)では、実用レベルのプラットフォームであるCaffe2を導入して、自社のデータセンタで運用しています。8世代のiPhoneと6世代のAndroidのCPUアーキテクチャにわたる10億台以上のスマートフォンに対して、Intel/ARM用のサーバ最適化インターフェース、TensorRTのサポートなど、運用に必要なあらゆる種類のサービスを提供しているのです。すべての価値がPyTorchチームの作業するプラットフォームに極めて緊密にロックインされている現状を見て、当社では、PyTorchとCaffe2を結合することでPyTorchを実運用レベルに引き上げることを決定しました。
ONNXは、AIフレームワーク間で交換可能なディープラーニングモデルを表現するためのオープンフォーマットである。PyTorch 1.0では、エクスポートモデルとしてONNXをネイティブにサポートすると同時に、ランタイムの高速化やハードウェア固有のライブラリへのインターフェースも提供している。このアプローチのメリットについて、Jia氏は次のように説明する。
これによって開発者は、リソースを要するカスタマイズを必要とせずに、AIフレームワークとツールを自由に組み合わせることが可能になります。
PyTorchプロジェクトでは、2018年夏中にバージョン1.0をリリースする予定である。プルリクエストは、同プロジェクトのGitHubリポジトリで確認できる。
この記事を評価
- 編集者評
- 編集長アクション