Глава 2.3 — Архитектурные варианты

Содержание

  1. Один набор деталей, три формы
  2. Только энкодер: BERT и двунаправленное понимание
  3. Только декодер: GPT и каузальная генеративная форма
  4. Энкодер-декодер: T5, BART и последовательность-в-последовательность
  5. Почему победил "только декодер" в гонке масштабирования
  6. Взгляд с точки зрения собеседования
  7. Вопросы для самопроверки
  8. Источники

1. Один набор деталей, три формы

Главы 2.1 и 2.2 собрали полный набор инструментов: масштабированное скалярное внимание, многоголовые проекции, остаточные подслои и способ внесения позиционной информации — либо аддитивно на входе, либо непосредственно внутри внимания. То, что глава 2.1 представила как "Transformer", на самом деле было конкретной сборкой из этих деталей — стек энкодера и стек декодера, соединённые cross-attention, построенные для машинного перевода. Но ничто в базовом наборе инструментов не обязывает к именно этой сборке. Тот же самый механизм self-attention, те же полносвязные подслои, тот же паттерн остаточных соединений с нормализацией могут быть скомпонованы как минимум тремя структурно различными способами, и выбор компоновки, как оказывается, чрезвычайно важен для того, в чём модель хороша и как она используется.

Эта глава посвящена именно этим трём формам: только энкодер, только декодер и энкодер-декодер. Понимание их — это не просто архитектурная тривиальность, а понимание настоящей развилки, которую прошла область, и умение объяснить, опираясь на реальные механистические причины, а не на предания, почему форма "только декодер" стала доминирующей для крупномасштабных генеративных моделей, которым в первую очередь посвящена эта книга. К этому объяснению глава и движется, но сначала стоит рассмотреть все три формы на их собственных условиях, поскольку каждая добилась реальных, исторически важных успехов, прежде чем область сошлась на той, что масштабируется лучше всего.

2. Только энкодер: BERT и двунаправленное понимание

Энкодерная половина исходного Transformer сама по себе представляет собой стек подслоёв self-attention и полносвязных подслоёв, где каждая позиция обращает внимание на каждую другую позицию последовательности вообще без маскировки — полностью двунаправленно, в том смысле, что представление токена строится из контекста одновременно слева и справа от него. BERT авторства Devlin et al., опубликованный в 2018 году, построен в точности из этого энкодерного стека, вообще без декодера, и его центральный вклад состоял в осознании того, что эта двунаправленность чрезвычайно ценна для построения богатых представлений текста, но принципиально несовместима с предсказанием следующего токена в качестве задачи предобучения. Если модель может видеть и левый, и правый контекст для каждой позиции, то предсказание токена по его полному двунаправленному контексту тривиально и бесполезно как обучающий сигнал — модели было бы попросту позволено "подглядывать в ответ".

Решение BERT — задача маскированного языкового моделирования (masked language modeling): случайно заменить некоторую долю входных токенов (15% в оригинальной статье) специальным маскирующим токеном и обучить модель предсказывать исходный токен в каждой маскированной позиции, используя полный двунаправленный контекст вокруг неё. Это даёт энкодеру настоящую задачу предсказания (ответ не виден напрямую), при этом сохраняя возможность каждой немаскированной позиции видеть контекст с обеих сторон — а это как раз та представительная сила, которая делает модели в стиле BERT хорошими для таких задач, как классификация, извлечение сущностей или любая задача, где требуется богатое, учитывающее контекст представление уже существующего текста, а не способность генерировать новый текст. Поскольку авторегрессивная генерация здесь вообще не задействована, модели типа "только энкодер" обычно используются путём взятия их контекстных выходных представлений и подачи их в небольшую задаче-специфичную "голову", а не путём семплирования текста из них токен за токеном — они построены для понимания, а не для письма.

3. Только декодер: GPT и каузальная генеративная форма

Форма "только декодер" урезает исходный Transformer по-другому: сохраняются маскированные подслои self-attention декодера, энкодер и подслои cross-attention полностью отбрасываются, поскольку нет отдельной исходной последовательности, к которой нужно было бы обращаться, а полученный стек применяется непосредственно к одной последовательности, предсказывая каждый токен по всему, что было до него. Это в точности разложение по правилу цепочки из главы 1.1, $P(x_1, \ldots, x_n) = \prod_i P(x_i \mid x_1, \ldots, x_{i-1})$, реализованное напрямую как единый каузально маскированный стек Transformer вообще без вспомогательного энкодера. GPT-1 авторства Radford et al. в 2018 году и его значительно более крупные преемники построены именно так: слои маскированного self-attention, наложенные друг на друга, обученные с единой, унифицированной целью — предсказывать следующий токен по всему, что было до него.

Привлекательность этой формы — в её прямолинейности. Поскольку каузальная маскировка из главы 2.1 уже гарантирует, что позиция $i$ никогда не видит позицию $j > i$ — $\text{mask}(i,j) = 0$ при $j \le i$ и $-\infty$ при $j > i$ — модель "только декодер" может обучаться сразу на всём документе, причём предсказание следующего токена для каждой позиции вычисляется параллельно и одновременно вносит вклад в функцию потерь — не нужен отдельный проход кодирования по фиксированной исходной последовательности, потому что отдельной исходной последовательности не существует; "источник" и "цель" — это одна и та же последовательность, просто сдвинутая на одну позицию. Эта унифицированность, как оказывается, важна значительно больше, чем просто удобство обучения, и она центральна для истории, рассказанной в следующем разделе: поскольку предобучение и генерация используют совершенно один и тот же каузальный, авторегрессивный процесс, модель "только декодер", обученная исключительно на предсказании следующего токена, уже механически делает во время инференса то же самое, что делала во время обучения, без какого-либо неуклюжего рассогласования, возникающего из-за необходимости отдельного механизма для перехода от фазы кодирования к фазе генерации. GPT-3, описанный в статье Brown et al. 2020 года, демонстрирует, что масштабирование именно этой формы — больше слоёв, больше параметров, больше данных, та же каузальная задача предсказания следующего токена — даёт модель, способную к few-shot выполнению задач исключительно на основе подсказки, вообще без какой-либо задаче-специфичной дообучающей настройки, что, пожалуй, и есть тот единственный результат, который задал траекторию для всей оставшейся эпохи LLM.

4. Энкодер-декодер: T5, BART и последовательность-в-последовательность

Форма "энкодер-декодер" сохраняет полную исходную структуру из главы 2.1 нетронутой: двунаправленный энкодер строит представление входной последовательности, а каузально маскированный декодер генерирует выходную последовательность, обращаясь обратно к представлению энкодера на каждом слое через cross-attention. Эта форма наиболее естественно подходит для задач, действительно имеющих характер "последовательность-в-последовательность" — перевод, разумеется, поскольку именно он мотивировал исходный Transformer, но также и суммаризация, где длинный документ должен быть полностью двунаправленно усвоен перед тем, как из него будет сгенерирован более короткий выход, или любая задача с чётким разделением между "тем, на что вы условливаетесь" и "тем, что вы производите".

T5 авторства Raffel et al. продвинул эту форму дальше всего, предложив, что практически любую задачу NLP — классификацию, перевод, суммаризацию, ответы на вопросы — можно преобразовать в один и тот же формат "текст-в-текст", когда конкретная задача описывается как часть самого входного текста, и обрабатывать одной единственной архитектурой энкодер-декодер и одним рецептом обучения, а не разной архитектурой под каждую задачу. BART авторства Lewis et al. пошёл по смежному, но отличному пути предобучения: испортить входной документ разнообразными функциями зашумления (маскировкой токенов, перестановкой предложений, заполнением пропущенного текста и другими) и обучить энкодер-декодер восстанавливать исходный, неиспорченный документ, что сочетает BERT-подобное двунаправленное понимание испорченного входа с GPT-подобной авторегрессивной генерацией восстановления в одной архитектуре. Обе эти модели демонстрируют подлинную сильную сторону формы "энкодер-декодер": вход вообще не нужно ограничивать авторегрессивно, так что энкодер может построить максимально богатое двунаправленное представление о нём, в то время как декодер всё равно получает авторегрессивную структуру, необходимую ему для связной, хорошо оформленной генерации, а cross-attention служит мостом между ними.

5. Почему победил "только декодер" в гонке масштабирования

Учитывая, что форма "энкодер-декодер" обладает этим на первый взгляд строгим архитектурным преимуществом — двунаправленное понимание входа плюс авторегрессивная генерация выхода, — доминирование формы "только декодер" в современных крупномасштабных LLM может поначалу показаться удивительным. Причины сводятся к нескольким практическим соображениям, связанным с масштабированием, значение которых растёт всё сильнее по мере роста размера модели и данных, а вовсе не к какому-либо утверждению, что модели "только декодер" представительно превосходят другие формы задача за задачей.

Первая причина — унифицированность задачи предобучения, о чём уже упоминалось в разделе 3, но что заслуживает отдельной формулировки именно как аргумент о масштабировании: у модели "только декодер" есть ровно одна вещь, которую нужно научиться делать, — предсказание следующего токена по недифференцированному потоку текста, и именно на этой единственной задаче она обучается и именно для неё используется во время инференса. Модель "энкодер-декодер" должна обучаться с каким-то выбором схемы шумоподавления или порчи для стороны энкодера плюс задачей генерации для стороны декодера, и эти выборы вносят проектные решения — как портить, насколько сильно, какой функцией шума, — которые не становятся очевидно эффективнее просто от увеличения данных и параметров, и которые создают своё собственное рассогласование между обучением и инференсом (модель никогда не видит чистый вход во время инференса так, как это могло бы подразумеваться предобучением испорченной стороны в стиле только-энкодер). Единая, простая задача, применяемая одинаково к каждому токену в каждом документе, — гораздо более простая вещь для предсказуемого масштабирования, а предсказуемое поведение при масштабировании — именно то, вокруг чего область всё больше выстраивается (тема, к которой эта книга напрямую вернётся в главах о законах масштабирования).

Вторая причина — эффективность по параметрам и вычислениям при фиксированной целевой способности. Модель "энкодер-декодер" платит за два отдельных стека (плюс cross-attention), что при фиксированном общем бюджете параметров означает, что каждый стек по отдельности примерно вдвое меньше, чем мог бы быть, если бы все параметры были объединены в один стек. Конкретно для генеративных задач — того класса задач, который оказался наиболее важным, как только в качестве возможностей появились обучение в контексте и следование инструкциям, — отдельная двунаправленная обработка энкодером фиксированного входа не даёт очевидно достаточной выгоды, чтобы оправдать постоянное резервирование половины ёмкости модели под неё, тем более когда сами подсказки становятся механизмом предоставления любого "входного контекста", необходимого задаче, вместо структурно отдельного прохода энкодера.

Третья причина, и, пожалуй, наиболее значимая в ретроспективе, состоит в том, что модели "только декодер" обрабатывают переменное и практически неограниченное число задач через единый унифицированный интерфейс — подсказку (prompt) — вообще без каких-либо архитектурных изменений, просто обусловливая тот же самый механизм предсказания следующего токена на любом тексте, предшествующем точке генерации. Жёсткое разделение модели "энкодер-декодер" на "вход" и "выход" естественно отображается на фиксированную, чётко определённую задачу последовательность-в-последовательность, но неуклюже отображается на открытые, контекстные, многоходовые, использующие инструменты, следующие инструкциям паттерны использования, которые в итоге стали определять то, как крупнейшие LLM фактически применяются на практике, где то, что считается "входом", и то, что считается "уже сгенерированным", сливаются друг с другом и меняются от хода к ходу. Модели "только декодер" не нужно заранее решать, где проходит эта граница, потому что вся её последовательность целиком, и подсказка, и генерация, обрабатывается одним и тем же каузальным механизмом на всём протяжении — что является подлинным архитектурным соответствием тому, как эволюционировало использование этих моделей в отрасли, а вовсе не просто исторической случайностью.

Здесь стоит назвать и четвёртую, промежуточную форму, поскольку она усложняет чистое трёхстороннее деление, с которого начинался раздел 1: prefix-LM. Модель prefix-LM архитектурно — это единый стек «только декодер»: нет отдельного энкодера, нет кросс-внимания, — но её маска внимания изменена так, что выделенная префиксная часть последовательности (вход или контекст) обрабатывается двунаправленно каждым токеном, включая другие токены префикса, тогда как остаток последовательности (генерируемая часть) сохраняет обычную каузальную маску, смотрящую только назад. Это даёт преимущество двунаправленного контекста, свойственное энкодеру, для фиксированной входной части — вообще не платя за структурно отдельный стек. UL2 от Tay с соавторами развивает эту идею дальше с помощью цели предобучения «смесь шумоподавителей» (mixture of denoisers), смешивающей шумоподавление в духе повреждения диапазонов (span-corruption) — тот вид цели, что мотивирует форму энкодер-декодер, — с целями в духе prefix-LM и обычными каузальными целями, причём всё это обучается на одном и том же едином стеке «только декодер». Практический вывод в том, что цель предобучения и архитектурная форма — более разделимые измерения, чем могут показаться по разделам 2–4 по отдельности, а prefix-LM — это как раз тот механизм, который делает такое разделение возможным.

Ничто из этого не означает, что формы "только энкодер" или "энкодер-декодер" стали бесполезными — модели "только энкодер" остаются сильным, эффективным выбором для задач чистого представления, где генерация вообще не нужна, а модели "энкодер-декодер" сохраняют реальные преимущества для действительно фиксированных по форме задач последовательность-в-последовательность. Но применительно к конкретной траектории, которую прослеживает эта книга, — обучению крупнейших возможных универсальных генеративных моделей — победило именно сочетание единообразия задачи, выделения полной ёмкости под один стек и единого интерфейса, масштабируемого на произвольные задачи без архитектурных изменений, свойственное форме "только декодер". Именно эта форма предполагается практически в каждой главе начиная с этого места, и именно это порождает следующий вопрос, на который должна ответить книга: стек "только декодер" такого рода, что описан в этой главе, ещё не является стабильным для обучения на реальной глубине без посторонней помощи, и именно тот конкретный механизм, который делает возможным обучение очень глубоких стеков вообще, — нормализация, — рассматривается в следующей главе.

6. Взгляд с точки зрения собеседования

"Почему нельзя просто обучить модель типа "только энкодер", как BERT, генерировать текст авторегрессивно?" Сильный ответ напрямую указывает структурную несовместимость: self-attention энкодера по построению немаскировано и двунаправленно, поэтому каждая позиция уже может видеть всю последовательность, включая позиции, которые во время генерации должны были бы быть "будущими" токенами. Здесь нет каузальной маскировки, препятствующей тому, чтобы токен обращал внимание на себя или на последующие токены, поэтому нет способа запустить модель слева направо как генератор без изменения самого паттерна внимания, и в этот момент это уже не та же архитектура — она становится маскированным декодером.

"Почему BERT нужна именно задача маскированного языкового моделирования, а не обычное предсказание следующего токена?" Ответ должен объяснить, что двунаправленное self-attention делает предсказание следующего токена тривиальным и неинформативным, потому что токен, который нужно предсказать, уже виден в немаскированном контексте. Маскирование подмножества входных токенов и требование восстановить их из двунаправленного контекста вокруг пропусков создаёт настоящую задачу предсказания, сохраняя при этом двунаправленность, ради которой вообще используется архитектура "только энкодер".

"Дайте механистическое, а не основанное на преданиях объяснение того, почему "только декодер" стал доминирующей формой для крупных LLM." Сильный ответ избегает расплывчатого ответа "потому что это проще" и вместо этого перечисляет конкретные причины: единая, унифицированная задача предобучения (предсказание следующего токена), в точности совпадающая с вычислением во время инференса, без рассогласования между обучением и инференсом; полный бюджет параметров, выделенный под один стек, а не разделённый между энкодером и декодером; и, что наиболее важно, единый последовательный интерфейс (подсказка), способный вместить произвольно разнообразные задачи без каких-либо архитектурных изменений, что соответствует тому, как в действительности эволюционировало использование крупных LLM в сторону открытого, многоходового, контекстного взаимодействия.

"Когда архитектура "энкодер-декодер" всё ещё была бы правильным выбором сегодня?" Сильный ответ отмечает, что задачи с чётким, фиксированным разделением между ограниченным входом и структурно иным выходом — машинный перевод, определённые конвейеры суммаризации или структурированного извлечения — всё ещё могут выигрывать от специализированного двунаправленного прохода энкодера по входу в паре с меньшим, сфокусированным декодером, и что это может быть более эффективным по параметрам, чем прогон той же задачи через гораздо более крупную модель "только декодер", чья полная ёмкость должна быть универсальной. Сильный ответ избегает намёка на то, что модели "энкодер-декодер" просто устарели.

"Что именно ломается, если убрать каузальную маску из модели "только декодер" во время предобучения на тех же данных и с той же задачей?" Сильный ответ объясняет, что удаление маски позволяет каждой позиции видеть токены после неё, а значит, потери при предсказании позиции $i$ можно тривиально минимизировать, скопировав их из собственного будущего контекста позиции $i$, вместо того чтобы учиться предсказывать её на основе прошлого — модель научилась бы "жульничать" во время обучения и оказалась бы некалиброванной (по сути, не обученной для задачи) во время инференса, где будущих токенов на самом деле ещё не существует.

7. Вопросы для самопроверки

  1. Каковы три структурные формы, в которые могут быть собраны подслои внимания и полносвязные подслои Transformer, и какой один компонент механически отличается между self-attention "только энкодер" и "только декодер"?
  2. Почему предсказание следующего токена является непригодной задачей предобучения для чисто двунаправленного энкодерного стека, и какую задачу BERT использует вместо этого, чтобы обойти это ограничение?
  3. Объясните механистически, почему вычисление предобучения модели "только декодер" и её вычисление во время инференса — по сути один и тот же процесс, что неверно для модели "энкодер-декодер".
  4. Чего добивается формулировка T5 в стиле текст-в-текст концептуально по сравнению с наличием отдельной архитектуры под каждую задачу?
  5. Перечислите три связанные с масштабированием причины, приведённые в этой главе для того, почему архитектуры "только декодер" стали доминирующими, и объясните, какая из них кажется вам наиболее убедительной и почему.
  6. При каких обстоятельствах вы бы всё ещё рекомендовали архитектуру "энкодер-декодер" вместо "только декодер" для реальной производственной задачи?
  7. Как cross-attention, представленный в главе 2.1, служит структурным мостом между стеками энкодера и декодера в таких моделях, как T5 и BART?

8. Источники

  • Devlin, J., Chang, M.-W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL 2019. arXiv:1810.04805. https://arxiv.org/abs/1810.04805
  • Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). Improving Language Understanding by Generative Pre-Training (GPT-1). OpenAI technical report. https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf
  • Brown, T. B. et al. (2020). Language Models are Few-Shot Learners (GPT-3). NeurIPS 2020. arXiv:2005.14165. https://arxiv.org/abs/2005.14165
  • Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., Zhou, Y., Li, W., & Liu, P. J. (2019). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5). JMLR 2020. arXiv:1910.10683. https://arxiv.org/abs/1910.10683
  • Lewis, M., Liu, Y., Goyal, N., Ghazvininejad, M., Mohamed, A., Levy, O., Stoyanov, V., & Zettlemoyer, L. (2019). BART. ACL 2020. arXiv:1910.13461. https://arxiv.org/abs/1910.13461
  • Tay, Y., Dehghani, M., Tran, V. Q., Garcia, X., Wei, J., Wang, X., Chung, H. W., Bahri, D., Schuster, T., Zheng, S., Zhou, D., Houlsby, N., & Metzler, D. (2022). UL2: Unifying Language Learning Paradigms. arXiv:2205.05131. https://arxiv.org/abs/2205.05131

Тест для самопроверки

Проверьте понимание главы с помощью короткого теста — вопросы по теории и небольшие расчёты.

Почему чисто энкодерную модель (например, BERT) нельзя обучить напрямую на предсказании следующего токена, как это делается в модели «только декодер»?

Объяснение: Нет каузальной маски, запрещающей позиции видеть саму себя или последующие токены, поэтому предсказание следующего токена было бы тривиальным и бесполезным — модель могла бы просто «подглядеть в ответ».

Какую проблему решает задача маскированного языкового моделирования BERT?

Объяснение: Маскирование части токенов (15% в оригинальной статье) и требование восстановить их по двунаправленному контексту создаёт настоящую задачу предсказания, сохраняя при этом двунаправленность.

Согласно этой главе, какова единственная самая значимая причина, по которой модели «только декодер» стали доминирующими для крупномасштабных генеративных LLM?

Объяснение: Жёсткое разделение входа и выхода в модели энкодер-декодер плохо ложится на открытое, многошаговое, контекстное использование — модели «только декодер» не нужно заранее решать, где проходит эта граница.

В чём заключается ключевой вклад T5, концептуально?

Объяснение: T5 переформулирует классификацию, перевод, суммаризацию и ответы на вопросы как задачи «текст-в-текст», при этом сама задача описана во входном тексте, используя одну архитектуру вместо отдельной под каждую задачу.

Используя исходную долю маскирования BERT в 15%, сколько токенов будет замаскировано во входной последовательности из 200 токенов?

Объяснение: 200 × 0.15 = 30 токенов.

Фиксированный общий бюджет параметров в 12 миллиардов делится поровну между двумя стеками модели энкодер-декодер (без учёта параметров cross-attention). Сколько миллиардов параметров получает каждый стек?

Объяснение: 12 / 2 = 6 миллиардов параметров на стек — именно это описывает компромисс «каждый стек примерно вдвое меньше, чем мог бы быть».

Модель «только декодер» обучается на документе из 2048 токенов. Поскольку предсказание следующего токена для каждой позиции вычисляется параллельно и вносит вклад в функцию потерь, сколько всего предсказаний следующего токена (по одному на позицию, согласно цепному правилу из главы 1.1) вносит этот документ?

Объяснение: Цепное правило раскладывает P(x_1,...,x_n) на n условных предсказаний, по одному на позицию — здесь n = 2048.

Пусть стек энкодера модели энкодер-декодер Transformer содержит 12 слоёв, и стек декодера тоже содержит 12 слоёв. Сколько всего слоёв в полной модели (энкодер + декодер вместе)?

Объяснение: 12 + 12 = 24 слоя всего, поровну разделённых между двумя стеками.