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

Model caching в Amazon SageMaker HyperPod: холодный старт инференса LLM сокращается с десятков минут до секунд

Разбираем model caching в Amazon SageMaker HyperPod: предзагрузка весов и образов в NVMe ускоряет scale-out примерно на 60% и срезает до 97% времени загрузки ко

Коротко

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

  1. 01

    Что такое model caching в SageMaker HyperPod и зачем он нужен

  2. 02

    Сколько выигрывает инференс LLM: бенчмарки и цифры ускорения

  3. 03

    Как включить model caching: настройка через modelCacheConfig

  4. 04

    Требования к инфраструктуре и ограничения model caching

Что такое model caching в SageMaker HyperPod и зачем он нужен

Model caching в Amazon SageMaker HyperPod заранее переносит веса модели и контейнерный образ на узлы кластера, в локальное NVMe-хранилище. Под при старте читает их с диска со скоростью около 7 ГБ/с вместо скачивания по сети. Холодный старт инференса LLM сокращается с десятков минут до секунд, и это меняет поведение автоскейлера: новая реплика успевает войти в строй, пока нагрузка ещё держится.

Проблема знакома каждому, кто запускал vLLM или LMI в Kubernetes. Узел выделен, GPU свободен, запросы идут, а эндпоинт молчит: сначала тянется образ из ECR, потом качаются веса. На больших моделях пауза складывается из двух задержек и превращается в простой дорогого железа, за который вы платите по часам.

Кэширование в HyperPod работает на уровне инфраструктуры, а не приложения. Менять код модели или клиента не нужно: достаточно включить секцию modelCacheConfig в конфигурации эндпоинта, дальше ресурсы создаёт оператор.

Проблема холодного старта: сколько времени теряется без кэша

Две задержки определяют время до первого ответа.

ЭтапБез кэша
Загрузка образа vLLM/LMI из ECR5-7 минут
Скачивание весов модели на 145 ГБ20+ минут
Скачивание весов 600+ ГБ (например, DeepSeek-R1)30+ минут

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

Как работает кэширование: NVMe вместо сети

Оператор HyperPod создаёт два независимых ресурса: ModelDataCacheConfig для весов модели и ModelImageCache для контейнерных образов. Данные раскладываются на локальные NVMe-диски узлов, после чего узлы помечаются как cache-ready. Под на прогретом узле читает веса с диска, а не с удалённого стораджа, и получает примерно 7 ГБ/с вместо сетевой полосы, которую делят все реплики кластера.

Логика та же, что и в других слоях стека, только уровнем ниже. Кэширование промптов, например prompt caching для агентов на Amazon Bedrock, экономит токены и латентность на повторяющемся префиксе. Model caching экономит минуты на старте пода. Это разные задачи, и включать их имеет смысл по отдельности.

Сколько выигрывает инференс LLM: бенчмарки и цифры ускорения

Опубликованные цифры по функции такие: ускорение scale-out примерно на 60% с кэшем весов и сокращение времени загрузки образа до 97% с кэшем образов. Разберём, что стоит за каждым числом.

Ускорение scale-out с кэшем весов

Без кэша каждый новый под платит полную цену: 20+ минут на модель в 145 ГБ, 30+ минут на 600+ ГБ. С кэшем веса уже лежат на узле, и под стартует почти сразу. Арифметика простая: 145 ГБ на скорости 7 ГБ/с читаются примерно за 20 секунд, 600 ГБ примерно за 90 секунд, если диск держит заявленную скорость. Сравните с получасом сетевой загрузки.

Отсюда и рост скорости горизонтального масштабирования около 60%. Реплики добавляются быстрее, автоскейлер реагирует на реальный профиль трафика, а не на график пятиминутной давности.

Сокращение времени загрузки контейнерного образа

Образ vLLM или LMI весит немало, и вытягивание из ECR занимает 5-7 минут даже на хорошей сети. Кэш образов снимает до 97% этого времени. Практический смысл шире, чем ускорение первого старта: перезапуск пода после падения, смена конфигурации и откат версии перестают быть операцией на кофе-брейк. Для отладки, где поды пересоздаются десятки раз в день, выигрыш накапливается.

Как включить model caching: настройка через modelCacheConfig

Кэш активируется секцией modelCacheConfig в InferenceEndpointConfig или в описании JumpStartModel. Два кэша независимы: можно прогреть только веса, только образы или оба сразу. Дальше работу берёт на себя оператор HyperPod, вручную создавать ресурсы не требуется.

Активация кэша весов модели

В modelCacheConfig включается кэш весов. Оператор создаёт ресурс ModelDataCacheConfig, который описывает, что именно предзагружать на узлы. Перед включением сверьте объём NVMe на инстансах: копия весов хранится на каждом узле отдельно, а не в общем сетевом хранилище.

Активация кэша образов контейнеров

Отдельный переключатель отвечает за образы, оператор создаёт ModelImageCache. Включать его стоит даже при быстрой загрузке весов: 5-7 минут на образ из ECR никуда не деваются, а при частых перезапусках именно они определяют время восстановления сервиса.

Проверка статуса и метки cache-ready

После создания кэша оператор помечает узлы как cache-ready. Список узлов и их метки проверяются привычными средствами Kubernetes, например через kubectl get nodes с выводом меток. Узел без метки считается непрогретым: под на нём пойдёт обычным путём, через сеть. Фолбэк срабатывает автоматически и спасает от отказа, но ускорения не даёт.

Требования к инфраструктуре и ограничения model caching

Требования к NVMe-хранилищу

Кэш весов хранится на каждом узле отдельно. Значит, локальный диск нужного объёма требуется на каждом узле, а не один общий том на кластер. Модель на 145 ГБ просит минимум 145 ГБ под веса плюс запас на образы и временные файлы, модель на 600+ ГБ требует соответствующего диска. Спецификации инстансов HyperPod стоит сверить до включения: если места нет, кэш просто некуда положить.

Ограничения: первичная загрузка и обновления

Первичная загрузка всё равно требует скачивания: кто-то должен первым принести веса на узел. Кэш убирает повторную плату, а не первую.

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

Когда стоит использовать model caching, а когда можно обойтись

Сценарии с максимальным выигрышем

  • Большие модели: 145 ГБ и выше, включая DeepSeek-R1 и сопоставимые по размеру.
  • Частый scale-out и резкие пики, где важна скорость реакции автоскейлера.
  • Инференс на vLLM или LMI в Kubernetes с большим числом перезапусков подов.
  • Отладка и эксперименты, где окружение пересоздаётся несколько раз в день.

Похожие задачи решаются и на другом уровне. Локальный вариант warm start через персистентный SSD-кэш KV-состояний разобран в материале про CachyLLama и мгновенный warm start LLM: там экономия идёт на повторной обработке промпта. Если же узкое место в передаче самих весов между ускорителями, смотрите на NVIDIA ModelExpress с передачей весов GPU-to-GPU по RDMA. Для домашнего стека на двух картах полезна схема из разбора Qwen3.8 27B на двух RTX 3090 с LMCache: там кэш помогает связать VRAM, RAM и NVMe в одну систему.

Когда кэш может быть избыточен

Модель на несколько гигабайт, ровная нагрузка без пиков, отсутствие NVMe на узлах или жёсткий лимит на локальные диски. В этих случаях холодный старт не главная статья расходов, и платить дисковым пространством на каждом узле смысла мало.

Отдельный вопрос - стоимость инфраструктуры. Локальные NVMe увеличивают цену узла, и считать надо не только ускорение, но и то, сколько часов простоя GPU вы реально экономите. Если счёт AWS приходится оплачивать из России, где локальные карты часто не проходят, используют виртуальные карты зарубежных банков: карта с пополнением в рублях через СБП привязывается к Apple Pay и Google Pay и подходит для оплаты иностранных сервисов.

Итог: стоит ли включать model caching в вашем кластере

Model caching в SageMaker HyperPod убирает самую неприятную часть холодного старта инференса LLM: ожидание, пока образ и веса доберутся по сети. При кэше весов scale-out ускоряется примерно на 60%, кэш образов срезает до 97% времени загрузки контейнера. Цена - локальные NVMe на каждом узле и дисциплина версионирования.

Чек-лист перед включением:

  1. Оцените размер моделей: если веса меньше десятков гигабайт, выигрыш скромный.
  2. Проверьте NVMe на каждом узле: объём должен покрывать веса плюс запас.
  3. Посчитайте частоту масштабирования и перезапусков: чем их больше, тем выше отдача.
  4. Решите, как управлять версиями модели, чтобы новый чекпоинт не подменялся старым кэшем.
  5. Проверьте после запуска метки cache-ready и убедитесь, что поды садятся на прогретые узлы, а не уходят в фолбэк.

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

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