group-telegram.com/ai_newz/3422
Last Update:
GPT-2 Small теперь тренируют в полтора раза быстрее
Модель теперь тренируется менее чем восемь минут на 8xH100 - всего пару недель назад это занимало более 12 минут. Стоимость тренировки упала до 3 долларов. Давайте разберём как так вышло.
Основной архитектурный трюк - улучшенный value residual learning. Он нужен потому, что модели на более глубоких слоях фокусируются на меньшем количестве токенов, что сильно снижает эффективность глубоких слоёв. Решается это домешиванием в values n-го блока values из первого блока трансформера. То есть в attention идёт не обычная value-матрица, а взвешенное среднее текущей value-матрицы и таковой из первого блока. Параметры для усреднения обучаются отдельно для каждого трансформерного блока.
Такой же трюк с value residual learning применяют и к эмбеддингам - в каждом трансформерном блоке эмбеддинги также взвешенно усредняются, как и value-матрица.
Ещё одно изменение, которое срезало чуть больше минуты от тренировки, - отвязывание embedding-слоя от lm head. Это повысило количество параметров на 39 миллионов, но никак не повлияло на количество активных параметров и время каждого шага. Авторы репозитория сказали, что с данного момента будут ограничивать себя активными параметрами, так что мы вполне можем увидеть MoE через неделю-другую.
Из мелочей - lm head инициализируется теперь нулями, а после эмбеддинг-слоя добавили одну норму. Максимальное значение логитов теперь ограничено, по заветам Gemma 2. А ещё заметили что по дефолту в PyTorch в mixed precision режиме bfloat16 используется достаточно консервативно, поэтому вручную заменили fp32 на bfloat16 в паре мест.
Кстати, автор доказал, что они скейлятся как минимум до 1.5B, по крайней мере на нескольких миллиардах токенов. Это обнадёживает, но не означает, что все эти трюкт стоит использовать в тренировке больших моделей. Ждём, когда кто-то попробует это либо на моделях побольше (7B+), либо на бо́льшем количестве токенов (1T or bust).
Такие спидраны нужны по двум причинам. Первая — повышение эффективности претрейна больших моделей: даже если не всё масштабируется, то что-то точно будет. А наличие чёткого базового уровня помогает лучше понять эффективность каждого отдельного изменения. Вторая - повышение доступности ресёрча. Одна 3090 может натренировать такую модель примерно за 8 часов (одну ночь), без этих оптимизаций тренировка на 3090 приближалась бы к суткам, что сильно снижает скорость итерации.
https://github.com/KellerJordan/modded-nanogpt/
@ai_newz
BY эйай ньюз
Share with your friend now:
group-telegram.com/ai_newz/3422