Архитектура LLM
Что вообще такое эти ваши LLM и чем они отличаются от привычных трансформеров? Давайте разбираться.
Если пытаться дать определение, то LLM — это большая языковая модель, которая была обучена генерировать ответ на какую-либо инструкцию.
Тут два ключевых момента, не считая размер модели: то, что модель генеративная, и то, что она умеет принимать на вход какие-либо инструкции.
📝 Разбираемся с генеративностью
Какая часть трансформера умеет в генерацию текста? Правильно, декодер. Собственно, LLM — это просто жирный (с большим количеством параметров) transformer decoder.
Способность же принимать на вход инструкцию обусловлена пайплайном обучения модели, включая специфичные инструкционные данные, а не какими-либо архитектурными модификациями.
Особенность этого пайлайна — после этапа pre-train модели проводят этап alignment, дообучая модель на инструкционных датасетах. В таких датасете каждый сэмпл — это диалог человека с LLM, который может включать в себя системный промпт (как раз-таки инструкцию), сообщения от лица человека и сообщения от лица LLM, зачастую промаркированные на предмет «хорошести» ответа. Сейчас самые популярные инструкционные датасеты — это Nectar и UltraFeedback.
Итого, LLM — это просто здоровенный transformer decoder, дообученный на инструкционном датасете.
Если углубляться в детали, то популярными архитектурными особенностями современных LLM являются:
- Rotary Positional Encoding (RoPE) и его модификации в качестве позиционного кодирования — вот наш пост про это.
Почему? Помогает работать с более длинным контекстом без значимой потери качества.
- RMSNorm вместо LayerNorm для нормализации.
Почему? Работает сопоставимо по качеству, но проще (быстрее) вычислять — а скорость нам важна.
- Sliding Window, Grouped-Query или Multi-Query вместо ванильного Multi-Head Attention:
Почему? Чем меньше параметров, тем быстрее вычислять.
- Может использоваться Mixture-of-Experts, но это скорее частные случаи.
Почему? Увеличиваем количество параметров модели, не увеличивая при этом сложность вычислений (хоть и страдаем по памяти).
Эти же архитектурный особенности характерны и для негенеративных современных моделек: например, для энкодеров. Так что нельзя сказать, что это что-то LLM-специфичное — скорее архитектурная база любых современных трансформеров.
>>Click here to continue<<