2017-10-07 3 views
0

私はMPIをサポートするTensorFlow(マスター)をコンパイルしましたが、tf.train.Serverオブジェクトに "grpc + mpi"プロトコルを指定しています。トレーニング手順を起動しようとしたときしかし、常にエラー分散テンソルフローでgrpc + mpiプロトコルを使用する - エラー

F ./tensorflow/contrib/mpi/mpi_utils.h:47] Failed to convert worker name to MPI index: ps:0:0

私は、エラーを再現するたびに失敗し、正確に1つのワーカーがあり、それは「変換」に失敗した別の労働者です。パラメタサーバのプロパティを実際に変換することができないと考えると、変換に失敗した名前は「ワーカー」の名前であることは、私にとっては疑問です。

"標準"プロトコル "grpc"を使用すると、トレーニング手順全体が正常に機能します。

各ワーカーおよび単一パラメータサーバーは、専用のマシン(共有マシンなし)で実行されます。 OpenMPIバージョン2.1.1

これをデバッグする方法はありますか?残念ながら私はMPIの知識はあまりありません。

おかげで、

マット

答えて

0

は、私はMPIのサポートでTensorFlowを使用したのと同じ問題に会いました。その理由は、トレーニング手順を開始するためにmpirunを使用しなかったためです。

例えば、私の列車のスクリプトはmpi_train.shです:

#! /bin/bash 

host=$(hostname -s) 
if [[ $host = "node-1" ]]; then 
     job_name=ps 
     task_id=0 
elif [[ $host = "node-2" ]]; then 
     job_name=worker 
     task_id=0 
elif [[ $host = "node-3" ]]; then 
     job_name=worker 
     task_id=1 
fi 

cd /test/models/inception 

bazel-bin/inception/imagenet_distributed_train --batch_size=32 --data_dir=/test/data/ILSVRC2012 --job_name=${job_name} --task_id=${task_id} --ps_hosts=10.0.20.14:2276 --worker_hosts=10.0.20.15:2276,10.0.20.16:2276 --protocol=grpc+mpi --max_steps=1020 

私は電車のスクリプトを起動するためのmpirunを使用する必要があります。

mpirun -host 10.0.0.14,10.0.0.15,10.0.0.16 /test/mpi_train.sh

関連する問題