Модуль V·Статья III·~3 мин чтения

Large Language Models: архитектура и обучение

Алгоритмы для Big Data

Превратить статью в подкаст

Выберите голоса, формат и длину — AI запишет аудио

Большие языковые модели: архитектура и жизненный цикл

GPT-4, Claude, Gemini — большие языковые модели (LLM) произвели революцию в AI за 2020–2024 годы. Чтобы эффективно применять и дорабатывать эти модели, необходимо понимать их архитектуру, процесс обучения и методы адаптации.

Предобучение: задача языкового моделирования

Авторегрессивное языковое моделирование: P(x₁,...,xₙ) = Πᵢ P(xᵢ|x₁,...,xᵢ₋₁). Потери при предобучении: L_LM = −(1/n) Σᵢ log P(xᵢ|x₁,...,xᵢ₋₁;θ). «Следующий токен» — простая задача, которая вынуждает модель понимать семантику, синтаксис, фактологию, причинность.

Токенизация: Byte-Pair Encoding (BPE) — итеративно объединяет наиболее частые пары байт. Словарь 32K–256K токенов. «Moscow» → [«Mos», «cow»] или как один токен.

Данные: Common Crawl (фильтрованный интернет), Books, Wikipedia, GitHub, arXiv, StackExchange. Трекинги: The Pile (800GB, EleutherAI), RedPajama, Dolma. Качество фильтрации критично: неаккуратная фильтрация → деградация.

Масштаб: LLaMA-3 (70B): 1.4 триллиона токенов, 2048 GPU A100, ~2 месяца. Стоимость: $5–50M на один прогон. Это объясняет, почему только крупные компании могут обучать frontier-модели с нуля.

Архитектурные детали LLM

GPT-архитектура (decoder-only трансформер): N слоёв каждый = {RMSNorm → Masked Self-Attention → RMSNorm → FFN}. Residual connections поверх. Причина decoder-only: авторегрессивная генерация — каждый новый токен зависит от предыдущих.

SwiGLU (Shazeer, 2020): FFN = W₂ · (σ(W₁x) ⊙ W₃x), где σ — swish. Лучше чем ReLU/GELU — используется в LLaMA, PaLM.

Grouped Query Attention (GQA): несколько Q-голов делят K,V. LLaMA-2-70B: 8 KV-голов на 64 Q-головы. Уменьшает KV-кэш в 8× без значительной потери качества.

RoPE (Rotary Position Embedding): Q и K умножаются на матрицы вращения, зависящие от позиции. Скалярное произведение Q(pos₁)·K(pos₂) зависит только от (pos₁−pos₂). Лучшая экстраполяция на длинные контексты. Стандарт: LLaMA, Mistral, GPT-NeoX.

Mixture of Experts (MoE): каждый токен обрабатывается k из N FFN «экспертов»: y = Σᵢ∈Top-k(router(x)) gᵢ · FFNᵢ(x). Router = линейный слой + softmax. Mixtral 8×7B: 8 экспертов, k=2 активны → 13B активных параметров при 47B полных. Пропускная способность как у 13B, качество как у 70B.

RLHF и постобучение

Предобученная модель генерирует текст, похожий на интернет — включая токсичность, неправду, неполезные ответы. RLHF (Reinforcement Learning from Human Feedback) выравнивает поведение.

Шаг 1 — SFT (Supervised Fine-Tuning): обучаем на примерах «вопрос → хороший ответ» от людей-аннотаторов. ~10K–100K примеров. Модель учится отвечать в формате «assistant».

Шаг 2 — Reward Model (RM): аннотаторы ранжируют пары ответов. Обучаем модель-«судью»: r_θ(x,y) — численная оценка качества ответа y на вопрос x. Функция потерь (Bradley-Terry): L = −E[log σ(r_θ(x,yw) − r_θ(x,yl))], yw > yl по мнению аннотатора.

Шаг 3 — PPO: оптимизируем LLM через PPO, используя RM как reward. KL-penalty предотвращает слишком далёкий уход от SFT: r(x,y) = RM(x,y) − β·KL(π_θ(y|x) || π_SFT(y|x)).

DPO (Direct Preference Optimization, Rafailov et al., 2023): обходится без RM и PPO. Напрямую оптимизируем предпочтения:

L_DPO = −E[log σ(β(log π_θ(yw|x)/π_ref(yw|x) − log π_θ(yl|x)/π_ref(yl|x)))]

Математически эквивалентен RLHF при определённых условиях, но значительно проще и стабильнее. Де-факто стандарт для open-source fine-tuning.

Законы масштабирования и возможности

Scaling Laws (Kaplan, 2020): Loss ∝ N^{−0.076} (vs параметры), Loss ∝ D^{−0.095} (vs данные). Предсказуемое улучшение. Но за пределами порогового масштаба (~10²³ FLOPs) появляются emergent abilities — возможности, которых нет у меньших моделей: chain-of-thought reasoning, few-shot learning, arithmetic.

Chinchilla (Hoffmann, 2022): оптимально N ∝ D. При фиксированном бюджете FLOPs: лучше меньшая модель на большем корпусе. Llama-3-8B на 15T токенов лучше GPT-3-175B на 300B токенов.

Численный пример

LLaMA-2-7B (7B параметров, 2T токенов обучения):

  • Архитектура: 32 слоя, 32 Q-головы, 4 KV-головы (GQA), d_model=4096
  • KV-кэш (32K контекст, FP16): 32 × 4096 × 2 × 32768 × 2 байта ≈ 8 ГБ — больше весов!
  • Скорость генерации (A100): ~50 токен/с (без batching)
  • После DPO fine-tuning (10K preference pairs): MT-Bench score +1.2 балла

Задание: (1) Fine-tune LLaMA-3-8B через LoRA (rank=16) на русскоязычном датасете инструкций (Saiga). Batch size=4, lr=2e-4, 1000 шагов. Оцените качество через MT-Bench (GPT-4 как судья). (2) Реализуйте DPO training на synthetic preference data (GPT-4 генерирует yw, модель-SFT генерирует yl). Сравните с SFT по win rate (GPT-4 evaluation). (3) Измерьте latency и throughput при batch size 1, 4, 16. Где ботлнек: compute или memory bandwidth?

§ Акт · что дальше