HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

大幅に進化するらしいTensorFlow2.0について

 

 

follow us in feedly

https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png

はじめに

TensorFlow2.0ではこれまでのTensorFlowから大幅に変化するので、その変更点について記しておきます。 基本的には公式のRoadmapの和訳と思って差し支えありません。

TensorFlow2.0がもうすぐ来るよ!

TensorFlowの次のメジャーバージョンである2.0へのアップデート作業を開始しました。 TensorFlow 2.0は、使いやすさに重点を置いた重要なマイルストーンになります。TensorFlow2.0でユーザーが期待できることの幾つかを次に挙げます。

APIs

High level APIs

これまで低レベルであるTensorFlowの印象でしたが、高レベルで取り回すことを念頭に置いて、ユーザーが簡単に利用できるような環境を積極的に公式サポートしていくようです。

  • これまで個々に発展してきたKeras、Eager、EstimatorなどのHighレベルAPIsに関して、同じデータパイプライン、API、シリアライズフォーマット(Saved Model)を使用可能にします。

  • Estimatorに備わっているいろいろな機械学習モデル(RNNとか決定木とか時系列モデルとか)をcontribからTensorFlow本体に移行します。また、関連する機能(sequence feature columnsなど)も同時に移行を行います。

Eager Exexution

Define by RunのモードであるEeger ExecutionがTensorFlowのデフォルトのモードになるようです(要確認)。 基本的にコチラでコーディングしつつ、デプロイなどに応じて従来通りのGraphとしてエクスポートする使い方になりそうです。

  • 複数のGPU、複数のTPUをDistributionStrategyによって利用可能になります。

  • 分散学習の環境が提供されます。

  • パフォーマンスが向上します。(確かに今まで若干遅かったような…?)

  • 従来のGraphによる表現、SaveModelなどへのエクスポートも可能です。

Reference Models

実用的には既によく知られた性能のイイモデルを借用するというのが基本的な立場になると思います。これをユーザーが行いやすい環境を提供するために、色々なモデルを予め準備しておいてくれるようです。

  • 画像認識・物体検出・音声認識・翻訳・推薦・強化学習などのモデルセットを準備し、更に高い性能のモデルを開発する出発点を提供する。

  • Cloud TPUのモデルを提供する。

Contribの扱い

Contribは基本的に廃止という方向性のようで、積極的に利用を推奨するものはTF本体に含めていく方針のようです。

  • tf.contribは廃止し、利用を推奨するものに関してはtf.contribから出して運用するようです。

  • 公式に含まれないであろうこれまでのtf.contribは別のリポジトリで可能な限り運用するようです。

プラットフォーム

TensorFlow Lite

モバイルへのデプロイも行えるように開発を行っていくようです。

  • TensorFlow Liteでサポートされている操作のカバレッジを向上させます。

  • TensorFlowの学習済モデルをTensorFlow Liteで利用できる形式に簡単に変換できるようにします。

  • モバイルモデルの最適化のためのツールを提供します。

  • エッジTPU、TPU AIYボードのサポートを拡張します

  • ドキュメントとチュートリアルを改善していきます。

TensorFlow.js

  • ブラウザで動作するTensorFlow.jsのパフォーマンスを向上させます。compute shadersやWebGPUを使ったプロトタイプの実装や、CPUでのパフォーマンス、implement SIMD + Web Assemblyのサポートを向上していきます。

  • TensorFlowのSavedModelやKerasのModelsをインポートできる機能を拡張していきます。特に音声・文章に関わるモデルにフォーカスするようです。

  • データの入力パイプラインを提供すべく tfjs-data をリリースします。また学習中の可視化を行うために tfjs-visライブラリも提供されるようです。

  • TensorFlow本体とTensorFlow.jsのサーバーサイドの等価性を高めていくようです。

TensorFlow with Swift

  • 2018年は継続して設計を洗練させていくようです。

  • 2018年末には「Graph Program Extraction, Basic AutoDiff, Send/Receives」などの主要なものは十分信頼性の高い状態で提供できる模様です。

  • 2018年の間に動的モデル作成のための使用方法を模索していくようです。

  • 2019年の始まりにはチュートリアルをcolabで提供していくようです。

パフォーマンス

Distributed TensorFlow

  • 分散環境APIを拡張してTPUやマルチノードGPUのKerasでの利用をサポートしていくようです。

  • 優れた性能と簡単なデプロイが可能であることを実証してくれるようです。

CPU、GPU、TPUの最適化関連

  • GPUの最適化を行っていきます。

  • TensorRTをTF本体に統合し、SavedModelやTF Servingを利用可能にします。

  • CUDA10に対応

  • DGX-2の最適化

  • クラウドTPUでのKerasの利用をサポート

  • セグメンテーション関連の強化

  • GKE, CMLE, Cloud Bigtable, gRPC data input, などのCloud TPU最適化

  • MKLでのCPU最適化

その他のパッケージ

TensorFlow Probability

こちらはEdwardなどを取り込んだ、確率モデルをTensorFlowで取り扱うためのライブラリとなっています。

  • ガウス過程の実装を追加。(ベイズ最適化によるハイパーパラメータ探索も可能)

  • ベイズでの時系列モデルに対応。(確かに従来のTFだとココはきつかった)

  • サンプリングや最適化手法の強化

  • Colabでのチュートリアルを充実させる。(Pyroに迫る充実度を求む…)

Tensor2Tensor

  • 動画、音声、音楽のデータセットやモデルを新たに追加。

  • TF2.0のベストプラクティスをしっかり利用

  • Mesh TensorFlowで巨大なモデルの訓練をモデル並列化で実施可能

End to End ML systems

TensorFlow Hub

Eager、Keras、TF.jsのTF-Hubモジュールのサポートを拡大していくようです。

TensorFlow Extended

TF Model Analysisでモデルの評価や検証ができたり、TFXでData Validationができたり、End to Endの機械学習パイプラインの例も提供してくれるようです。

かなり進化していてびっくりした。そもそもなにそれ?みたいなのもいっぱいありました。本格的に実用に向けた発展を遂げているという印象です。