TensorFlowOnSpark (readme 翻訳)
翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 02/14/2017
* 本ページは、github TensorFlowOnSpark の readme を翻訳したものです:
https://github.com/yahoo/TensorFlowOnSpark/blob/master/README.md
TensorFlowOnSpark とは何か?
TensorFlowOnSpark はスケーラブルな深層学習を Apache Hadoop と Apache Spark にもたらしました。深層学習フレームワーク TensorFlow とビッグデータ・フレームワーク Apache Spark / Apache Hadoop 由来の顕著な特徴を結合することにより、TensorFlowOnSpark は GPU と CPU サーバ・クラスタ上の分散深層学習を可能にします。
TensorFlowOnSpark は Apache Spark クラスタ上の分散 TensorFlow トレーニングと推論を可能にします。それは共有グリッド上にある TensorFlow プログラムを実行するために必要なコード変更の総量を最小化するように努めます。その Spark 互換な API は TensorFlow クラスタを次のステップで管理することを手助けします :
- Reservation(予約) – 各 executor 上の TensorFlow プロセスのためのポートを予約し、また data/control メッセージのためのリスナーを開始します。
- Startup – executor 上で TensorFlow main 関数を launch します。
- データ摂取 (Data ingestion)
- Readers & QueueRunners – TensorFlow の Reader 機構を HDFS から直接データファイルを読むために進化させます。
- Feeding – Spark RDD データを feed_dict 機構を使用して TensorFlow ノードへ送ります。HDFS 上の TFRecords へのアクセスのために Hadoop Input/Output フォーマットを改良している (= leverage) ことに注意してください。
- Shutdown – TensorFlow workers と executors 上の PS ノードを停止します。
Infiniband ネットワーク上のリモート・ダイレクトメモリアクセス (RDMA, direct access to remote memory) をサポートするためにもまた TensorFlow を拡張しました。
TensorFlowOnSpark は Yahoo のプライベート・クラウドの Hadoop クラスタ上で大規模な分散深層学習のために Yahoo により開発されました。
何故 TensorFlowOnSpark か?
TensorFlowOnSpark は他の選択肢の深層学習ソリューションを超える幾つかの重要なメリット(ブログ 参照)を提供します。
- <10 行のコード変更ですべての既存の TensorFlow プログラムを簡単に migrate します ;
- すべての TensorFlow 機能をサポートします : 同期/非同期なトレーニング、モデル/データの並列処理、推論そして TensorBoard ;
- サーバ to サーバのダイレクト・コミュニケーションが利用可能であれば、より高速な学習を達成します ;
- HDFS 上と他のソース上のデータセットに Spark で push され TensorFlow で pull されることを可能にします ;
- 貴方の既存のデータ処理パイプラインと機械学習アルゴリズム (ex. MLlib, CaffeOnSpark) を簡単に統合できます ;
- クラウドでもオンプレでも簡単にデプロイされます: CPU & GPU, Ethernet そして Infiniband。
以上