Как устроена современная команда предобучения больших языковых моделей?
Создание современных больших языковых моделей, таких как GigaChat, GPT-4 и других, требует колоссальных вычислительных ресурсов и усилий целых инженерных команд. Например, обучение модели Llama 3 использует кластер из 24 576 GPU H100 (правда учили на 16384). Если вы захотите арендовать такой кластер, это обойдется примерно в $1,5-2 миллиона в день! В этом посте мы расскажем, какие задачи решают команды, занимающиеся предобучением (pretrain) языковых моделей, и почему их работа имеет критическое значение.
Есть набор очевидных задач, которыми занимаются все ML команды: это подготовка данных и настройка гиперпараметров модели. Но помимо этого, команда pretrain-ов работает над:
🔸 Проверкой гипотез по улучшению обучения: от введения новых стадий предобучения до поиска оптимального LR планировщика
🔸 Оптимизацией распределенного обучения
🔸 Профилированием и поиском узких мест
🔸 Тестированием новых архитектур
🔸 Мониторингом и оценкой качества обучения
Отдельное внимание уделяется оптимизации кодовой базы для обучения. На это сейчас нацелены все компании, использующие локальные LLM-модели. Некоторые из них даже продают инструменты для быстрого обучения (например, Unsloth).
Может показаться, что с учетом огромных инвестиций в область больших языковых моделей все уже давно оптимизировано. Однако отличным примером обратного является ускорение командой PyTorch одного из самых известных и используемых методов параллелизма - Tensor Parallel (TP).
Главная особенность ускорения в том, что теперь передача данных между узлами и вычисления на них выполняются одновременно, что существенно ускоряет процесс обучения. Вместо того чтобы ждать загрузки всех весов до начала вычислений, система может начать работу с части данных, параллельно подгружая остальные. Именно за счет этого новый метод получил название Async-TP.
Хотя подобный алгоритм обсуждался еще с 2022 года, его эффективная реализация на CUDA была непростой задачей. Предлагаем вам ознакомиться с полным блог-постом, если интересны технические детали.
PyTorch-реализация асинхронного тензорного параллелизма Async-TP позволила:
• Ускорить прямой проход (forward pass) на 29%
• Повысить общую скорость обучения модели Llama 3 7B на 8%
Async-TP использует CUDA P2P для оптимизации передачи данных. При наличии NVSwitch это позволяет практически полностью скрыть задержки межгрупповых коммуникаций.
Поздравляем коллег из PyTorch с этим замечательным результатом! Такие оптимизации критически важны — без них обучение даже базовых моделей растянулось бы на многие годы и стоило бы кратно дороже, чем сейчас.
Мы в GigaChat уделяем много времени оптимизациям обучения и расскажем о том, где и как их применяем, в следующих постах! 🚀
>>Click here to continue<<
