Fine-Tuning GPT-4 та GPT-4o: доопрацювання під бізнес-задачі

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. Зв'яжіться з нами, щоб обговорити деталі.