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. Свяжитесь с нами, чтобы обсудить детали.







