Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

New tf.keras

620 views

Published on

TensorFlow User Group Tokyo主催の「Recap of TensorFlow Dev Summit 2019」で発表した新しいtf.kerasについてのスライドです。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

New tf.keras

  1. 1. New tf.keras Masao Taketani (竹谷 昌夫)
  2. 2. 自己紹介 (Self-Introduction) 名前(name):竹谷 昌夫 (Masao Taketani) 学歴(education):アメリカの大学の理工学部統計学科を卒業 (BS in Statistics) 職業(occupation):ディープラーニングエンジニア (Deep Learning Engineer) 業務では主に画像系を担当するが、業務外では自然言語処理やレコメンドも経験あり
  3. 3. 今までの tf.keras モデル構築がシンプルでPythonicな書き方ができる。ただ、小さなモデル構築用 に作られており、大規模なモデル構築用ではなかった。
  4. 4. tf.estimator そこで、スケーラビリティを意識したAPIとしてtf.estimatorがあった。 tf.estimatorを使用すれば分散学習も容易に行える。tf.estimatorならWide & Deep Learning等のモデルもbuilt-inとして備わっており、学習や、本番環境用に デプロイすることが容易に可能。
  5. 5. 新しい tf.keras TensorFlow 2.0からは、モデルの構築に関しては今までのtf.kerasと同じ書き方 で書けるように標準化し、そこにtf.estimatorも持ってくることでtf.kerasからプ ロトタイプ作成、分散学習、そして本番環境へのデプロイまでが容易にできるよ うになった。
  6. 6. 古いtf.kerasでのモデルの書き方
  7. 7. 新しいtf.kerasでのモデルの書き方
  8. 8. 新しいtf.kerasのその他の特徴 ● 今までのtf.kerasはグラフ構造を基にし、sessionを走らせることでデータを 投入していたが、新しいtf.kerasではEager modeでデータを投入させること ができる(Define by Run)。 ● データセットのパイプラインはnumpy配列の様に扱うことができ、デバッグ も楽になる。かつ同時にデータセットも高いパフォーマンスのためにオーバ ヘッドができるだけかからないように最適化される。
  9. 9. Eagerモード ● Eagerモードでもグラフの利点をそのまま残している。 ● Eagerはデバッグやプロトタイプ作成を容易にさせるが、一方でTensorFlow のランタイムがパフォーマンスやスケーリングの最適化の役割を賄う。 ● 「run_eagarly」というフラグを使用することによって、明示的にeagerモー ドでモデルをステップバイステップに走らせることができる。
  10. 10. 多くのAPIをわかりやすく統合 ● optimizers、metrics、losses、layersはtf.kerasの下にそれぞれ一つのセッ トに統合され、eagerモードの使用、単独での学習か分散での学習かによら ず使用できる。 ● built-inにないものを利用したい際も、サブクラスを用いてカスタマイズする ことができる。 ● layersにおいてはkerasのAPI仕様書に書いてあるものはすべて使用可能。
  11. 11. RNNレイヤーの変更 今までのTensorFlowではいくつかのLSTMとGRUのバージョンがあり、cuDNNを 使用する際は実行する前に記載する必要があったが、新しいバージョンでは LSTMもGRUも一つのバージョンしかなく、CPUを使用するかGPUを使用するか は利用状況により、ランタイム時に自動で行ってくれる。
  12. 12. tf.kerasからtf.feature_columnが使用可能 tf.feature_columnは生データをestimatorが必要なフォーマットに変換する役目 を担っていたが、TensorFlow 2.0ではtf.kerasで作られたモデルにも tf.feature_columnが使用できるようになった。
  13. 13. tf.kerasからTensorBoardの使用 ● tf.kerasでTensorBoardを使用する際は一行で簡単に書くことができる。 ● TensorBoardでaccuracy、loss、モデルの形状等が見れる。 ● モデルのパフォーマンスやデバイスの配置確認、学習時のボトルネックを容 易に見つけることができるようなフルプロファイリング機能を追加。
  14. 14. 手軽にできる分散学習 ● tf.distribute.Strategy APIを使用することで、Kerasの利便性を保ちながら分 散学習のためのスケールアップが容易にできる。 ● 下記の例では、変数は複数のGPUにコピーされ、学習時にallreduceを用いて 同期される。
  15. 15. モデルのセーブ/ロード ● 本番環境、スマホ、またはPython以外の言語で利用するために、モデルのセ ーブやロードも簡単に行える。 ● この機能はまだ実験段階(APIの詳細を調整中)だが、TF Serving、TF Lite等に 簡単にエクスポートしたり、再学習のためにリロードできるようになってい る。
  16. 16. マルチノードでの同期(開発中) まだ開発中だが、複数のマシーンで同期させて学習を行うための機能も追加予定 であり、現在試すことも可能。
  17. 17. TPUを用いた分散学習(開発中) ● 次のTensorFlowのリリースまで待たなければならないが、TPUの分散学習も keras上からできるように開発中である。 ● リリースされれば、TPUが利用できるGCPやColab上で使用できる。
  18. 18. 2.0のファイナルバージョンに向けて 2.0の完成に向けて以下のスケーラビリティをtf.kerasに付け加えようとしている 。 ・tf.kerasからのParameterServerStrategyの利用 ・tf.kerasからのestimatorのモデル(Wide & Deepモデル等)利用 ・巨大なモデルを扱うためのvariable partitioning
  19. 19. tf.thanks!

×