Caffe2 と PyTorch が協力して「研究 + プロダクション」プラットフォーム PyTorch 1.0 を作成

Caffe2 と PyTorch が協力して「研究 + プロダクション」プラットフォーム PyTorch 1.0 を作成 (翻訳)

翻訳 : (株)クラスキャット セールスインフォメーション
更新日時 : 12/07/2018
作成日時 : 05/09/2018

* 本ページは Caffe2 サイトからの PyTorch 1.0 の アナウンスメントに相当する、”Caffe2 and PyTorch join forces to create a Research + Production platform PyTorch 1.0″ (May 02, 2018) を翻訳したものです:

 

本文

私達は将来の Caffe2 の進化のための計画を共有することを望みます。公には1年以上前にオープンソースにされ、Caffe2 は軽量で訓練と配備のための究極的なスケーリング機能を持つプロダクション・レディなモジュール・フレームワークです。そのモバイル・ケーパビリティ (Caffe2go) は10 億以上のデバイスとともに総ての主要なハードウェア世代をサポートしてモバイル深層学習の最大の配備の一つに動力を供給します。この1年で、私達は多くの業界パートナーと作業して彼らのプラットフォームに Caffe2 サポートを追加してそして実行するプラットフォームにかかわらず最善の可能なパフォーマンスを保証しました。

Facebook では、そこで Caffe2 は始まっていますが、広範囲の AI ユースケースのために PyTorch と Caffe2 の両者をサポートしています。Caffe2 開発の主要なフォーカスはパフォーマンスとクロスプラットフォーム配備である一方で PyTorch はラピッドプロトタイピングと研究のための柔軟性にフォーカスしてきました。

実際には、どのような深層学習フレームワークも (データ読み込みと可視化から高パフォーマンスな計算カーネルまで) 異なる抽象層で動作する複数のライブラリとテクノロジーのスタックです。ここ1年 Caffe2 と PyTorch のより多くのコンポーネントが共有されるのを見ました (e.g. gloo, NNPACK, etc)。また、相互運用性への投資で、共有 ONNX モデル・フォーマット を使用してフレームワーク間で深い統合を構築しました。

最善のユーザ体験を手渡すためには、Caffe2 と PyTorch の有益な特質を単一のパッケージに結合して速いプロトタイピングから速い実行へのスムースな移行を可能にすることは意味があると私達は認識しました。それはまたツールの共有されたセットをより容易に活用することにより私達の開発者効率も改良するでしょう。

Caffe2 と PyTorch プロジェクトはマージされます。 今後数カ月間で、フレームワークのコンポーネントを深く統合してそれらを単一のパッケージとして効果的に統一することを計画しています。それは PyTorch フロントエンドの柔軟なユーザ経験と Caffe2 バックエンドのスケーラブルな配備と埋め込みケイパビリティを結合するでしょう。以下は計画の高位な概要です。

 

何が起きるのでしょう?

私達は既に一ヶ月前に開発者インフラ・ツールの幾つかを合理化するためにコード・レポジトリをマージしました。以下は今後数カ月間の私達の計画の概要です。

 

ビルドとパッケージ

  • 次のリリースの一つで、Caffe2 と PyTorch のための (pip と conda 内の) python パッケージは機能の結合を提供する単一のパッケージにマージされるでしょう。
  • native ライブラリと python 拡張を個別のインストールオプションとして提供し続けます (これは今日の Caffe2 と PyTorch の両者に当てはまります)。
  • 総てのクロスコンパイル・ビルドモードと Caffe2 のプラットフォーム (iOS, Android, Raspbian, Tegra, etc) のためのサポートはそのまま残り、そして様々なプラットフォーム・サポートを拡張し続けます。

 

モデル・オーサリング

  • Caffe2 のグラフ構築 API (brew, core.Net) は動作し続けます、そしてリファクタリングの間に機能を変更するために既存のシリアライズされたモデル NetDef のための後方互換性を提供します。
  • 将来的には、nn.Module-ライク な抽象はネットワークを構築するために望ましいでしょう。私達は、効率的な配備のために使用できるグラフ・フォーマットの完全にシリアライズされたモデルを抽出するために tracing とコンパイル・ケイパビリティを使用するいわゆる「ハイブリッド・フロントエンド」で PyTorch フロントエンド抽象を増強しています。また、Caffe の現在と今後のバックエンド・バインディングと機能の総ては統一されたハイブリッド・フロントエンドを通して間もなく公開されます。ハイブリッド・フロントエンドがどのように見えるかのより詳細のためには 対応する PyTorch ブログ をチェックしてください。
  • Caffe2 と PyTorch の演算子実装のセットは時間とともにマージされますので、従って両者の機能は広がります。
  • ONNX モデル・フォーマットは Caffe2 と PyTorch でエクスポートとインポートの両者のために native に現在サポートされています。コードベースで統一しますので ONNX を共通のモデル表現として使用します、これは最適化に適切な動的モデル性質を表現することを意味します。従って PyTorch 1.0 は ONNX と他のフレームワークとのインターフェイスあるいは ingesting と emitting モデル両者のためのアクセラレートされるライブラリを native にサポートすることが可能になります。

 

スケーリングと配備

  • Caffe2 の高くスケーラブルな実行エンジン (様々なアクセラレートされたバックエンドとライブラリ統合そしてスケーラブルなグラフ executor) は殆どそのまま残りそしてラピッド・プロトタイピングのための Python プログラム・セグメントとスムースに相互運用するための能力を得るでしょう。
  • Caffe2 の既存の predictor サポートは、データセンター内とモバイル上の両者でアクセラレートされたハードウェアサポートを持つスケーラブルで native-only なモデル配備の主要な方法です。

 

ハードウェア統合とアクセラレートされるライブラリ・サポート

  • 私達は Caffe2 の様々なデバイスサポートとランタイム統合を作成します、これらは統一された PyTorch 1.0 パッケージのプロトタイピング環境から直接利用可能です。
  • アクセラレートされたハードウェアをターゲットとするライブラリや完全なグラフ・ランタイムのための統合インターフェイスは現在の Caffe2 コードと殆ど同様にとどまり、そして既存の統合は動作し続けます。更に、グラフ・ランタイムのために、ONNXIFI のようなコミュニティ・イニシアティブと一緒に相互作用インターフェイスを正式なものにする作業をしています。

 

タイムラインと更なる情報

私達は production-ready な最初のリリースにこの夏に到達することを望んでいます。けれども、いつものように、開発の総ては GitHub 上 でオープンに起きていますので貴方が追随して貢献することを歓迎します。

プロジェクトの進行中のマージが与えられた場合、今後は pytorch.org 上でアナウンスメントを統一してそれらを caffe2.ai 上でクロスリファレンスしていきます。

 

以上