2017-08-31 5 views
4

Ich versuche Distributed TensorFlow zu lernen. Versucht ein Stück Code, wie here erklärt:Kann TensorFlow mit mehreren CPUs (keine GPUs) laufen?

with tf.device("/cpu:0"): 
    W = tf.Variable(tf.zeros([784, 10])) 
    b = tf.Variable(tf.zeros([10])) 

with tf.device("/cpu:1"): 
    y = tf.nn.softmax(tf.matmul(x, W) + b) 
    loss = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) 

die folgende Fehlermeldung bekommen:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign a device for operation 'MatMul': Operation was explicitly assigned to /device:CPU:1 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ]. Make sure the device specification refers to a valid device. 
    [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device="/device:CPU:1"](Placeholder, Variable/read)]]

Was bedeutet, dass TensorFlow nicht CPU erkennt: 1.

Ich bin auf einem RedHat-Server mit 40 CPUs (cat /proc/cpuinfo | grep processor | wc -l) ausgeführt.

Irgendwelche Ideen?

+1

Haben Sie 40 CPU oder 40 Kerne? – raam86

+0

raam86 nach https://askubuntu.com/questions/724228/how-to-find-the-number-of-cpu-cores-including-virtual 40 cpus –

+0

Ich habe einmal verwendet mehrere CPU-Verarbeitung mit sci-kit lernen (GridSearchCV-Funktion) über Tensorflow-Backbone .. Also ich denke, es ist möglich. Aber ich bin mir nicht sicher, wie man es in Tensorflow-Ebene implementiert – Eduardo

Antwort

0

die link im Kommentar Folgende:

aus Schaltet die Sitzung konfiguriert werden soll Geräteanzahl haben> 1:

Irgendwie schockierend, dass ich etwas so grundlegendes vermisste, und niemand konnte einen Fehler lokalisieren, der zu offensichtlich scheint.

Nicht sicher, ob es ein Problem mit mir oder den TensorFlow Code Proben und Dokumentation ist. Da es sich um Google handelt, muss ich sagen, dass ich es bin.

0

Zuerst einfach auf "eine CPU" laufen lassen und sehen, ob Tensorflow Threads an alle CPUs verteilt. Es wird wahrscheinlich Multithread korrekt und Sie müssen nichts tun.

In dem Fall, in dem dies nicht der Fall ist, sollten Sie versuchen, mehrere Tensorflow-Instanzen mit unterschiedlichen CPU-Affinitäten zu starten und ein "verteiltes" System zu erstellen. Tensorflow hat Dienste für mehrere Maschinen verteilt; Es sollte auch mit separaten Prozessen auf einer Maschine funktionieren, solange Sie Ihre Dateien korrekt einrichten, so dass sie nicht an denselben Speicherort schreiben. Sie können beginnen bei https://www.tensorflow.org/deploy/distributed. Sie könnten die CPU Affinitäten festlegen möchten, so dass es ein Prozess pro physischen CPU, a-la https://askubuntu.com/questions/102258/how-to-set-cpu-affinity-to-a-process

Verwandte Themen