Забудьте про универсальных ботов. Пора делать специалиста
Вы берете мощную LLM вроде Nova 2, кормите ее тысячами тикетов из Jira, чтобы она понимала ваш workflow. А через неделю она путает Python с пайтоном-змеей и забывает, как решать простые уравнения. Знакомо? Это катастрофическое забывание — главная причина, почему 70% проектов по кастомизации моделей проваливаются. Модель так усердно учится новому, что стирает фундамент.
До 2025 года это была черная магия. Теперь — инженерная задача. AWS выпустила Nova Forge SDK, который превращает тонкую настройку из адского кошмара в управляемый конвейер. Особенно в связке с SageMaker AI Training Jobs. Я прошел этот путь от провала к успеху и покажу, как настроить модель для ответов на StackOverflow, не превратив ее в узкого идиота.
Актуальность на 29.03.2026: гайд использует Nova Forge SDK v2.3, SageMaker со встроенной поддержкой Direct Preference Optimization (DPO) и фреймворк борьбы с забыванием через смешанные датасеты — тот самый, что описан в нашем разборе. Если вы используете старые версии — готовьтесь к боли.
Почему ваша модель глупеет после дообучения? Механика забывания
Катастрофическое забывание — это не баг, а фундаментальное свойство нейросетей. Представьте, что модель — это библиотека. Вы приходите и в отдел «Программирование» ставите новые книги только про ваш корпоративный код. Старые тома по алгоритмам и структурам данных выкидываете на улицу, чтобы освободить место. Библиотека становится специализированной, но бесполезной для кого-либо еще.
В весах модели происходит то же самое. Градиенты от вашего узкого датасета (вопросы-ответы по коду) агрессивно перезаписывают общие представления, выученные на триллионах токенов. Решение — смешанное обучение. Вы подмешиваете в новый датасет немного «общих знаний» из оригинального претренинга. Так модель учится новому, но регулярно вспоминает старое. Nova Forge делает это автоматически.
Инструментарий 2026: Nova Forge SDK и SageMaker AI Jobs
Забудьте про скрипты на коленке. Современный пайплайн выглядит так:
- Nova Forge SDK: Фреймворк от AWS, который стандартизирует процесс SFT (Supervised Fine-Tuning) и RFT (Reinforcement Fine Tuning). Его главный трюк — встроенные стратегии предотвращения забывания через data mixing. Вы просто указываете процент общего датасета для подмешивания.
- Amazon SageMaker AI Training Jobs: Инфраструктура для обучения. В 2026 году они избавились от головной боли с ролями IAM и конфигурацией кластеров. Как пишут в блоге, теперь все шаблоны лежат в S3, а метрики GPU мониторятся из коробки.
- PEFT/LoRA: Параметрически эффективная настройка. Не трогаем все 70B параметров модели Nova 2, а дообучаем только малые адаптеры. Это в разы дешевле и снижает риск забывания.
Настройка всей этой связки раньше отнимала дни. Сейчас — часы. Главное — не наступить на грабли, о которых я расскажу в конце.
1Собираем и готовим датасет: не StackOverflow, а его дух
Мы сделаем модель — эксперта по программированию. Берем дамп StackOverflow (публично доступен), но не все 20 млн вопросов. Нам нужны clean data: вопросы с высоким рейтингом, принятым ответом и метками Python, AWS, SQL.
Формат для SFT в Nova Forge — JSONL, где каждая строка:
{
"instruction": "How to filter a list in Python?",
"context": "",
"response": "You can use list comprehension: [x for x in original_list if x > 5]..."
}base_data_mix_ratio.2Настраиваем окружение SageMaker и запускаем SFT Job
Здесь многие обламываются. Не нужно вручную поднимать инстансы с GPU. Используем высокоуровневый API SageMaker Training Jobs.
from sagemaker.jumpstart.estimator import JumpStartEstimator
from nova_forge.sft import SFTTrainerConfig
# Конфигурация SFT тренера от Nova Forge
sft_config = SFTTrainerConfig(
model_id="amazon.nova2-70b-instruct", # Актуальная модель на 2026
dataset_path="s3://my-bucket/stackoverflow-train/",
base_data_mix_ratio=0.15, # Подмешиваем 15% общих данных
lora_rank=64,
learning_rate=2e-4,
num_train_epochs=3
)
# Используем предопределенный образ SageMaker для Nova Forge
estimator = JumpStartEstimator(
model_id="nova-forge-sft-v2-3",
instance_type="ml.p4d.24xlarge", # или ml.g6.48xlarge для H200
role=execution_role,
environment={"CONFIG": sft_config.to_json()}
)
estimator.fit()SageMaker сам выделит кластер, скачает образ с Docker Hub, запустит обучение и загрузит артефакты (адаптеры LoRA) в S3. Мониторить можно через встроенные метрики GPU — больше не надо парсить CloudWatch.
3Reinforcement Fine Tuning (RFT) с Direct Preference Optimization
SFT научила модель давать технически правильные ответы. RFT сделает их полезными, краткими и дружелюбными. Для этого нужен датасет предпочтений: пары «хороший ответ / плохой ответ» на один вопрос.
Собираем его, используя саму модель: генерируем 4 варианта ответа на вопрос, затем аннотаторы (или другая LLM-судья) ранжируют их. Формат для DPO в Nova Forge:
{
"prompt": "Explain Python decorators",
"chosen": "Decorators are functions that modify...",
"rejected": "In Python, decorators are a thing that does stuff..."
}Запуск RFT Job почти идентичен SFT, но используем конфиг RTFTrainerConfig и указываем путь к датасету предпочтений. Критически важно использовать ту же базовую модель и те же адаптеры LoRA, что и после SFT. Иначе вы начнете с нуля.
Ошибка новичка №1: запускать RFT на сырой базовой модели, а не на выходе SFT. Вы будете учить модель с нуля быть вежливой, но она забывает код. Все этапы — цепочка: Базовая модель -> SFT -> RFT.
4Развертывание и проверка на забывание
Артефакты обучения — это файлы адаптеров LoRA (часто всего несколько гигабайт). Развернуть кастомизированную модель в продакшн можно через KServe в Kubernetes или родной Amazon Bedrock. Для Bedrock нужно загрузить адаптеры в S3 и создать собственную модель (Custom Model), указав базовый идентификатор Nova 2.
Как проверить, что модель не забыла основы? Создайте оценочный датасет из трех частей:
- Специализация: 50 сложных вопросов по коду из вашей domain.
- Общие знания: 30 вопросов на логику, математику, эрудицию (например, «Сколько планет в Солнечной системе?»).
- Стиль: 20 промптов на проверку тона и формата ответов.
Прогоните эту оценку на базовой модели, после SFT и после RFT. Если результаты по части 2 упали больше чем на 15% — ваша стратегия смешивания данных дала сбой. Возвращайтесь к шагу 1 и увеличьте base_data_mix_ratio.
Грабли, на которых вы точно споткнетесь (и как их обойти)
- Экономия на данных для смешивания. Нельзя взять случайные тексты из Википедии. Нужен качественный, диалоговый датасет, стилистически близкий к целевой задаче. Иначе модель начнет «заикаться».
- Слишком высокий learning rate. В погоне за скоростью выставляют LR 1e-3. Адаптеры LoRA переобучаются за одну эпоху и грубо перезаписывают веса. Держитесь диапазона 1e-5 — 5e-5 для RFT.
- Игнорирование оценки во время обучения. В SageMaker можно задать оценочный датасет и критерий ранней остановки. Не полагайтесь только на финальную оценку. Смотрите на потерю (loss) на валидации — если она скачет, забывание уже началось.
- Попытка сделать все на одном GPU. Модель Nova 2 70B даже с LoRA требует памяти. Используйте инстансы с tensor parallelism (например, ml.p4d.24xlarge). Иначе упретесь в OOM и потратите день на отладку.
Что дальше? Fine-Tuning как сервис
Тренд, который я вижу: скоро исчезнет need вручную собирать датасеты и писать конфиги. AWS движется к тому, чтобы Fine-Tuning был такой же кнопкой, как и запуск инференса. Вы загружаете сырые данные (PDF, диалоги), а система сама их чистит, сегментирует, создает пары для DPO и запускает оптимальный пайплайн. Проблема катастрофического забывания будет решаться автоматическим подбором коэффициента смешивания на основе непрерывной оценки.
Пока этого нет, ваш лучший друг — это Nova Forge SDK и понимание, что кастомизация LLM это не «дообучить и забыть», а цикличный процесс обучения и валидации. Начните с малого датасета, проверьте гипотезу, и только потом масштабируйтесь. И не бойтесь, если с первого раза модель будет путать Java с JavaScript. Так и задумано.