こんにちは、私は、complex_mマスター、GPUとcomplex_mを持つ4人の作業者からなるカスタム層でMLエンジンを使用しています。GPUワーカーを使用したMLエンジン
モデルはCNNを訓練しています。しかし、労働者には問題があるようです。 これはログの画像ですhttps://i.stack.imgur.com/VJqE0.png。
セッションチェックポイントが保存されているため、マスターがまだ動作しているように見えますが、これは速度に近いところです。
complex_mワーカーでは、このモデルが機能します。それはちょうどモデルが最初に準備ができているのを待っているだけです(マスターがグローバル変数を初期化し、私が間違っていると私を修正してから正常に動作するまで)。しかし、GPUではタスクに問題があるようです。
どこでもtf.Device()関数を使用していませんでしたが、クラウドではGPUが使用可能な場合にデバイスが自動的に設定されていると思っていました。
私はCensusの例に従い、TF_CONFIG環境変数をロードしました。
tf.logging.info('Setting up the server')
tf_config = os.environ.get('TF_CONFIG')
# If TF_CONFIG is not available run local
if not tf_config:
return run('', True, *args, **kwargs)
tf_config_json = json.loads(tf_config)
cluster = tf_config_json.get('cluster')
job_name = tf_config_json.get('task', {}).get('type')
task_index = tf_config_json.get('task', {}).get('index')
# If cluster information is empty run local
if job_name is None or task_index is None:
return run('', True, *args, **kwargs)
cluster_spec = tf.train.ClusterSpec(cluster)
server = tf.train.Server(cluster_spec,
job_name=job_name,
task_index=task_index)
# Wait for incoming connections forever
# Worker ships the graph to the ps server
# The ps server manages the parameters of the model.
if job_name == 'ps':
server.join()
return
elif job_name in ['master', 'worker']:
return run(server.target, job_name == 'master', *args, **kwargs)
次に、メイングラフを定義する前にtf.replica_device_setterを使用しました。
セッションとして、私はtf.train.MonitoredTrainingSessionを使用しています。これは、変数の初期化とチェックポイント保存を処理する必要があります。私は、労働者が変数が初期化されていないと言っている理由を知らない。初期化する
変数すべての変数です:https://i.stack.imgur.com/hAHPL.png
オプティマイザ:AdaDelta
私は助けに感謝!
作業員1人あたり4 GPUを使用していることを正しく理解しましたか? – rhaertel80
いいえ、1つのGPUを持つ4人のワーカー – MarkCutajar
1つのパラメータサーバーがあり、デバイスを設定していないことがわかります。どのオプティマイザを使用していますか?また、ロードされていない変数の名前を提供することも可能です(スクリーンショットから切り離されました - おそらく意図的に)。 – rhaertel80