как мы выбираем --nthreads и --nprocs для каждого работника в распределенной среде, работающей через helm на kubernetes? - PullRequest
0 голосов
/ 06 ноября 2019

Я использую интенсивный код Python для ввода-вывода в Dask и хочу увеличить количество потоков на одного работника. Я развернул кластер Kubernetes, который запускает Dask, распространяемый через helm . Я вижу из шаблона развертывания рабочего , что число потоков для рабочего установлено равным количеству процессоров, но я бы хотел увеличить количество потоков, если это не анти-шаблон. Как мне это сделать?

Похоже, из этого похожего вопроса , что я могу подключиться к ssh к планировщику dask и запустить рабочих с dask-worker? Но в идеале я бы мог сконфигурировать рабочие ресурсы через helm, чтобы мне не приходилось взаимодействовать с планировщиком, кроме как посылать ему задания через Client.

Ответы [ 3 ]

1 голос
/ 07 ноября 2019

Ограничения ресурсов и запросы Kubernetes должны соответствовать параметрам --memory-limit и --nthreads, заданным команде dask-worker. Для получения дополнительной информации перейдите по ссылке 1 (лучшие практики описаны в официальной документации Dask) и 2

0 голосов
/ 13 ноября 2019

Существует ограничение таблицы руля Даск, которое не позволяет устанавливать --nthreads на графике. Я подтвердил это с командой Dask и подал проблему: https://github.com/helm/charts/issues/18708.

Тем временем используйте Dask Kubernetes для более высокой степени настройки.

0 голосов
/ 06 ноября 2019

Потоки в Python - это осторожное искусство, которое действительно зависит от вашего кода. Для простоты -nprocs почти наверняка должен быть равен 1, если вы хотите больше процессов, вместо этого запустите больше реплик. Для подсчета количества потоков сначала помните, что GIL означает, что только один поток может одновременно выполнять код Python. Таким образом, вы получаете выигрыш от параллелизма только в двух основных ситуациях: 1) некоторые потоки блокируются при вводе / выводе, например, при ожидании ответа от базы данных или веб-API, или 2) некоторые потоки выполняют не связанный с GIL код C внутри NumPy или друзей,Во второй ситуации вы по-прежнему не можете получить больше параллелизма, чем количество процессоров, поскольку именно столько слотов требуется для одновременной работы, но в первом случае в некоторых ситуациях может быть больше потоков, чем процессоров.

...