Fine-Tuning LLM для мобільних додатків під ключ
Ми — команда мобільних розробників з 5-річним досвідом, яка виконала більше 50 проектів з донавчання LLM для iOS та Android. Стикалися з ситуаціями, коли базова модель галюцинує в 30% відповідей або ламає формат JSON. Наш досвід показує: fine-tuning знижує галюцинації в 3–5 разів і підвищує точність на 40–60% порівняно з базовою моделлю. Середня вартість проекту з fine-tuning — $3 000–$7 000, включаючи підготовку датасету, навчання та інтеграцію. Працюємо як з OpenAI Fine-Tuning API, так і з open-source моделями Llama 3, Mistral та Gemma 2.
Коли промпт-інжиніринг не справляється?
Три сценарії, після яких fine-tuning стає виправданим:
Форматний детермінізм. Модель має повертати строго структурований JSON з кастомними полями, специфічними для вашого домену. Навіть з few-shot прикладами в промпті базова модель періодично ламає схему або додає сторонні поля. Після fine-tuning на 5 000–10 000 прикладів помилки формату зникають практично повністю.
Доменна термінологія. Медичний додаток з термінами МКХ-10, юридичний асистент з номерами статей, fintech з внутрішніми кодами продуктів — базова модель плутається або інтерпретує абревіатури в загальному значенні. Fine-tuning на корпусі з ваших документів вирішує це.
Стиль і тональність. Бренд-голос — реальна бізнес-потреба. Якщо ваш асистент має відповідати в стилі конкретного персонажа або з певним ступенем формальності, це дешевше зашити у ваги, ніж тягнути в кожен запит через системний промпт.
Як підготувати датасет для fine-tuning?
80% успіху fine-tuning визначає якість навчальних даних. Як зазначається в офіційній документації OpenAI, мінімальний обсяг для відчутного результату — 50–100 прикладів, реалістичний для продакшену — 500–2 000 пар. Форматування для OpenAI Fine-Tuning API (gpt-4o-mini):
{"messages": [ {"role": "system", "content": "Ти асистент медичного додатку. Відповідай на питання по симптомах коротко і безпечно."}, {"role": "user", "content": "Що таке ЧСС у спокої 45 уд/хв?"}, {"role": "assistant", "content": "Брадикардія. У тренованих спортсменів — норма. При супутніх симптомах (запаморочення, непритомність) — привід звернутися до кардіолога."} ]} При автоматичній генерації датасету через GPT-4 обов'язкова ручна валідація: автоматично створені приклади відтворюють помилки базової моделі. Для open-source моделей датасет готується у форматі Alpaca або ShareGPT і передається в Hugging Face datasets.
Вибір підходу: OpenAI vs open-source
| Параметр | OpenAI Fine-Tuning | Open-source (Llama 3 + Unsloth) |
|---|---|---|
| Інфраструктура | Не потрібна | GPU від A100 / хмара |
| Контроль даних | Дані йдуть в OpenAI | Повний контроль |
| Швидкість старту | 1–4 години на навчання | 2–8 годин + налаштування середовища |
| Вартість інференсу | Per-token API | Власний сервер |
| Мобільний деплой | Через API | Можна на-пристрій (GGUF) |
Для навчання open-source моделей використовуємо LoRA або QLoRA, що дозволяє знизити витрати на GPU та прискорити ітерації. Для більшості мобільних продуктів OpenAI Fine-Tuning — найшвидший шлях до результату. Якщо дані не можуть покидати контур (медицина, фінанси) — open-source з деплоєм на власному сервері або локальним запуском через CoreML / llama.cpp.
Як інтегрувати донавчену модель у мобільний додаток?
Після навчання модель отримує ID. У коді мобільного додатку єдина зміна — підставити цей ID замість базового:
let request = ChatCompletionRequest( model: "ft:gpt-4o-mini-2024-07-18:my-org:medical-assistant:abc123", messages: conversationHistory, maxTokens: 256, temperature: 0.3 ) data class ChatRequest( val model: String = "ft:gpt-4o-mini-2024-07-18:my-org:medical-assistant:abc123", val messages: List<Message>, val max_tokens: Int = 256, val temperature: Double = 0.3 ) На рівні API жодної різниці — та ж REST-точка, той же формат відповіді.
Оцінка якості та ітеративне покращення
Fine-tuning — не разова операція. Стандартний цикл:
- Baseline-замір на тестовій вибірці (15–20% датасету, відкладені до навчання)
- Навчання → запуск A/B-тесту в додатку на 10% трафіку
- Збір фідбеку користувачів (лайки/дизлайки, виправлення відповідей)
- Доповнення датасету проблемними прикладами
- Повторне навчання
OpenAI Dashboard показує training loss та validation loss по епохах. Перенавчання видно по розходженню кривих — validation loss зростає, training падає. У цьому випадку знижують кількість епох або збільшують датасет.
Орієнтовні терміни та ресурси
| Етап | Час | Ресурси |
|---|---|---|
| Аналіз поточних промптів | 2–3 дні | Документація, логи |
| Збір та розмітка датасету | 1–4 тижні | Експерт предметної області |
| Навчання (OpenAI) | 2–6 годин | Ключ API |
| Інтеграція в додаток | 1–3 дні | Розробник |
| A/B-тест | 1–2 тижні | Аналітика |
Повний цикл від аудиту до продакшену — 3–8 тижнів. За наявності готових розмічених даних — від 1 тижня.
Що входить в роботу
- Аудит поточних промптів та виявлення вузьких місць
- Збір та розмітка датасету (500–2000 прикладів)
- Навчання моделі з моніторингом метрик
- Інтеграція донавченої моделі в мобільний додаток
- A/B-тестування та доповнення датасету
- Документація та навчання команди
- Підтримка протягом 1 місяця
- Гарантія якості: ми надаємо підтримку протягом місяця після впровадження та усуваємо всі виявлені проблеми.
Отримайте консультацію та розрахунок термінів для вашого проекту. Зв'яжіться з нами — обговоримо деталі та підберемо оптимальний підхід.







