Дата публикации
ai_products

Как Amazon учит многошаговых ИИ‑агентов на Nova через SageMaker HyperPod: полный гайд по инфраструктуре

Что нового

Amazon запустила готовую инфраструктуру для обучения многошаговых (multi‑turn) RL‑агентов на моделях Amazon Nova с помощью Amazon SageMaker HyperPod и SDK Nova Forge. Это не просто ещё один туториал по RLHF, а рабочий конвейер для сложных агентных сценариев.

Ключевые новшества:

  • Многошаговое RL «из коробки» для Nova: обучение не одной реплики ответа, а целой последовательности действий агента — с учётом инструментов, ошибок и восстановления.
  • Полностью управляемый, событийный пайплайн:
    • вы загружаете .jsonl файл в S3 в префикс training-data/;
    • Amazon EventBridge запускает AWS Step Functions;
    • Step Functions поднимает вычислительные ресурсы и стартует обучение.
  • Двухфазная инфраструктура:
    • один раз разворачиваются «долгоживущие» ресурсы (VPC, EKS/HyperPod, ECS, S3, IAM, Step Functions);
    • под каждый запуск обучения создаются временные ресурсы (Lambda, SQS, DynamoDB, Fargate‑таски), которые Nova Forge управляет сама.
  • Поддержка нескольких моделей Nova: можно тренировать NOVA_MICRO, NOVA_LITE, NOVA_LITE_2 и NOVA_PRO. В примере используется NOVA_LITE_2.
  • Готовая среда Wordle: в качестве демо‑задачи модель учится играть в Wordle. Это шаблон, который легко заменить на свой агент (например, для работы с API или CRM).
  • Автоматическая маршрутизация вознаграждений: Nova Forge SDK поднимает прокси‑слой, SQS‑очереди и DynamoDB для трекинга диалогов и доставки reward‑сигналов между моделью и средой.
  • Поддержка GRPO (Group Relative Policy Optimization): обучение идёт с использованием GRPO‑обновлений весов.
  • Две схемы обучения: RFT_MULTITURN_FULL (полное дообучение) и RFT_MULTITURN_LORA (LoRA‑адаптация), переключаются параметром.
  • Масштабируемость на P5‑GPU:
    • рекомендуемый минимум — 10 экземпляров ml.p5.48xlarge;
    • для продакшена — 12–14 экземпляров;
    • поддерживается также ml.p5en.48xlarge;
    • по умолчанию — 4 generation replicas на vLLM.
  • Прозрачная стоимость:
    • минимальная конфигурация: 10× ml.p5.48xlarge — примерно $786/час;
    • продакшн‑конфигурация: 12× ml.p5.48xlarge — примерно $1 180/час;
    • плюс мелкие расходы на EKS control plane ($0,10/час), NAT (~$0,045/час), Fargate (~$0,15–0,30/час), S3, Lambda, SQS, DynamoDB.

Amazon параллельно предлагает и полностью серверный вариант multi‑turn RL в SageMaker AI, но описываемая инфраструктура — для тех, кому нужен полный контроль над средой, оркестрацией и инстансами.

Как это работает

Общая схема

Сборка выглядит как типичный MLOps‑конвейер для RL‑агентов, только почти всё уже за вас запрограммировано:

  1. Вы загружаете датасет в S3 в префикс training-data/.
  2. Amazon EventBridge ловит событие PutObject и вызывает Lambda‑функцию S3TriggerFn.
  3. Lambda объединяет путь к файлу с параметрами из cdk.json и запускает AWS Step Functions.
  4. Step Functions:
    • поднимает/конфигурирует SageMaker HyperPod (через EKS);
    • разворачивает reward‑среду на ECS Fargate;
    • инициирует Nova Forge SDK, который создаёт сервисные ресурсы (Lambda, SQS, DynamoDB);
    • запускает тренировочный джоб.
  5. Модель Nova генерирует ответы через vLLM‑реплики на HyperPod.
  6. Ответы идут через Nova Forge в reward‑окружение на Fargate, там оцениваются и превращаются в reward‑сигналы.
  7. Reward‑сигналы возвращаются на тренинг‑под, который делает GRPO‑обновления весов.
  8. После окончания запуска временные ресурсы можно удалить, чтобы не платить за простой.

Три вычислительных слоя

1. Amazon SageMaker HyperPod (EKS)

  • Основное место, где живёт модель и идёт обучение.
  • Запускаются:
    • training primary pod;
    • worker pods;
    • vLLM‑реплики генерации (по умолчанию 4) на ml.p5.48xlarge.
  • Здесь считаются градиенты и применяются GRPO‑обновления.

2. Amazon ECS на AWS Fargate

  • Здесь крутится reward‑окружение:
    • встроенная среда wordle;
    • либо ваш Bring Your Own Orchestrator (BYOO) под custom-environments/.
  • Fargate‑таски принимают ответы модели через SQS, считают reward по вашей схеме и отправляют его обратно.

3. Amazon Nova Forge SDK

  • Поднимает прокси‑слой между моделью и средой:
    • Lambda для проксирования диалогов;
    • SQS FIFO‑очереди для запросов и ответов;
    • DynamoDB для хранения состояния диалогов между ходами.
  • Сам управляет своим CloudFormation‑стеком и жизненным циклом этих ресурсов.

Двухфазное развёртывание

Фаза 1: один раз через AWS CDK

Команда cdk deploy разворачивает фундамент:

  • VPC;
  • EKS‑кластер и интеграцию с SageMaker HyperPod;
  • HyperPod Restricted Instance Group с нужным числом ml.p5.48xlarge;
  • ECS‑кластер под Fargate;
  • S3‑бакет для данных;
  • IAM‑роли и политики;
  • Step Functions пайплайн;
  • SNS‑топик для алертов;
  • Lambda‑функции и их контейнерные образы (через Docker и CodeBuild).

По времени:

  • EKS‑кластер — ~15 минут;
  • установка Helm‑чарта HyperPod через CodeBuild — ~5 минут;
  • создание HyperPod‑кластера — ~15–25 минут (зависит от доступности P5);
  • сборка Lambda‑образов — ~5 минут.

Итого: 30–40 минут до готовой инфраструктуры.

Фаза 2: каждый запуск обучения

Когда вы кладёте .jsonl в training-data/, EventBridge запускает Step Functions, а Nova Forge SDK разворачивает свой стек:

  • Lambda‑функции для проксирования диалогов;
  • SQS FIFO‑очереди для маршрутизации сообщений;
  • DynamoDB‑таблицу для состояния;
  • Fargate‑таски с reward‑воркерами.

После завершения обучения эти ресурсы можно снести, чтобы не платить за простаивающие таски и очереди.

Формат данных и процесс обучения

Данные — это .jsonl, где каждая строка описывает одну игру Wordle:

{"id": "wordle_train_001", "metadata": {"prompt": "Guess the 5-letter word", "answer": "crane"}}
{"id": "wordle_train_002", "metadata": {"prompt": "Guess the 5-letter word", "answer": "slate"}}
{"id": "wordle_train_003", "metadata": {"prompt": "Guess the 5-letter word", "answer": "plumb"}}
  • id — уникальный идентификатор примера.
  • metadata.prompt — начальный промпт, который видит модель.
  • metadata.answer — правильный ответ, по нему среда считает reward.

Каждый пример превращается в многошаговый диалог:

  1. Модель делает предположение.
  2. Среда отвечает фидбеком (как в Wordle — какие буквы угаданы).
  3. Модель корректирует ответ.
  4. Цикл продолжается, пока задача не решена или не закончились ходы.

По метрикам Amazon ожидает, что в Wordle‑среде модель сойдётся за 50–100 шагов обучения. Средний reward растёт с ≈0 до 0,6–0,8, когда модель учится сужать пространство ответов по фидбеку.

Ключевые параметры инфраструктуры и обучения

Параметры задаются в cdk.json и при желании переопределяются через cdk deploy -c ....

Инфраструктура:

  • project_tag — префикс для имён ресурсов (часть имени EKS‑кластера, HyperPod‑кластера, тегов S3).
  • sdk_resource_prefix — префикс для ресурсов, которые создаёт Nova Forge SDK (его CloudFormation‑стеки, Lambda, SQS).
  • instance_type — по умолчанию ml.p5.48xlarge (можно ml.p5en.48xlarge).
  • instance_count — по умолчанию 10.
  • nova_modelNOVA_MICRO, NOVA_LITE, NOVA_LITE_2, NOVA_PRO (в примере NOVA_LITE_2).
  • vf_env_idwordle или ваш кастомный env.
  • use_custom_env / custom_env_id — включение BYOO‑окружения из custom-environments/.
  • reward_cpu / reward_memory — по умолчанию 2048 CPU и 4096 MiB RAM на Fargate‑таск.
  • eks_kubernetes_version1.32.

Тренинг:

  • training_methodRFT_MULTITURN_FULL или RFT_MULTITURN_LORA.
  • max_steps — число шагов обучения (по умолчанию 10, но для Wordle рекомендуют 50–100 для сходимости).
  • generation_replicas — число vLLM‑реплик (по умолчанию 4).
  • global_batch_size — глобальный размер батча (по умолчанию 64).

Переопределение при деплое:

cdk deploy -c instance_count=1 -c max_steps=20

Что это значит для вас

Для кого это вообще нужно

Этот стек нужен не тем, кто просто хочет «поболтать» с LLM, а тем, кто строит агентов, которые:

  • делают несколько шагов подряд;
  • ходят в базы данных и внешние API;
  • проверяют данные перед действием;
  • умеют откатываться и восстанавливаться после ошибок.

Классический RLHF оптимизирует одну реплику в вакууме. Multi‑turn RL, который реализует Nova Forge, оптимизирует целую сессию. Это важно, если вы хотите, чтобы агент:

  • проверял ввод пользователя перед критичным действием;
  • не ломал воркфлоу из‑за одного сбоя API;
  • корректно обрабатывал сложные сценарии с ветвлениями.

Где это полезно

Примеры сценариев, где такой стек даёт смысл:

  • Корпоративные агенты:
    • ассистент, который сам собирает данные из нескольких внутренних сервисов, сверяет результаты и выдаёт итоговый отчёт;
    • бота, который оформляет заявки, проверяет лимиты, согласует с несколькими системами и только потом завершает операцию.
  • Автоматизация поддержки:
    • агент, который ведёт диалог, ходит в CRM, биллинг, лог‑хранилища, и корректно отрабатывает ретраи при ошибках API;
    • сценарии, где важно не «красиво ответить», а довести кейс до решения.
  • Сложные аналитические пайплайны:
    • агент, который сам собирает данные, строит промежуточные гипотезы, перепроверяет их и только потом формирует выводы;
    • ML‑оркестратор, который запускает джобы, мониторит их и при сбоях корректирует план.
  • Игровые и симуляционные среды:
    • обучение агентов в абстрактных задачах вроде Wordle, а потом перенос принципов на реальные бизнес‑среды.

Где это избыточно

Эта инфраструктура не нужна, если вы:

  • просто делаете чат‑бота без сложных действий и инструментов;
  • хотите один‑два раза дообучить модель на своём датасете с SFT или RAG;
  • не готовы платить сотни долларов в час за P5‑кластер;
  • не хотите управлять AWS‑инфраструктурой (VPC, EKS, IAM и т.д.).

Тогда проще использовать:

  • обычный SFT на SageMaker;
  • готовые серверные multi‑turn RL возможности SageMaker AI (без собственного HyperPod);
  • сторонние платформы RLHF как сервис.

Ограничения и доступность

  • Вам нужен аккаунт AWS с правами на создание VPC, EKS, SageMaker HyperPod, IAM, Step Functions.
  • Нужна подписка на Amazon Nova Forge, чтобы получить доступ к SDK и training API.
  • Нужна квота минимум на 10× ml.p5.48xlarge (или ml.p5en.48xlarge). Для продакшена рекомендуют 12–14 инстансов.
  • Инфраструктура стоит дорого: при работе кластера счёт идёт на $786–$1 180 в час только за HyperPod.

Если у вас нет доступа к P5‑инстансам или вы работаете из региона, где Nova Forge недоступна, — этот стек вы не развернёте. Для России это часто означает необходимость зарубежного аккаунта AWS и соответствия требованиям Amazon.

Практический совет по использованию

  • Если вы строите критичный для бизнеса агента, который автоматизирует реальные процессы, и у вас уже есть серьёзный AWS‑футпринт, эта инфраструктура оправдана.
  • Если вы хотите поэкспериментировать с multi‑turn RL, начните с минимальной конфигурации (1–2 инстанса для теста, короткие запуски, LoRA‑режим), а Wordle используйте как sanity‑check.
  • Обязательно:
    • автоматизируйте очистку ресурсов (./cleanup.sh);
    • следите за CloudWatch метриками reward и очередями SQS;
    • заранее продумайте, как вы будете логировать и дебажить своё кастомное окружение.

Место на рынке

Amazon здесь решает конкретную боль: обучение многошаговых агентов, которые живут внутри AWS и используют Nova. Это не конкурирует напрямую с GPT‑4o или Claude 3.5 Sonnet как «моделями общего назначения». Это инфраструктура для тех, кто уже выбрал Nova и AWS как основную платформу.

Что можно сказать по позиционированию:

  • По цене это тяжёлый enterprise‑уровень: десятки P5‑инстансов за сотни долларов в час. Это сопоставимо с крупными кластерами под обучение GPT‑класса моделей, а не с «поиграться вечером».
  • По контролю над инфраструктурой стек ближе к «собственному кластеру RLHF», чем к managed‑API вроде OpenAI или Anthropic. Вы контролируете VPC, EKS, HyperPod, ECS, IAM.
  • По функции это альтернатива самосборным решениям на базе Ray/RLlib, Kubernetes и своих очередей, но заточенная под Nova и глубоко интегрированная с SageMaker.

Прямые сравнения с конкретными RL‑решениями других вендоров в исходных данных нет, поэтому ориентируйтесь на то, насколько глубоко вы уже в AWS‑экосистеме и Nova.

Установка

Предварительные требования

Перед развёртыванием у вас должно быть:

  • Подписка на Amazon Nova Forge.
  • Квота на SageMaker HyperPod: минимум 10× ml.p5.48xlarge (или ml.p5en.48xlarge), для продакшена — 12–14.
  • CDK‑окружение: выполните cdk bootstrap до первого деплоя.
  • Python 3.12+ для CDK‑приложения и AWS Lambda.
  • AWS CDK v2:
npm install -g aws-cdk
  • AWS CLI v2, настроенный с правами на создание VPC, EKS, SageMaker HyperPod, IAM, Step Functions.
  • Docker для сборки контейнеров Lambda с Nova Forge SDK.

Amazon честно предупреждает: при работе 10–12 ml.p5.48xlarge эта инфраструктура стоит $786–$1 180 в час. Если вы не тренируете — стек лучше снести.

Клонирование и установка зависимостей

git clone https://github.com/aws-samples/nova-multi-turn-rl-infra.git
cd nova-multi-turn-rl-infra
pip install -r requirements.txt

Конфигурация CDK

Отредактируйте cdk.json в секции context. Два обязательных параметра:

  • project_tag — уникальный префикс для имён ресурсов (например, my-nova-rl).
  • sdk_resource_prefix — префикс для ресурсов Nova Forge SDK (например, nrl-myproject).

Ключевые параметры (фрагменты значений уже выше):

  • instance_type
  • instance_count
  • nova_model
  • vf_env_id
  • use_custom_env / custom_env_id
  • reward_cpu / reward_memory
  • eks_kubernetes_version
  • training_method
  • max_steps
  • generation_replicas
  • global_batch_size

Переопределение при деплое:

cdk deploy -c instance_count=1 -c max_steps=20

Деплой инфраструктуры

Один раз разворачиваем базовый стек:

cdk deploy --require-approval never

Через 30–40 минут у вас будет готовая инфраструктура: VPC, EKS/HyperPod, ECS, S3, IAM, Step Functions, Lambda и SNS.

Как запустить обучение

Подготовка данных

Создайте файл training-data.jsonl в формате:

{"id": "wordle_train_001", "metadata": {"prompt": "Guess the 5-letter word", "answer": "crane"}}
{"id": "wordle_train_002", "metadata": {"prompt": "Guess the 5-letter word", "answer": "slate"}}
{"id": "wordle_train_003", "metadata": {"prompt": "Guess the 5-letter word", "answer": "plumb"}}

Убедитесь, что id уникален для каждой строки.

Автоматический запуск через S3

Получите имя бакета из CloudFormation outputs:

# Get the bucket name from CDK outputs
BUCKET=$(aws cloudformation describe-stacks --stack-name NovaMultiTurnRlStack \
 --query "Stacks[0].Outputs[?OutputKey=='TrainingBucketName'].OutputValue" --output text)

# Upload: pipeline starts automatically
aws s3 cp training-data.jsonl s3://$BUCKET/training-data/training-data.jsonl

Когда файл попадает в training-data/, EventBridge ловит событие и вызывает S3TriggerFn. Функция собирает event для Step Functions, который дальше запускает пайплайн из пяти стадий. Прогресс можно смотреть в консоли Step Functions: вход/выход каждого шага, время, ретраи.

Ручной запуск для отладки

Если вы хотите менять параметры без повторной загрузки файлов, используйте скрипт setup.sh:

# Override training parameters for a quick test run
./scripts/setup.sh \
 --data-path s3://$BUCKET/training-data/training-data.jsonl \
 --max-steps 5 \
 --global-batch-size 32 \
 --training-method RFT_MULTITURN_LORA

Это удобно для экспериментов с числом шагов, размером батча и режимом обучения (Full vs LoRA) без правки cdk.json и полного redeploy.

Мониторинг и отладка

Пайплайн и логи

  • Step Functions — главный дашборд. Каждый запуск показывает шаги, входные и выходные данные, время и историю ретраев.
  • Каждый шаг пишет логи в отдельный CloudWatch Log Group.

Ориентировочные времена шагов:

  • настройка инфраструктуры — 2–3 минуты;
  • развёртывание reward‑воркеров — 1–2 минуты;
  • валидация данных — <1 минуты;
  • отправка тренинг‑джоба — 3–5 минут.

Очереди SQS в норме должны работать без устойчивого бэклога.

Алерты о сбоях

SNS‑топик (зашифрованный через KMS) шлёт уведомления при падении исполнения Step Functions. Подписка по email:

# Get the topic ARN from CDK outputs
TOPIC_ARN=$(aws cloudformation describe-stacks --stack-name NovaMultiTurnRlStack \
 --query "Stacks[0].Outputs[?OutputKey=='AlertTopicArn'].OutputValue" --output text)

# Subscribe and confirm via email
aws sns subscribe \
 --topic-arn $TOPIC_ARN \
 --protocol email \
 --notification-endpoint your-team@example.com

Если триггер от S3 не сработал

Проверьте dead-letter очередь для EventBridge→Lambda:

DLQ_URL=$(aws cloudformation describe-stacks --stack-name NovaMultiTurnRlStack \
 --query "Stacks[0].Outputs[?OutputKey=='TriggerDlqUrl'].OutputValue" --output text)

aws sqs receive-message --queue-url $DLQ_URL --max-number-of-messages 5

Частые причины:

  • неверное имя файла (ожидается расширение .jsonl);
  • проблемы с IAM‑правами;
  • лимиты по concurrency для Lambda.

Если обучение «зависло»

Чаще всего проблема в маршрутизации сообщений между моделью и reward‑средой. Nova Forge SDK даёт диагностический хелпер для SQS:

from rft_infra import check_all_queues

# Returns message counts (in-flight, available, delayed) for all FIFO queues
check_all_queues()

Если растёт бэклог в request‑очереди, а response‑очередь пустая — reward‑воркеры не обрабатывают запросы. Если наоборот — модель не читает ответы. Это помогает быстро локализовать проблему.

Здоровье HyperPod

Проверьте статус подов в кластере:

kubectl get pods -n kubeflow
  • Все поды должны быть Running или Completed.
  • Pending — не хватает ресурсов в Restricted Instance Group.
  • CrashLoopBackOff — контейнер падает, смотрите логи:
kubectl logs <pod-name> -n kubeflow

Метрики обучения

В CloudWatch смотрите reward‑метрики по шагам. Для Wordle нормальная картина — рост среднего reward до 0,6–0,8 за 50–100 шагов.

Управление стоимостью и очистка

Полная очистка

Скрипт cleanup.sh останавливает:

  1. активные Step Functions исполнения;
  2. ECS‑таски;
  3. CloudFormation‑стек Nova Forge SDK;
  4. CDK‑стек.

Полное удаление:

./cleanup.sh

Если хотите сохранить данные в S3 (но продолжать платить за хранение):

./cleanup.sh --retain-data

Важно: не оставляйте HyperPod и NAT Gateway висеть без дела — счёт быстро вырастет.

Как снизить расходы

Amazon предлагает два подхода:

  1. Scale to zero:
    • собрать кластер с одним инстансом и политиками авто‑масштабирования до нуля в простое;
    • это уменьшает idle‑расходы.
  2. Планирование типов инстансов:
    • использовать более дешёвые инстансы на этапах подготовки;
    • переключаться на ml.p5.48xlarge или ml.p5en.48xlarge, когда стартует основная нагрузка обучения.

Если вы запускаете эксперименты, держите сессии короткими, а кластер — минимальным.

Что дальше

Если вы хотите попробовать этот стек в бою:

  1. Клонируйте репозиторий: aws-samples/nova-multi-turn-rl-infra.
  2. Прочитайте документацию по Amazon SageMaker HyperPod.
  3. Ознакомьтесь с возможностями и ценами Amazon Nova.
  4. Настройте свой пайплайн с помощью AWS Step Functions Developer Guide.
  5. Замените Wordle‑окружение на своего агента: интеграцию с внутренними API, базами данных или бизнес‑процессами.

Если вы уже живёте в AWS и планируете серьёзных агентов на Nova, этот стек даёт готовый каркас для обучения многошагового поведения без ручной сборки всей оркестрации.


Читайте также