50 LLaMA
Контекст
Сильные LLM были закрытыми (GPT-3/3.5). Meta выпускает семейство эффективных foundation-моделей на публичных данных.
Идея и механизм
Следуя урокам Chinchilla (#42), берут модели поменьше (7B–65B), но обучают на БОЛЬШЕМ числе токенов → выгоднее по компьюту ИНФЕРЕНСА. 13B-LLaMA обходит GPT-3 175B на многих бенчмарках. Архитектурные детали стали стандартом: RMSNorm (нормализация), SwiGLU (активация в FFN), RoPE (rotary positional embeddings).
линейная алгебра RoPE: позиция через поворот векторов
Как кодировать позицию? RoPE вращает пары координат Q и K на угол, пропорциональный позиции. Для пары (x1, x2) на позиции m:
Магия в том, что скалярное произведение повёрнутых qm и kn зависит только от относительной позиции (m−n), а не от абсолютных. Это даёт относительное позиционирование «бесплатно» (без отдельных эмбеддингов) и лучше тянется на длины, не виденные при обучении. Плюс RMSNorm (нормировка по корню среднего квадрата — дешевле LayerNorm) и SwiGLU (гейтовая активация, эмпирически лучше ReLU) — эти три выбора стали де-факто стандартом архитектуры open-LLM.
PyTorch RoPE — поворот Q/K по позиции
import torch
# поворачиваем пары измерений на угол ∝ позиции
def rope(x, pos, theta):
ang = pos * theta # угол растёт с позицией
x1, x2 = x[..., 0::2], x[..., 1::2]
return torch.cat([x1*ang.cos() - x2*ang.sin(),
x1*ang.sin() + x2*ang.cos()], dim=-1)
# после RoPE: q_m · k_n зависит только от (m − n)
Почему это важно
Веса (по research-лицензии) утекли в марте 2023 → взрыв open-source: Alpaca, Vicuna и тысячи дообученных моделей; запустил волну открытых LLM (на ней выросли Mistral и далее). LLaMA-2/3 уже официально открыты.
Связи
LLaMA — прямое воплощение урока Chinchilla: меньшие модели на куда большем числе токенов. И идёт дальше — обучает сверх точки Chinchilla ради дешёвого инференса, что окупается на миллионах запросов.
Открытые веса LLaMA + LoRA = взрыв кастомизации: сообщество дообучает базу лёгкими адаптерами на потребительском железе. Открытость модели и дешевизна дообучения вместе и дали такую скорость итераций.
Открытую модель надо где-то эффективно запускать — vLLM стал стандартным движком сёрвинга для LLaMA-семейства. Открытые веса + эффективный инференс = практичный self-hosting.
Вопросы пытливого ума
Почему «утечка весов» стала поворотным моментом, а не просто инцидентом?
Потому что впервые в руках сообщества оказалась сильная базовая модель, которую можно свободно дообучать и запускать. До этого open-модели заметно отставали. LLaMA дала фундамент, на котором за недели выросли Alpaca, Vicuna и сотни проектов — это сместило центр инноваций отчасти из лабораторий в open-source. Meta потом сделала выводы и стала выпускать LLaMA-2/3 официально открытыми.
Зачем обучать сверх точки Chinchilla, если она «оптимальна»?
Chinchilla оптимизирует обучение при фиксированном compute. Но для развёрнутой модели важнее стоимость инференса (миллионы запросов). Маленькая модель дешевле обслуживать, поэтому выгодно «переобучить» её лишними токенами: тратишь больше на обучение один раз, экономишь вечно на запросах. LLaMA сознательно идёт против compute-optimal ради deploy-optimal.
RMSNorm, SwiGLU, RoPE — это принципиальные улучшения или мелкие хаки?
Скорее аккуратно отобранные эмпирические улучшения, каждое даёт небольшой выигрыш, но вместе они заметны и почти не стоят дополнительного compute. RMSNorm дешевле, SwiGLU чуть качественнее ReLU, RoPE лучше для длинных контекстов. Их ценность — в том, что они стали стандартным набором: почти все современные open-LLM используют именно эту тройку.
Что читать в оригинале
Читать ключевое — выбор данных/архитектуры (RMSNorm, SwiGLU, RoPE) и результаты «меньше, но дольше обучено».