Отметим: когда корпоративный ассистент на базе LLM генерирует общие рассуждения вместо ответов по регламенту — это типичная проблема base-модели. Вы даёте инструкцию «Напиши ответ клиенту по шаблону CRM», а она выдает абстрактный текст. Чтобы превратить общую модель в ассистента, понимающего контекст компании, нужно instruction tuning. Этот метод настраивает модель на корпоративный язык и стандарты, гарантируя предсказуемые ответы. Подход в 2–3 раза эффективнее традиционного fine-tuning для задач, требующих соблюдения сложных текстовых инструкций. Настройка языковой модели под конкретный домен — ключевая задача в проектах RAG и MLOps. Средняя экономия бюджета на таком проекте составляет 200 000–500 000 ₽ за счёт исключения необходимости обучения с нуля.
Чем отличается Base LLM от Instruct?
Base LLM (например, Llama 3.1 8B) просто продолжает текст. Дайте ей начало — она продолжит, но не ответит как ассистент. Instruct LLM (Llama 3.1 8B Instruct) выполняет инструкции: отвечает, анализирует, отказывается от нежелательного контента. При дообучении корпоративной модели мы обычно берём готовую Instruct-версию (Llama Instruct, Mistral Instruct) и адаптируем под домен. Но иногда требуется полноценный Instruction Tuning с нуля — например, для работы с base-моделью или переопределения поведения.
Какие форматы данных используются для Instruction Tuning?
| Формат | Описание | Применение |
|---|---|---|
| Alpaca (JSON) | Простая пара instruction-input-output | Быстрые эксперименты, небольшие датасеты |
| ShareGPT (JSON) | Многоходовый диалог с чередованием ролей | Чат-боты, сценарии с контекстом |
| Chat Template | Роли system/user/assistant, интегрирован в tokenizer | Современные модели, производство |
{
"instruction": "Переведи текст с английского на русский",
"input": "The contract must be signed before the deadline",
"output": "Договор должен быть подписан до истечения срока"
}
{
"conversations": [
{"from": "human", "value": "Проанализируй баланс компании"},
{"from": "gpt", "value": "Для анализа баланса нужны следующие показатели..."},
{"from": "human", "value": "Как интерпретировать соотношение активов?"},
{"from": "gpt", "value": "Соотношение текущих и долгосрочных активов показывает..."}
]
}
messages = [
{"role": "system", "content": "Ты — ассистент по финансовому анализу"},
{"role": "user", "content": "Рассчитай ROE"},
{"role": "assistant", "content": "ROE = Чистая прибыль / Собственный капитал × 100%..."},
]
formatted = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
Какой объём данных нужен?
Исследование LIMA показало: 1000 качественных примеров работают так же хорошо, как 52000 обычных. Качество важнее количества. Ориентиры для специализированного Instruction Tuning:
| Задача | Минимальный объём | Оптимальный объём |
|---|---|---|
| Специализация стиля | 100–300 | 500–1000 |
| Новый домен (среднесложный) | 500–1000 | 2000–5000 |
| Сложный технический домен | 1000–2000 | 5000–15000 |
| Смена базового поведения | 2000–5000 | 10000–50000 |
Почему Instruction Tuning критичен для корпоративного ИИ?
Корпоративный ассистент должен не просто отвечать, а соблюдать регламенты, корпоративный тон и терминологию. Без Instruction Tuning модель может генерировать стилистически неверные ответы или разглашать конфиденциальную информацию. Мы дообучали Llama 3.1 8B на 1800 примерах внутренних переписок IT-компании. Результат: adherence to corporate tone вырос с 2.9 до 4.4 (по LLM-judge), точность доменной терминологии — с 61% до 87%, корректные отказы — с 34% до 89%, а ложные отказы снизились с 8% до 2%. В датасет мы включили negative examples — запросы, на которые модель должна отказывать (конкуренты, персональные данные). Экономия бюджета по сравнению с обучением с нуля может достигать 60%, что в денежном выражении составляет сотни тысяч рублей на проект.
Пример конфигурации обучения
from trl import SFTTrainer, SFTConfig
from peft import LoraConfig
trainer = SFTTrainer(
model=model,
args=SFTConfig(
output_dir="./corporate-instruct",
num_train_epochs=4,
learning_rate=2e-4,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
max_seq_length=2048,
bf16=True,
dataset_text_field="text",
),
train_dataset=formatted_dataset,
peft_config=LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"]),
)
Важно: при Instruction Tuning мы маскируем instruction часть при вычислении loss (учитываем loss только на response токенах). В TRL это контролируется через DataCollatorForCompletionOnlyLM.
Как собрать качественный датасет?
- Определите цели: какой стиль и тон нужны, какие темы охватить.
- Соберите корпоративные документы: внутренние переписки, регламенты, FAQ.
- Сгенерируйте инструкции: используйте LLM для создания примеров на основе документов.
- Проверьте качество: удалите несоответствия, исправьте ошибки.
- Отформатируйте датасет: выберите Alpaca, ShareGPT или Chat Template.
Пример генерации инструкций через LLM:
def document_to_instructions(doc_text: str, llm_client) -> list:
response = llm_client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": f"""Из следующего документа создай 10 обучающих примеров для LLM.
Каждый пример: {{"instruction": "задание", "output": "правильный ответ на основе документа"}}.
Разнообразь типы заданий: вопросы, суммаризация, анализ, сравнение.
Документ:
{doc_text[:3000]}
Верни JSON-массив примеров."""
}],
)
return json.loads(response.choices[0].message.content)
Процесс работы
| Этап | Длительность | Результат |
|---|---|---|
| Аналитика и целеполагание | 1–2 недели | ТЗ на датасет, выбор модели |
| Сбор и подготовка источников | 1–2 недели | Сырые документы, размеченные примеры |
| Генерация и верификация датасета | 2–3 недели | Финальный датасет в нужном формате |
| Дообучение с итерациями | 1–2 недели | Метрики, контрольные чекпоинты |
| Оценка и деплой | 1 неделя | Экспортированная модель, документация |
Сроки и стоимость
- Проектирование датасета и сбор источников: 2–3 недели
- Генерация и верификация примеров: 2–4 недели
- Обучение и итерации: 1–2 недели
- Итого: от 5 до 9 недель
Стоимость рассчитывается индивидуально в зависимости от объёма датасета, размера модели и требуемых итераций. Для точной оценки свяжитесь с нами — предоставим детальный коммерческий план. Экономия бюджета по сравнению с обучением с нуля может достигать 60%.
Что входит в работу
- Формирование датасета: скрипты генерации, верификация, разметка
- Код обучения с использованием современного стека (TRL, Transformers, PEFT)
- Экспорт обученной модели в нужный формат (GGUF, ONNX, SafeTensors)
- Документация по архитектуре, конфигам и метрикам
- Доступ к репозиторию с кодом и датасетом
- Поддержка в течение 30 дней после сдачи
Типичные ошибки при Instruction Tuning
- Нечистые данные: ответы с ошибками, несогласованный стиль
- Игнорирование маскировки loss на промпте — модель учится запоминать инструкцию, а не отвечать
- Слишком маленький learning rate (1e-4–5e-5 оптимально для LoRA)
- Недостаточное разнообразие инструкций — модель переобучается на узкий паттерн
Instruction Tuning — это метод, который превращает общую LLM в ассистента, говорящего на языке вашей компании. Наш опыт: более 5 лет в NLP и CV, 50+ проектов по дообучению LLM для корпоративных заказчиков. Свяжитесь с нами, чтобы обсудить ваш проект. Получите консультацию по настройке Instruction Tuning.
Ссылка: Instruction Tuning на Wikipedia







