В последних двух сообщениях (Многопроцессорность, Ray) я сравнивал эффект от распараллеливания заданий обучения с использованием многопроцессорности Sklearn и Ray.
В этом посте я запускаю тот же эксперимент (обучение модели XGboost на наборе данных 20 групп новостей 50 раз) с использованием Dask.
Что такое Даск?
Dask — это библиотека параллельных вычислений, построенная на Python. Dask позволяет легко управлять распределенными работниками и превосходно справляется с большими распределенными рабочими процессами обработки данных. Даск-кластер состоит из трех разных компонентов: централизованного планировщика, одного или нескольких рабочих процессов и одного или нескольких клиентов, которые выступают в качестве точки входа для пользователя для отправки задач в кластер.
При использовании XGBoost с dask необходимо вызывать интерфейс XGBoost dask со стороны клиента. dask-xgboost
— это оболочка вокруг xgboost, которую можно использовать для настройки XGBoost, передачи данных и предоставления возможности XGBoost параллельно обучать деревья с градиентным усилением в фоновом режиме, используя все рабочие процессы, доступные Dask.
В этом эксперименте я сначала создал локальный кластер в одноузловом режиме, а затем подключил distributed.Client
к этому кластеру, настроив среду для выполнения необходимых вычислений. Кроме того, я разделил обучающие данные на 25 частей.
Основное отличие интерфейса XGBoost от Dask заключается в том, что мы передаем наш клиент Dask в качестве дополнительного аргумента для выполнения вычислений.
Вы можете найти блокнот реализации на моем GitHub.
Заключение
- Как видно из приведенной выше диаграммы, обучение XGboost на кластере Dask с 4 рабочими процессами примерно в 9 раз медленнее, чем многопроцессорная обработка на 4 ядрах.
- Отчасти это вызвано тем, что поиск наилучшей конфигурации кластера и разделения данных не является тривиальным и требует более системного подхода.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.