Instruction Tuning
Настройка по инструкциям дообучает предварительно обученную языковую модель на парах «инструкция — ответ», чтобы она выполняла запросы. Рассматриваются FLAN, InstructGPT, данные и VLM.
Настройка по инструкциям — это дообучение предварительно обученной большой языковой модели (LLM) на парах инструкций и желаемых ответов, чтобы модель выполняла запросы, сформулированные обычным языком. Предварительно обученная модель лишь продолжает текст: получив от OpenAI запрос «Объясни высадку на Луну шестилетнему ребёнку в нескольких предложениях», GPT-3 продолжила похожими запросами о гравитации и теории относительности, а модель InstructGPT, настроенная по инструкциям, написала объяснение. Исследователи Google описали этот метод в статье FLAN 2021 года: модель с 137 миллиардами параметров обучили на более чем 60 наборах данных по обработке естественного языка (NLP), переформулированных в виде инструкций. Настроенная модель превзошла результаты без примеров (zero-shot) модели GPT-3 с 175 миллиардами параметров в 20 из 25 задач, с которыми она прежде не сталкивалась. В конвейерах обучения чат-моделей этот этап обычно называют обучением с учителем (SFT); эти термины используют как синонимы.
Принцип работы настройки по инструкциям#
Каждый пример форматируется по шаблону, который обозначает начало ответа после инструкции, например с помощью шаблонов чатов современных моделей или заголовков «### Instruction» и «### Response», применявшихся в Alpaca от Стэнфордского университета. Для обучения используется та же функция потерь по предсказанию следующего токена, что и при предварительном обучении, но учитываются только токены ответа, поэтому модель учится выдавать ответы, а не предсказывать сами инструкции. Вот пример такой настройки на GPT-2 от OpenAI:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)
# One instruction-response pair in the Alpaca prompt format
prompt_ids = tokenizer("### Instruction:\nName three animals that can fly.\n\n### Response:\n").input_ids
response_ids = tokenizer("Bats, eagles, and bees." + tokenizer.eos_token).input_ids
input_ids = torch.tensor([prompt_ids + response_ids])
# Label -100 drops the instruction from the loss, so the model learns only to respond
labels = torch.tensor([[-100] * len(prompt_ids) + response_ids])
for step in range(3):
loss = model(input_ids=input_ids, labels=labels).loss
loss.backward()
optimizer.step()
optimizer.zero_grad()
print(f"step {step}: loss {loss.item():.2f}")В функцию потерь входят только 10 токенов ответа, и после трёх обновлений на этом единственном примере значение уменьшается с 4,45 до 1,49. При настройке по инструкциям те же обновления выполняются на тысячах или миллионах разных пар инструкций и ответов, чтобы модель усвоила общий навык отвечать, а не запомнила один конкретный ответ.
Настройка по инструкциям обычно является первым этапом постобучения, а данные могут поступать из нескольких источников:
Наборы данных для обучения по инструкциям#
В 2022 году коллекция Flan от Google выросла до 1 836 задач, а настройка по ней повысила средний результат PaLM с 540 миллиардами параметров на 9,4%. InstructGPT от OpenAI объединила демонстрации, написанные разметчиками, с обучением с подкреплением на основе отзывов людей (RLHF); пользователи предпочли результаты её модели с 1,3 миллиарда параметров результатам GPT-3 с 175 миллиардами параметров. Alpaca от Стэнфордского университета, выпущенная в марте 2023 года, дообучила LLaMA 7B от Meta менее чем за 600 долларов на 52 000 примерах, сгенерированных моделью OpenAI методом Self-Instruct. Это был ранний пример использования синтетических данных для обучения по инструкциям. Meta LIMA показала, каких результатов можно достичь с небольшим набором данных: LLaMA с 65 миллиардами параметров настроили всего на 1 000 тщательно отобранных примерах, а авторы заключили, что почти все знания модель усваивает при предварительном обучении, тогда как настройка по инструкциям учит её формату и стилю ответов. Такие методы, как прямая оптимизация предпочтений (DPO), затем дорабатывают настроенную модель на данных о предпочтениях.
Визуальная настройка по инструкциям#
Модели «зрение — язык» (VLMs) так же учатся выполнять инструкции об изображениях. В LLaVA, опубликованной в апреле 2023 года, текстовой модели GPT-4 предоставили подписи и ограничивающие рамки изображений из COCO и попросили создать 158 000 диалогов, подробных описаний и примеров сложных рассуждений по этим изображениям. Затем на этих данных настроили модель, связывающую кодировщик изображений CLIP с языковой моделью. Этот метод называется визуальной настройкой по инструкциям. Настроенные по инструкциям VLM отвечают на свободные запросы об изображениях, и блок LLM в агентах Ultralytics Platform использует эту возможность: он передаёт выбранной модели «зрение — язык» изображение, результаты работы вышестоящего компонента YOLO26 и текстовый запрос.
Настройка по инструкциям и смежные термины#
Настройка промпта обучает несколько мягких векторов промпта, оставляя веса модели неизменными, а разработка промптов меняет только входной текст; настройка по инструкциям, напротив, обновляет веса модели. Дообучение в предметной области адаптирует модель к такой сфере, как медицина или право, но не обязательно учит её выполнять запросы. Настройку по инструкциям можно также проводить с помощью параметрически эффективного дообучения (PEFT): QLoRA обучает адаптеры LoRA на квантованной до 4 бит модели. Авторы метода настроили по инструкциям модель с 65 миллиардами параметров на одном GPU с 48 ГБ памяти.










