Не удается запустить dask-mpi с таймаутом Python 3.7 при подключении клиента к планировщику dask-mpi

Я пытаюсь запустить Dask-MPI «Начало работы» (http://mpi.dask.org/en/latest/) в свежей среде Anaconda.

Я настроил среду, используя

conda create -n dask-mpi -c conda-forge python=3.7 dask-mpi
conda activate dask-mpi

Внутри среды я бегу

mpirun -np 4 dask-mpi --scheduler-file ./scheduler.json

Затем из интерпретатора Python на том же компьютере (и в той же папке) я запускаю

from dask.distributed import Client
client = Client(scheduler_file='/path/to/scheduler.json')

Это приводит к следующей ошибке:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/distributed/client.py", line 712, in __init__
    self.start(timeout=timeout)
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/distributed/client.py", line 858, in start
    sync(self.loop, self._start, **kwargs)
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/distributed/utils.py", line 331, in sync
    six.reraise(*error[0])
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/six.py", line 693, in reraise
    raise value
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/distributed/utils.py", line 316, in f
    result[0] = yield future
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/tornado/gen.py", line 729, in run
    value = future.result()
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/tornado/gen.py", line 736, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/distributed/client.py", line 954, in _start
    yield self._ensure_connected(timeout=timeout)
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/tornado/gen.py", line 729, in run
    value = future.result()
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/tornado/gen.py", line 736, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/distributed/client.py", line 1015, in _ensure_connected
    timedelta(seconds=timeout), self._update_scheduler_info()
  File "/home/nleaf/anaconda3/envs/dask-mpi/lib/python3.7/site-packages/tornado/gen.py", line 729, in run
    value = future.result()
tornado.util.TimeoutError: Timeout

Терминал, с которого я запускал dask-mpi, не имеет вывода, который указывал бы на то, что что-то пытается подключиться. Я подтвердил, что порт 8786, о котором идет речь, открыт. Я также проверил через отладчик, что клиент получает правильный адрес из файла планировщика.

Я пробовал это в нескольких разных средах и на нескольких разных машинах, включая свежий контейнер докеров Ubuntu 18.04. Я совершенно не понимаю, какие шаги я могу пропустить.


person nleaf    schedule 19.06.2019    source источник


Ответы (1)


Оказывается, это произошло из-за ошибки в более новых версиях dask.distributed (1.25.3), которая нарушила поведение dask-mpi. Кажется, это исправлено в dask-mpi 1.0.3 (https://github.com/dask/dask-mpi/releases/tag/1.0.3).

person nleaf    schedule 20.06.2019