English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

гость
1 / ?
назад к урокам

Вложение — это поиск, а не функция

Первый слой после токенизатора

Токенизатор передаёт модели целочисленные ID: [256, 1842, 7301, ...]. Первое, что делает трансформер: преобразует каждый ID в вектор из d_model чисел с плавающей точкой. Этот вектор находится в d_model-мерном пространстве (768 измерений для ANDREA-120M).


Слой вложения — это таблица поиска, а не функция. Представьте огромную матрицу:


shape: (V, d_model)
row 0:    [e_0_0, e_0_1, ..., e_0_767]
row 1:    [e_1_0, e_1_1, ..., e_1_767]
...
row 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

Token ID i выбирает строку i. Прямой доступ к массиву. Без арифметики, без активации. Только индекс.


Token & position embedding flow


Обучаемые числа с плавающей точкой

Каждая запись в этой таблице изначально представляет собой небольшое случайное число с плавающей точкой (обычно выбирается из нормального распределения, масштабированного на 1/sqrt(d_model)). Обратное распространение обновляет каждую строку, когда её Token ID появляется в батче. После обучения похожие токены (cat, dog, pet) получают похожие векторы; несвязанные токены (cat, Tuesday, xylophone) располагаются далеко друг от друга в векторном пространстве.


ANDREA-120M Стоимость токен-эмбеддинга


КоличествоЗначение
V8,449
d_model768
Параметры6,488,832

Примерно 6,5 млн параметров находятся только в таблице эмбеддингов токенов, что составляет около 5,4 % от общего числа параметров ANDREA-120M. Каждому слоту словаря соответствует 768 чисел с плавающей точкой.

Расчёт размера таблиц эмбеддингов

Вычислите количество параметров токеновых эмбеддингов для двух будущих вариантов. (a) ANDREA-480M: V = 16 641 (токенизатор на 16 384 сегмента + 256 байт + 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4 353, d_model = 384. Покажите арифметику V × d_model для каждого случая.

Скалярные произведения измеряют сходство

Векторы как стрелки

768-мерный вектор существует в пространстве, которое человек не может визуализировать, но та же алгебра работает в любом измерении. Для трансформеров важны две ключевые операции:


Модуль (длина стрелки):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

Скалярное произведение (выравнивание между двумя стрелками):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

Что показывает скалярное произведение

Два факта, которые верны в любом измерении:


- u · v = ||u|| × ||v|| × cos(theta), где theta — угол между ними.

- Векторы, указывающие в одном направлении, дают большие положительные скалярные произведения.

- Векторы, указывающие в противоположных направлениях, дают большие отрицательные скалярные произведения.

- Векторы, расположенные под прямым углом, дают скалярное произведение, равное нулю.


Скалярное произведение = ненормализованное сходство. Две обученные эмбеддинги токенов для cat и dog в итоге имеют высокое скалярное произведение, потому что обратное распространение ошибки «сближает» их (оба предсказывают контексты, связанные с домашними животными). cat и Tuesday оказываются почти ортогональными, потому что они предсказывают разные контексты.


Почему трансформеру важно

Activity 5 (grow_a_language_model_attention) строит внимание из скалярных произведений: вектор запроса скалярно умножается на векторы ключей, давая оценки, которые показывают, какие предыдущие токены важны для предсказания следующего. Эмбеддинги и скалярные произведения вместе несут все взаимодействия внутри трансформера.

Предсказать сходство

После обучения эмбеддинг ANDREA-120M для `believ` (строка токена 4287, гипотетическая) оказывается примерно выровненным с `know`, `understand`, `learn`. Не вычисляя точных значений, предскажите порядок от наибольшего скалярного произведения к наименьшему: `believ · know`, `believ · stone`, `believ · understand`. Обоснуйте свой порядок одной фразой для каждой пары.

ANDREA использует обученные позиционные эмбеддинги

Проблема

Эмбеддинг токена сообщает модели, какое слово находится в этой позиции. Он не сообщает модели, где именно это слово расположено. Без информации о позиции трансформер воспринимает the cat sat on a mat и mat a on sat cat the одинаково: один и тот же набор токенов, без сигнала о порядке.


В литературе по трансформерам существуют три решения:


Синусоидальные (Vaswani 2017). Фиксированная математическая формула на основе синусов и косинусов. Позиция 0 получает определённый 768-вектор; позиция 1 — другой; никогда не обучается и не обновляется. Обобщается на любую позицию через формулу.


RoPE (Rotary Position Embedding). Поворачивает векторы query и key в зависимости от позиции. Используется в LLaMA, Qwen. Не требует дополнительных параметров; вращение встроено в механизм внимания.


Learned. Отдельная таблица эмбеддингов размером (T, d_model), где T — длина контекста. Каждая строка обучается через обратное распространение, как и эмбеддинги токенов.


Выбор ANDREA: Learned

ANDREA наследует подход с обученными позициями от microGPT, который унаследовал его от nanoGPT, который в свою очередь — от GPT-2. Обоснование:


- Простота. В механизме внимания не требуется специальная математика. Таблица позиций выглядит так же, как таблица токенов.

- Совместимость с пользовательским CUDA. Движок microgpt_cuda.cu в ANDREA обрабатывает два lookup-эмбеддинга одинаково; ядра sin/cos не требуются.

- Достаточно для фиксированного контекста. ANDREA ограничивает T значением 1024. Обученная таблица отлично работает для последовательностей фиксированной длины.


Стоимость позиционного эмбеддинга ANDREA-120M


ПараметрЗначение
T (контекст)1,024
d_model768
Параметры786,432

0.79M параметров для позиций. В сумме с токеновыми эмбеддингами: 6.49M + 0.79M = 7.27M параметров эмбеддингов всего для ANDREA-120M.


Как они объединяются

В каждой позиции t входной последовательности:


x_t = token_embedding[token_id_t] + position_embedding[t]

Два 768-мерных вектора, складываемые поэлементно. Результат, x_t, поступает в первый блок трансформера. Модель больше никогда не разделяет их; она учится использовать объединённый сигнал.

Обученные против синусоидальных

Сравните две стратегии позиционного кодирования для гипотетической модели ANDREA. Стратегия A: обученные, T = 1024. Стратегия B: синусоидальные, T произвольное (работает для любой длины последовательности). Назовите одно преимущество каждой. Затем укажите, какую выбирает ANDREA, и одну причину с точки зрения CUDA / инженерных аспектов.

Где живут параметры эмбеддингов

Полный слой эмбеддингов ANDREA-120M


КомпонентФормаПараметры
Таблица токен-эмбеддингов8,449 × 7686,488,832
Таблица позиционных эмбеддингов1,024 × 768786,432
Итого7,275,264

Примерно 7.3M параметров. Общее число параметров ANDREA-120M: ~120M. Слой эмбеддингов составляет всего 6%. Остальные 94% находятся в трансформер-блоках (attention + MLP, рассматриваются в занятиях 5-7).


Независимые и связанные эмбеддинги

Многие архитектуры трансформеров (включая GPT-2) связывают эмбеддинг токена с финальной выходной проекцией: одна и та же матрица V × d_model используется и на входе, и на выходе (логиты по словарю). Связывание экономит V × d_model параметров и часто улучшает качество.


ANDREA использует несвязанные эмбеддинги: входной эмбеддинг и выходная проекция обучаются как отдельные матрицы. Активность 7 (grow_a_language_model_transformer_block) охватывает финальный слой.


Прямой проход на текущий момент

Вход: идентификаторы токенов [256, 1842, 7301, ...] (1024 штуки). Каждый ID извлекает 768-мерный вектор. Каждая позиция извлекает 768-мерный вектор. Поэлементное сложение. Результат: матрица (1024, 768) x из векторов токен+позиция. x поступает в трансформер-блок 1.


Активность 5 (grow_a_language_model_attention) описывает, что делает блок 1: scaled dot-product attention с causal mask и softmax.

Предсказать структуру эмбеддингов

Размышление: ANDREA-120M имеет 8449 токен-эмбеддингов и 1024 позиционных эмбеддинга, которые находятся в одном 768-мерном пространстве. После обучения, что вы ожидаете: (a) как будет выглядеть матрица токен-эмбеддингов (кластерные паттерны?), или (b) как будет выглядеть матрица позиционных эмбеддингов (плавный градиент?). Выберите один вариант и предскажите в одном-двух предложениях. Нет неправильного ответа; важно рассуждение.