Дотонування (Fine-Tuning) мовних моделей GPT-4 / GPT-4o
GPT-4 та GPT-4o — закриті моделі OpenAI, доступні для дотонування через офіційний API. Дотонування дозволяє адаптувати базову модель для конкретного домену, корпоративного стилю відповідей, формату виведення або спеціалізованого завдання — без потреби передавати контекст через системний промпт щоразу.
Переваги дотонування GPT-4o порівняно з інженерією промптів
| Параметр | Інженерія промптів | Дотонування |
|---|---|---|
| Витрати токенів на інструкції | Займають токени | Не потрібно |
| Стабільність формату виведення | Нестабільна | Висока |
| Затримка | Вища (довгий промпт) | Нижча |
| Вартість за запит | Вища | Нижча при великому обсязі |
| Поріг входу | Немає | Потрібні дані |
Дотонування GPT-4o через OpenAI API потребує набору даних у форматі JSONL (пари {"role": "user", "content": "..."} / {"role": "assistant", "content": "..."}). Мінімальний рекомендований розмір набору — 50–100 прикладів, а оптимальний для стабільних результатів — 500–2000 прикладів.
Підготовка набору даних
Ключовий етап — якість даних, а не їх кількість. Типові помилки при підготовці даних:
- Дублікати та суперечності: одне й те ж питання з різними відповідями збиває модель з пантелику. Видалення дублікатів обов'язково.
- Дисбалансовані класи відповідей: якщо 90% прикладів — один тип запиту, модель переверне на його користь.
- Формат без варіативності: якщо всі приклади написані одним автором одним стилем, модель буде погано узагальнювати.
Використовуйте datasets (Hugging Face), pandas та openai CLI для валідації формату:
openai tools fine_tunes.prepare_data -f dataset.jsonl
Процес дотонування через API
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, batch_size та learning_rate_multiplier впливають на кінцеву якість. Значення за замовчуванням служать хорошою стартовою точкою, але при малих наборах даних (<200 прикладів) збільшіть епохи до 5–8 та зніжте learning_rate_multiplier до 0.5–1.0, щоб уникнути переобчення.
Оцінка якості дотонованої моделі
Після завершення завдання модель доступна через id на кшталт ft:gpt-4o-2024-08-06:org-name::abc123. Оцініть результати за:
- Втрати під час навчання / Втрати валідації: OpenAI надає метрики в подіях завдання. Хорошим сигналом є зниження втрат під час навчання зі стабільними втратами валідації.
- Ручне тестування на контрольному наборі: не менше 50 прикладів, які не були використані при навчанні.
- Порівняння з базовою моделлю: A/B тест базової GPT-4o проти дотонованої на реальних запитах.
Приклад реального покращення: при дотонуванні GPT-4o на 800 прикладах юридичних документів (договори оренди, акти) точність видалення деталей у структурований JSON покращилася з 71% до 94%, а токени промпту скоротилися на 60%.
Типові завдання та строки
Класифікація запитів підтримки (наприклад, квитки підтримки за категоріями): 2–3 тижні від збору даних до розгортання. Потребує 300–500 позначених прикладів.
Генерація в корпоративному стилі: тон, структура відповіді, заборонені фрази. 1–2 тижні, 200–400 прикладів.
Видалення структурованих даних (Розпізнавання іменованих сутностей через LLM): 3–4 тижні, 500–1500 анотованих прикладів.
Спеціалізований домен (медицина, право, фінанси): 6–12 тижнів з урахуванням збору та анотування даних.
Обмеження та альтернативи
Дотонування GPT-4o не надає доступу до ваг моделі — ви отримуєте лише розміщений кінцевий пункт. Якщо вам потрібне розгортання на місці або контроль над вагами, розгляньте Llama 3, Mistral або інші моделі з відкритим кодом з LoRA/QLoRA.
Також майте на увазі: дотонована GPT-4o коштує дорожче за базову модель при логічному висновку (~$25/1M токенів навчання, плюс збільшені витрати на логічний висновок дотонованої моделі). При великих обсягах запитів це стає суттєвим.
Що входить до роботи
- Аудит існуючих даних, визначення вимог до набору даних
- Збір, очищення, маркування (якщо потрібно) тренувальних прикладів
- Ітеративне тренування з налаштуванням гіперпараметрів
- Оцінка якості: автоматичні метрики + ручна перевірка
- Інтеграція дотонованої моделі в конвейєр виробництва
- Моніторинг деградації якості після розгортання







