Модели и платформы ИИ
Декодерные Большые Языковые Модели: Полное Руководство
Большие языковые модели (БЯМ) революционизировали область обработки естественного языка, демонстрируя замечательные возможности в генерации текста, похожего на человеческий, ответах на вопросы и помощи в широком спектре языковых задач. В основе этих мощных моделей лежит декодерная архитектура трансформера, вариант оригинальной архитектуры трансформера, предложенной в фундаментальной статье “Attention is All You Need” Васвани и др.
В этом всестороннем руководстве мы рассмотрим внутреннюю структуру декодерных БЯМ, изучая фундаментальные строительные блоки, архитектурные инновации и детали реализации, которые привели эти модели к передовым исследованиям и применению в области обработки естественного языка.
Архитектура Трансформера: Повторный Обзор
Прежде чем приступить к конкретике декодерных БЯМ, необходимо повторно рассмотреть архитектуру трансформера, на которой основаны эти модели. Трансформер ввел новый подход к моделированию последовательностей, полагаясь исключительно на механизмы внимания для захвата долгосрочных зависимостей в данных, без необходимости в рекуррентных или сверточных слоях.
Оригинальная архитектура трансформера состоит из двух основных компонентов: кодировщика и декодера. Кодировщик обрабатывает входную последовательность и генерирует контекстуализированное представление, которое затем потребляется декодером для производства выходной последовательности. Эта архитектура была первоначально разработана для задач машинного перевода, где кодировщик обрабатывает входную предложение в исходном языке, а декодер генерирует соответствующее предложение в целевом языке.
Самовнимание: Ключ к Успеху Трансформера
В сердце трансформера лежит механизм самовнимания, мощная техника, позволяющая модели взвешивать и агрегировать информацию из разных позиций во входной последовательности. В отличие от традиционных моделей последовательностей, которые обрабатывают входные токены последовательно, самовнимание позволяет модели захватывать зависимости между любой парой токенов, независимо от их позиции в последовательности.
Операция самовнимания может быть разбита на три основных шага:
- Проекции Запроса, Ключа и Значения: Входная последовательность проецируется в три отдельных представления: запросы (Q), ключи (K) и значения (V). Эти проекции получаются путем умножения входа на обученные весовые матрицы.
- Расчет Баллов Внимания: Для каждой позиции во входной последовательности вычисляются баллы внимания, принимая скалярное произведение между соответствующим вектором запроса и всеми векторами ключей. Эти баллы представляют собой актуальность каждой позиции для текущей позиции, обрабатываемой в данный момент.
- Взвешенная Сумма Значений: Баллы внимания нормализуются с помощью функции softmax, и полученные веса внимания используются для вычисления взвешенной суммы векторов значений, производя выходное представление для текущей позиции.
Мультиголовое внимание, вариант механизма самовнимания, позволяет модели захватывать различные типы отношений, вычисляя баллы внимания через несколько “голов” параллельно, каждая со своими собственными проекциями запроса, ключа и значения.
Варианты Архитектуры и Конфигурации
Хотя основные принципы декодерных БЯМ остаются последовательными, исследователи изучали различные варианты архитектуры и конфигурации для улучшения производительности, эффективности и возможностей обобщения. В этом разделе мы рассмотрим различные архитектурные выборы и их последствия.
Типы Архитектуры
Декодерные БЯМ можно классифицировать на три основных типа: кодировщик-декодер, каузальный декодер и префикс-декодер. Каждый тип архитектуры демонстрирует различные закономерности внимания.
Архитектура Кодировщика-Декодера
На основе модели трансформера, архитектура кодировщика-декодера состоит из двух стеков: кодировщика и декодера. Кодировщик использует слои многоголового самовнимания для кодирования входной последовательности и генерации латентного представления. Декодер затем выполняет перекрестное внимание над этими представлениями для генерации целевой последовательности. Хотя эта архитектура эффективна в различных задачах обработки естественного языка, лишь немногие БЯМ, такие как Flan-T5, используют эту архитектуру.
Каузальная Архитектура Декодера
Архитектура каузального декодера включает в себя унидирекциональную маску внимания, позволяющую каждому входному токену обращать внимание только на прошлые токены и сам себя. И входные, и выходные токены обрабатываются внутри одного и того же декодера. Заметные модели, такие как GPT-1, GPT-2 и GPT-3, построены на этой архитектуре, а GPT-3 демонстрирует замечательные возможности контекстного обучения. Многие БЯМ, включая OPT, BLOOM и Gopher, широко приняли каузальные декодеры.
Префиксная Архитектура Декодера
Также известная как некаузальная архитектура декодера, префиксная архитектура декодера изменяет механизм маскирования каузальных декодеров, чтобы ermögнить двунаправленное внимание над префиксными токенами и унидирекциональное внимание над сгенерированными токенами. Как и архитектура кодировщика-декодера, префиксные декодеры могут кодировать префиксную последовательность двунаправленно и предсказывать выходные токены автoregressively с использованием общих параметров. БЯМ на основе префиксных декодеров включают GLM130B и U-PaLM.
Все три типа архитектур можно расширить с помощью техники микстуры экспертов (MoE), которая разреженно активирует подмножество весов нейронной сети для каждого входа. Этот подход был использован в моделях, таких как Switch Transformer и GLaM, и увеличение количества экспертов или общего размера параметров показало значительные улучшения производительности.
Декодерный Трансформер: Принятие Авторегрессивной Природы
Хотя оригинальная архитектура трансформера была разработана для задач последовательности-в-последовательность, таких как машинный перевод, многие задачи обработки естественного языка, такие как моделирование языка и генерация текста, можно сформулировать как авторегрессивные проблемы, где модель генерирует один токен за раз, учитывая предыдущие сгенерированные токены.
Войдет декодерный трансформер, упрощенный вариант архитектуры трансформера, который сохраняет только компонент декодера. Эта архитектура особенно подходит для авторегрессивных задач, поскольку она генерирует выходные токены один за другим, используя предыдущие сгенерированные токены в качестве контекста входа.
Ключевое различие между декодерным трансформером и оригинальным декодером трансформера заключается в механизме самовнимания. В декодерной обстановке операция самовнимания изменена, чтобы предотвратить обращение модели к будущим токенам, свойство, известное как каузальность. Это достигается с помощью техники, называемой “маскированным самовниманием”, где баллы внимания, соответствующие будущим позициям, устанавливаются в отрицательную бесконечность, эффективно маскируя их во время нормализации softmax.
Компоненты Архитектуры Декодерных БЯМ
Хотя основные принципы самовнимания и маскированного самовнимания остаются одинаковыми, современные декодерные БЯМ ввели несколько архитектурных инноваций для улучшения производительности, эффективности и возможностей обобщения. Давайте рассмотрим некоторые ключевые компоненты и техники, используемые в передовых БЯМ.
Представление Входа
Прежде чем обрабатывать входную последовательность, декодерные БЯМ используют техники токенизации и встраивания для преобразования сырого текста в числовое представление, подходящее для модели.
Токенизация: Процесс токенизации преобразует входной текст в последовательность токенов, которые могут быть словами, субсловами или даже отдельными символами, в зависимости от стратегии токенизации. Популярные техники токенизации для БЯМ включают Байтовое Кодирование Пар (BPE), SentencePiece и WordPiece. Эти методы стремятся найти баланс между размером словаря и гранулярностью представления, позволяя модели эффективно обрабатывать редкие или неизвестные слова.
Векторные Встраивания Токенов: После токенизации каждый токен сопоставляется с плотным векторным представлением, называемым векторным встраиванием токена. Эти встраивания обучаются во время процесса обучения и захватывают семантические и синтаксические отношения между токенами.
Позиционные Встраивания: Модели трансформера обрабатывают всю входную последовательность одновременно, не имея встроенного понятия позиций токенов, присутствующего в рекуррентных моделях. Чтобы включить информацию о позиции, позиционные встраивания добавляются к векторным встраиваниям токенов, позволяя модели различать токены на основе их позиций в последовательности. Ранние БЯМ использовали фиксированные позиционные встраивания на основе синусоидальных функций, в то время как более поздние модели исследовали обучаемые позиционные встраивания или альтернативные техники позиционного кодирования, такие как ротационные позиционные встраивания.
Блоки Многоголового Внимания
Основными строительными блоками декодерных БЯМ являются слои многоголового внимания, которые выполняют операцию маскированного самовнимания, описанную ранее. Эти слои укладываются несколько раз, причем каждый слой обращает внимание на выход предыдущего слоя, позволяя модели захватывать все более сложные зависимости и представления.
Головы Внимания: Каждый слой многоголового внимания состоит из нескольких “голов внимания“, каждая со своими собственными проекциями запроса, ключа и значения. Это позволяет модели обращать внимание на различные аспекты входных данных одновременно, захватывая разнообразные отношения и закономерности.
Остаточные Соединения и Нормализация Слоев: Для облегчения обучения глубоких сетей и смягчения проблемы исчезающих градиентов декодерные БЯМ используют остаточные соединения и нормализацию слоев. Остаточные соединения добавляют вход слоя к его выходу, позволяя градиентам течь более легко во время обратного распространения. Нормализация слоев помогает стабилизировать активации и градиенты, дальнейшим образом улучшая стабильность обучения и производительность.
Слои Прямого Пропуска
Помимо слоев многоголового внимания, декодерные БЯМ включают слои прямого пропуска, которые применяют простую нейронную сеть прямого пропуска к каждой позиции в последовательности. Эти слои вводят нелинейности и позволяют модели изучать более сложные представления.
Функции Активации: Выбор функции активации в слоях прямого пропуска может существенно повлиять на производительность модели. Хотя ранние БЯМ полагались на широко используемую функцию активации ReLU, более поздние модели приняли более сложные функции активации, такие как Гауссовская Ошибка Линейного Единицы (GELU) или SwiGLU-активация, которые показали улучшенную производительность.
Разреженное Внимание и Эффективные Трансформеры
Хотя механизм самовнимания мощен, он имеет квадратичную вычислительную сложность по отношению к длине последовательности, что делает его вычислительно дорогим для длинных последовательностей. Чтобы решить эту проблему, были предложены несколько техник для уменьшения вычислительных и памятных требований самовнимания, позволяя эффективно обрабатывать более длинные последовательности.
Разреженное Внимание: Техники разреженного внимания, такие как та, которая используется в модели GPT-3, выборочно обращают внимание на подмножество позиций во входной последовательности, а не вычисляют баллы внимания для всех позиций. Это может существенно уменьшить вычислительную сложность, сохраняя при этом разумную производительность.
Скользящее Окно Внимания: Введенное в модели Mistral 7B, скользящее окно внимания (SWA) – это простая, но эффективная техника, которая ограничивает диапазон внимания каждого токена фиксированным размером окна. Этот подход использует способность слоев трансформера передавать информацию через несколько слоев, эффективно увеличивая диапазон внимания без квадратичной сложности полного самовнимания.
Кэш Поворотного Буфера: Чтобы еще больше уменьшить требования к памяти, особенно для длинных последовательностей, модель Mistral 7B использует кэш поворотного буфера. Эта техника хранит и повторно использует вычисленные ключи и векторы значений для фиксированного размера окна, избегая избыточных вычислений и минимизируя использование памяти.
Групповое Внимание Запроса: Введенное в модели LLaMA 2, групповое внимание запроса (GQA) – это вариант механизма многозапросового внимания, который делит головы внимания на группы, каждая из которых имеет общую матрицу ключа и значения. Этот подход балансирует эффективность многозапросового внимания и производительность стандартного самовнимания, обеспечивая улучшение времени вывода, сохраняя при этом высококачественные результаты.
















