Перейти к содержанию
Публикация AiManual

Полный гайд по кастомизации Nova-моделей в AWS: от SFT до RFT и борьбы с катастрофическим забыванием

Пошаговый гайд по тонкой настройке Nova-моделей в AWS на 29.03.2026. Как сделать Supervised и Reinforcement Fine-Tuning без катастрофического забывания с помощь

Коротко

Что будет в материале

  1. 01

    Забудьте про универсальных ботов. Пора делать специалиста

  2. 02

    Почему ваша модель глупеет после дообучения? Механика забывания

  3. 03

    Инструментарий 2026: Nova Forge SDK и SageMaker AI Jobs

  4. 04

    Грабли, на которых вы точно споткнетесь (и как их обойти)

Забудьте про универсальных ботов. Пора делать специалиста

Вы берете мощную 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]..."
}
💡
Секрет в балансе. Если 100% данных — код, модель забудет естественный язык. Добавьте 10-15% общих диалогов (например, из датасета OpenHermes) в тренировочный микс. Nova Forge сделает это за вас через параметр 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.

Как проверить, что модель не забыла основы? Создайте оценочный датасет из трех частей:

  1. Специализация: 50 сложных вопросов по коду из вашей domain.
  2. Общие знания: 30 вопросов на логику, математику, эрудицию (например, «Сколько планет в Солнечной системе?»).
  3. Стиль: 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 и потратите день на отладку.
💡
Главный лайфхак 2026 года: после успешного пайплайна зафризуйте адаптеры LoRA и базовую модель в единый контейнер. Упакуйте его в SageMaker Model Registry. Так вы получите воспроизводимый артефакт, который можно развернуть одним кликом, без танцев с подключением адаптеров к базовой модели в рантайме. Об этом мало кто говорит, но это экономит кучу времени.

Что дальше? Fine-Tuning как сервис

Тренд, который я вижу: скоро исчезнет need вручную собирать датасеты и писать конфиги. AWS движется к тому, чтобы Fine-Tuning был такой же кнопкой, как и запуск инференса. Вы загружаете сырые данные (PDF, диалоги), а система сама их чистит, сегментирует, создает пары для DPO и запускает оптимальный пайплайн. Проблема катастрофического забывания будет решаться автоматическим подбором коэффициента смешивания на основе непрерывной оценки.

Пока этого нет, ваш лучший друг — это Nova Forge SDK и понимание, что кастомизация LLM это не «дообучить и забыть», а цикличный процесс обучения и валидации. Начните с малого датасета, проверьте гипотезу, и только потом масштабируйтесь. И не бойтесь, если с первого раза модель будет путать Java с JavaScript. Так и задумано.

Подписаться на канал