よくある質問 - TensorFlow での Cloud TPU

Cloud TPU でサポートされているモデルにはどのようなものがありますか?サポートされているモデルのリストについては、サポートされている公式モデルをご覧ください。

Cloud TPU は推定に使用できますか? Keras tf.keras.Model.predict メソッドを使用して、Cloud TPU でトレーニングされたモデルで推定を行うことができます。

Cloud TPU では利用できない組み込みの TensorFlow op はありますか?

現在の Cloud TPU では使用できない組み込みの TensorFlow op がいくつかあります。現時点での回避策については、利用可能な TensorFlow 演算をご覧ください。

強化学習(RL)モデルを TPU でトレーニングできますか?

強化学習は幅広い技術をカバーしていますが、そのうちのいくつかは、現在は TPU のソフトウェア抽象化と互換性がありません。一部の強化学習構成では、トレーニング ループの一部として CPU を使用してブラックボックス「シミュレーション環境」を実行する必要があります。Cloud TPU では、これらに追いつけないため、かなり非効率的であることがわかっています。

Cloud TPU で埋め込みを使用できますか?

はい。TPUEmbedding レイヤを使用すると、Keras モデルで埋め込みをサポートできます。カスタムレイヤとモデルでは、tf.nn.embedding_lookup() を使用できます。

Cloud TPU で可変長シーケンスを使用できますか?

TensorFlow で可変長シーケンスを表すには、パディング、tf.while_loop()、推定されるテンソル ディメンション、バケット化など、いくつかの方法があります。現在の Cloud TPU 実行エンジンでは、これらのサブセットのみがサポートされます。可変長シーケンスは、tf.while_loop()tf.dynamic_rnn()、バケット化、パディング、シーケンスの連結を使用して実装する必要があります。

TPU で反復性ニューラル ネットワーク(RNN)をトレーニングできますか?

はい。TensorFlow で RNN をトレーニングするには、Keras RNN レイヤを使用します。

Cloud TPU で敵対的生成ネットワーク(GAN)をトレーニングできますか?

GAN のトレーニングは、通常、ジェネレータのトレーニングと弁別子のトレーニングを頻繁に交互に切り替える必要があります。現在の TPU 実行エンジンでは、1 つの実行グラフのみがサポートされます。グラフを交互に切り替えるには完全な再コンパイルが必要で、これには 30 秒以上かかる場合があります。

考えられる回避策の 1 つは、ジェネレータと弁別子の両方の損失の合計を常に計算し、これらの損失に 2 つの入力テンソル(g_wd_w)を乗算することです。ジェネレータをトレーニングするバッチでは、g_w=1.0d_w=0.0 を渡すことができ、弁別子をトレーニングするバッチについては逆もまた同様です。

Cloud TPU でマルチタスク学習モデルをトレーニングできますか?

タスクを集約損失関数を持つ 1 つの大きなグラフとして表すことができる場合、マルチタスク学習に特別なサポートは必要ありません。ただし、TPU 実行エンジンでは現在、1 つの実行グラフのみがサポートされています。したがって、変数を共有しているが構造が異なる複数の実行グラフをすばやく交互に切り替えることはできません。実行グラフを変更するには、グラフ コンパイル ステップの再実行が必要で、これには 30 秒以上かかる場合があります。

Cloud TPU は TensorFlow イーガーモードをサポートしていますか?

TensorFlow では、@tf.function デコレータを使用して XLA にコンパイルし、TPU を イーガーモードで使用できます。

Cloud TPU ではモデルの並列処理はサポートされますか?

モデルの並列処理(つまり、単一の Cloud TPU デバイス内の複数のコアにおける、異なる複数のプログラムの実行)は、現在サポートされていません。

tf.Printtfdbg の場合と同様に、Cloud TPU で中間テンソルの実際の値を調べるにはどうすればよいですか?

現在、この機能は Cloud TPU ではサポートされていません。TensorBoard を使用して CPU/GPU 上でモデルをデバッグし、モデルの本格的なトレーニングが可能になったら、Cloud TPU に切り替えることをおすすめします。

トレーニング要件は Keras のコンパイル/フィット API には複雑または専門的すぎます。より下位レベルの API はありますか?

TensorFlow を使用するときに下位レベルの制御が必要な場合は、カスタム トレーニング ループを使用できます。TensorFlow のドキュメントでは、カスタム トレーニング ループを 特に TPU で、および tf.distribute を使用するより一般的なケースで使用する方法について説明しています。