У нас запущен распределенный Tensorflow. Мы разгружаем задачи с узла 1 на узел 2.
Проблема в том, что мы имеем дело с графическими процессорами. Node2 содержит графические процессоры Volta и программный стек Nvidia. Node1 не имеет графических процессоров и программного стека Nvidia. Node1 выдает ошибку при разгрузке задачи GPU на Node2. Как нам обойти эту проблему? Любой совет приветствуется.
Вот пример кода и вывод:
На узле 1 (без NVIDIA Cuda / GPU):
an=5
bn=15
import tensorflow as tf
import struct
cluster = tf.train.ClusterSpec({"worker":
["node1.hostname.com:2244","node2.hostname.com:2266"]})
server = tf.train.Server(cluster, job_name="worker",task_index=1)
with tf.device("/job:worker/replica:0/task:0/device:GPU:0"):
a = tf.constant(an,name="a")
b = tf.constant(bn,name="b")
c = tf.add(a,b,name="c")
with tf.Session(server.target, config=tf.ConfigProto(log_device_placement=True)) as sess:
out=sess.run(c)
out=struct.unpack('<i',out)
print(out[0])
На узле 2 (где находится NVIDIA GPU / GPU):
import tensorflow as tf
cluster = tf.train.ClusterSpec({"worker":
["node1.hostname.com:2244","node2.hostname.com:2266"]})
server = tf.train.Server(cluster,job_name="worker",task_index=0)
import time
while True:
time.sleep(5)
И ошибка следующая:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign
a device for operation c: Could not satisfy explicit device specification
'/job:worker/replica:0/task:0/device:GPU:0' because no supported kernel for
GPU devices is available.
Основываясь на архитектуре Tensorfow , кажется, что ядро на узле 1 (нет доступных NVIDIA Cuda / GPU) должно поддерживать NVIDIA Cuda при сборке. Мы хотели бы знать, есть ли альтернатива, которая не требует Cuda при разгрузке вычислений с узла без графического процессора1 на графический процессор на узле 2.