00:00:00Это DeepSpeed — опенсорсная библиотека от Microsoft, которая встраивается прямо в PyTorch и решает главную проблему: нехватку памяти.
00:00:07Она позволяет запускать модели, которые обычно сразу вылетают с ошибкой, на одной GPU без перегрузки. Тяжелые модели ломаются не из-за медленной работы,
00:00:14а из-за того, что состояния оптимизатора, градиенты и параметры забивают всю видеопамять. Секрет DeepSpeed — технология ZeRO, которая распределяет состояния обучения,
00:00:23чтобы не хранить одни и те же данные повсюду. У нас постоянно выходят новые видео, так что обязательно подпишитесь.
00:00:30Давайте сразу перейдем к делу и запустим библиотеку. Я буду использовать Google Colab, так как работаю на Mac с процессором M4 Pro,
00:00:40и у меня нет видеокарт NVIDIA, что усложняет задачу, но в Colab это вполне реально. Сначала
00:00:46я быстро проверю видеокарту, а затем установлю через pip все необходимые пакеты.
00:00:51Я установлю PyTorch, Hugging Face и DeepSpeed, а затем выполню команду DS Report, чтобы проверить настройки CUDA и компилятора.
00:00:59Еще пара установок, чтобы все работало без сбоев,
00:01:02и мы создадим JSON-файл конфигурации DeepSpeed. Этот конфиг — самая важная часть.
00:01:09Мы начнем с ZeRO Stage 2, которая распределяет состояния оптимизатора и градиенты между
00:01:14видеокартами для значительной экономии памяти, при этом параметры модели дублируются. Не усложняйте — я в свое время из-за этого чуть с ума не сошел.
00:01:22Просто возьмите за основу официальную документацию, меняйте параметры по одному и не поддавайтесь искушению добавлять лишние
00:01:28настройки. Конфиги можно найти как в документации Hugging Face, так и у DeepSpeed.
00:01:34Большую часть своего Python-скрипта я тоже взял из документации,
00:01:37но внес правки под свою систему, чтобы Mac лучше справлялся с нагрузкой.
00:01:42Если на этом этапе возникнет ошибка — остановитесь, так как большинство проблем с DeepSpeed связано с версиями CUDA, а не с самой моделью.
00:01:48Запускаем и смотрим на результат.
00:01:51Для примера я использую небольшой готовый датасет, чтобы обучение прошло быстрее.
00:01:58Готово! Спустя пару минут мы видим этапы обучения и пиковое использование видеопамяти.
00:02:03Да, на этом прогоне ошибка обучения (loss) почти не снизилась,
00:02:08но для лучшего результата можно подкрутить оптимизацию или взять датасет побольше. Теперь
00:02:13о том, почему у людей все равно заканчивается память, несмотря на использование библиотеки.
00:02:16ZeRO работает поэтапно, и каждый этап отвечает на вопрос: «Что я могу перестать хранить на одной GPU?»
00:02:24Stage 1 распределяет состояния оптимизатора, Stage 2 делает то же самое плюс добавляет градиенты.
00:02:30Так вы избавляетесь от того, что незаметно «съедает» вашу память. И, наконец, есть ZeRO Stage 3.
00:02:36Это самый мощный режим. Он распределяет состояния оптимизатора, градиенты и сами параметры.
00:02:40Это дает максимальную экономию памяти, но даже этого может не хватить.
00:02:45Если модель все равно не влезает, ZeRO-Infinity позволяет выгружать данные в обычную оперативную память или даже на NVMe-диск.
00:02:50Да, вы жертвуете скоростью ради масштаба. Но иногда победа уже в том, чтобы просто запустить модель.
00:02:56Если вы думаете: «Круто, но память — не единственная проблема», вы правы. DeepSpeed поддерживает 3D-параллелизм: по данным,
00:03:04конвейерный и тензорный, а также встроенную поддержку моделей Mixture of Experts (MoE).
00:03:09Так что разреженные модели не сожрут все ваши вычислительные ресурсы.
00:03:12Теперь у нас есть реальные инструменты. DeepSpeed отлично интегрируется с Hugging Face и Accelerate,
00:03:19так что вам не нужно писать всё с нуля.
00:03:21Вы берете только то, что нужно, а остальное можно игнорировать. Результаты тестов сильно зависят от вашего железа,
00:03:27так что не всегда верьте громким цифрам. Я пробовал запускать этот код несколько раз,
00:03:30но на моем чипе M4 Pro не удалось добиться большей оптимизации с этой базовой моделью.
00:03:36Сказать сложно, но другие проекты с DeepSpeed показывают огромный прирост пропускной способности,
00:03:41особенно когда память была узким местом. В Windows или Linux выигрыш может быть колоссальным.
00:03:46Лучший совет — просто попробуйте. Начните с официальных конфигов.
00:03:51Я так и сделал: немного подправил под Mac и исправил ошибки CUDA.
00:03:56Следите за оперативной памятью, если включаете выгрузку (offload), а если решите перейти на несколько GPU,
00:04:01вам поможет Accelerate. По сути, DeepSpeed — это кнопка «Я отказываюсь ловить Out of Memory сегодня».
00:04:07Как только вы поймете ZeRO и принцип выгрузки данных, огромные модели станут реальностью даже на скромном железе.
00:04:14Но да, первая настройка может сбить с толку.
00:04:17Подписывайтесь, если это сэкономило вам время работы GPU или если любите такие инструменты. Увидимся в следующем видео!