Fine-Tuning GPT-4 и GPT-4o: кастомизация LLM под бизнес-задачи

Fine-Tuning GPT-4 и GPT-4o: дообучение под бизнес-задачи

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1284
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    696
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982

Fine-Tuning GPT-4 и GPT-4o: дообучение под бизнес-задачи

Мы часто сталкиваемся с ситуацией, когда даже самый длинный system prompt не даёт стабильного формата ответа. Например, при извлечении реквизитов из договоров базовая GPT-4o ошибалась в 29% случаев. После fine-tuning на 800 размеченных примерах точность выросла до 94%, а промпт сократился втрое. В этой статье разберём, как мы подходим к fine-tuning GPT-4 и GPT-4o — от датасета до деплоя, и когда это оправдано вместо обычного промпт-инжиниринга. Важно понимать, что fine-tuning — не единственный способ адаптации; иногда достаточно правильно настроенного промпта с примерами. Мы детально разбираем датасет, итеративно подбираем hyperparameters и тестируем результат на hold-out выборке.

Когда нужен fine-tuning, а когда хватает промпта?

Параметр Prompt Engineering Fine-Tuning
Длина контекста под инструкции Занимает токены Не нужен
Стабильность формата вывода Нестабильная Высокая
Латентность Выше (длинный промпт) Ниже
Стоимость на запрос Выше Ниже при большом объёме
Порог входа Нет Нужны данные

Fine-tuning оправдан, когда формат вывода должен быть жёстким (JSON, таблица) или домен узок. Если достаточно 5-shot примеров — лучше остаться на промпте.

Как подготовить качественный датасет?

Ключевой этап — качество данных, а не их количество. Типичные ошибки при подготовке:

  • Дубликаты и противоречия: одинаковый вопрос с разными ответами сбивает модель. Дедупликация обязательна.
  • Несбалансированный класс ответов: если 90% примеров — один тип запроса, модель перегибает под него.
  • Формат без вариативности: если все примеры написаны одним автором в одном стиле, модель будет плохо обобщать.

Для очистки и анализа датасета используем datasets (Hugging Face), pandas, а также openai CLI для валидации формата:

openai tools fine_tunes.prepare_data -f dataset.jsonl 

Количество примеров зависит от задачи. Минимальный порог — 50–100, но для стабильного результата лучше 500–2000. При меньшем объёме модель плохо обобщает, при большем — растут затраты на обучение без гарантии улучшения. Важно поддерживать баланс классов и разнообразие формулировок.

Какие гиперпараметры выбрать?

Параметр Значение по умолчанию Рекомендация для малого датасета
n_epochs 3 5–8
batch_size 4 2–4
learning_rate_multiplier 1.8 0.5–1.0
from openai import OpenAI client = OpenAI(api_key="...") file = client.files.create( file=open("train.jsonl", "rb"), purpose="fine-tune" ) job = client.fine_tuning.jobs.create( training_file=file.id, model="gpt-4o-2024-08-06", hyperparameters={ "n_epochs": 3, "batch_size": 4, "learning_rate_multiplier": 1.8 } ) 

Рекомендуем начинать с n_epochs=3, затем итеративно увеличивать, следя за метриками. При переобучении train loss снижается, а validation loss растёт — тогда число эпох нужно уменьшить.

Как оценить результат дообучения?

После завершения джоба модель доступна по id вида ft:gpt-4o-2024-08-06:org-name::abc123. Оцениваем результат по:

  • Training loss / Validation loss: OpenAI отдаёт метрики в событиях джоба. Хороший сигнал — снижающийся train loss при стабильном val loss.
  • Ручное тестирование на hold-out наборе: минимум 50 примеров, не попавших в обучение.
  • Сравнение с baseline: A/B тест базовой GPT-4o vs. дообученной на реальных запросах.

Пример реального улучшения: при дообучении GPT-4o на 800 примерах юридических документов (договоры аренды, акты) точность извлечения реквизитов в структурированный JSON выросла с 71% до 94%, а токены на промпт сократились на 60%.

Какие задачи решаем с помощью fine-tuning?

  • Классификация обращений (например, саппорт-тикеты по категориям): 2–3 недели от сбора данных до деплоя. Нужно 300–500 размеченных примеров.
  • Генерация в корпоративном стиле: тон, структура ответа, запрещённые фразы. 1–2 недели, 200–400 примеров.
  • Извлечение структурированных данных (Named Entity Recognition через LLM): 3–4 недели, 500–1500 примеров с аннотацией.
  • Специализированный домен (медицина, право, финансы): 6–12 недель с учётом сбора и разметки данных.

Для каждой задачи мы готовим кастомный датасет, итеративно дообучаем и проводим A/B-тестирование. Подробнее об этом в документации OpenAI по fine-tuning.

Какие ограничения у fine-tuning GPT-4o?

GPT-4o fine-tuning не даёт доступа к весам модели — вы получаете только hosted endpoint. Если нужны on-premise или контроль над весами, рассматриваем Llama 3, Mistral или другие открытые модели с LoRA/QLoRA.

Также следует учитывать: дообученная модель дороже базовой в инференсе. При большом объёме запросов это существенно, но экономия на промпте может компенсировать затраты.

Что входит в нашу работу

  • Аудит существующих данных, выработка требований к датасету
  • Сбор, очистка, разметка (при необходимости) обучающих примеров
  • Итеративное обучение с подбором гиперпараметров
  • Оценка качества: автоматические метрики + ручная верификация
  • Интеграция дообученной модели в продакшн-пайплайн
  • Мониторинг деградации качества после деплоя

Мы гарантируем, что дообученная модель пройдёт валидацию на hold-out выборке. За 5 лет на рынке мы выполнили более 20 проектов по fine-tuning. Наш опыт позволяет подбирать оптимальные гиперпараметры с первой итерации. Закажите консультацию — мы оценим ваш датасет и скажем, возможен ли fine-tuning. Свяжитесь с нами, чтобы обсудить детали.