GCPUG 鹿児島 × TFUG 鹿児島(合同ゼミ)
https://gcpug-kagoshima.connpass.com/event/124260/
Session 2:TensorFlow Dev Summit Recap
TensorFlow Dev Summitトピック紹介
概要
TensorFlow Dev Summit 2019 の中の TensowFlow V2 について復習します。
- YouTube
- 公式ドキュメント
- 藤原さんのプレゼン資料
自己紹介
藤原 秀平 さん TFUG Tokyo
- 普段はメルペイに努めている
- Google Developer Expert
Tensorflow V2で大きく変わったこと
- 大きい違い
- AutoGraph
- Eager Execution
- 1系と2系は全く違うフレームワーク!
- 今からやるなら、V2を覚えたほうが良い。
- kerasを使用しているなら、それほど変わらない。
今日アルファ版がリリースされた
- Eager Execution(define-by-run) by default
- AutoGraph
- パイソンのステートメントがtensorflow graph
- Cleanup APIs
- tf.kerasがメインのフレームワークに
ドキュメント
- Youtube
- Official Document
1.0
- 定義された時点では実行されない(define and run 定義してから実行する)
ディープラーニングに必要なもの
-
微分
- 勾配降下法のために必要
- 微分するには、どういう計算がされてきたかという履歴がないとできない
- 勾配降下法のために必要
-
定義されたものを実行する、としておけば、勾配降下法がそれほど考えなくても実行できる
-
必要なのは
- 計算の履歴
- どのように計算されてきたか
- 微分ができる
ではあるが
本来は、微分を計算するだけであれば、すべての計算結果はいらないのでは?
Define and Run, Define by Run
Define and Run(定義してから実行する)
tensorflowは、今はどちらもできる(1.0でも)
Define by Run(定義したら既に実行されている)
chainerが走り
Eager Mode (GradientTape)
GradientTapeの中で実行することで、実行する
v2では、Eager Modeが既定となる
Eager Modeはすべてを解決するのか?
Define and Runは、
- 利点
- パフォーマンスが高い(最初に定義されるので最適化される)
- Deployのしやすさ
- Pythonのランタイムに依存しない形で、モデルを動かすことができる
- モバイル端末で動かしやすい
- 欠点
- デバッグがしにくい
- デバッグのしにくいと、実験を早く回せない
- 大学でやるとChainerが多い
- プロダクションしなくてもいいので、実験しやすいほうが選ばれる
- 企業でやるとTensorflowが多い
- プロダクション重視。(パフォーマンス、ランタイム依存がないほうが良い)
- 大学でやるとChainerが多い
理想(v2が目指しているもの)
- デバッグしやすい
- パフォーマンスが高い
- プロダクションしやすい
Autograph
- Pythonのグラフを、Tensorflowのグラフに変換するものを作りましょう、というものがAutograph
- 頭に、
@tf.function
をつける-
if
→tf.cond
に変換!
-
- 頭に、
- パフォーマンスが高い
- 有効か無効かは、
tf.executing_eagerly()
で帰ってくる
すべてがgraphに変換できるか?
- いいえ。ある程度の制限はあります
-
tf.Variable
は、最初に作られる
変更点についてのまとめ
- 普通に使用すると、Eager Modeになる
- 基本的には、
@tf.function
を使う - 高レベルAPI(tf.keras)を使う場合には、あまり変わらない。