2017-10-07 12 views
0

Je viens de compiler TensorFlow (maître) avec le support MPI et je spécifie maintenant le protocole "grpc + mpi" dans l'objet tf.train.Server. Cependant, lors d'une tentative de lancer la procédure de formation, il y a toujours exactement un travailleur qui échoue avec l'erreurUtilisation du protocole grpc + mpi dans le tensorflow distribué - Erreur

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

Chaque fois que je reproduis l'erreur, il est un travailleur différent qui ne parvient pas à « convertir ». Il est assez suspect pour moi que le nom qu'il ne parvient pas à convertir est un nom de «travailleur», étant donné qu'il ne peut pas réellement «convertir» une propriété du serveur de paramètres.

La procédure d'apprentissage complète fonctionne correctement avec le protocole "standard" "grpc".

Chaque opérateur ainsi que le serveur à un seul paramètre s'exécutent sur une machine dédiée (pas de machine partagée). La version OpenMPI est 2.1.1

Comment est-ce que j'aborderais le débogage ceci? Malheureusement, je n'ai pas beaucoup de connaissance de MPI.

Merci,

Mat

Répondre

0

J'ai rencontré le même problème quand je tensorflow avec le soutien MPI. La raison en est que je n'ai pas utilisé le mpirun pour lancer la procédure de formation.

Par exemple, mon script de train est 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 

je devrais utiliser le mpirun pour lancer mon script train:

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