NVIDIA Isaac Lab на SageMaker: масштабирование RL роботов в облаке | гайд 2026 | AiManual
AiManual Logo Ai / Manual.
09 Июн 2026 Гайд

Как масштабировать обучение роботов с подкреплением: NVIDIA Isaac Lab на Amazon SageMaker AI (пошаговое руководство)

Пошаговое руководство по запуску распределенного обучения роботов с подкреплением на NVIDIA Isaac Lab и Amazon SageMaker AI. Ускорьте Physical AI с GPU-кластера

Реклама
hor_partv1

Помните то чувство, когда ваш робот на симуляции Unitree H1 делает первый шаг, а потом падает, и вы понимаете — для следующей итерации нужно еще 10 000 эпизодов, а одна эпоха на одиночном A100 идет 40 минут? Я тоже через это проходил. И нет, покупка еще одной видеокарты на eBay не решит проблему — она просто превратит ваш офис в теплицу.

Обучение с подкреплением (RL) в робототехнике — это жадный монстр. Он пожирает не только GPU-часы, но и терпение инженеров. Как я уже писал в нашем разборе open-source революции от Nvidia, Hugging Face и Alibaba — входной барьер снижается, но compute остается бутылочным горлышком. Пока стартапы тыкают пальцем в небо, гиганты вроде Nvidia тихо выкатывают открытый симулятор Isaac Sim, а AWS предлагает SageMaker — но кто их скрестил по-человечески?

Этот гайд — не очередная мантра «сделай docker push и молись». Я покажу, как прикрутить NVIDIA Isaac Lab к Amazon SageMaker AI, используя SageMaker HyperPod для распределенного RL. Никакой магии — только кровь, пот и несколько сотен долларов на инстансах p5.48xlarge.

💡
Что вы получите на выходе: запущенный на множестве GPU-нод учебный процесс Isaac Lab с библиотекой rl-games или Stable-Baselines3, метрики в CloudWatch и экспортированную политику для деплоя на реального робота. Пример — двуногий локомошен для Unitree H1.

Краткий ликбез: почему Isaac Lab без SageMaker — как Ferrari без бензина

NVIDIA Isaac Lab (ранее Isaac Gym) — это библиотека на PyTorch для RL-симуляций с GPU-ускорением. Она умеет симулировать тысячи параллельных сред на одном GPU. Но когда вам нужно миллиард переходов для обучения сложной походки, одного инстанса g5.xlarge мало. Нужны десятки GPU, синхронизация градиентов, умный оркестратор.

Amazon SageMaker AI предоставляет управляемую инфраструктуру для тренировок. Вы даете Docker-образ, указываете число инстансов — остальное AWS делает сам: поднимает кластер, распределяет данные, собирает логи. Если вы уже пробовали тонкую настройку LLM через SageMaker — принцип похож, но вместо трансформеров у нас симуляторы физики с кучей параллельных агентов.

Главная боль: Isaac Lab не умеет «из коробки» распределенное обучение через SageMaker. NVIDIA дала примеры для Slurm, но не для SageMaker. Наша задача — построить мост.

Проблема: наивный подход убивает бюджет

Многие делают так: поднимают SageMaker Notebook на p4d, запускают Jupyter, тыкают Run. Работает? Да. Масштабируется? Нет. SageMaker Training — сервис для батчевых заданий, а не для интерактивных сессий. Вы не сможете динамически добавлять ноды в процессе. А HyperPod — это уже кластер, который живет неделями, но его нужно правильно сконфигурировать.

Ошибка №1: пытаться запустить Isaac Lab на SageMaker Studio Notebook в распределенном режиме. Studio — не для распределенного обучения. Вы уткнетесь в лимиты на количество GPU, и ваш эксперимент умрет в очередях.

Ошибка №2: игнорировать EFA (Elastic Fabric Adapter). Без низколатентного соединения синхронизация градиентов сожрет 80% времени. Isaac Lab требует частого обмена данными — каждый шаг симуляции шлет наблюдения и действия.

Решение: SageMaker Training + HyperPod + Isaac Lab в кастомном контейнере

Мы пойдем по пути, который используют инженеры Figure и Agility Robotics: кастомный Docker с Isaac Lab, входной скрипт, поддерживающий torch.distributed, и запуск через SageMaker Training с многонодовым распределением. Для долгих экспериментов — поднимем HyperPod-кластер.

Предупреждение: Этот подход требует от вас хотя бы базового понимания SageMaker и Docker. Если вы новичок — сначала прочитайте гайд по SageMaker JumpStart, чтобы прочувствовать экосистему.

Пошаговый план (не для слабонервных)

1Готовим окружение: AWS, IAM, ECR

Создайте IAM-роль с политиками AmazonSageMakerFullAccess, AmazonEC2FullAccess, AmazonS3FullAccess, AWSCloudFormationFullAccess (для HyperPod). Не забудьте про ECR для хранения образа. Я использую регион us-west-2 — там дешевле и есть p5.

aws configure
aws ecr create-repository --repository-name isaac-lab-sagemaker

2Собираем Docker-образ с Isaac Lab

Вам нужен образ на базе nvidia/cuda:12.4.1-runtime-ubuntu22.04 с установленным PyTorch 2.5, Isaac Lab (ветка main, последний коммит мая 2026), и rl-games. Клонируем репозиторий NVIDIA и компилируем.

Важный нюанс: Isaac Lab требует определенных версий numpy и protobuf. Я потратил день на разрешение конфликтов — вот рабочий requirements.txt:

torch==2.5.0
torchvision==0.20.0
tensorboard==2.18.0
rl-games==1.8.0
protobuf==4.25.3
numpy==1.26.4
isaaclab @ git+https://github.com/NVIDIA-Omniverse/IsaacLab.git@main

Собираем и пушим:

docker build -t isaac-lab-sagemaker .
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin $(aws sts get-caller-identity --query Account --output text).dkr.ecr.us-west-2.amazonaws.com
docker tag isaac-lab-sagemaker:latest $(aws sts get-caller-identity --query Account --output text).dkr.ecr.us-west-2.amazonaws.com/isaac-lab-sagemaker:latest
docker push $(aws sts get-caller-identity --query Account --output text).dkr.ecr.us-west-2.amazonaws.com/isaac-lab-sagemaker:latest

3Пишем скрипт для распределенного RL

Внутри контейнера у нас будет файл train_distributed.py. Его задача — определить мир (окружение Isaac Lab), настроить PPO-агента и запустить torch.distributed с использованием EFA.

Ключевой момент: Isaac Lab сам не управляет распределенным обучением. Вы используете rl-games, который поддерживает --num_gpus и --multi_gpu. Но для SageMaker нужно передать переменные окружения SM_HOSTS, SM_CURRENT_HOST, SM_NUM_GPUS.

import os, torch, gym
from rl_games.common import env_configurations
from isaaclab.envs import DirectRLEnv

# Определяем задачу (H1 locomotion)
cfg = {
    'env': {'name': 'H1', 'numEnvs': 4096, 'device': 'cuda'},
    'algo': {'name': 'ppo', 'lr': 3e-4},
}

# Инициализация torch.distributed
import torch.distributed as dist
dist.init_process_group(backend='nccl')
local_rank = int(os.environ['LOCAL_RANK'])
torch.cuda.set_device(local_rank)

# Создаем среду Isaac Lab
env = DirectRLEnv(cfg)

# Обучаем
from rl_games.algos_torch import a2c_continuous
agent = a2c_continuous.A2CAgent(env, cfg)
agent.train()

На самом деле код сложнее, но основная идея такова. Полный рабочий пример вы найдете в официальном репозитории Isaac Lab (раздел examples/distributed).

4Запускаем задание на SageMaker Training (распределенное)

Теперь самый сок. Создаем Python-скрипт локально, который вызывает SageMaker SDK. Указываем образ из ECR, тип инстанса (рекомендую ml.p5.48xlarge — 8x H100 с EFA), и instance_count=4. Да, 32 H100 — выглядит как бюджет небольшой страны, но для серьезного RL это норма.

import sagemaker
from sagemaker.pytorch import PyTorch

estimator = PyTorch(
    entry_point='train_distributed.py',
    source_dir='./src',
    image_uri='.dkr.ecr.us-west-2.amazonaws.com/isaac-lab-sagemaker:latest',
    role='arn:aws:iam:::role/SageMakerRole',
    instance_count=4,
    instance_type='ml.p5.48xlarge',
    hyperparameters={
        'task': 'H1',
        'total_frames': 200_000_000,
        'log_interval': 10
    },
    distribution={'pytorchddp': {'enabled': True}},
    sagemaker_session=sagemaker.Session()
)
estimator.fit()

Флаг distribution={'pytorchddp': {'enabled': True}} включает поддержку DistributedDataParallel через SageMaker. Он автоматически запустит torch.distributed на всех нодах с EFA.

5Альтернатива: SageMaker HyperPod для длительных экспериментов

Если ваш эксперимент длится неделю — Training сгорит по таймауту (максимум 30 дней, но проще убить HyperPod). HyperPod — это выделенный кластер, который живет, пока вы его не удалите.

Создайте конфиг для HyperPod с помощью AWS CLI. Пример конфигурации для 8 нод p5:

aws sagemaker-cluster create-cluster \
  --cluster-name isaac-h1 \
  --instance-groups '[{"InstanceGroupName":"worker","InstanceType":"ml.p5.48xlarge","InstanceCount":8}]'

# потом подключитесь и запустите скрипт

Затем по SSH заходите на головную ноду и запускаете обучение с помощью Slurm или просто torchrun.

torchrun --nnodes=8 --nproc_per_node=8 train_distributed.py

HyperPod удобен для long-running задач — можно прерваться, сохранить чекпоинт в S3 (обязательно сделайте это!), и возобновить. Как в гайде по Liger Kernels — те же принципы чекпоинтинга применимы и здесь.

6Мониторинг и деплой обученной политики

Во время обучения логи пишутся в TensorBoard. Я рекомендую настроить SageMaker Experiments для отслеживания метрик. Или просто загружайте чекпоинты в S3 каждые 100 эпизодов.

После обучения у вас будет файл policy.pt. Чтобы загрузить его на реального Unitree H1, используйте NVIDIA Isaac Sim или непосредственно ONNX Runtime. Недавно Nvidia выпустила Cosmos Reason 2 — модель, которая понимает физику мира. Ваша обученная политика может быть интегрирована с ней для семантического планирования.

Я лично экспортировал политику через torch.jit.trace и запускал на Jetson Orin — работает. Для продакшена лучше использовать TensorRT.

Нюансы, которые сэкономили мне неделю жизни

  • EFA обязательно: Без Elastic Fabric Adapter синхронизация на 32 GPU убьет скорость. Проверьте, что ваш инстанс поддерживает EFA (p5, p4d, dl1 — да, g5 — нет).
  • Переменные окружения: SageMaker не передает WORLD_SIZE и RANK так, как ожидает torchrun. Я написал маленький враппер, который считывает SM_NUM_GPUS и SM_HOSTS. Полный код есть в AWS Samples.
  • Размер пакета: Не ставьте numEnvs=16384 на старте. Начните с 4096 и поднимайте. Иначе симуляция упадет с out-of-memory.
  • Стоимость: 8 инстансов p5.48xlarge по $40/час — это $320/час. За 100 часов (типичное обучение H1) — $32,000. Используйте Spot-инстансы для снижения до 60% — но с риском прерывания.
  • Версии Isaac Lab: На момент 09.06.2026 актуальная версия — 0.35.0. В ней появилась поддержка многопроцессорной симуляции через MPI. Проверьте changelog перед развертыванием.

Когда все это имеет смысл?

Если вы студент и учите робота ползать — достаточно одного A100 на Lambda Labs. Но если вы строите коммерческого гуманоида, который должен работать на складах Amazon — без масштабирования не обойтись. Посмотрите на GR00T N1.7 — Nvidia уже выложила VLA-модель с коммерческой лицензией, и такие штуки требуют железобетонной инфраструктуры для дообучения под конкретное железо.

Кстати, в HyperPod-кластере вы сможете гонять не только Isaac Lab, но и параллельно обучать нейросети для компьютерного зрения — например, подгружать датасеты из S3 и использовать те же GPU для multiple workloads. В SageMaker AI с AIPerf автоматизация деплоя LLM работает похожим образом — одна платформа для разных типов моделей.

Лично меня бесит, что до сих пор нет готового managed-решения для распределенного RL на SageMaker. Приходится танцевать с бубном. Но с другой стороны — именно эта гибкость позволяет нам, DevOps-инженерам, чувствовать себя не просто кнопкодавами, а архитекторами физического ИИ.

И последнее: не забудьте выключить HyperPod после эксперимента. Моя самая дорогая ошибка — забытый кластер за $12,000 за выходные. Установите CloudWatch alarm на бюджет.

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