Generative Pretrained Transformer: конспект

Опубликовано: 08.04.2026

Это не цельная статья, а перечень отдельных заметок, которые я писал в ходе изучения архитектуры.

Смотрите также:


Общий вид механизма self-attention

Механизм self-attention — это способ каждому токену посмотреть на каждого, чтобы увидеть «что он может означать относительно меня».

Обозначения:

Принцип работы:

  1. Имеется набор входных векторов x(1)…x(n).
  2. Каждый этот вектор умножается на матрицы Wq, Wk, Wv, и получаются векторы q(1)…q(n), k(1)…k(n), v(1)…v(n).
  3. Для каждой позиции i выполняется скалярное умножение q(i) на вектора k всех позиций. В результате получается последовательность чисел, описывающая “смысловую похожесть” рассматриваемого вектора ко всем векторам.
  4. Значения делятся на корень из размерности векторов ключа, вычисляется softmax, чтобы получить эти же значения как “доли влияния”.
  5. Вычисляется средневзвешенное значение v используя указанные доли и значения v(1)…v(n). Оно и является финальным вектором, “обогащенным” через внимание.

Учитывая, что обычно мы имеем дело с decoder-only трансформером, используемым для генерации текста, то:

Общий вид классического пайплайна трансформера

Также следует заметить, что единственное место, где токены как последовательные единицы смысла “влияют друг на друга” - это непосредственно механизм self-attention, в котором текущая позиция обогащается информаций ото всех предыдущих. Таких обогащений происходит “число слоёв * число голов” раз, но все они алгоритмически устроены одинаково.

Прочие операции, такие как получение одиночного вектора из совокупности частичных векторов мультиголового внимания, вычисление значения перцептрона, выбор следующего токена - работают относительно обработки одиночного вектора остаточного потока, а не совокупности векторов.

Описанный выше процесс прибавления значения к значению вектора предыдущего шага формирует понятие остаточный поток (residual stream):

Архитектура GLM

При использовании GLM в качестве генеративной модели (чат-бота, кодинг агента и т.п.), она работает подобно классической GPT архитектуре, авторегрессивно кодируя ответ токен за токеном.

Значимость отличий GLM проявляется не в процессе генерации, а в качестве скрытых состояний, которые модель выучила. Поскольку GLM на этапе предобучения обучалась восстанавливать текст, глядя на контекст с обеих сторон, это даёт следующие теоретические предпосылки для повышения качества, которых не хватало классическим GPT:

Остаётся открытым вопрос, насколько здесь важна архитектура модели, а насколько технология обучения, поскольку и классические трансформеры постепенно совершенствуются.

MoE (Mixture of Experts)

PLE (Per-Layer Embeddings), архитектура моделей gemma3n:e4b и gemma4:e4b:

В стандартном трансформере каждый токен получает один вектор эмбеддинга на входе, и этот вектор проходит через все слои декодера в качестве основы для вычислений.

PLE добавляет параллельный путь к основному остаточному потоку.

Для каждого токена и для каждого слоя:

  1. Вычисляется малый специализированный вектор (например, 256 измерений)
  2. Этот вектор - комбинация двух сигналов:
    • token-identity component: lookup из отдельной таблицы эмбеддингов
    • context-aware component: проекция основных эмбеддингов через обучаемый слой
  3. На каждом слое этот вектор используется для модуляции скрытых состояний ПОСЛЕ блока внимания и FFN.

Таблица PLE — это большая, но «пассивная» память: она хранит специализированные сигналы для каждого токена на каждом слое, но не увеличивает вычислительную сложность инференса, так как:

PLE добавляется как третий остаточный блок в каждом декодере после FFN. Это позволяет каждому слою получать токен-специфичную информацию именно тогда, когда она релевантна, вместо того чтобы «упаковывать всё» в один начальный эмбеддинг.

Преимущества:

Что касается конкретно gemma4:e4b, она показывает существенный рост результатов в тестах относительно gemma3n:e4b, а семейство gemma4 в целом показывает заметный рост относительно gemma3. Но это уже касается и технологий обучения, а не просто математики модели.

Mamba-2

В архитектуре Mamba-2 вместо блоков self-attention используются блоки, построенные согласно концепции State Space Models.

SSM в данном случае можно представить как:

    h(i) = A*h(i-1) + B*x(i)
    y(i) = C*h(i)

Где:

    i - обрабатываемая позиция
    h(i) - скрытое состояние
    x(i) - входная информация (то, что читаем из остаточного потока)
    y(i) - выходная информация (то, что добавляем в остаточный поток)

таким образом вместо KV-кэша, который де-факто хранит состояние между токенами, в блоках Mamba используется скрытое состояние h фиксированной размерности. Таким образом при инференсе размер памяти и вычислений не растёт вместе с ростом обработанного контекста, и количество операций на токен остаётся константным (O(1)).

В отличие от классической SSM, где обучаемые матрицы A, B и C постоянны, в архитектурах Mamba и Mamba-2 учитывается вычисляемая на каждом шаге “степень важности” входного значения x, которая влияет на то, как сильно входные данные модифицируют скрытое состояние. Это позволяет модели “запоминать важные токены” и “игнорировать несущественные”.

Подробности процесса этого алгоритма важности мне неизвестны.

Mamba (не 2) использовала ряд ухищрений, чтобы “втиснуть” алгоритмы этапа обучения в быструю локальную память вычислительных ядер.

Благодаря тому, что для особых частных случаев была открыта и доказана математическая эквивалентность данного алгоритма и механизма внимания, это позволило обучать модель с использованием доступного для GPT-архитектур аппаратного обеспечения, а затем запускать их при инфересне с вычислительной сложностью O(1) на токен. (O(n) от длины генерации.) Это по сути и есть Mamba-2. Опять же, математические подробности мне не известны.

Пример архитектуры Nemotron-H от NVIDIA:

Nemotron-H-8B:

    (Mamba-2 -> FFN)x3 ->
    (Mamba-2 -> Attention -> FFN -> (Mamba-2 -> FFN)x4)x4 ->
    (Mamba-2 -> FFN)

Nemotron-H-56B:

    (Mamba-2 -> FFN)x3 ->
    (Mamba-2 -> Attention -> FFN -> (Mamba-2 -> FFN)x4)x10 ->
    (Mamba-2 -> FFN)

Примерно 8% от общего числа слоев в модели составляют слои self-attention. Эти слои равномерно распределены по всей модели. Остальная часть модели состоит из чередующихся слоев Mamba-2 и FFN.

С Nemotron-H я на практике не имел дела, только читал в статьях.

С чем я сталкивался на практике, это Granite 4 H Tiny от IBM - MoE модель 7B A1B, у которой 4 слоя внимания и 32 слоя Mamba-2. Детали топологии не помню, да это и не особо важно. Модель показывала впечатляющую скорость работы, а также относительно неплохое качество ответов для своего размера, но была весьма неусточива - на каких-то промптах отвечала хорошо, на каких-то просто ломалась.

Новейшая Qwen3.5 использует Gated DeltaNet, которая имеет какое-то отношение к Mamba-2, но тут уже мои знания заканчиваются.

Qwen 3.5 models feature a hybrid architecture combining GDN (Gated DeltaNet) layers with standard attention layers, SwiGLU activations, and RMSNorm.

Qwen 3.5 релизнулась широким классом открытых моделей, включая как Dense, так и MoE варианты, начиная от 0.8B и вплоть до 397B-A17B, и показывает достойные результаты в каждой из размерных категорий в сочетании с высокой скоростью инференса. Я активно “щупаю” её на практике, а вот с деталями внутреннего устройства еще не ознакомился.