За последние два года, с развитием технологии быстрой настройки, во многих работах было обнаружено, что для моделей с более чем 1 миллиардом параметров выигрыш от быстрой настройки намного выше, чем от стандартной точной настройки. Для небольших выборок. , даже производительность нулевых выборок также может быть значительно стимулирована благодаря Количество параметров достаточно велико , используемый в процессе обучения достаточно корпуса , разработанный в то же время Предтренировочные задания достаточно эффективны . Самой классической крупномасштабной языковой моделью является GPT-3, предложенная в 2020 году, которая имеет примерно 175 миллиардов параметров, и обнаружено, что для нее нужно только разработать соответствующие шаблоны или инструкции. Реализация обучения с нулевой выборкой без обучения параметрам 。
С конца 2022 по начало 2023 года волна AIGC также прокатилась внутри страны и за рубежом. Типичными представителями являются большие модели ChatGPT и GPT-4, выпущенные OpenAI, Bard, выпущенные Google, и Wen XiNYyan, выпущенные Baidu. . Сверхбольшие модели вступили в новую эру, и эти потрясающие мир продукты неотделимы от мощной технологии быстрой настройки. В этой статье по умолчанию используется GPT-3 в качестве примера, чтобы представить несколько методов быстрой настройки для сверхбольших масштабов, а именно:
Контекстное обучение (ICL) было впервые предложено в GPT-3. Оно направлено на выбор небольшого количества помеченных образцов из обучающего набора и разработку инструкций, связанных с заданием, для формирования шаблона подсказки, который используется для направления тестовых образцов. генерировать соответствующие результаты.
Обычно используемые методы контекстного обучения включают в себя:
В настоящее время контекстное обучение все еще имеет определенный разрыв с обычной тонкой настройкой, а результаты прогнозирования имеют большой разброс, а также требуется время для рассмотрения построения шаблонов.
Вторая технология Prompt для сверхбольших моделей — это обучение инструкциям. Фактически, Prompt-Tuning — это, по сути, инструкция для последующих задач. Проще говоря: она сообщает модели, какие задачи ей нужно выполнить и какой контент ей нужно вывести. Дискретные или непрерывные шаблоны, о которых мы упоминали выше, по сути, являются напоминаниями о задачах. Таким образом, при точной настройке крупномасштабной модели инструкции могут быть определены для различных типов задач и обучены для улучшения способности модели к обобщению для различных задач.
Что такое настройка инструкций? Давайте отбросим в сторону все концепции и подумаем о себе как о модели. Я даю вам два задания:
Суть инструкций-настройки и быстрой настройки одна и та же, а именно обнаружение знаний о самой языковой модели. Разница между ними заключается в следующем:
Пример:
Как реализовать настройку инструкций?
Создайте 10 шаблонов инструкций для каждой задачи и посмотрите среднюю и лучшую производительность во время тестирования.
Концепция цепочки мыслей (ЦП) была впервые предложена в статье Google «Подсказки цепочки мыслей вызывают рассуждения в больших языковых моделях». Цепочка мыслей (CoT) — это модифицированная стратегия подсказок, используемая для повышения эффективности LLM в сложных задачах рассуждения, таких как арифметические рассуждения, рассуждения на основе здравого смысла и символические рассуждения.
CoT ничего похожего на ICL так же просто, как ввод и вывод, верно, подсказка о сборке,Скорее, он сочетает в себе промежуточные этапы рассуждения.,Эти шаги выводят окончательный результат в командную строку. Проще говоря,Цепочка мыслей — это своего рода дискретное быстрое обучение.,более конкретно,большой Модель Внизизконтекстное обучение (то есть обучение не выполняется, примеры добавляются в начале текущего образца ввода, а Модель вводит эти тексты один раз для вывода для выполнения задачи), по сравнению с предыдущим традиционным контекстным обучением. обучение (то есть использование x1, y1, x2, y2,...xtest в качестве входных данных, чтобы позволить большой Модели завершить выходные данные ytest), Цепочка У мыслей есть больше советов по выводу из середины середины.
В качестве примера возьмем математическую задачу:
Приведенные выше примеры доказывают, что подсказки цепочки мышления дают правильный ответ, но традиционное обучение подсказкам, которое непосредственно дает ответ, неверно, и даже самые простые математические расчеты не могут быть выполнены хорошо. Проще говоря, языковой модели сложно напрямую преобразовать всю семантику в уравнение, поскольку это более сложный мыслительный процесс, но она может лучше рассуждать о каждой части проблемы посредством промежуточных шагов.
Классификация ЦТ:
Эффективная цепочка мышления должна иметь следующие характеристики:
в настоящий моментсуществовать Промышленное применениебольшой Модель Основной метод:Точная настройка с эффективным использованием параметров (PEFT),Метод PEFT позволяет точно настроить лишь несколько или дополнительные параметры модели.,зафиксированный Большинство предварительно обученных параметров,Значительно снижает затраты на расчеты,В то же время наиболее продвинутыйиз PEFT Эта технология также позволяет достичь производительности, эквивалентной полномасштабной точной настройке.
Этот метод позволяет эффективно адаптировать PLM к различным задачам последующих приложений без необходимости точной настройки всех параметров предварительно обученной модели и делает возможной полную точную настройку больших моделей на оборудовании потребительского уровня.
Широко используемые в настоящее время методы PEFT в основном делятся на три категории:
дополнительные обучаемые префиксные токены (эти префиксы являются последовательными псевдотокенами и не соответствуют реальным токенам) и обучают только эти параметры префикса;
Обновление параметров, во время обучения оптимизируются только параметры матрицы низкого ранга;
Кроме того, Huggface предоставила библиотеку PEFT с открытым исходным кодом для эффективной точной настройки больших моделей. Эта библиотека алгоритмов поддерживает три вышеуказанных типа методов и может вызываться напрямую.
Prefix-Tuning добавляет непрерывную векторную последовательность, специфичную для задачи (непрерывные векторы, специфичные для задачи) перед входными данными модели, называемую префиксом. Префикс трактуется как последовательность «виртуальных токенов», но состоит из свободных параметров, не соответствующих реальным токенам. В отличие от полной тонкой настройки, при которой обновляются все параметры PLM, Prefix-Tuning исправляет все параметры PLM и обновляет только тот префикс, который оптимизирует конкретную задачу. Таким образом, во время производственного развертывания необходимо хранить только копию большого PLM и изученный префикс для конкретной задачи, а каждая последующая задача требует лишь очень небольших дополнительных затрат на вычисления и хранение.
Точная настройка обновляет все параметры PLM и требует сохранения полной копии модели для каждого задания. Настройка префикса замораживает параметры PLM и оптимизирует только префикс. Таким образом, для каждой задачи необходимо сохранять только определенные префиксы, что делает настройку префиксов модульной и экономит место для хранения.
Взяв в качестве примера авторегрессионную языковую модель GPT2, введите
и вывод
Сращенный в
, вычислите представление скрытого слоя через определенный слой LM
,
,в,
и
являются индексами входной и выходной последовательностей соответственно.
Prefix-Tuning добавляет префикс перед вводом, т.е.
,
- индекс префиксной последовательности,
длина префикса. Префиксный индекс соответствует
параметризованная векторная матрица
, размеры
. Представление скрытого слоя: если индекс является префиксным индексом.
, прямо из
Скопируйте соответствующий вектор как
(Добавьте векторы префикса к каждому слою модели.);В противном случае перейдите напрямую LM Рассчитано при этом после LM рассчитанный
Также зависит от параметра префикса слева
,Прямо сейчасИспользуйте префиксы, чтобы повлиять на последующие значения активации скрытого слоя последовательности.。
Но напрямую оптимизировать
Приведет к нестабильному обучению из-за меньшей матрицы
и более крупная нейронная сеть прямого распространения
верно
Выполните репараметризацию:
. Во время тренировки параметры ЛМ
Исправлено, только префиксные параметры
являются обучаемыми параметрами. После завершения обучения остается только префикс
сохраняется.
Идеи методов P-Tuning и Prefix-Tuning очень похожи. P-Tuning использует небольшое количество параметров непрерывного внедрения в качестве подсказок, чтобы лучше применять GPT к задачам NLU, в то время как Prefix-Tuning предназначен для задач NLG. время, только параметры P-Tuning добавляются в слой внедрения, а Prefix-Tuning добавляет обучаемые параметры в каждый слой.
Метод быстрой настройки можно рассматривать как упрощение префиксной настройки. Он фиксирует параметры всей предварительно обученной модели и позволяет задавать только дополнительные параметры каждой последующей задачи.
Обновляемые токены добавляются к входному тексту, и никакие дополнительные уровни кодирования или выходные слои для конкретной задачи не используются.
и Prefix Tuningи Prompt Tuning Этот тип можно обучить и добавить перед вводом. prompt embedding Параметры для адаптации небольшого количества параметров к последующим задачам,Настройка адаптера заключается в добавлении новых сетевых уровней или модулей между сетевыми уровнями в предварительно обученной модели для адаптации к последующим задачам.。
Предположим, что предварительно обученная функция модели выражается как
, для настройки адаптера после добавления адаптера функция модели обновляется до
,
— параметры предварительно обученной модели,
— параметр вновь добавленного адаптера. В процессе обучения.
фиксировано, только
обновляться.
,Это позволяет другим последующим задачам добавлять лишь небольшое количество обучаемых параметров.,Экономьте накладные расходы на вычисления,Также поделитесь масштабной предтренировочной Моделью.
Series Структура адаптера адаптера ii Transformer Интеграция показана на рисунке выше. Модуль адаптера добавляется к каждому Transformer Два слоя: после многоголового отображения внимания и после двух слоев нейронной сети прямого распространения. Адаптер представляет собой Модуль структуры узкого места состоит из двухслойной нейронной сети прямого распространения (состоящей из матрицы нисходящей проекции, нелинейной функции и матрицы восходящей проекции) и остаточной связи между выходами.
Вышеупомянутый метод настройки адаптера добавляет уровень адаптера на основе PLM, что приведет к дополнительным вычислениям и вызовет проблемы с задержкой вывода, в то время как метод настройки префикса трудно оптимизировать, и его производительность меняется немонотонно с размером файла; Более фундаментально, часть префикса резервируется для префикса. Длина последовательности обязательно уменьшает длину последовательности, доступную для обработки последующих задач. Итак, Microsoft представила метод LoRA.
Адаптация низкого ранга — это технология точной настройки с эффективным использованием параметров. Ее основная идея состоит в том, чтобы выполнить неявное преобразование низкого ранга весовой матрицы большой модели, то есть приблизительно представить модель через представление более низкой размерности. Многомерная матрица или набор данных.
Основной принцип: технология LoRA фиксирует вес предварительно обученной модели.,И ввести обучаемый слой (называемый матрицей разложения ранга) в каждый блок Transformer.,То есть добавить «боковую ветвь» AиB рядом с Линейным слоем Модели существования. в,A уменьшает данные из измерения d в измерение r.,Это r — ранг LoRA.,является важным гиперпараметром; B переводит данные из измерения r в измерение d;,Параметры части B изначально равны 0. Модель После обучения,Для объединения и совместного использования требуется часть Ставь А+Б параметра ОригиналбольшойModelParameter.
псевдокод Python
input_dim = 768 # Например, скрытый размер предварительно обученной модели.
output_dim = 768 # Например, выходной размер слоя
rank = 8 # Ранг «r» для адаптации низкого ранга.
W = ... # Веса из предварительно обученной сети с формой input_dim x output_dim
W_A = nn.Parameter(torch.empty(input_dim, rank)) # LoRA вес А
W_B = nn.Parameter(torch.empty(rank, output_dim)) # Вес LoRA B инициализирует вес LoRA
nn.init.kaiming_uniform_(W_A, a=math.sqrt(5))
nn.init.zeros_(W_B)
def regular_forward_matmul(x, W):
h = x @ W
return h
def lora_forward_matmul(x, W, W_A, W_B):
h = x @ W # Обычное матричное умножение
h += x @ (W_A @ W_B) * alpha # Используйте масштабированные веса LoRA, коэффициент масштабирования альфа.
return h
Метод LoRA на данный момент является одним из наиболее универсальных и эффективных методов тонкой настройки.