Библиотеки 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, ориентированный на распределенное обучение моделей глубокого обучения и машинного обучения.
- Масштабируемость: SINGA распараллеливает обучение и оптимизирует затраты на коммуникацию, чтобы улучшить масштабируемость обучения.
- Эффективность: SINGA строит вычислительный граф, чтобы оптимизировать скорость обучения и объем памяти.
- Удобство использования: SINGA имеет простой программный стек и интерфейс Python для повышения удобства использования.
Установка
#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
Спасибо за чтение!
Любые отзывы и комментарии приветствуются!