Amazon MLA-C01: Оптимизация затрат для ML-нагрузок — Руководство по подготовке
Часть AWS Machine Learning Engineer Associate MLA-C01 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.
Основная концепция: откуда берутся затраты и какие есть рычаги управления
Стоимость рабочих нагрузок машинного обучения складывается из трех основных составляющих: вычислительные ресурсы для обучения и вывода, хранение и передача данных для наборов данных и контрольных точек, а также операционные издержки из-за недоиспользованной или неправильно сконфигурированной инфраструктуры. Обучение часто является самой большой статьей расходов при обучении крупных моделей или проведении множества экспериментов. Стоимость вывода преобладает, когда вы обслуживаете модели в большом масштабе или требуете низкой задержки для интерактивных приложений. Основные рычаги оптимизации — это выбор семейства и размера инстансов, варианты приобретения (on-demand, Spot или Savings Plans), шаблоны жизненного цикла модели (пакетный, в реальном времени или бессерверный) и оптимизации времени выполнения, такие как компиляция моделей, кеширование и консолидация инстансов.
Операционные методы позволяют применить эти рычаги на практике. Используйте управляемое обучение на Spot-инстансах с созданием контрольных точек, чтобы сократить расходы на вычислительные ресурсы для обучения до 70% по сравнению с on-demand, но сочетайте его с созданием контрольных точек (параметр CheckpointConfig → S3Uri в CreateTrainingJob) и флагом EnableManagedSpotTraining в CreateTrainingJob, установленным в true, чтобы задания могли возобновляться после прерываний. Подбирайте правильный размер инстансов, профилируя фактическое использование CPU/GPU/IO (метрики CloudWatch, такие как GPUUtilization, HostCPUUtilization, и трассировки профилировщика из SageMaker Debugger), а затем переключайтесь на семейства вычислительных инстансов, соответствующие характеристикам нагрузки (ml.c5/ml.c6 для CPU, ml.g5/ml.p4 для GPU, ml.r5 для задач с интенсивным использованием памяти). Для вывода отдавайте предпочтение моделям с пропорциональной стоимостью: используйте бессерверный вывод (вариант production в CreateEndpointConfig с ServerlessConfig → MemorySizeInMB и MaxConcurrency) для нагрузок с пиками и низкой пропускной способностью; используйте конечные точки для нескольких моделей или компиляцию моделей (SageMaker Neo), чтобы уменьшить требования к инстансам для множества небольших моделей; и перемещайте большие или нечувствительные к задержкам нагрузки на асинхронный или пакетный вывод (AsyncInferenceConfig и Batch Transform).
Ключевые сервисы и конфигурация
Amazon SageMaker предоставляет явные механизмы для контроля затрат. Для снижения затрат на обучение используйте управляемое обучение на Spot-инстансах: в API CreateTrainingJob установите EnableManagedSpotTraining=true, укажите CheckpointConfig.S3Uri и установите MaxWaitTimeInSeconds > MaxRuntimeInSeconds, чтобы разрешить получение Spot-ресурсов. В SageMaker Python SDK вы можете установить estimator.use_spot_instances=True, estimator.max_wait и estimator.checkpoint_s3_uri на S3-путь к контрольным точкам. Для воспроизводимой низкой задержки между последовательными заданиями обучения поддерживайте контейнеры в «разогретом» состоянии, используя SageMaker Processing или обучая контейнеры на постоянной выделенной инфраструктуре, когда этого требует частота экспериментов; в противном случае сократите время запуска контейнера, используя образы меньшего размера, готовые контейнеры SageMaker или повторно используя постоянный инстанс для обучения в среде разработки.
Для контроля затрат на вывод CreateEndpointConfig/UpdateEndpointConfig поддерживают несколько стратегий. Используйте ServerlessConfig в ProductionVariants, чтобы позволить SageMaker управлять масштабированием и выставлять счета за вызов и память, а не за полные часы работы инстанса; ServerlessConfig требует указания значений MemorySizeInMB и MaxConcurrency. Для стабильных нагрузок с высокой пропускной способностью используйте выделенные (Provisioned) инстансы и применяйте к конечной точке политики отслеживания цели (target tracking) Application Auto Scaling, чтобы избежать избыточного выделения ресурсов. Конечные точки для нескольких моделей снижают затраты при размещении множества редко используемых моделей за счет совместного использования одного контейнера и загрузки артефактов модели из S3 по требованию. Для получения рекомендаций по размеру модели вызовите CreateInferenceRecommendationsJob в Inference Recommender, который предоставит рекомендации по типу инстанса, размеру пакета (batch size) и задержке/пропускной способности.
Обязательства по оплате лучше всего управлять с помощью SageMaker Savings Plans или AWS Compute Savings Plans. Приобретите Savings Plan через консоль AWS Billing, чтобы взять на себя обязательство по расходам в $/час на 1 или 3 года; это дает скидку на on-demand вычислительные ресурсы SageMaker (обучение и хостинг) для всех семейств инстансов. Обратите внимание, что Savings Plans применяются к использованию on-demand и не распространяются на Spot-инстансы, поэтому комбинируйте стратегии: покупайте Savings Plans для базового стабильного использования и используйте Spot для пиковых нагрузок или экспериментального обучения.
Шаблоны проектирования и компромиссы
Шаблон управляемых спотовых инстансов (Managed Spot) с созданием контрольных точек (checkpointing) — это основной выбор для длительных или крупных распределенных заданий обучения. Он требует минимальных изменений в коде: включить EnableManagedSpotTraining, указать CheckpointConfig.S3Uri и установить подходящее значение MaxWaitTimeInSeconds для устойчивости к планированию спотовых инстансов. Компромисс заключается в усложнении перезапуска и несколько большем общем времени выполнения (wall-clock time) при частых прерываниях спотовых инстансов; выигрыш — в значительном снижении затрат. Для итеративных экспериментов, где важна задержка запуска между последовательными заданиями, поддерживайте «теплую» среду разработки: используйте меньшие по размеру, подготовленные инстансы ml.m5 или ml.c5 с предварительно загруженными данными в NVMe/локальный кэш или запускайте множество экспериментов как локальные задания обработки на одном и том же инстансе с помощью SageMaker Processing или блокнотов Studio. Это увеличивает базовую стоимость, но сокращает общее время цикла.
Для инференса (вывода) выбирайте между бессерверными (serverless) и подготовленными (provisioned) эндпоинтами в зависимости от характера трафика. Бессерверный инференс (ServerlessConfig) избавляет от необходимости планировать емкость и является самым дешевым вариантом для прерывистого, непредсказуемого трафика, поскольку вы платите за каждый вызов и выделенный объем памяти. Компромисс — это задержка холодного старта и ограничения на размер; для строгих SLA с низкой задержкой предпочтительнее использовать подготовленные инстансы с автомасштабированием и рассмотреть возможность оптимизации модели с помощью SageMaker Neo для уменьшения количества инстансов. В случаях, когда необходимо разместить много моделей, но трафик для каждой из них невелик, эндпоинты для нескольких моделей (multi-model endpoints) консолидируют использование диска и памяти и снижают стоимость в расчете на одну модель за счет несколько более долгой загрузки при холодном старте для невыгруженной модели.
Подбор правильного размера (right-sizing) должен основываться в первую очередь на наблюдениях, а не на догадках. Используйте профилирование SageMaker Debugger и CloudWatch для сбора метрик GPUUtilization и DiskReadOps; затем запустите задание Inference Recommender (CreateInferenceRecommendationsJob) для проверки класса/типа инстанса и производительности. Если требования к задержке модели жесткие, рассмотрите квантование модели, компиляцию с помощью SageMaker Neo или использование ускорителей Elastic Inference для подключения частичной производительности GPU для инференса к инстансам CPU; Elastic Inference позволяет подключить небольшой ускоритель к инстансу CPU, снижая стоимость по сравнению с полноценными GPU-инстансами для определенных моделей.
Распространенные ошибки и критерии принятия решений
Частая ошибка — применять один и тот же метод оптимизации затрат ко всем рабочим нагрузкам. Savings Plans эффективны при стабильной базовой загрузке, но их следует сочетать со Spot-инстансами для экспериментальных нагрузок и с бессерверными решениями для инференса с пиковыми нагрузками. Не думайте, что Spot-инстансы бесплатны — они требуют использования контрольных точек (checkpointing) и логики обучения, устойчивой к прерываниям. Настройте CreateTrainingJob.CheckpointConfig и EnableManagedSpotTraining, а также рассчитайте MaxWaitTimeInSeconds, отражающий, как долго вы готовы ожидать отложенного запуска. Еще одна ловушка — пренебрежение телеметрией: без профилирования (с помощью SageMaker Debugger, CloudWatch и Inference Recommender) вы рискуете избыточно выделить ресурсы или выбрать семейство инстансов с несбалансированным соотношением CPU, GPU и памяти. Наконец, бессерверный инференс упрощает управление затратами, но может приводить к непредсказуемым «холодным стартам». Измеряйте сквозную задержку (end‑to‑end latency) при использовании ServerlessConfig и возвращайтесь к эндпоинтам с подготовленными ресурсами (provisioned endpoints) и автомасштабированием при наличии строгих SLA.
Практическая задача: Пример использования
Компания: FinSight Analytics. Задача: FinSight необходимо создать конвейер для обнаружения мошенничества, который часто обучается на логах транзакций и профилях клиентов, хранящихся в S3, обеспечивает изоляцию данных, поддерживает управление версиями моделей с ручным утверждением перед развертыванием в производственную среду, снижает затраты на ночное переобучение, минимизирует задержку запуска заданий при быстром экспериментировании и обслуживает эндпоинт реального времени с низкой задержкой и чувствительностью к затратам при пиковых нагрузках.
Централизованный безопасный реестр данных и моделей. Храните данные в защищенном бакете S3 с шифрованием по умолчанию и политиками бакета, ограничивающими доступ только для роли выполнения SageMaker. Регистрируйте модели в SageMaker Model Registry; используйте шаг RegisterModel в SageMaker Pipelines для создания пакетов моделей со статусом ModelApprovalStatus, по умолчанию установленным в «PendingManualApproval». Реализуйте рабочий процесс ручного утверждения, создав SageMaker Pipeline, который формирует пакет модели и шаг ручного утверждения; когда уполномоченные рецензенты завершают проверку, они вызывают
boto3 sagemaker.update_model_package(ModelPackageName=..., ModelApprovalStatus='Approved'), чтобы разрешить развертывание. Обоснование: Model Registry обеспечивает централизованное версионирование, а ModelApprovalStatus напрямую интегрируется с API SageMaker, что минимизирует необходимость в кастомных операциях.Экономичное ночное переобучение. Используйте управляемое обучение на Spot-инстансах (managed Spot training), создавая задания обучения с параметром EnableManagedSpotTraining=true, укажите CheckpointConfig.S3Uri для сохранения состояния оптимизатора и задайте подходящие значения MaxRuntimeInSeconds и MaxWaitTimeInSeconds, чтобы задания могли возобновляться после прерываний Spot-инстансов. Сочетайте это с приобретением Savings Plan, рассчитанного на покрытие среднего количества часов обучения/инференса по требованию (on-demand), чтобы снизить постоянные затраты, и используйте Spot-инстансы для экспериментов, где прерывания допустимы. Обоснование: Управляемое обучение на Spot-инстансах снижает затраты на вычисления с минимальными изменениями в коде; Savings Plans применяются к базовому использованию ресурсов по требованию для сокращения прогнозируемых расходов.
Снижение задержки запуска при экспериментировании. Для интерактивных циклов экспериментов поддерживайте постоянный профиль инстанса для разработки (например, ml.c5 или ml.m5) в SageMaker Studio или небольшой выделенный Notebook Instance с предварительно загруженными наборами данных на EBS/NVMe и повторно используйте эту среду для множества быстрых запусков обучения. Для производственных ночных заданий по-прежнему используйте управляемое обучение на Spot-инстансах с контрольными точками. Обоснование: Постоянная среда позволяет избежать «холодных стартов» контейнеров и ускоряет итерации, сохраняя при этом экономию средств для ресурсоемких запусков.
Обслуживание в реальном времени с низкой задержкой и чувствительностью к затратам. Разверните утвержденную модель на эндпоинте с подготовленными ресурсами (provisioned endpoint) для обеспечения базовой низкой задержки и примените к нему политику Application Auto Scaling для уменьшения масштаба в часы низкой нагрузки. Для непредсказуемых всплесков трафика используйте опцию бессерверного инференса (Serverless inference) для моделей с небольшим объемом запросов или асинхронный инференс (AsyncInferenceConfig с S3 OutputConfig) для тяжелых задач пакетной обработки, не требующих реального времени. Перед развертыванием примените к модели компиляцию с помощью SageMaker Neo, чтобы уменьшить потребление ресурсов CPU/GPU. Обоснование: Сочетание подготовленных ресурсов и автомасштабирования обеспечивает стабильно низкую задержку и контроль над затратами; бессерверные или асинхронные эндпоинты более экономично справляются с пиковыми или пакетными нагрузками, а Neo снижает требования к инстансам.
Этот подход сочетает EnableManagedSpotTraining с CheckpointConfig для снижения затрат на обучение, SageMaker Model Registry и UpdateModelPackage для ручного утверждения, постоянный инстанс для разработки для уменьшения задержки запуска, а также комбинацию моделей на подготовленных, бессерверных и скомпилированных эндпоинтах для оптимизации затрат на инференс.
← Генеративный AI и фундаментальные модели · Все домены · Компьютерное зрение →
Отработать эти вопросы → · Тесты на время на ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Сдайте экзамен →