AI Engineering Academy · Урок

Когда дообучение эффективнее составления запросов

Определите случаи, в которых дообучение приносит больше пользы, чем разработка запросов: стабильное соблюдение стиля, использование закрытых отраслевых знаний, снижение стоимости токенов за счёт более коротких запросов и уменьшение задержки.

Урок 1 из 413 шагов

«Когда дообучение эффективнее составления запросов» — бесплатный урок AI Engineering Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Engineering Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Engineering Academy содержит 4 уроков всего.

Основной компромисс

Когда Вам нужно, чтобы LLM вела себя определённым образом, есть два основных варианта: промптинг (указать модели, что делать во время вывода, используя тщательно составленные промпты) или дообучение (обучить модель новым способам поведения на примерах). Для многих задач оба подхода дают схожие результаты, но существенно различаются по стоимости, скорости, гибкости и достижимому пределу качества.

Когда промптинг лучше

Промптинг почти всегда является правильной отправной точкой. Он не требует инфраструктуры для обучения, позволяет получить результаты за несколько часов, мгновенно обновляется без повторного обучения и хорошо подходит для задач, с которыми базовая модель уже справляется на должном уровне. Начинайте с промптинга для задач, в которых GPT-4o или Claude уже выдают приемлемые результаты при чётких инструкциях, требования часто меняются, объём использования невелик или Вы всё ещё исследуете область задачи.

# Prompting is sufficient for most well-defined tasks
system_prompt = '''
You are a customer support agent for TechCorp. Your tone is friendly but professional.
Always:
1. Acknowledge the customer's issue in the first sentence
2. Provide step-by-step solutions with numbered lists
3. End with 'Is there anything else I can help you with?'
Never: reveal pricing, discuss competitors, or make promises about future features.
'''

# With clear instructions, GPT-4o handles this well - no fine-tuning needed
# Before investing in fine-tuning, prove prompting is insufficient

Стабильное соблюдение стиля и формата

Дообучение выигрывает, когда Вам нужен строго стабильный формат вывода, которого промптинг не может надёжно обеспечить. Если приложению требуется стопроцентное соответствие определённой схеме JSON, точно структурированному формату документа или очень специфическому стилю письма, отличающемуся от естественного вывода модели, дообучение на нескольких сотнях примеров может обеспечить почти идеальную стабильность, недостижимую даже с самым тщательно разработанным промптом.

# Problem: prompting gives 90% format compliance - 10% failures cause downstream errors
# Prompt approach (unreliable)
system = 'Always respond with JSON: {"category": "...", "priority": 1-5, "tags": [...]}'
# 1 in 10 responses adds explanation text, omits a field, or uses strings for priority

# Fine-tuned approach: train on 500 examples of perfect output
# Training example format:
train_example = {
    'messages': [
        {'role': 'system', 'content': 'Classify customer support tickets.'},
        {'role': 'user', 'content': 'My order is late and I need it for tomorrow.'},
        {'role': 'assistant', 'content': '{"category": "shipping", "priority": 4, "tags": ["late_delivery", "urgent"]}'}
    ]
}
# After fine-tuning: 99.5%+ format compliance with minimal system prompt

Закрытые знания предметной области

Дообучение — правильный выбор, когда модели нужно освоить знания, отсутствующие в общедоступных обучающих данных: внутренние соглашения Вашей компании по написанию кода, собственную таксономию классификации документов, специализированную юридическую или медицинскую терминологию узкой области либо конкретные рекомендации по тону и стилю Вашего бренда. Эти знания нельзя эффективно передать с помощью примеров в промпте, поскольку объём примеров превышает вместимость контекстного окна.

# Example: Internal code style with dozens of company-specific conventions
# Too many rules to fit in a prompt effectively:

# Company conventions (partial list of 200+):
# - Use AppException instead of RuntimeError
# - Repositories are named FooRepository not FooRepo
# - Service methods use handle_verb_noun naming not do_action
# - Config values go through AppConfig.get(), never os.environ directly
# - ... 196 more conventions

# Prompting: you can include ~20 conventions before the model starts ignoring them
# Fine-tuning: train on 1000 examples of compliant vs. non-compliant code
# Result: model learns ALL conventions and applies them automatically

Снижение стоимости токенов благодаря коротким промптам

Важный экономический аргумент в пользу дообучения — сжатие промпта. Сложный системный промпт может содержать 2000 токенов. Если Вы обращаетесь к API 10 миллионов раз в день, эти 2000 токенов обходятся в десятки тысяч долларов в месяц. Дообученной моделью можно управлять с помощью гораздо более короткого промпта (50–100 токенов), поскольку подробные инструкции теперь встроены в веса модели. При большом масштабе это может сократить расходы на входные токены на 90% и более.

COST_PER_1K_TOKENS_INPUT = 0.0050  # gpt-4o
DAILY_REQUESTS = 10_000_000

# Base model with detailed prompt
base_prompt_tokens = 2000
daily_input_tokens_base = DAILY_REQUESTS * base_prompt_tokens
daily_cost_base = (daily_input_tokens_base / 1000) * COST_PER_1K_TOKENS_INPUT

# Fine-tuned model with short prompt
fine_tuned_prompt_tokens = 50
daily_input_tokens_ft = DAILY_REQUESTS * fine_tuned_prompt_tokens
daily_cost_ft = (daily_input_tokens_ft / 1000) * COST_PER_1K_TOKENS_INPUT

print(f'Base model daily input cost: ${daily_cost_base:,.2f}')
print(f'Fine-tuned model daily input cost: ${daily_cost_ft:,.2f}')
print(f'Monthly savings: ${(daily_cost_base - daily_cost_ft) * 30:,.2f}')
# Base: $100,000/day. Fine-tuned: $2,500/day. Savings: ~$2.9M/month

Снижение задержки

Дообученные модели могут уменьшить задержку двумя способами. Во-первых, короткие промпты означают, что модель обрабатывает меньше входных токенов, напрямую сокращая время до появления первого токена. Во-вторых, дообученные модели часто быстрее переходят к правильному формату: в ответе появляется меньше токенов до фактического ответа, что сокращает общее число выходных токенов и время генерации. В приложениях, чувствительных к задержке, оба эффекта вместе дают ощутимое улучшение.

# Latency comparison (approximate)

# Base model with 2000-token prompt:
# - Input tokens processed: 2000 + 50 (user query) = 2050
# - Response: often starts with 'Sure! Here is...' (5-10 unnecessary tokens)
# - TTFT: ~800ms (more tokens to process)

# Fine-tuned model with 50-token prompt:
# - Input tokens processed: 50 + 50 (user query) = 100
# - Response: starts directly with the answer (no preamble)
# - TTFT: ~100ms (few tokens to process)

# For classification tasks (short outputs), this is a 5-8x latency improvement
# For generation tasks, improvement is less dramatic but still significant

print('Fine-tuning trades upfront training cost for per-request latency+cost savings')

Минимальный объём данных

Для дообучения нужны обучающие данные — и зачастую это главное практическое препятствие. Ориентируйтесь на следующие значения: нужно как минимум 50–100 высококачественных примеров, чтобы увидеть заметное улучшение по сравнению с базовой моделью; 500–1000 примеров — для надёжного соблюдения стиля и формата; и 1000–10 000 примеров — для существенного освоения знаний предметной области. При наличии менее 50 примеров промптинг с теми же примерами в контексте (обучение на небольшом числе примеров) обычно превосходит дообучение.

def estimate_fine_tuning_feasibility(num_examples: int, task_type: str) -> str:
    if num_examples < 50:
        return 'Insufficient data. Use few-shot prompting with these examples instead.'
    
    if task_type == 'format_adherence' and num_examples >= 100:
        return 'Fine-tuning recommended. Format consistency issues are hard to solve with prompting.'
    
    if task_type == 'style_matching' and num_examples >= 300:
        return 'Fine-tuning recommended. Consistent style requires enough examples to learn the distribution.'
    
    if task_type == 'domain_knowledge' and num_examples >= 500:
        return 'Fine-tuning recommended if knowledge is truly proprietary.'
    
    return 'Continue with advanced prompting (chain-of-thought, structured output) and revisit fine-tuning when you have more data.'

Скрытые затраты дообучения

У дообучения есть существенные скрытые затраты помимо оплаты вычислений. Вам понадобятся: инфраструктура для запуска обучения (часы работы GPU или управляемый сервис), процесс сбора данных и контроля их качества, оценивание, подтверждающее фактическое улучшение дообученной модели по целевой метрике, конвейер развёртывания пользовательской модели и постоянный процесс сопровождения для повторного обучения при обновлении базовой модели или изменении требований. Эти затраты реальны, и их необходимо сопоставлять с преимуществами.

fine_tuning_total_cost = {
    'data_collection_and_QA': '$5,000-$50,000',  # human annotation or LLM-generated
    'training_compute': '$50-$5,000',             # depends on model size and data volume
    'evaluation_pipeline': '$500-$2,000',         # building eval harness
    'deployment_infra': '$200-$2,000/month',      # serving the custom model
    'maintenance': '$1,000-$5,000/year',          # retraining when things change
    'opportunity_cost': 'weeks to months',        # time to build vs. prompt iteration
}

# Compare to prompting costs:
prompting_costs = {
    'data_needed': None,  # no training data required
    'infra': '$0 (uses existing API)',
    'maintenance': 'update prompts when needed',
    'time_to_production': 'hours to days'
}

Актуальность знаний: RAG и дообучение

Дообучение не может обновлять знания в реальном времени. Знания дообученной модели фиксируются на момент обучения. Для сценариев, требующих актуальной информации (текущие события, цены в реальном времени, меняющиеся нормативные требования), RAG всегда лучше, поскольку может извлекать свежую информацию во время запроса. Дообучение отлично подходит для устойчивых знаний, которые редко меняются: стиля письма Вашей компании, таксономии категорий продуктов или технической лексики хорошо изученной области.

# Decision guide: RAG vs Fine-tuning vs Prompting

def choose_approach(requirements: dict) -> str:
    if requirements.get('knowledge_changes_frequently'):  # pricing, news, live data
        return 'RAG - knowledge must be updatable at query time'
    
    if requirements.get('needs_consistent_format') and requirements.get('high_volume'):
        return 'Fine-tuning - format adherence + cost savings at scale'
    
    if requirements.get('proprietary_domain_vocabulary'):
        return 'Fine-tuning - model needs to learn new terminology'
    
    if requirements.get('low_volume') or requirements.get('still_exploring'):
        return 'Prompting - fastest iteration, lowest cost'
    
    if requirements.get('combination_needed'):  # most production systems
        return 'Fine-tuning for style/format + RAG for dynamic knowledge'

Оптимальная схема принятия решения о дообучении

Используйте эту схему принятия решения, прежде чем приступать к дообучению. Сначала подтвердите необходимость: пропустите лучший промпт через 1000 реальных примеров и измерьте долю ошибок. Затем оцените пользу количественно: рассчитайте ROI от повышения точности, снижения затрат на токены или уменьшения задержки. Далее оцените осуществимость: есть ли у Вас более 500 высококачественных обучающих примеров? Наконец, сравните альтернативы: может ли небольшая модель с лучшим промптом сравниться по качеству с большой моделью со сложным промптом?

Сочетание промптинга и дообучения

Лучшие рабочие системы часто сочетают оба подхода. Дообучайте устойчивые свойства (формат вывода, тон, лексику предметной области), которые редко меняются, а промпты используйте для динамических свойств (контекст задачи, найденные документы, предпочтения пользователя), меняющихся от запроса к запросу. Такое сочетание обеспечивает надёжность и экономичность дообучения, не жертвуя гибкостью промптинга.

Быстрая проверка

Проверьте, насколько Вы поняли, когда дообучение эффективнее промптинга.

Итоги урока

В этом уроке Вы узнали: промптинг почти всегда является правильной отправной точкой благодаря более низкой стоимости и быстрым итерациям; дообучение выигрывает благодаря стабильному соблюдению формата, освоению закрытых знаний предметной области и снижению затрат на токены при большом объёме использования; а актуальность знаний — область RAG: дообучение не может обновлять знания модели во время работы. Далее мы подготовим высококачественный обучающий набор данных для дообучения.

Можно начать бесплатно

Изучай Python с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

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

Урок «Когда дообучение эффективнее составления запросов» бесплатный?

Да — полный текст урока «Когда дообучение эффективнее составления запросов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Engineering Academy, подпишись на CoddyKit PRO. Курс AI Engineering Academy содержит 4 уроков всего.

Чему я научусь в уроке «Когда дообучение эффективнее составления запросов»?

Определите случаи, в которых дообучение приносит больше пользы, чем разработка запросов: стабильное соблюдение стиля, использование закрытых отраслевых знаний, снижение стоимости токенов за счёт боле… Ты практикуешь AI Engineering Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Engineering Academy?

Предыдущий опыт не требуется. AI Engineering Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Когда дообучение эффективнее составления запросов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Engineering Academy?

Да. Каждый урок AI Engineering Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Когда дообучение эффективнее составления запросов
  2. Подготовка высококачественного обучающего набора данных
  3. Дообучение LoRA с Hugging Face PEFT
  4. Оценка и развёртывание дообученной модели
← Назад к AI Engineering Academy