Amazon SageMaker HyperPod CLI и SDK: управление кластерами AI 2026 | AiManual
AiManual Logo Ai / Manual.
06 Фев 2026 Гайд

SageMaker HyperPod CLI и SDK: когда AWS решила, что управление кластерами должно быть сложным

Полное руководство по CLI и SDK SageMaker HyperPod для распределённого обучения AI моделей. Команды, конфигурация, мониторинг и ошибки.

Почему HyperPod — это не просто ещё один контейнерный сервис

В 2026 году тренировать LLM в одиночку — это как пытаться выкопать котлован лопатой. Все используют распределённые системы, но настройка кластера из 64 GPU превращается в админский кошмар. AWS поняла это и выпустила SageMaker HyperPod — инструмент, который должен был решить все проблемы. Должен был.

HyperPod позиционируется как «полностью управляемое решение для распределённого обучения». На практике это означает: AWS берёт на себя инфраструктурную часть, а вы получаете доступ к кластеру через знакомые инструменты. Звучит идеально, пока не начинаете разбираться с CLI и SDK.

Актуально на 06.02.2026: HyperPod поддерживает последние версии популярных фреймворков — PyTorch 3.2, TensorFlow 3.0, JAX 0.5.0. Под капотом работает Kubernetes 1.30 с кастомными операторами AWS.

CLI: когда одной командой можно запустить кластер за $10 000 в час

Интерфейс командной строки HyperPod — это тот случай, когда мощь обратно пропорциональна удобству. Команды кажутся логичными, пока не пытаетесь настроить что-то нестандартное.

1 Первое, что сломает вам день: установка и настройка

Скачиваете AWS CLI версии 2.15.0 или новее (на 2026 год уже 2.18.0, но 2.15.0 — минимальная). Добавляете плагин SageMaker:

aws sagemaker install-plugin hyperpod

И тут же сталкиваетесь с первой проблемой — правами. Плагин требует доступ к CloudFormation, IAM, EC2, S3 и ещё десятку сервисов. Если ваш IAM-пользователь создан год назад, скорее всего, не хватит половины разрешений.

Не делайте так: создавать кластер от пользователя с правами администратора. Вместо этого используйте отдельную роль с минимальными привилегиями. Одна ошибка в команде — и счёт за EC2 вырастет в геометрической прогрессии.

2 Создание кластера: между быстрым стартом и банкротством

Базовая команда выглядит просто:

aws sagemaker create-cluster \
  --cluster-name my-llm-cluster \
  --instance-type ml.p5.48xlarge \
  --instance-count 8 \
  --role-arn arn:aws:iam::123456789012:role/SageMakerRole

Кажется, что всё понятно. Но вот что происходит на самом деле:

  • Создаётся CloudFormation стек с 20+ ресурсами
  • Разворачивается управляемый Kubernetes кластер (EKS)
  • Устанавливаются операторы для управления GPU
  • Настраиваются мониторинг и логирование
  • И всё это начинает стоить $128.77 в час за одни только инстансы

Параметр --instance-type — самая опасная часть. В 2026 году доступны:

Тип инстанса GPU Память GPU Примерная цена/час
ml.p5.48xlarge 8×H200 141 ГБ каждый $98.32
ml.p4de.24xlarge 8×A100 80 ГБ каждый $78.86
ml.g6.48xlarge 8×L40S 48 ГБ каждый $42.18

Если думаете, что выбрали ml.p5.48xlarge для одного инстанса — поздравляю, вы только что заказали 8 таких машин. Потому что --instance-count 8 умножается на количество GPU в инстансе. Вместо 8 GPU получаете 64.

SDK для Python: когда код должен быть читаемым, но не становится

Версия boto3 1.34.90 (актуальная на начало 2026) добавила полноценную поддержку HyperPod. Кажется, что теперь всё просто:

import boto3
from sagemaker.hyperpod import HyperPodClient

client = HyperPodClient()
cluster_config = {
    "ClusterName": "llm-training-2026",
    "InstanceGroups": [
        {
            "InstanceGroupName": "controller",
            "InstanceType": "ml.m5.4xlarge",
            "InstanceCount": 1,
            "LifeCycleConfig": {
                "Source": "arn:aws:s3:::my-bucket/bootstrap.sh",
                "OnCreate": True
            }
        },
        {
            "InstanceGroupName": "workers",
            "InstanceType": "ml.p5.48xlarge",
            "InstanceCount": 4,
            "LifeCycleConfig": {
                "Source": "arn:aws:s3:::my-bucket/worker-setup.sh",
                "OnCreate": True
            }
        }
    ],
    "RoleArn": "arn:aws:iam::123456789012:role/SageMakerExecutionRole",
    "VpcConfig": {
        "SecurityGroupIds": ["sg-12345678"],
        "Subnets": ["subnet-12345678", "subnet-87654321"]
    }
}

response = client.create_cluster(**cluster_config)
print(f"Cluster ARN: {response['ClusterArn']}")

Красиво? Да. Понятно? Не совсем. Потому что никто не рассказывает про подводные камни:

💡
LifeCycleConfig — это скрипт, который выполняется при создании инстанса. Если он упадёт с ошибкой, весь кластер застрянет в состоянии CREATING на неопределённое время. А платить начнёте сразу.

Самый болезненный момент — VPC конфигурация. Если укажете сабнеты без NAT Gateway или с неправильными маршрутами, инстансы создадутся, но не смогут скачивать Docker образы. И вы узнаете об этом только через час, когда таймаут скачивания превысит все разумные пределы.

Распределённое обучение: где теория расходится с практикой

HyperPod рекламирует «бесшовную интеграцию» с PyTorch Distributed и TensorFlow MultiWorker. На деле приходится настраивать вручную половину параметров.

Вот как выглядит запуск распределённого обучения на 32 GPU:

from sagemaker.hyperpod import HyperPodTrainingJob

job = HyperPodTrainingJob(
    cluster_name="llm-cluster",
    image_uri="763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:2.3.0-gpu-py310",
    entry_point="train.py",
    source_dir="s3://my-bucket/code/",
    instance_count=4,
    instance_type="ml.p5.48xlarge",
    hyperparameters={
        "model_name": "llama-3.2-70b",
        "batch_size_per_gpu": 4,
        "gradient_accumulation_steps": 8,
        "distributed_backend": "nccl",
        "master_addr": "$(leader_ip)",  # Автоматически подставляется
        "master_port": "29500",
        "nodes": "$(num_nodes)",
        "node_rank": "$(node_rank)",
        "gpus_per_node": "$(gpus_per_node)"
    },
    environment={
        "NCCL_DEBUG": "INFO",
        "NCCL_SOCKET_IFNAME": "eth0",
        "PYTORCH_CUDA_ALLOC_CONF": "max_split_size_mb:128"
    },
    max_run=172800  # 48 часов
)

job.fit(wait=False)

Переменные вроде $(leader_ip) и $(node_rank) — это магия HyperPod. Они автоматически заменяются на реальные значения при запуске. Проблема в том, что если ваш код тренировки ожидает конкретные аргументы командной строки, а не переменные окружения — всё сломается.

Кстати, про переменные окружения. NCCL_SOCKET_IFNAME — самая частая причина падения распределённого обучения. В AWS используется Elastic Network Adapter (ENA), но интерфейс может называться по-разному в зависимости от типа инстанса. На p5 это обычно eth0, на g6 — ens5.

Мониторинг и дебаг: когда логи становятся игрой в прятки

HyperPod пишет логи в CloudWatch. Кажется, удобно. На практике находить нужные записи среди терабайтов данных — отдельное искусство.

CLI команда для просмотра логов:

aws sagemaker describe-training-job \
  --training-job-name $(aws sagemaker list-training-jobs \
    --query "TrainingJobSummaries[?contains(TrainingJobName,'llm')].TrainingJobName" \
    --output text) \
  --query "LogStreamName" \
  --output text | \
xargs -I {} aws logs get-log-events \
  --log-group-name "/aws/sagemaker/TrainingJobs" \
  --log-stream-name {} \
  --start-time $(date -d "1 hour ago" +%s)000 \
  --limit 100

Эта мега-команда делает три вещи: находит последний тренировочный job с «llm» в названии, получает его LogStreamName и выводит последние 100 записей. И всё равно половину времени вы будете смотреть не на те логи.

Совет от того, кто наступал на эти грабли: настройте Dashboard в CloudWatch заранее. Добавьте метрики GPU Utilization, Network Bytes, Disk I/O. Иначе при проблемах с производительностью будете гадать, что происходит.

Типичные ошибки, которые стоят денег

За три года работы с HyperPod я собрал коллекцию ошибок, каждая из которых обходилась минимум в $500.

Ошибка 1: Забытый кластер на выходные

Создали кластер в пятницу вечером, запустили тренировку. В субботу утром обнаружили баг в коде. Остановили тренировку, но кластер продолжал работать. 48 часов простоя ml.p5.48xlarge — это примерно $9,500.

Решение:

# Автоматическое удаление через 24 часа простоя
aws sagemaker update-cluster \
  --cluster-name my-cluster \
  --auto-termination-idle-timeout 1440

Ошибка 2: Неправильные Spot инстансы

Пытаетесь сэкономить, используя Spot инстансы. Но для распределённого обучения они — зло. Прерывание одного воркера приводит к падению всей тренировки. А перезапуск с последнего checkpoint занимает 30-40 минут.

Для production обучения используйте только On-Demand инстансы. Spot подходят только для экспериментов или если ваша тренировка устойчива к прерываниям (что маловероятно для LLM).

Ошибка 3: Мало места в EBS

По умолчанию HyperPod выделяет 100 ГБ на корневой диск. Для датасета в 500 ГБ и чекпоинтов модели на 300 ГБ этого катастрофически мало. Тренировка падает через 6 часов с ошибкой «No space left on device».

Исправление при создании кластера:

"VolumeSizeInGB": 2000,
"VolumeType": "gp3",
"Iops": 16000,
"Throughput": 1000

Интеграция с существующей инфраструктурой

Если у вас уже есть ML-песочница на Kubernetes, HyperPod может показаться лишним слоем абстракции. Но есть сценарии, где он полезен:

  • Быстрый старт проекта — не нужно настраивать k8s с нуля
  • Команды без глубоких DevOps знаний — AWS управляет нодами
  • Гибридные сценарии — часть тренировок на HyperPod, часть на собственном железе

Для сравнения с другими подходами посмотрите RunPod vs железо под столом. Там подробный разбор экономики разных вариантов.

Когда HyperPod — не ваш выбор

Несмотря на все преимущества, бывают случаи, когда HyperPod не подходит:

  1. Жёсткие требования к безопасности — если данные нельзя выносить даже в VPC AWS
  2. Очень специфичная hardware конфигурация — нужны кастомные драйверы или firmware
  3. Бюджет меньше $10 000 в месяц — настройка собственного кластера на арендованных GPU выйдет дешевле
  4. Эксперименты с новыми фреймворками — HyperPod поддерживает только проверенные версии

Для небольших проектов или обучения с нуля иногда проще использовать локальные решения на MacBook или специализированные платформы.

Что ждёт HyperPod в будущем

На re:Invent 2025 анонсировали несколько улучшений, которые должны выйти в 2026:

  • Поддержка AMD Instinct MI300X — обещают на 40% дешевле при той же производительности
  • Интеграция с SageMaker полным циклом кастомизации — единый пайплайн от претрейна до DPO
  • Автоматическая оптимизация распределения — система будет сама подбирать batch size и количество GPU
  • Гибридный режим — часть кластера в AWS, часть в датацентре (если вдруг у вас есть свой)

Но самая интересная фича — предсказание стоимости тренировки. Система будет анализировать ваш код, датасет и гиперпараметры, выдавая точную оценку в долларах и времени. Пока что эта функция в beta и работает с погрешностью ±30%.

Финальный совет: начинайте с малого

Не пытайтесь запустить тренировку 70B модели на 64 GPU с первого дня. Создайте тестовый кластер с одним ml.g5.2xlarge. Проверьте весь пайплайн: создание, настройка, запуск кода, логирование, удаление.

Только когда убедитесь, что базовый сценарий работает без ошибок, масштабируйтесь. И всегда ставьте лимиты бюджета в AWS Budgets. Поверьте, алерт на $5 000 спасёт не только ваш бюджет, но и карьеру.

HyperPod — мощный инструмент, который делает распределённое обучение доступным для команд без глубоких DevOps навыков. Но как любой мощный инструмент, он требует уважения. И чековой книжки.