スポンサーリンク
はじめに
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の機械学習パイプラインの例も提供してくれるようです。
かなり進化していてびっくりした。そもそもなにそれ?みたいなのもいっぱいありました。本格的に実用に向けた発展を遂げているという印象です。