Оптимизация затрат для Amazon SageMaker Canvas с автоматическим отключением неактивных приложений

Экономия расходов на Amazon SageMaker Canvas с автоматическим отключением неактивных приложений

Amazon SageMaker Canvas – это богатое пространство для машинного обучения (ML) и Generative AI без кодирования, которое позволяет клиентам со всего мира более легко принять технологии ML для решения старых и новых проблем благодаря своему визуальному интерфейсу без кода. Оно покрывает весь ML-рабочий процесс от начала до конца: независимо от того, ищете ли вы мощную подготовку данных и AutoML, развертывание управляемых конечных точек, упрощенные возможности MLOps и готовые к использованию модели на основе служб AI AWS и Generative AI, SageMaker Canvas может помочь вам достичь ваших целей.

Поскольку компании всех размеров принимают SageMaker Canvas, клиенты просили о способах оптимизации затрат. Как определено в Конструкции AWS Well-Architected Framework, оптимизированная по стоимости рабочая нагрузка полностью использует все ресурсы, соответствует вашим функциональным требованиям и достигает результата с наименьшей возможной стоимостью.

Сегодня мы представляем новый способ дополнительной оптимизации затрат на приложения SageMaker Canvas. Теперь SageMaker Canvas собирает метрики Amazon CloudWatch, которые предоставляют представление об использовании приложений и бездействии. Клиенты могут использовать эту информацию, чтобы автоматически отключать бездействующие приложения SageMaker Canvas, избегая неожиданных затрат.

В этой статье мы покажем вам, как автоматически отключать бездействующие приложения SageMaker Canvas для контроля затрат с помощью простой серверной архитектуры. Шаблоны, используемые в этой статье, доступны на GitHub.

Понимание и отслеживание затрат

Образование всегда является первым шагом в понимании и контроле затрат для любой нагрузки, будь то локальная сеть или облачная среда. Давайте начнем с обзора модели ценообразования SageMaker Canvas. В двух словах, SageMaker Canvas имеет модель ценообразования оплаты по мере использования, основанную на двух измерениях:

  • Экземпляр рабочего пространства: ранее известное как время сеанса, это стоимость с запуском приложения SageMaker Canvas
  • Сборы за услуги AWS: расходы, связанные с обучением моделей, развертыванием конечных точек, генерацией выводов (ресурсы для запуска приложения SageMaker Canvas).

Клиенты всегда имеют полный контроль над ресурсами, запускаемыми SageMaker Canvas, и могут отслеживать затраты, связанные с приложением SageMaker Canvas, с помощью службы учета и управления стоимостью AWS. Для получения дополнительной информации обратитесь к разделу Управление выставлением счетов и учетом затрат в SageMaker Canvas.

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

Автоматическое отключение приложений SageMaker Canvas

Для ИТ-администраторов, которые хотят предоставить автоматические средства управления для отключения приложений SageMaker Canvas и управления затратами, предусмотрены два подхода:

  1. Отключение приложений по расписанию (каждый день в 19:00 или каждую пятницу в 18:00)
  2. Автоматическое отключение неиспользуемых приложений (когда приложение не использовалось в течение двух часов)

Отключение приложений по расписанию

Архитектура запланированного отключения Canvas

Запланированное выключение приложений SageMaker Canvas можно легко осуществить с помощью выражения cron (с помощью правила Amazon EventBridge Cron), вычислительного компонента (функции AWS Lambda), которая вызывает API Amazon SageMaker DeleteApp. Этот подход обсуждался в статье Создание и управление средами ML с использованием Amazon SageMaker Canvas с помощью AWS CDK и AWS Service Catalog, а также реализован в связанном репозитории GitHub.

Одним из преимуществ указанной выше архитектуры является то, что ее очень легко дублировать для запланированного создания приложения SageMaker Canvas. Путем комбинирования запланированного создания и запланированного удаления, администратор облачного сервиса может быть уверен, что приложение SageMaker Canvas готово к использованию, когда пользователи начинают свой рабочий день (например, в 9 утра по рабочим дням), а также автоматически выключается в конце рабочего дня (например, в 19: 00 по рабочим дням, всегда выключается во время выходных). Все, что требуется сделать, – это изменить строку кода, вызывающую API DeleteApp на CreateApp, а также обновить cron-выражение, отражающее желаемое время создания приложения.

Хотя этот подход очень легко реализовать и протестировать, недостатком предложенной архитектуры является то, что она не учитывает, используется ли приложение в данный момент или нет, выключая его независимо от его текущего состояния. В зависимости от различных ситуаций это может вызывать трения с активными пользователями, которые могут внезапно видеть завершение своей сессии.

Вы можете получить шаблон, связанный с этой архитектурой, с следующего репозитория GitHub:

Автоматическое выключение неактивных приложений

Архитектура автоматического выключения Canvas

Начиная сегодня, Amazon SageMaker Canvas генерирует метрики CloudWatch, которые предоставляют информацию об использовании и простое. Это позволяет администратору определить решение, которое считывает метрику простоя, сравнивает ее с порогом и определяет конкретную логику автоматического выключения. Более подробный обзор метрики простоя, выдаваемой SageMaker Canvas, показан в следующем абзаце.

Для автоматического выключения приложений SageMaker Canvas на основе метрик простоя мы предоставляем шаблон AWS CloudFormation. Этот шаблон состоит из трех основных компонентов:

  1. Amazon CloudWatch Alarm, который запускает запрос для проверки максимального значения метрики TimeSinceLastActive. Если это значение превышает порог, указанный вводом в шаблон AWS CloudFormation, он запускает остальную часть автоматизации. Этот запрос может выполняться в одном пользовательском профиле, в одной области или для всех областей. В зависимости от уровня контроля, который вы хотите иметь, вы можете использовать:
    1. шаблон all-domains-all-users, который проверяет это для всех пользователей и всех областей в регионе, где развернут шаблон
    2. шаблон one-domain-all-users, который проверяет это для всех пользователей в одной области в регионе, где развернут шаблон
    3. шаблон one-domain-one-user, который проверяет это для одного пользовательского профиля в одной области в регионе, где развернут шаблон
  2. Смена состояния тревоги создает событие на основной шине событий Amazon EventBridge, которая настроена для запуска функции AWS Lambda
  3. Функция AWS Lambda определяет, какое приложение SageMaker Canvas работало бездействующим более указанного порога, и удаляет его с помощью API DeleteApp.

Вы можете получить шаблоны AWS CloudFormation, связанные с этой архитектурой, из следующего репозитория GitHub:

Как работает метрика бездействия SageMaker Canvas

SageMaker Canvas генерирует метрику TimeSinceLastActive в пространстве имен /aws/sagemaker/Canvas/AppActivity, которая показывает количество секунд, в течение которых приложение было бездействующим без активности пользователей. Мы можем использовать эту новую метрику для автоматического выключения приложения SageMaker Canvas, когда оно было бездействующим в течение определенного периода времени. SageMaker Canvas предоставляет доступ к TimeSinceLastActive со следующей схемой:

{    "Namespace": "/aws/sagemaker/Canvas/AppActivity",    "Dimensions": [        [            "DomainId",            "UserProfileName"        ]    ],    "Metrics": [        {            "Name": "TimeSinceLastActive",            "Unit": "Seconds",            "Value": 12345        }    ]}

Ключевые компоненты этой метрики следующие:

  • Dimensions, в особенности DomainID и UserProfileName, позволяют администратору определить, какие приложения бездействуют во всех доменах и для всех пользователей
  • Value метрики указывает количество секунд с момента последней активности в приложениях SageMaker Canvas. SageMaker Canvas считает следующие действия активностью:
    • Любое действие, выполненное в приложении SageMaker Canvas (щелчок кнопки, преобразование набора данных, генерация вывода в приложении, развертывание модели);
    • Использование готовой модели или взаимодействие с моделями Generative AI с помощью интерфейса чата;
    • Пакетное выводное вычисление, запланированное для выполнения в определенное время; для получения дополнительной информации см. Управление автоматическими действиями.

Эту метрику можно читать с помощью API Amazon CloudWatch, таких как get_metric_data. Например, используя SDK Amazon для Python (boto3):

import boto3, datetimecw = boto3.client('cloudwatch')metric_data_results = cw.get_metric_data(    MetricDataQueries=[        {            "Id": "q1",            "Expression": 'SELECT MAX(TimeSinceLastActive) FROM "/aws/sagemaker/Canvas/AppActivity" GROUP BY DomainId, UserProfileName',            "Period": 900        }    ],    StartTime=datetime.datetime(2023, 1, 1),    EndTime=datetime.datetime.now(),    ScanBy='TimestampAscending')

Запрос на языке Python извлекает значение MAX из TimeSinceLastActive из пространства имен, связанного с SageMaker Canvas, группируя эти значения по DomainID и UserProfileName.

Развертывание и тестирование решения автоматического выключения

Для развертывания стека автоматического выключения выполните следующие действия:

  1. Загрузите шаблон AWS CloudFormation, который относится к решению, которое вы хотите реализовать, из указанного репозитория GitHub. Выберите, хотите ли вы реализовать решение для всех доменов SageMaker, для отдельного домена SageMaker или для отдельного пользователя;
  2. Обновите параметры шаблона:
    1. Тайм-аут бездействия – время (в секундах), в течение которого приложение SageMaker Canvas может находиться в бездействии, прежде чем будет выключено; значение по умолчанию – 2 часа
    2. Период тревоги – время (в секундах), используемое CloudWatch Alarm для вычисления тайм-аута бездействия; значение по умолчанию – 20 минут
    3. (необязательно) ID домена SageMaker и имя профиля пользователя
  3. Разверните стек CloudFormation для создания ресурсов

После развертывания (это должно занять менее двух минут), функция AWS Lambda и тревога Amazon CloudWatch настроены автоматически выключать приложение Canvas при бездействии. Чтобы протестировать скрипт автоматического выключения, выполните следующие действия:

  1. Убедитесь, что приложение SageMaker Canvas работает в правильном домене и с правильным профилем пользователя (если вы их настроили).
  2. Прекратите использовать приложение SageMaker Canvas и дождитесь периода простоя (по умолчанию 2 часа).
  3. Проверьте, что приложение остановлено после достижения порогового времени простоя, проверив, что сработала тревога CloudWatch и после срабатывания автоматизации она вернулась в нормальное состояние.

В нашем тестовом случае мы установили период простоя на два часа (7200 секунд). На следующем графике, построенном метриками Amazon CloudWatch, вы можете видеть, что приложение SageMaker Canvas продолжало отправлять метрику TimeSinceLastActive до достижения порога (1), что вызвало срабатывание тревоги. После срабатывания тревоги была выполнена функция AWS Lambda, которая удалила приложение и вернула метрику ниже порога (2).

График метрик автоматического выключения Canvas

Заключение

В этом посте мы реализовали автоматизированное решение для выключения неактивных приложений SageMaker Canvas с использованием AWS Lambda и тревоги CloudWatch, а также новой метрики простоя из SageMaker Canvas. Благодаря этому решению пользователи могут оптимизировать затраты на свои рабочие нагрузки в области машинного обучения и избежать непреднамеренных платежей за приложения, которые они забыли оставить работающими в своем домене SageMaker.

Мы с нетерпением ждем, чтобы увидеть, какие новые задачи и рабочие нагрузки пользователи смогут решить с помощью этого решения. Для получения дополнительных примеров того, как SageMaker Canvas может помочь в достижении ваших бизнес-целей, обратитесь к следующим постам:

Чтобы узнать, как вы можете работать с рабочими нагрузками на производственном уровне с помощью SageMaker Canvas от Amazon, обратитесь к следующим постам: