Wie kann ich jeden meiner EC2-Kerne vollständig nutzen?Wie kann TensorFlow verwendet werden? CPU
Ich benutze eine C4.4xlarge AWS Ubuntu EC2-Instanz und TensorFlow, um ein großes verschachteltes neuronales Netzwerk aufzubauen. nproc sagt, dass meine EC2-Instanz 16 Kerne hat. Wenn ich meinen Convnet-Trainingscode ausführe, sagt das oberste Dienstprogramm, dass ich nur 400% CPU verwende. Ich habe erwartet, dass es wegen der 16 Kerne 1600% CPU verwendet. Die AWS EC2-Registerkarte Überwachung bestätigt, dass ich nur 25% meiner CPU-Kapazität verwende. Dies ist ein riesiges Netzwerk, und auf meinem neuen Mac Pro verbraucht es ungefähr 600% CPU und braucht ein paar Stunden um zu bauen, deshalb glaube ich nicht, dass der Grund dafür ist, dass mein Netzwerk zu klein ist.
Ich glaube, die Linie unterhalb letztlich die CPU-Auslastung bestimmt:
sess = tf.InteractiveSession(config=tf.ConfigProto())
ich zugeben, dass ich nicht vollständig verstehen, die Beziehung zwischen Threads und Cores, aber ich habe versucht, die Anzahl der Kerne erhöht. Es hatte den gleichen Effekt wie die obige Zeile: immer noch 400% CPU.
NUM_THREADS = 16
sess = tf.InteractiveSession(config=tf.ConfigProto(intra_op_parallelism_threads=NUM_THREADS))
EDIT:
- htop zeigt, das zeigt, dass ich tatsächlich alle 16 meiner EC2 Kerne verwenden, aber jeder Kern ist nur bei etwa 25%
- oben zeigt, dass meine gesamte CPU% ist etwa 400%, aber gelegentlich wird es bis zu 1300% schießen und dann fast sofort auf ~ 400% zurückgehen. Das macht ich denke, es gibt ein Deadlock-Problem
Wie viele Kerne zu tun ist Dein MAC? – error2007s
@ error2007s Ich habe 4 physische und 8 logische CPUs auf meinem Mac – user554481