予期せぬ問題を解決するためのヒントをいくつか紹介します。
配布戦略の範囲内での操作は禁止されています
のようなエラー: ジェネレーターを複製する方法があいまいであるため、ストラテジー スコープ内でジェネレーターを作成することは許可されていません (たとえば、各レプリカが同じ乱数を取得するようにコピーするか、各レプリカが異なるランダムを取得するように「分割」する必要があります)数字)。
解決策: API をrun
ためにdistribution_strategy='auto'
を渡すと、提供されたクラスター構成に基づいて、すべてのスクリプトが TF 配布戦略にラップされます。何らかの理由で分散戦略のスコープ内で操作が許可されない場合、上記のエラーまたはそれに類似したエラーが表示されます。エラーを修正するには、この例に示すように、 distribution_strategy
パラメーターにNone
を渡し、トレーニング コードの一部としてストラテジー インスタンスを作成してください。
Docker イメージのビルドのタイムアウト
エラーのようなもの:requests.Exceptions.ConnectionError: ('接続が中止されました。', timeout('書き込み操作がタイムアウトしました'))
解決策: エントリ ポイントとして使用されているディレクトリには、イメージを正常にビルドするにはデータが多すぎる可能性があり、ビルドに無関係なデータが含まれている可能性があります。エントリ ポイントを含むフォルダーに現在のプロジェクトに必要なファイルのみが含まれるようにディレクトリ構造を再フォーマットします。
TPU トレーニングではサポートされていないバージョン
次のようなエラー: ジョブの送信中にエラーが発生しました。フィールド: tpu_tf_version エラー: 指定されたランタイム バージョン '2.3' は、TPU トレーニングではサポートされていません。別のランタイム バージョンを指定してください。
解決策: TF バージョン 2.1 を使用してください。 「クラスタおよび分散戦略の構成」セクションの「TPU 戦略」を参照してください。
TFナイトリービルド。
次のような警告: Docker 親イメージ '2.4.0.dev20200720' が存在しません。最新の TF ナイトリー ビルドを使用します。
解決策: docker_config.parent_image
パラメータを指定しない場合、デフォルトで、事前に構築された TF Docker イメージが親イメージとして使用されます。 run
が呼び出される環境に TF がインストールされていない場合は、 latest
安定リリースの TF Docker イメージが使用されます。それ以外の場合、Docker イメージのバージョンは、ローカルにインストールされた TF のバージョンと一致します。ただし、事前に構築された TF Docker イメージは、最新のものを除き、TF ナイトリーでは利用できません。したがって、ローカル TF が古いナイトリー バージョンである場合、最新のナイトリーに自動的にアップグレードされ、この警告が表示されます。
分散戦略オブジェクトの混合。
次のようなエラー: RuntimeError: 異なる tf.distribute.Strategy オブジェクトが混在しています。
解決策: モデル コードで配布戦略がすでに定義されている場合は、 distribution_strategy=None
を指定してください。 distribution_strategy'='auto'
を指定すると、コードが TensorFlow 分散戦略でラップされます。コード内ですでに使用されているストラテジ オブジェクトがある場合、上記のエラーが発生します。