Суть
LLM «внутри» — это набор матричных умножений. Трансформер принимает векторы токенов (Embeddings) и через серию операций (внимание + нормализации) выдаёт распределение вероятностей следующего токена. Генерация идёт последовательно, токен за токеном.
Зачем это нужно
Это объясняет, почему LLM — не «база фактов», а предсказатель вероятностей: на каждом шаге она оценивает, с какой вероятностью каждый токен словаря мог бы быть следующим, и выбирает по правилам сэмплирования (см. Sampling Parameters). Понимание архитектуры снимает магию: «модель не знает — она предсказывает».
Как работает
- Вход разбивается на токены (Tokenization) → токены становятся векторами (Embeddings).
- Attention: матрицы (по сути обучаемые проекции) вычисляют, какие токены в контексте релевантны друг другу — так модель «понимает», что важно. Стоимость attention растёт квадратично по длине контекста (каждый токен сравнивается с каждым) — отсюда дорогой длинный контекст (см. Attention, Context Window).
- Классически трансформер состоит из энкодера (вход) и декодера (выход); конкретная математика получена экспериментально. На практике почти все современные LLM — decoder-only (causal-генерация), а encoder-ветка осталась в embedding-моделях; разбор отличий — в Encoder vs Decoder.
- На выходе — вероятности следующего токена; цикл повторяется итеративно.
- Стопка блоков: современная LLM — 32–126 одинаковых блоков; каждый = Multi-Head Self-Attention (см. Attention) → Add&Norm → Feed-Forward → Add&Norm.
- Residual connections (
output = input + sublayer(input)) критичны — без них глубокие сети не обучаются; LayerNorm/RMSNorm стабилизирует обучение. Размерность не меняется при проходе через блоки. - Зачем глубина: между блоками стоят активации (нелинейность) — без них вся стопка свелась бы к одному линейному преобразованию; постепенная обработка (грамматика → семантика → интеграция) эффективнее одного большого слоя.
- Иерархия вложений: Нейросеть → Трансформер → LLM → конкретные модели. Трансформер заменил рекуррентные RNN/LSTM, дав параллелизм и прямую связь далёких токенов.
| Модель | Блоков | d_model |
|---|---|---|
| BERT-base | 12 | 768 |
| Llama-3 8B | 32 | 4 096 |
| Llama-3 70B | 80 | 8 192 |
| Llama-3 405B | 126 | 16 384 |
Feedforward — где живут знания
После attention в каждом блоке идёт полносвязная сеть (MLP), применяемая к каждому токену независимо: расширение W_up (d_model → intermediate, обычно ~4×) → активация (SwiGLU / GELU / ReLU) → сжатие W_down обратно в d_model. Функционально это ассоциативная память (key-value store): W_up распознаёт паттерны во входе, активация выделяет совпадения, W_down возвращает связанные значения.
Здесь живёт большая часть знаний модели: ~70% параметров LLM — в feedforward; тут хранятся факты («столица России = Москва»), грамматика, стиль — распределённо по миллиардам весов (нет «одной ячейки с фактом»). Грубая иерархия по слоям: нижние — грамматика/морфология, средние — семантика/факты/кореференция, верхние — интеграция и подготовка ответа.
Связано с
- Tokenization — что подаётся на вход
- Embeddings — векторы, над которыми работает attention
- Sampling Parameters — как из вероятностей выбирается токен
- Attention — ядро каждого блока (Q/K/V, multi-head)
- Encoder vs Decoder — два режима трансформера (bidirectional vs causal)
- Context Window — почему длинный контекст дорог (квадратичность attention)