2017-06-23 2 views
0

Actuellement, j'utilise tensorflow slim pour former le modèle de scrach. Si je suis juste l'instruction ici https://github.com/tensorflow/models/tree/master/slim#training-a-model-from-scratch, tout est OK.tensorflow mince multi-GPU ne peut pas fonctionner

Cependant, je veux utiliser multi GPU, donc je définis --num_clones = 2 ou 4, les deux ne fonctionnent pas. Le résultat est que les deux sont bloqués à global_step/sec: 0. Ils ne peuvent pas continuer. Vous pouvez voir l'image résultat ici error result

DATASET_DIR=/tmp/imagenet 
TRAIN_DIR=/tmp/train_logs 
python train_image_classifier.py \ 
--num_clones=4 \ 
--train_dir=${TRAIN_DIR} \ 
--dataset_name=imagenet \ 
--dataset_split_name=train \ 
--dataset_dir=${DATASET_DIR} \ 
--model_name=inception_v3 

quelqu'un L'espoir peut me aider, merci à l'avance. Par ailleurs, j'utilise tensorflow 1.1 & python 35 sur Ubuntu 16.04. Si vous avez besoin de plus d'informations, s'il vous plaît faites le moi savoir.

+0

La génération du graphique prend plus de temps lorsque vous utilisez plusieurs GPU. Si vous attendez assez, voyez-vous un problème? Si vous tuez le programme avec ctrl + c, quelle est la trace de la pile? –

+0

Bonjour, merci pour votre réponse. J'essaie à nouveau le programme et j'ai attendu plus d'une demi-heure. Il reste coincé au début. Cependant, je ne peux pas tuer le programme avec ctrl + c. Je peux seulement arrêter le programme en appuyant sur ctrl + z, mais les processus occupent toujours la ressource. J'ai donc besoin de libérer la ressource en utilisant kill -9 PID. J'ai aussi mis à jour l'image d'erreur, vous pouvez vous référer au 'résultat d'erreur' ci-dessus. – happenzZ

Répondre

0

Votre problème ressemble à une expérience que j'avais après être passé d'une configuration mono-GPU à une configuration multi-GPU en utilisant tf-slim. J'ai observé que le travail du serveur de paramètres prenait le nom 'localhost', qui était en conflit avec le nom de travail par défaut assigné par model_deploy à mon unité centrale. Je vous suggère d'inspecter les noms de périphériques en suivant la section "Logging Device placement" de this tensorflow.org article. Il explique comment imprimer les noms de périphériques sur la console pour chaque opération. Vous pouvez ensuite transmettre le nom du travail en tant qu'argument au paramètre ps_job_name de DeployConfig() et poursuivre l'apprentissage.

+0

Ceci ne fournit pas de réponse à la question. Une fois que vous avez suffisamment [réputation] (https://stackoverflow.com/help/whats-reputation) vous pourrez [commenter n'importe quel article] (https://stackoverflow.com/help/privileges/comment); Au lieu de cela, [fournissez des réponses qui ne nécessitent pas de précisions de la part du demandeur] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- je-fais-à la place). - [À revoir] (/ review/low-quality-posts/17935656) – Nabin

+0

Merci pour cette explication. Je devrais être capable d'éditer ma réponse afin qu'elle ne sollicite pas la rétroaction du questionneur. – foabodo