Сколько времени и денег стоит обучить Llama 3 405B с нуля ?
В компаниях, где процессы начинают быть завязаны на обучение или файнтюн LLM-моделей (по иронии судьбы, это либо совсем крупные игроки, либо небольшие стартапы), вопрос сколько будет стоить обучение модели размера X миллиардов параметров на Y токенах при Z вычислительных ресурсах (GPU или просто компьют) - рано или поздно будет задан ML инженеру продактом или менеджером.
В прошлом году ко мне так часто приходили с этим вопросом, что погуглив нужные статьи и проделав простую математику сошелся к формуле, которой все оказались довольны. Не потому что она простая, а потому что отлично совпадала с жизнью.
Идея в том, чтобы выразить обучение модели N параметров и P токенов к количеству FLOPs (floating point operations). А весь доступный компьют от железа к FLOPS (floating point operations per second). Тогда поделив одно на другое получим оценку времени на обучение модели.
Разберем подробнее.
Количество FLOPs на модель для forward-pass модели примерно 2N, коэф 2 идет от числа матричных операций. backward тяжелее в 2x раза, потому что нужно и градиенты посчитать, и intermediate activations сохранить - 4N. В итоге FLOPS на модель ~ 6N.
Тогда общий FLOPs обучения модели на датасете из P токенов будет 6NP.
Осталось посчитать скорость доступной инфраструктуры. И тут конечно уже начинаются махания руками. Кластер из большого количества GPU не будет работать с 100% эффективностью, большое количество GPU будут простаивать в ожидании синхронизации с другими нодами. И чем больше кластер, тем меньше будет общая утилизация. Для мониторинга работы кластера есть метрика MFU - model FLOPS utilization, она в общем-то и показывается отношение реального throughput к теоретическому максимальному. Получить MFU > 50% на реальных кластерах очень сложно.
Откуда же взять цифры, когда нет возможности протестить инфраструктуру? (например GPU еще не арендованы). Благо Meta щедро делится такой инфой в своих репортах. Например, они писали что выбили 38% утилизации на 16K GPU. Картинка 1.
Тогда алгоритм оценки FLOPs вашей системы становится простым:
1. Находим в документации Nvidia теоретический FLOPs для вашей GPU для заданной precision
2. Берем MFU меты или делаем свой бенчмарк
3. Умножаем теоретический FLOPs из шага 1 на MFU
4. Умножаем результат с шага 3 на количество GPU
Все готово, делим FLOPS модели и данных на FLOPs посчитанный выше и получаем оценку в времени обучения секундах.
Картинка 2 - как итоговая формула для примения на практике. Хорошо себя ведет на крупных кластерах с 1K+ карточек.
🔥 Cделаем кейс стади. Сколько будет обучаться Llama3 405B?
Размер модели 405B, обучали на 15.6 триллионах токенов.
Использовали 16K H100 GPU, средняя пропускная способность одной видеокарты в их системе достигала 400 Teraflops.
⌛Делим одно на другое, получаем 70 дней. В репорте авторы пишут что обучали чуть дольше, скорее всего модель падала и был нужен рестарт.
💸 Теперь довольно легко посчитать, сколько будет стоить такое обучение. Поделив общий FLOPs на FLOPS системы мы можем легко выразить секунды в часы, тогда получим количество миллионов GPU часов на обучение. Поделив эту сумму на стоимость аренды или обслуживания одной гпу, получим общую стоимость. Например на AWS H100 идет за 2$ в час, тогда обучение будет стоить:
52$ миллиона долларов.
Сумма безумная. И это на обучение одной модели...без учета зарплат дорогущих сотрудников.
#разбор
Post #19
1.3K


- ❤ 10
- 🏆 3
- 🆒 3
- 🤡 2
- 🦄 2
- ✍ 1
- 👍 1