Перепечатайте и переведите на Medium статью о распределенных платформах глубокого обучения. https://medium.com/@mlblogging.k/9-libraries-for-parallel-distributed-training-inference-of-deep-learning-models-5faa86199c1fmedium.com/@mlblogging.k/9-libraries-for-parallel-distributed-training-inference-of-deep-learning-models-5faa86199c1f
Большим моделям глубокого обучения требуется большой объем памяти для хранения таких параметров, как промежуточные активации и веса во время обучения. В результате некоторые модели можно обучить только на одном графическом процессоре с использованием очень небольшого размера пакета или даже невозможно обучить на другом процессоре. один графический процессор, что делает обучение модели очень неэффективным и в некоторых случаях невозможным.
Существует основная парадигма крупномасштабного обучения модели глубокого обучения:
Мы обсудим основные концепции крупномасштабного обучения моделей глубокого обучения, а также последние достижения и улучшения в обучении моделей, а затем поделимся некоторыми доступными библиотеками, реализующими эти методы.
Наиболее распространенный сценарий применения параллелизма данных — это когда размер модели может быть размещен в памяти графического процессора, а размер пакета данных увеличивает сложность обучения модели. Решение состоит в том, чтобы разные экземпляры модели запускались на разных графических процессорах и разных пакетах данных, как показано на изображении ниже.
Каждый экземпляр модели инициализируется с одинаковыми параметрами, но во время прямого прохода в каждую модель отправляются разные пакеты данных. Соберите градиенты из каждого экземпляра модели и вычислите обновления градиента. , затем обновляет параметры модели и отправляет их как обновления каждому экземпляру модели.
Параллелизм моделей становится необходимым, когда один графический процессор не может вместить размер модели и для обучения необходимо разделить модель на несколько графических процессоров.
Разделив большую модель на несколько GPU При обучении размер модели может быть больше одного Обучение модели глубокого обучения памяти графического процессора. Проблема с этим подходом заключается в том, что вычисления не очень эффективны, поскольку в любой момент времени существует только один GPU являютсяиспользовать,идругой GPU В состоянии простоя.
Вышеупомянутые две парадигмы параллельного обучения имеют различные методы оптимизации и улучшения, позволяющие сделать обучение/вывод эффективным, включая следующие:
Megatron — это крупномасштабная языковая модель Transformer, разработанная исследовательской группой NVIDIA по приложениям глубокого обучения и используемая для изучения крупномасштабного обучения больших языковых моделей. Megatron поддерживает параллелизм моделей (тензор, последовательность и конвейер) и предварительное обучение нескольких узлов моделей трансформаторов, а также поддерживает такие модели, как BERT, GPT и T5.
DeepSpeed — это библиотека глубокого обучения Microsoft, которая использовалась для обучения Megatron-Turing NLG 530B и BLOOMЖдите больших Модель。DeepSpeedиз Инновации отражаются в трех аспектах:тренироваться , рассуждение , сжатие
DeepSpeed имеет следующие преимущества:
FairScale(Зависит от Facebook Research) — инструмент для высокопроизводительного и масштабного обучения. PyTorch Расширить библиотеку. FairScale Видение следующее:
FairScale поддерживает Fully Sharded Data Parallel (FSDP), который является рекомендуемым способом масштабирования обучения крупных нейронных сетей.
FSDP workflow from https://pytorch.org/blog/introducing-pytorch-fully-sharded-data-parallel-api/
Parallelformers основан на Megatron-LM библиотека. это связано с Huggingface Библиотеки хорошо интегрированы. Huggingface Модели в библиотеке можно распараллелить с помощью одной строки кода. В настоящее время он поддерживает только вывод.
from transformers import AutoModelForCausalLM, AutoTokenizer
from parallelformers import parallelize
model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-neo-2.7B")
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neo-2.7B")
parallelize(model, num_gpus=2, fp16=True, verbose='detail')
Colossal-AIПредоставляет набор параллельных компонентов.,Может использоваться для индивидуального распределенного/параллельного обучения.,Содержит следующие стратегии распараллеливания и улучшения:
Alpaэто длятренироватьсяи Обслуживание крупномасштабных нейронных сетейизсистема,Он имеет следующие характеристики:
Hivemindесть один в Интернетеиспользовать Pytorch Будьте децентрализованы обучениебиблиотека. Основной сценарий его обслуживания — обучение масштабной программы на сотнях компьютеров из разных университетов, компаний и волонтеров.
Его основные особенности:
OneFlow это более глубокий обучениерамка, разработанная, чтобы быть удобной, масштабируемой и эффективной. использовать С OneFlow это легко:
в соответствии с github страница:Mesh TensorFlow (mtf) — это язык распределенного глубокого обучения, способный определять широкий класс распределенных тензорных вычислений. «Сетка» здесь относится к взаимосвязанной сети процессоров или вычислительных устройств.
https://zhuanlan.zhihu.com/p/582498905