Salesforce, разрабатывая свою платформу Agentforce для ИИ-агентов, столкнулась с проблемой: стандартное размещение Inference Components (IC) в Amazon SageMaker ИИ не гарантировало высокой доступности (HA) в нескольких зонах доступности (AZ), что требовалось для соответствия внутренним стандартам компании. Использование IC позволило сократить затраты на инфраструктуру в 8 раз за счет совместного размещения нескольких моделей на общих GPU, но это преимущество создало новый вызов: как обеспечить отказоустойчивость IC-эндпоинтов в нескольких AZ.

По умолчанию алгоритм размещения SageMaker оптимизирует каждую операцию развертывания IC независимо, распределяя новые копии равномерно по инстансам без учета баланса между AZ. Это может привести к неравномерному распределению копий конкретной модели, создавая единые точки отказа: сбой одного инстанса или целой зоны доступности может сделать модель недоступной. Для Salesforce, которая требует поддержку двух AZ для каждой production-модели, это было неприемлемо.

ПараметрОписание
AvailabilityZoneBalanceКонтролирует распределение копий между AZ с настраиваемым допуском дисбаланса
PlacementStrategyОпределяет размещение копий в пределах AZ: SPREAD или BINPACK

AWS представила параметр SchedulingConfig в API CreateInferenceComponent, который дает клиентам точный контроль над размещением копий IC по инстансам и AZ. Два ключевых подпараметра определяют поведение HA: AvailabilityZoneBalance управляет распределением копий между AZ с настраиваемым допуском дисбаланса, а PlacementStrategy каждой AZ может быть SPREAD (распределение копий по максимальному числу инстансов для изоляции отказов) или BINPACK (упаковка копий на меньшее число инстансов для эффективности использования).

Default IC placement concentrating model copies in fewer Availability Zones compared to SchedulingConfig placement spreading copies evenly across two Availability Zones
Default IC placement concentrating model copies in fewer Availability Zones compared to SchedulingConfig placement spreading copies evenly across two Availability Zones · Источник: AWS Machine Learning Blog

Пример из практики Salesforce: для мульти-AZ эндпоинта с четырьмя инстансами, распределенными по двум AZ, команда развернула модель с четырьмя копиями, используя SPREAD и MaxImbalance=1. Это позволило разместить по две копии в каждой AZ, обеспечив баланс. Для более легких моделей с двумя копиями MaxImbalance=0 гарантирует строгий баланс: по одной копии в каждой AZ.

При масштабировании SageMaker сохраняет баланс между AZ: при увеличении CopyCount новые копии размещаются равномерно, при уменьшении — удаляются симметрично. Важно не устанавливать CopyCount=1 для критически важных моделей, так как одна копия может находиться только в одной AZ, что нарушает требование 2-AZ. Для долгосрочной консолидации и ребалансировки после множественных циклов масштабирования рекомендуется настроить ScaleInPolicy с стратегией CONSOLIDATION, которая периодически консолидирует копии IC и освобождает неиспользуемые инстансы, соблюдая баланс AZ.

Это решение позволяет Salesforce использовать преимущества IC в стоимости, не жертвуя надежностью, и может быть полезно другим компаниям, работающим с ИИ-нагрузками в AWS.