Разработчики начинают смотреть в сторону открытых LLM-библиотек

19 Августа 2024 09:2519 Авг 2024 09:25 |
Поделиться

Генеративные нейросети постепенно становятся неотъемлемой частью бизнес-процессов. Они помогают автоматизировать задачи, упростить обработку документов и запросов, анализировать данные и моделировать разные сценарии изменений. Однако спрос на нейросетевые технологии чаще всего опережает реальное предложение. Обучение больших языковых моделей под новые задачи требует большой подготовки, дополнительных ресурсов (и человеческих, и финансовых) и времени.

LLM-библиотеки

В условиях постоянной конкуренции за новую аудиторию время играет существенную роль. И это актуально как для иностранных компаний, так и для российских. Если следовать мировым трендам, то решением проблемы может стать использование LLM-библиотек с открытым исходным кодом в открытом доступе. По сути, это уже готовый инструмент, который помогает ускорить обучение больших языковых моделей, предназначенных для последующего развертывания в компании.

Среди крупнейших разработчиков LLM-библиотек — NVIDIA, Microsoft, «Яндекс», Google, Meta, Hugging Face.
В основе каждой библиотеки лежит тот или иной метод распределения вычислительных задач между графическими процессорами (GPU). Задача любого метода — ускорить обучение нейросетевой моделей.

Megatron-LM & NeMO: pipeline parallelism (конвейерный параллелизм)

Megatron-LM — библиотека NVIDIA, разработанная в 2019 г. для работы с огромным количеством данных и обучения моделей с миллиардами параметров без ограничения по числу GPU. По словам разработчиков, она имеет гибкие инструменты для настройки и расширения моделей, что позволяет тестировать различные архитектуры моделей. Если точнее, то благодаря Megatron-LM можно эффективно масштабировать обучение моделей с более чем ста миллиардами параметров. Библиотека совместима с NVIDIA NeMO — платформой искусственного интеллекта, ориентированной на решение производственных задач.

В основе Megatron-LM лежит метод конвейерного параллелизма, который призван исправить одну из основных проблем нейросетевых вычислений — проблему простоя GPU. К примеру, при вычислениях на четырех графических процессорах время простоя составляет 80%.

При конвейерном параллелизме пакеты вычисляемых данных дробятся и рассчитываются последовательно — как на конвейере. Отсюда и название. Фактически такой подход позволяет разменивать простои на активации. Причем большее число активаций не увеличивает нагрузку на память — как не делает этого и большее число параметров. Метод оптимален в случае медленной сети, поскольку предполагает минимальное число коммуникаций.

xFormers: Tensor Parallelism и Sequence Parallelism (тензорный и последовательный параллелизм)

Библиотеку xFormers разработали в Facebook AI Researches. Она ускоряет нейросетевые вычисления, осуществляемые в моделях машинного обучения, которые построены по архитектуре трансформера. Сегодня такие модели применяются практически во всех преобразователях текстовых подсказок в изображения.

xFormers представляет инструменты для запуска трансформеров с наименьшим использованием памяти. Повысить эффективность распределения памяти GPU разработчикам удалось за счет метода тензорного параллелизма. Под тензорами подразумеваются многомерные массивы данных, которые массивны настолько, что графические процессоры не всегда справляются с их обработкой. Поэтому такие массивы распределяют между GPU. За счет активаций такое решение позволяет уменьшить нагрузку на память до восьми раз. В то же время оно предполагает дополнительные коммуникации и снижает эффективность вычислений в небольших моделях с менее чем десятью миллиардами параметров. Что до числа параметров, то нагрузку на память оно не увеличивает.

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

Deepspeed-ZeRO/FSDP/YaFSDP: Fully Sharded Data Parallelism (параллелизм с полным распределением данных)

DeepSpeed — библиотека оптимизации глубокого обучения, разработанная Microsoft в 2020 г. для PyTouch. Как уверяют в компании, благодаря технологии оптимизации памяти Zero Redundancy Optimizer (ZeRO) она способна обучать языковые модели со 140 миллиардами параметров.

Библиотека предназначена не только для снижения вычислительной мощности и экономии использования памяти, но и для обучения больших распределённых моделей. Например, для обучения модели с 20 миллиардами параметров DeepSpeed потребуется втрое меньше ресурсов, чем конкурентам. А если задействовать 1024 графических процессора, то счет параметрам языковых моделей пойдет уже на триллионы. Всего в таком случае потребуется 16 терабайт памяти, что в пересчете на один GPU составляет 16 гигабайт. Высокие показатели достигнуты благодаря тому, что состояния модели не реплицируются, а делятся между параллельными процессами.

Следующим шагом в эволюции ускорения стала библиотека от разработчиков Facebook AI Research под названием FSDP. Она повышает производительность решений за счёт совмещения коммуникационных и вычислительных задач в процессе обучения моделей. Полная нагрузка на память снижается благодаря активациям и распределению вычислений по GPU. Снижается и нагрузка на сеть — в три-четыре раза.

Развитием метода стал YaFSDP — пока единственная в России библиотека для обучения больших языковых моделей, которую в 2024 г. представил «Яндекс». Она может использоваться для обучения моделей как собственной разработки, так и сторонних — с открытым исходным кодом.

Как и другие библиотеки, YaFSDP позволяет работать одновременно на нескольких платформах. И позволяет оптимизировать использование ресурсов GPU на всех стадиях обучения, исключая проблему неполной загрузки каналов и их замедление.

По словам разработчиков, YaFSDP позволяет ускорить процесс обучения до 25% в зависимости от архитектуры и параметров нейросети и одновременно сократить до 20% меньше используемых ресурсов GPU. При предварительном обучении использование YaFSDP вместе с другими способами оптимизации показало ускорение в 45%. Результаты тестов библиотеки на сторонних нейросетях подтверждают заявленные показатели. Так, при использовании модели LLaMA 2 этап предварительного обучения сокращается с 66 до 53 дней.

Полный текст статьи читайте на CNews