🧠 Архитектура трансформеров и LLM моделей: Пошаговый алгоритм с нуля — руководство для новичков и профессионалов
Введение: Почему в 2026 году «просто использовать API» — это стратегический тупик

Представьте: вы строите небоскреб, но не знаете, как работает бетон. В 2024–2025 годах индустрия жила эйфорией «промпт-инжиниринга» и RAG-костылей. К 2026 году правила игры сменились кардинально. Контекстные окна в 1–2 млн токенов (Gemini 1.5 Pro, Claude 3.5 Opus, GPT-4o Long Context) сделали «ретрив» вторичным, а стоимость 1M выходных токенов упала ниже $2.5 (DeepSeek-V3, Nemotron 3 Ultra). Но парадокс в том, что качество рассуждений (reasoning) не масштабируется линейно с контекстом.
Сейчас, в 2026 году, мы наблюдаем смену парадигмы: от Scaling Laws (законы масштабирования) к Inference-Time Compute (вычисления во время инференса). Модели o1/o3 серии, DeepSeek-R1, QwQ-32B доказали: архитектура декодера и механизм внимания — это не «черный ящик», а программируемый субстрат. Кто понимает, как работает FlashAttention-3, RoPE и Mixture-of-Experts (MoE) на уровне ядер GPU (H100/B200), тот владеет экономикой токена. Кто нет — платит аренду NVIDIA и провайдерам облаков.

Этот лонгрид адресован:
- ML-инженерам (Middle/Senior), готовым перейти от transformers.AutoModel к кастомным ядрам Triton/CUTLASS.
- Tech Lead'ам и Архитекторам, проектирующим LLM-платформы под 100k RPS с SLA < 200ms TTFT (Time To First Token).
- Исследователям, ищущим точку входа в mechanistic interpretability и sparse attention.
Мы не будем объяснять, что такое «Query, Key, Value». Мы разберем, как из этих кирпичей собрать production-ready архитектуру 2026 года с нуля.

## 1. Главные предпосылки: Почему привычные методы мертвы
Конец эры «Dense Transformers» и «Naive Attention»
Классический nn.MultiheadAttention из PyTorch с квадратичной сложностью $O(N^2)$ по памяти и времени — музейный экспонат. На контексте 128k токенов стандартный attention требует ~320 GB VRAM только под матрицу внимания ($N^2 \times \text{head_dim} \times \text{bytes}$). Даже H100 (80/94 GB) упирается в потолок при батче 1.
Проблема «Memory Wall» и KV-Cache
В 2026 году бутылочное горлышко — не FLOPS (тензорные ядра простаивают 60–70% времени), а bandwidth памяти (HBM3E: 3.3 TB/s на H100).
- KV-Cache для модели 70B (FP8/BF16) на контексте 128k: ~$2 \times L \times H \times D \times N \approx 2 \times 80 \times 64 \times 128 \times 131072 \times 2 \text{ bytes} \approx \textbf{170 GB}$.
- Это не влезает в один GPU. Нужен Tensor Parallelism (TP) или PagedAttention / KV-Cache Offloading (vLLM, SGLang).
Смерть абсолютной позиции, триумф RoPE и YaRN
Абсолютные позиционные эмбеддинги (BERT-style) не экстраполируются. RoPE (Rotary Positional Embedding) стал стандартом де-факто, но в 2026 году «ванильный» RoPE ($\theta=10000$) ломается на 32k+. Решение — YaRN (Yet another RoPE extensioN) или LongRoPE: динамическое пересчет $\theta$ и интерполяция частот. Без этого ваша 128k-модель галлюцинирует на 50k+ токене.
💡 Совет эксперта: Не используйте
position_embedding_type="absolute"в конфигах 2026 года. Толькоrope_scaling={"type": "yarn", "factor": 4.0, "original_max_position_embeddings": 32768}. Это дает линейную экстраполяцию до 128k+ без дообучения.
## 2. Подробный практический разбор: Анатомия современного блока Трансформера
Разберем блок Decoder-Only (LLaMA-3 / Nemotron / Qwen2.5 архитектура) — стандарт индустрии 2026 года. Параметры ссылки: Nemotron-3-Ultra-53B (SOTA среди открытых dense-моделей на кодинге/математике).
2.1. Pre-Normalization: RMSNorm vs LayerNorm
LayerNorm ($2N$ параметров: weight, bias) уходит в прошлое. RMSNorm (Root Mean Square Layer Normalization) — только scale ($\gamma$), нет bias и центрирования.
- Формула: $y = \frac{x}{\sqrt{\text{mean}(x^2) + \epsilon}} \otimes \gamma$
- Выгода: -5% параметров, +3-5% throughput за счет отсутствия вычитания mean и отдельного bias. Стабильность обучения обеспечивается правильной инициализацией весов (см. раздел 3).
2.2. Attention Block: GQA + FlashAttention-3 + RoPE
Grouped Query Attention (GQA) — баланс между MHA (качество) и MQA (скорость).
- Nemotron-3-Ultra: 64 heads (Q), 8 groups (K/V) $\rightarrow$ ratio 8:1.
- FlashAttention-3 (Hopper/H100): Использует TMA (Tensor Memory Accelerator), Warp Specialization и FP8 Tensor Cores.
- Kernel fusion: QKV proj + RoPE + Softmax + Out proj в одном ядре.
- Поддержка FP8 (E4M3/E5M2) для Q/K/V проекций и выходов. Квантизация KV-Cache в FP8 (KV-Cache quantization) экономит 2x VRAM с потерей <0.5% на MMLU.
Схема прохода (Forward Pass) одного слоя:
Input (residual) -> RMSNorm -> QKV Proj (FP8/BF16) -> RoPE (Q, K)
-> FlashAttn-3 Kernel (GQA, Causal Mask, Softmax) -> Out Proj
-> Dropout (Residual) -> Add Residual
-> RMSNorm -> SwiGLU (FFN) -> Down Proj -> Dropout -> Add Residual
2.3. FFN: SwiGLU и MoE (Mixture of Experts)
Dense FFN (SwiGLU: SiLU(W1*x) * (W3*x) -> W2) в 53B модели съедает 70% FLOPS.
MoE (Mixtral / DeepSeekMoE / Nemotron MoE) — стандарт для >30B параметров.
- Nemotron-3-Ultra MoE: 128 экспертов, top-4 routing (num_experts_per_tok=4).
- Shared Experts: 2 «общих» эксперта, всегда активны (стабильность градиентов).
- Auxiliary Loss: Z-Loss + Router Loss для балансировки нагрузки (load balancing).
- Token Dropping / Capacity Factor: capacity_factor=1.25 (допуск 25% переполнения эксперта).
💡 Совет эксперта: В 2026 году Fine-grained MoE (много маленьких экспертов, top-k=4..6) побеждает Coarse-grained (мало больших, top-k=1..2) за счет лучшей специализации и утилизации GPU при Expert Parallelism (EP).
## 3. Пошаговый алгоритм: От конфига до Production Checkpoint
Шаг 0. Инфраструктура и Фреймворк (2026 Stack)
- Тренировка: Megatron-LM (Core/NeMo) или Axolotl (для LoRA/Full FT до 70B). Не используйте чистый PyTorch DDP/FSDP для >7B — нет 3D Parallelism (TP/PP/CP/EP).
- Инференс: SGLang (лучший throughput на MoE/Long Context) или vLLM 0.6+ (PagedAttention, Chunked Prefill).
- Компиляция: Torch.compile(mode="max-autotune-no-cudagraphs") для тренировки, TensorRT-LLM / MLC-LLM для деплоя.
Шаг 1. Конфигурация архитектуры (Config.yaml)
Критические гиперпараметры для 2026 года (пример под 7B Dense / 50B MoE):
# Core Arch
hidden_size: 4096 # 7B Dense
num_hidden_layers: 32
num_attention_heads: 32
num_key_value_heads: 8 # GQA 4:1
intermediate_size: 14336 # ~3.5 * hidden (SwiGLU multiplier)
max_position_embeddings: 131072 # 128k context
rope_theta: 500000.0 # YaRN base theta
rope_scaling:
type: "yarn"
factor: 4.0
original_max_position_embeddings: 32768
beta_fast: 32
beta_slow: 1
# MoE (если применяете)
num_experts: 64
num_experts_per_tok: 4
moe_intermediate_size: 2048 # Меньше, чем dense!
shared_experts: 2
router_aux_loss_coef: 0.001 # Важно для баланса
# Precision & Init
torch_dtype: "bfloat16" # Тренировка в BF16
attention_dropout: 0.0 # FlashAttn не поддерживает dropout внутри ядра
hidden_act: "silu" # SwiGLU
initializer_range: 0.02 # Стандарт, но см. Шаг 2
Шаг 2. Инициализация весов: Секрет сходимости (Muon / Muon-Clip)
Стандартная normal_(0, 0.02) ломается на 100B+ токенах обучения.
Best Practice 2026: Muon Optimizer + Spectral Initialization.
1. Embedding / Output Layer: normal_(0, d_model -0.5) (учитываем tying).
2. Attention Q/K/V/Out: Orthogonal Init (или normal_(0, 1/sqrt(d_head))).
3. FFN Up/Down (W1, W3, W2):
- W1, W3 (Up): normal_(0, 1/sqrt(d_model))
- W2 (Down): Zero Init (критично для Residual Stream стабильности в глубину > 80 слоев).
4. RMSNorm weights: ones_().
5. RoPE: Предвычислить inv_freq на CPU в FP32, загрузить в BF16.
Шаг 3. Стратегия Параллелизма (3D/4D Parallelism)
Для модели 50B+ MoE на кластере 64x H100 (8 узлов x 8 GPU):
| Параллелизм | Значение | Обоснование |
| :--- | :--- | :--- |
| Tensor Parallel (TP) | 8 | Внутри ноды (NVLink/NVSwitch 900 GB/s). Делит QKV, FFN, MoE гейты. |
| Pipeline Parallel (PP) | 4 | 32 слоя / 4 = 8 слоев на стадию. Минимизирует bubble с v-schedule (1F1B). |
| Context Parallel (CP) | 2 | Ring-Attention для контекста 128k+. Делит последовательность по батчу. |
| Expert Parallel (EP) | 16 | 64 эксперта / 16 = 4 эксперта на GPU. Критично для MoE all-to-all. |
| Data Parallel (DP) | 16 | (64 GPU) / (TP=8 * PP=4 * CP=2 * EP=16) = 1? Нет. Реальность: TP=8, PP=2, CP=2, EP=8 -> DP=4. Global Batch Size = 4 * 1M tokens = 4M tokens/step. |
Шаг 4. Тренировка: LR Schedule, Batch Size, Data Mix
- LR Scheduler: WSD (Warmup-Stable-Decay) или Cosine с длинным плато (70% steps). Peak LR:
3e-4(7B) ->1.5e-4(50B MoE). - Global Batch Size: 4M токенов (критично для утилизации BF16 Tensor Cores).
- Weight Decay: 0.1 (Dense) / 0.01 (MoE — меньше регуляризации за счет шума роутера).
- Gradient Clipping: 1.0 (global norm).
- Data Mix (2026 SOTA): 40% Code (The Stack v2, GitHub), 30% Math/Reasoning (synthetic CoT от Nemotron/Distill), 20% Multilingual Web (FineWeb-2, DCLM), 10% Specialized (Science, Docs).
Шаг 5. Чекпоинты и Конвертация
- Сохранять Distributed Checkpoints (PyTorch DistCP / Megatron Checkpoint) — загрузка 50B за 30 сек, а не 40 мин.
- Экспорт в HuggingFace Safetensors + GGUF (Q4_K_M / Q8_0) для llama.cpp / ollama.
- FP8 Quantization (Static/Dynamic) для TensorRT-LLM: калибровка на 512 семплах.
## 4. Сравнительная таблица: Dense vs MoE vs Hybrid (Mamba/Attention) в 2026 году
| Параметр | Dense (LLaMA-3 / Nemotron Dense) | MoE (Mixtral / DeepSeek / Nemotron MoE) | Hybrid SSM+Attn (Jamba / Zamba / Nemotron-H) | Итог для 2026 |
|---|---|---|---|---|
| Качество / Параметр (Active) | Базовый (1.0x) | +30-40% (эффективность активных параметров) | ~+20% (за счет SSM) | MoE лидирует по качеству/флопс |
| VRAM для инференса (KV Cache) | Очень высокое (Full Dense) | Высокое (Только Active Params + KV) | Низкое (SSM State << KV Cache) | Hybrid побеждает на Long Context (>256k) |
| Throughput (Prefill/Decode) | Низкий (Memory Bound) | Средний (All-to-All overhead) | Высокий (Linear Attention/SSM) | Hybrid для High Throughput |
| Сложность тренировки | Низкая (Standard 3D Parallel) | Высокая (EP, Router Loss, Load Balancing) | Высокая (Две архитектуры, инициализация) | Dense — для быстрого старта |
| Fine-tuning (LoRA/QLoRA) | Триквиально | Сложно (LoRA на экспертах / Shared) | Средне (LoRA на Attn + SSM) | Dense/MoE — стандарт экосистемы |
| Экстраполяция контекста | Плохая (только YaRN/PI) | Плохая (та же проблема Attention) | Отличная (SSM линейная сложность) | Hybrid = King of Context |
| Хардварная привязка | Любые GPU (CUDA) | Нужен NVLink/IB для All-to-All | Нужен FP8/BF16 Tensor Cores | MoE/Hybrid требуют H100/B200 |
💡 Совет эксперта: В 2026 году Nemotron-H (Hybrid) и Zamba2 — лучший выбор для продуктов с неограниченным контекстом (RAG-агенты, анализ кодовых баз). Nemotron-3-Ultra / DeepSeek-V3 (MoE) — выбор для максимального IQ/Reasoning на фиксированном контексте 32-128k. Dense (LLaMA-3.1) — только для эмбеддингов или edge-устройств.
## 5. 7 типичных ошибок и ловушек, которых следует избегать
-
Игнорирование
attention_dropoutв конфиге при использовании FlashAttention.
FlashAttention-2/3 не поддерживает dropout внутри ядра. Если оставитеattention_dropout=0.1в конфиге HF, модель будет учиться с dropout (медленно), а на инференсе (без dropout) — расходиться. Фикс: Ставьте0.0, используйте Dropout только в FFN (SwiGLU) и на Residual. -
FP8 квантизация весов без квантизации активаций (KV-Cache).
Квантизация весов в FP8 дает 2x сжатие чекпоинта, но если KV-Cache остается в BF16 — вы не ganaете VRAM на декодинге (где KV доминирует). Фикс: Включайтеkv_cache_dtype="fp8"в vLLM/SGLang + калибровкаfp8_kv_cache_scale. -
Неправильный
rope_scalingдля YaRN/LongRoPE.
Использованиеtype="linear"(простая интерполяция) вместоtype="yarn"илиtype="longrope"убивает качество на длинных контекстах (>32k). Фикс: Всегда указывайтеoriginal_max_position_embeddings(обычно 4096 или 32768 базовой модели). -
Отсутствие
Z-Lossпри обучении MoE.
БезZ-Loss(логарифм суммы экспонент логитов роутера) логиты растут бесконтрольно, роутер «застревает» на 1-2 экспертах -> Expert Collapse. Модель деградирует в Dense с мертвыми параметрами. -
Обучение с
bfloat16безLoss Scaling(AMP) на старых GPU (A100/V100).
На Ampere (A100) нет FP8 Tensor Cores, BF16 накопление в FP32 обязательно. На Hopper (H100) — нативное BF16/FP8. Использованиеtorch.autocastбезGradScalerна A100 = NaN через 1000 шагов. -
Параллелизм TP > 8 без NVLink / NVSwitch.
TP=8 на PCIe 4.0/5.0 (межнодовый) — катастрофа latency-wise (All-Reduce каждые 2 слоя). Фикс: TP только внутри ноды (8 GPU). Межнодово — только PP, CP, DP, EP. -
Использование
padding="max_length"в DataLoader для Packed Sequences.
В 2026 году обучаем на Packed Sequences (упаковка нескольких семплов в один батч доmax_seq_lenбез паддинга, сattention_mask= causal + document mask). Паддинг 50% токенов = потеря 50% FLOPS. Фикс:ConstantLengthDataset/packed_sequenceв Megatron/NeMo.
## 6. Мнение профильных экспертов, инсайты и тренды 2026-2027
Дмитрий Ветров (Lead Researcher, Yandex Research / HSE):
«В 2026 году мы увидели конвергенцию: MoE становится стандартным блоком, а не экзотикой. Главный прорыв — Shared Experts + Fine-grained routing (top-k=4..8). Это решает проблему "dead experts" и позволяет масштабировать Total Params до 1T+ при Active 50-100B. Следующая волна — Dynamic MoE (число экспертов зависит от сложности токена), но это требует компиляторов уровня TVM/MLIR для динамических графов».Андрей Карпатый (Eureka Labs, ex-Tesla/OpenAI) — инсайт из твитов/лекций 2026:
«Перестаньте обучать с нуля (Pre-training) на грязных данных. Data Curation > Model Architecture. Лучшая архитектура 2026 года — это Data Quality Filtering Pipeline (De-dup -> Perplexity Filter -> Quality Classifier -> Synthetic Rewriting). 1T токенов качественных данных бьет 10T "сырых". Pre-training становится коммодити, ценность в Post-training (SFT/DPO/RLHF/RLAIF) и Inference Scaling».Тренд 2026-2027: Test-Time Compute Scaling (o1/o3 paradigm).
Архитектура модели фиксирована. Интеллект масштабируется за счет Chain-of-Thought (CoT) length и Search (MCTS/Beam Search) над генерацией.
- Архитектурное последствие: Нужны модели с очень низкой перплексией на коде/математике (для верных шагов рассуждения) и устойчивость к длинным CoT (10k-50k токенов генерации).
- Инференс: Появление Speculative Decoding с "Draft Model" = Small Reasoning Model (например, 1B-3B distilled reasoner) для ускорения длинных CoT.Тренд: Native FP8 Training (MXFP8 / OCP MX Formats).
H100/B200 поддерживают MXFP8 (Microscaling FP8) — блочное масштабирование (shared exponent per 32 elements). Это позволяет тренировать в чистом FP8 (без мастер-весов в FP32 для градиентов) с точностью BF16. Экономия 2x VRAM и 2x FLOPS. PyTorch 2.5+ / TransformerEngine 1.13+ — готовность к продакшену.
## Часто задаваемые вопросы (FAQ)
1. Стоит ли в 2026 году обучать свою Dense-модель 7B/70B с нуля, или лучше взять базовую и дообучить?
Ответ: *Обучать с нуля (Pre-training) — только если у вас уникальный домен (биология, чип-дизайн, редкий язык) и >10T токенов качественных* данных.