Содержимое
Архитектура LLM Что вообще такое эти ваши LLM и чем они отличаются от привычных трансформеров? Давайте разбираться. Если пытаться дать определение, то LLM — это большая языковая модель, которая была обучена генерировать ответ на какую-либо инструкцию. Тут два ключевых момента, не считая размер модели: то, что модель генеративная, и то, что она умеет принимать на вход какие-либо инструкции. 📝Разбираемся с генеративностью Какая часть трансформера умеет в генерацию текста? Правильно, декодер. Собственно, LLM — это просто жирный (с большим количеством параметров) transformer decoder. Или encoder-decoder, но это только у старых моделей, типа T5. Новые GPT-like архитектуры от энкодеров отошли. Способность же принимать на вход инструкцию обусловлена пайплайном обучения модели, включая специфичные инструкционные данные, а не какими-либо архитектурными модификациями. Особенность этого пайлайна — после этапа 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, но это скорее частные случаи. Почему? Увеличиваем количество параметров модели, не увеличивая при этом сложность вычислений (хоть и страдаем по памяти). P.S.: если вы увидели много незнакомых слов — не переживайте, в следующих постах расскажем про то, как именно работают все эти навороты. Эти же архитектурный особенности характерны и для негенеративных современных моделек: например, для энкодеров. Так что нельзя сказать, что это что-то LLM-специфичное — скорее архитектурная база любых современных трансформеров.