Библиотеки Python, позволяющие распределять и распараллеливать задачи машинного обучения

В настоящее время модели нейронных сетей очень глубокие и сложные, требующие изучения большого количества весов. Тренировать такие модели очень сложно. Специалистам по обработке данных необходимо настроить распределенное обучение, контрольные точки и т. Д. Даже после этого специалисты по обработке данных могут не достичь желаемой производительности и скорости сходимости. Обучение больших моделей является еще более сложной задачей, поскольку у модели легко заканчивается память.

В этой статье мы увидим список платформ Python, которые позволяют нам распространять и распараллеливать модели глубокого обучения.

1. Элефы

Elephas - это расширение Keras, которое позволяет запускать распределенные модели глубокого обучения в масштабе с помощью Spark. Elephas намеревается сохранить простоту и удобство использования Keras, тем самым обеспечивая быстрое прототипирование распределенных моделей, которые можно запускать на массивных наборах данных.

В настоящее время Elephas поддерживает ряд приложений, в том числе:

Установка

pip install elephas

2. FairScale

FairScale - это библиотека расширений PyTorch для высокопроизводительного и крупномасштабного обучения на одной или нескольких машинах / узлах. Эта библиотека расширяет базовые возможности PyTorch, добавляя новые экспериментальные.

FairScale поддерживает:

  • Параллелизм
  • Раздельное обучение
  • Оптимизация в масштабе
  • Оптимизация памяти GPU
  • Оптимизация скорости графического процессора

Установка

pip install fairscale

3. TensorFlowOnSpark

Комбинируя основные функции платформы глубокого обучения TensorFlow с Apache Spark и Apache Hadoop, TensorFlowOnSpark обеспечивает распределенное глубокое обучение на кластере серверов GPU и CPU.

Он обеспечивает как распределенное обучение TensorFlow, так и выполнение логических выводов в кластерах Spark с целью минимизировать количество изменений кода, необходимых для запуска существующих программ TensorFlow в общей сетке.

TensorFlowOnSpark был разработан Yahoo для крупномасштабного распределенного глубокого обучения в наших кластерах Hadoop в частном облаке Yahoo.

Установка

pip install tensorflowonspark

4. DeepSpeed

DeepSpeed - это библиотека оптимизации глубокого обучения, которая делает распределенное обучение простым, эффективным и действенным.

DeepSpeed ​​обеспечивает обучение экстремально масштабных моделей для всех - от специалистов по обработке данных, обучающихся на огромных суперкомпьютерах, до тех, кто обучается на низкопроизводительных кластерах или даже на одном графическом процессоре:

  • Экстремальный масштаб: используя текущее поколение кластеров графических процессоров с сотнями устройств, 3D-параллелизм DeepSpeed ​​может эффективно обучать модели глубокого обучения с триллионами параметров.
  • Чрезвычайно эффективное использование памяти: с помощью всего лишь одного графического процессора ZeRO-Offload в DeepSpeed ​​может обучать модели с более чем 10B параметрами, что в 10 раз больше, чем есть в современных технологиях, демократизируя обучение многомиллиардным параметрам, так что многие ученые, занимающиеся глубоким обучением, могут исследовать все больше и лучше. модели.

Установка

pip install deepspeed

5. Хоровод

Horovod - это распределенная среда обучения глубокому обучению для TensorFlow, Keras, PyTorch и Apache MXNet. Цель Horovod - сделать распределенное глубокое обучение быстрым и простым в использовании. После того, как обучающий сценарий был написан для масштабирования с помощью Horovod, он может работать на одном графическом процессоре, нескольких графических процессорах или даже на нескольких хостах без каких-либо дополнительных изменений кода.

Horovod не только прост в использовании, но и быстр. Ниже приведена диаграмма, представляющая тест, который был проведен на 128 серверах с 4 графическими процессорами Pascal, каждый из которых подключен к сети 25 Гбит / с с поддержкой RoCE:

Установка

#To run on CPUs
pip install horovod
#To run on GPUs with NCCL
HOROVOD_GPU_OPERATIONS=NCCL pip install horovod

6. Сетка TensorFlow

Mesh TensorFlow (mtf) - это язык для распределенного глубокого обучения, способный определять широкий класс распределенных тензорных вычислений. Цель Mesh TensorFlow - формализовать и реализовать стратегии распределения для вашего графа вычислений на вашем оборудовании / процессорах. Например: Разделите пакет по рядам процессоров и разделите блоки в скрытом слое по столбцам процессоров. Сетка TensorFlow реализована как слой поверх TensorFlow.

Установка

pip install mesh-tensorflow

7. BigDL

BigDL - распределенная библиотека глубокого обучения для Apache Spark; с помощью BigDL пользователи могут писать свои приложения для глубокого обучения как стандартные программы Spark, которые могут работать непосредственно поверх существующих кластеров Spark или Hadoop. Чтобы упростить создание приложений Spark и BigDL, предоставляется высокоуровневый Аналитический зоопарк для сквозной аналитики + конвейеры AI.

  • Расширенная поддержка глубокого обучения. Созданный по образцу Torch, BigDL обеспечивает всестороннюю поддержку глубокого обучения, включая числовые вычисления (через Tensor) и высокоуровневые нейронные сети; Кроме того, пользователи могут загружать предварительно обученные модели Caffe или Torch в программы Spark с помощью BigDL.
  • Чрезвычайно высокая производительность. Для достижения высокой производительности BigDL использует Intel MKL / Intel MKL-DNN и многопоточное программирование в каждой задаче Spark. Следовательно, он на порядки быстрее, чем Caffe, Torch или TensorFlow с открытым исходным кодом на одноузловом Xeon (то есть сравнимый с обычным GPU). С внедрением Intel DL Boost BigDL значительно улучшает задержку вывода и пропускную способность.
  • Эффективное горизонтальное масштабирование. BigDL может эффективно масштабироваться для выполнения аналитики данных в масштабе больших данных, используя Apache Spark (молниеносную платформу распределенной обработки данных), а также эффективные реализации синхронной SGD и общедоступной связи на Spark.

Установка

pip install BigDL

8. Аналитический зоопарк.

Analytics Zoo бесшовно масштабирует TensorFlow, Keras и PyTorch для распределенных больших данных (с использованием Spark, Flink & Ray).

  • Сквозной конвейер для применения моделей ИИ (TensorFlow, PyTorch, OpenVINO и т. Д.) К распределенным большим данным.
  • Напишите TensorFlow или PyTorch в коде Spark для распределенного обучения и вывода.
  • Встроенная поддержка глубокого обучения (TensorFlow / Keras / PyTorch / BigDL) в конвейерах Spark ML.
  • Непосредственно запускайте программы Ray в кластере больших данных через RayOnSpark.
  • Простые API Java / Python для (TensorFlow / PyTorch / BigDL / OpenVINO) Вывод модели.
  • Рабочий процесс машинного обучения высокого уровня для автоматизации задач машинного обучения
  • Cluster Serving для автоматического вывода модели (TensorFlow / PyTorch / Caffe / OpenVINO).
  • Масштабируемый AutoML для прогнозирования временных рядов.
  • Встроенные модели для приложений Рекомендация, Временные ряды, Компьютерное зрение и НЛП.

Установка

pip install analytics-zoo

9. Петасторм

Petastorm - это библиотека доступа к данным с открытым исходным кодом, разработанная в Uber ATG. Эта библиотека обеспечивает обучение на одной машине или распределенное обучение и оценку моделей глубокого обучения непосредственно из наборов данных в формате Apache Parquet. Petastorm поддерживает популярные фреймворки машинного обучения (ML) на основе Python, такие как Tensorflow, PyTorch и PySpark. Его также можно использовать из чистого кода Python.

Установка

pip install petastorm

10. Apache SINGA

Apache SINGA - это проект верхнего уровня Apache, ориентированный на распределенное обучение моделей глубокого обучения и машинного обучения.

Установка

#CPU only
conda install -c nusdbsystem -c conda-forge singa-cpu=3.1.0
#GPU with CUDA and cuDNN (CUDA driver >=384.81 is required)
conda install -c nusdbsystem -c conda-forge singa-gpu=3.1.0

Спасибо за чтение!

Любые отзывы и комментарии приветствуются!