Ich benutze Tensorflow auf einem Cluster und ich möchte Tensorflow nur auf einem einzelnen Kern laufen lassen (obwohl es mehr gibt).Wie kann ich Tensorflow auf einem einzelnen Kern laufen lassen?
Weiß jemand, ob das möglich ist?
Ich benutze Tensorflow auf einem Cluster und ich möchte Tensorflow nur auf einem einzelnen Kern laufen lassen (obwohl es mehr gibt).Wie kann ich Tensorflow auf einem einzelnen Kern laufen lassen?
Weiß jemand, ob das möglich ist?
Sie können die Anzahl der Geräte eines bestimmten Typs einschränken, die TensorFlow verwendet, indem Sie beim Erstellen der Sitzung das entsprechende device_count
in einem ConfigProto
Argument als config
übergeben. Zum Beispiel können Sie die Anzahl der CPU-Geräte beschränken, wie folgt:
config = tf.ConfigProto(device_count={'CPU': 1})
sess = tf.Session(config=config)
with sess.as_default():
print(tf.constant(42).eval())
Um Tensorflow auf einer einzigen CPU Thread ausgeführt, die ich benutze:
session_conf = tf.ConfigProto(
intra_op_parallelism_threads=1,
inter_op_parallelism_threads=1)
sess = tf.Session(config=session_conf)
device_count
die Anzahl der CPUs begrenzt verwendet werden, nicht die Anzahl der Kerne oder Threads.
tensorflow/tensorflow/core/protobuf/config.proto
sagt:
message ConfigProto {
// Map from device type name (e.g., "CPU" or "GPU") to maximum
// number of devices of that type to use. If a particular device
// type is not found in the map, the system picks an appropriate
// number.
map<string, int32> device_count = 1;
Unter Linux Sie sudo dmidecode -t 4 | egrep -i "Designation|Intel|core|thread"
ausführen können, um zu sehen, wie viele CPUs/Kerne/Threads Sie haben, z.B. Folgendes 2 CPUs, von denen jeweils 8 Cores, wobei jeder von ihnen hat 2 Fäden, die insgesamt 2 * 8 * 2 = 32 Fäden ergeben:
[email protected]:~$ sudo dmidecode -t 4 | egrep -i "Designation|Intel|core|thread"
Socket Designation: CPU1
Manufacturer: Intel
HTT (Multi-threading)
Version: Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz
Core Count: 8
Core Enabled: 8
Thread Count: 16
Multi-Core
Hardware Thread
Socket Designation: CPU2
Manufacturer: Intel
HTT (Multi-threading)
Version: Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz
Core Count: 8
Core Enabled: 8
Thread Count: 16
Multi-Core
Hardware Thread
Getestet mit Tensorflow 0.12.1 und 1,0. 0 mit Ubuntu 14.04.5 LTS x64 und Ubuntu 16.04 LTS x64.
Leider scheint dies keine Auswirkung auf Windows 10 (tf 1.5.0) zu haben. Es ist ein Problem, keine Möglichkeit zu haben, einen Kern für andere Programme frei zu lassen. – Elroch
@LiamRoche Ich glaube nicht, dass das passieren soll. Möglicherweise möchten Sie ein Problem im Tensorflow-GitHub-Repository auslösen. –
Ich habe das versucht, aber es funktioniert nicht. Wenn ich einen Job an den Cluster übergebe, arbeitet Tensorflow immer noch an allen verfügbaren Kernen eines Knotens. Ich folgendes: init = tf.initialize_all_variables() #launch der Graph config = tf.ConfigProto (DEVICE_COUNT = { 'CPU': 1}) sess = tf.Session (config = config) sess.run (init) –