Когда я создаю кластер с одним драйвером + двумя рабочими, с одним GPU каждый, и пытаюсь запустить обучение на каждом GPU, я бы написал:
from sparkdl import HorovodRunner
hr = HorovodRunner(np=3)
hr.run(train_hvd)
Но получаю следующее сообщение об ошибке:
HorovodRunner was called with np=3, which is greater than the maximum processes that can be placed
on this cluster. This cluster can place at most 2 processes on 2 executors. Training won't start
until there are enough workers on this cluster. You can increase the cluster size or cancel the
current run and retry with a smaller np.
Очевидно, HorovodRunner не считает графический процессор на узле драйвера (правильно?). Когда я использую опции np = -1 (только для GPU драйвера), np = 2 (где-то 2 GPU) или np = -2 (только для драйвера, но с 2 GPU), все работает нормально, т.е. код, кроме того, что я не могу заставить его использовать все 3 доступных графических процессоров.
(a) Есть ли способ заставить Horovod включить GPU на узле драйвера в распределенное обучение?
(b) Альтернативно: есть ли способ создать кластер с работниками GPU, но не-GPU драйвер в Databricks?