2016-11-21 8 views
1

このTensorflow Distributed Trainingのコード例では、sess.run([train_op, global_step])が複数回(whileループで)呼び出されます。操作のDAGを実行する前に、Tensorflowは最初にグラフノードをいくつかのデバイスに配置する必要があります(ノード配置プロセス)。Tensorflow複数の実行とノード配置

このシナリオでは、どのように多くのノード配置プロセスを行う必要があるのだろうかと思っていました。ループカウントがNであるとします.Tensorflow sysはノード配置を1回だけ実行しますか? ORはノード配置N回を実行しますか?

+0

ノード配置は、グラフ用にセッションを作成するときに1回だけ発生します。 – yuefengz

答えて

1

ノードのデバイス配置は、1回だけ発生します。 tf.devicetf.train.replica_device_setterなどのディレクティブでデバイスの配置を制御できます。

テンソルフローはデバイスごとにグラフを分割し、これらのサブグラフのそれぞれにrecvとsendノードを追加し、追加の設定を実行するため、これらのノードを異なるデバイスに置き換えるのにはコストがかかります。しかし、依然としてsession.runへの呼び出しの間にグラフを変更することはできます。

EDIT: デバイスはthis functionによって設定され、グラフが構築されるときに設定されているan attribute of a nodeあります。 tf.deviceを使用すると、デバイス関数がスタックにプッシュされ、次のノードがスタック内のデバイス関数を呼び出してデバイス割り当てを取得します。 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/ops.py#L2880

(TensorFlowは遅延実行を使用します)グラフが評価されているときは、デバイスの割り当てに従ってpartitionedになり、実行する別のデバイスにサブグラフが送信されます。

+0

ありがとう! @Fake。 Tensorflowコードのどのメソッド/機能がノード配置手順をトリガするか教えてください。 – kz28

+0

私の答えを編集しました。 – yuefengz

+0

ありがとうございます! @偽 – kz28

関連する問題