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 (упаковка копий на меньшее число инстансов для эффективности использования).

Пример из практики 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.



