Amazon SageMaker Canvas — это богатое рабочее пространство машинного обучения (ML) и генеративного искусственного интеллекта без программирования, которое позволило клиентам по всему миру легче внедрять технологии ML для решения старых и новых задач благодаря визуальному интерфейсу без кода. Это достигается за счет комплексного покрытия рабочего процесса машинного обучения: ищете ли вы мощную подготовку данных и AutoML, управляемое развертывание конечных точек, упрощенные возможности MLOps и готовые к использованию модели на базе сервисов AWS 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 Billing and Cost Management. Дополнительную информацию см. в разделе Управление выставлением счетов и стоимостью в SageMaker Canvas.
Чтобы ограничить затраты, связанные с экземплярами рабочей области, рекомендуется выйти из системы, не закрывая вкладку браузера. Чтобы выйти из системы, выберите Выйти на левой панели приложения SageMaker Canvas.
Автоматическое закрытие приложений SageMaker Canvas.
Для ИТ-администраторов, которые хотят обеспечить автоматизированный контроль закрытия приложений SageMaker Canvas и держать расходы под контролем, есть два подхода:
- Завершение работы приложений по расписанию (каждый день в 19:00 или каждую пятницу в 18:00)
- Автоматическое завершение работы бездействующих приложений (когда приложение не использовалось в течение двух часов)
Завершение работы приложений по расписанию
Запланированное завершение работы приложений SageMaker Canvas можно выполнить с минимальными усилиями, используя хрон выражение (с правилом Amazon EventBridge Cron), вычислительный компонент (функция AWS Lambda), который вызывает API Amazon SageMaker. DeleteApp
. Этот подход обсуждался в статье «Предоставление сред машинного обучения и управление ими с помощью Amazon SageMaker Canvas с использованием AWS CDK и каталога сервисов AWS» и реализован в соответствующей публикации. Репозиторий GitHub.
Одним из преимуществ приведенной выше архитектуры является то, что ее очень просто дублировать для запланированного создания приложения SageMaker Canvas. Используя комбинацию запланированного создания и запланированного удаления, администратор облака может быть уверен, что приложение SageMaker Canvas готово к использованию каждый раз, когда пользователи начинают свой рабочий день (например, в 9 утра в рабочий день), и что приложение также автоматически закрывается. в конце рабочего дня (например, в 19:00 в рабочий день, в выходные дни всегда отключен). Все, что нужно сделать, это изменить строку кода, вызывающую DeleteApp
API в CreateApp
а также обновить выражение cron, чтобы оно отражало желаемое время создания приложения.
Хотя этот подход очень легко реализовать и протестировать, недостатком предлагаемой архитектуры является то, что она не учитывает, используется ли приложение в данный момент или нет, закрывая его независимо от текущего статуса его активности. В зависимости от различных ситуаций это может вызвать разногласия с активными пользователями, сеанс которых может внезапно завершиться.
Вы можете получить шаблон, связанный с этой архитектурой, из следующего репозитория GitHub:
Автоматическое завершение работы бездействующих приложений
Начиная с сегодняшнего дня Amazon SageMaker Canvas публикует метрики CloudWatch, которые дают представление об использовании приложений и бездействии. Это позволяет администратору определить решение, которое считывает показатель простоя, сравнивает его с пороговым значением и определяет конкретную логику автоматического отключения. Более подробный обзор показателя простоя, выдаваемого SageMaker Canvas, показан в следующем параграфе.
Чтобы обеспечить автоматическое завершение работы приложений SageMaker Canvas на основе показателей простоя, мы предоставляем шаблон AWS CloudFormation. Этот шаблон состоит из трех основных компонентов:
- Сигнализация Amazon CloudWatch, которая запускает запрос для проверки максимального значения
TimeSinceLastActive
метрика. Если это значение превышает пороговое значение, указанное в качестве входных данных для шаблона CloudFormation, активируется остальная часть автоматизации. Этот запрос можно выполнить для одного профиля пользователя, в одном домене или во всех доменах. В зависимости от желаемого уровня контроля вы можете использовать:- тот
all-domains-all-users
шаблон, который проверяет это для всех пользователей и всех доменов в регионе, где развернут шаблон. - тот
one-domain-all-users
шаблон, который проверяет это для всех пользователей в одном домене в регионе, где развернут шаблон. - тот
one-domain-one-user
шаблон, который проверяет это для одного профиля пользователя, в одном домене, в регионе, где развернут шаблон
- тот
- Изменение состояния тревоги создает событие на шине событий по умолчанию в Amazon EventBridge, для которой настроено правило Amazon EventBridge для запуска функции AWS Lambda.
- Функция 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 (нажатие кнопки, преобразование набора данных, создание вывода внутри приложения, развертывание модели);
- Использование готовой модели или взаимодействие с моделями Генеративного ИИ через интерфейс чата;
- Пакетный вывод, запуск которого запланирован на определенное время; дополнительную информацию см. в разделе Управление автоматизацией.
Эту метрику можно прочитать через API Amazon CloudWatch, например get_metric_data
. Например, используя AWS SDK для Python (boto3
):
import boto3, datetime
cw = 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
.
Развертывание и тестирование решения автоматического завершения работы
Чтобы развернуть стек автоматического завершения работы, выполните следующие действия:
- Загрузите шаблон AWS CloudFormation, соответствующий решению, которое вы хотите реализовать, из указанного выше репозитория GitHub. Выберите, хотите ли вы реализовать решение для всех доменов SageMaker, для одного домена SageMaker или для одного пользователя;
- Обновить параметры шаблона:
- тайм-аут простоя – время (в секундах), в течение которого приложению SageMaker Canvas разрешено оставаться в режиме ожидания до его завершения; значение по умолчанию — 2 часа
- период тревоги – время агрегирования (в секундах), используемое CloudWatch Alarm для расчета тайм-аута простоя; значение по умолчанию — 20 минут
- (необязательный) Идентификатор домена SageMaker и имя профиля пользователя
- Разверните стек CloudFormation для создания ресурсов.
После развертывания (это должно занять менее двух минут) функция AWS Lambda и сигнал тревоги Amazon CloudWatch настраиваются на автоматическое закрытие приложения Canvas в случае простоя. Чтобы протестировать скрипт автоматического выключения, выполните следующие действия:
- Убедитесь, что приложение SageMaker Canvas работает в правильном домене и с правильным профилем пользователя (если вы его настроили).
- Прекратите использование приложения SageMaker Canvas и дождитесь периода простоя (по умолчанию, 2 часа).
- Убедитесь, что приложение остановлено после простоя в течение порогового времени, проверив, что сработал сигнал тревоги CloudWatch и после запуска автоматизации оно вернулось в нормальное состояние.
В нашем тесте мы установили период простоя равным двум часам (7200 секундам). На следующем графике, построенном Amazon CloudWatch Metrics, вы можете видеть, что приложение SageMaker Canvas отправляет TimeSinceLastActive
метрики до достижения порогового значения (1), которое вызвало сигнал тревоги. После срабатывания тревоги была выполнена функция AWS Lambda, которая удалила приложение и вернула показатель ниже порогового значения (2).
Заключение
В этом посте мы реализовали решение для автоматического завершения простоя приложений SageMaker Canvas с помощью AWS Lambda и CloudWatch Alarm, а также недавно созданной метрики простоя из SageMaker Canvas. Благодаря этому решению клиенты могут не только оптимизировать затраты на рабочие нагрузки машинного обучения, но также избежать непредвиденных расходов за приложения, которые, как они забыли, работали в их домене SageMaker.
Мы с нетерпением ждем возможности увидеть, какие новые варианты использования и рабочие нагрузки клиенты смогут решить, не беспокоясь об этом решении. Дополнительные примеры того, как SageMaker Canvas может помочь вам в достижении ваших бизнес-целей, можно найти в следующих публикациях:
Чтобы узнать, как запускать рабочие нагрузки производственного уровня с помощью Amazon SageMaker Canvas, прочтите следующие публикации:
Об авторах
Давиде Галлителли — старший специалист по архитектуре решений для искусственного интеллекта и машинного обучения. Он живет в Брюсселе и тесно сотрудничает с клиентами по всему миру, которые хотят внедрить технологии машинного обучения с низким кодом и без кода, а также генеративный искусственный интеллект. Он был разработчиком с самого раннего возраста и начал программировать в возрасте 7 лет. Он начал изучать AI/ML в университете и с тех пор влюбился в это.
Хуонг Нгуен — старший менеджер по продукту в AWS. Она возглавляет интеграцию экосистемы данных в SageMaker и имеет 14-летний опыт создания ориентированных на клиента и управляемых данными продуктов как для предприятий, так и для потребителей.
Гунджан Гарг — главный инженер команды Amazon SageMaker в AWS, обеспечивающей техническое руководство продуктом. Последние 5 лет она работала на нескольких должностях в организации AI/ML и в настоящее время занимается Amazon SageMaker Canvas.
Зияо Хуан — инженер-разработчик программного обеспечения в Amazon SageMaker Data Wrangler. Он увлечен созданием отличных продуктов, которые упрощают машинное обучение для клиентов. Вне работы Зияо любит читать и тусоваться с друзьями.