Путь к пониманию трансформера
Современные LLM — это в основном стеки трансформер-блоков, повторённые много раз. Если разобраться с механикой трансформера, то ты поймёшь 90% архитектуры любой крупной языковой модели.
Хотя разные модели обучаются на разных данных, имеют разные размеры и конфигурации, фундаментальная структура у них одна. Вот что мы разберём по порядку:
- Токенизация — как текст становится последовательностью чисел
- Эмбеддинги — как числа приобретают смысл
- Позиционное кодирование — как модель понимает порядок токенов
- Attention — как токены обмениваются информацией
- Multi-head attention — отслеживание разных типов связей одновременно
- Feed-forward сеть — где живёт большая часть знаний модели
- Residual stream и layer normalization — что позволяет обучать глубокие стеки
- Предсказание следующего токена и генерация текста
Токенизация: текст в числа
Модель не читает текст напрямую. Она работает с ID — целыми числами. Процесс преобразования текста в эти числа называется токенизацией.
Токенайзер берёт строку и выдаёт последовательность целых чисел, где каждое число указывает на запись в фиксированном словаре. Современные LLM обычно используют словари из десятков тысяч или даже сотен тысяч элементов.
Почему токены — это не целые слова?
Токены редко совпадают с полными словами. Это обычно кусочки слов — подсловные единицы. Например, слово “tokenization” может разбиться на ["token", "ization"], а “running” на ["run", "ning"].
Это просто эффективнее:
- Словари из целых слов растут в размере и не обобщаются на новые слова
- Символьные словари слишком маленькие и заставляют модель учиться элементарным паттернам с нуля
- Подсловная токенизация находится посередине: частые куски — отдельные токены, редкие слова собираются из более мелких кусков
Побочный эффект: счёт букв
Вспомни классический пример — попроси LLM посчитать букву “R” в слове “strawberry”. Модели часто ошибаются. Но это не потому, что они не умеют считать. Просто модель работает с ID токенов, не с буквами напрямую. Она видит набор номеров, которые расшифровываются в это слово, но буквально “по буквам” их не видит.
Разные семейства моделей используют разные токенайзеры. GPT — это Byte Pair Encoding варианты, LLaMA-подобные модели часто используют SentencePiece. Это влияет на вычислительные затраты (меньше токенов — меньше работы) и на поддержку языков, но общий принцип везде одинаков: текст на входе, целые числа на выходе.
Эмбеддинги: смысл из чисел
Токен ID вроде 1024 — это просто индекс строки в таблице. Сам по себе он ничего не значит.
Смысл ему придаёт гигантская таблица, называемая матрицей эмбеддингов. Каждая модель её имеет. В этой таблице одна строка на каждый элемент словаря, и каждая строка — это длинный вектор чисел. Длина вектора равна “скрытому размеру” модели. Для моделей класса 7B это обычно 4,096 чисел на токен. Более крупные модели используют ещё более широкие векторы.
Когда токенайзер передаёт модели число, модель ищет соответствующую строку в этой таблице и работает уже с вектором. Этот вектор — эмбеддинг токена, представление того, что этот токен “значит” в понимании модели. Это представление модель выучила во время обучения.
Красота эмбеддингов
Интересное свойство: семантически похожие токены заканчивают рядом в пространстве векторов. Вектор “king” близко к вектору “queen”, вектор “Paris” близко к “France”. Это не жёстко заложено в код — это выстраивается само в процессе обучения на большом количестве текста. Модель учит эти позиции, потому что они помогают ей лучше предсказывать текст.
Ты даже можешь делать арифметику с эмбеддингами, и иногда это работает.
Что дальше?
Теперь, когда каждый токен стал вектором с информацией, начинается настоящая магия — attention механизм и взаимодействие между токенами.

