Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Мінімізуйте вплив оновлень моделі ML на виробництво за допомогою тіньового тестування Amazon SageMaker

Amazon SageMaker тепер дозволяє порівнювати продуктивність нової версії стека для обслуговування моделі з поточною розгорнутою версією до повного розгортання виробництва, використовуючи практику безпеки розгортання, відому як тіньове тестування. Тіньове тестування може допомогти вам виявити потенційні помилки конфігурації та проблеми з продуктивністю, перш ніж вони вплинуть на кінцевих користувачів. Завдяки SageMaker вам не потрібно інвестувати в створення інфраструктури тіньового тестування, що дозволяє зосередитися на розробці моделі. SageMaker піклується про розгортання нової версії разом із поточною версією, яка обслуговує робочі запити, направляючи частину запитів до тіньової версії. Потім ви можете порівняти продуктивність двох версій, використовуючи такі показники, як затримка та частота помилок. Це дає вам більшу впевненість у тому, що розгортання виробництва на кінцевих точках висновку SageMaker не призведе до регресії продуктивності, і допомагає уникнути збоїв через випадкові неправильні налаштування.

У цій публікації ми демонструємо цю нову можливість SageMaker. Відповідний зразок блокнота доступний на цьому GitHub Сховище.

Огляд рішення

Ваша інфраструктура обслуговування моделі складається з моделі машинного навчання (ML), контейнера обслуговування або екземпляра обчислення. Розглянемо такі сценарії:

  • Ви плануєте просувати нову модель, перевірену в автономному режимі, у виробництво, але бажаєте оцінити показники операційної продуктивності, такі як затримка, частота помилок тощо, перш ніж приймати це рішення.
  • Ви плануєте внести зміни в контейнер інфраструктури обслуговування, як-от виправлення вразливостей або оновлення до новіших версій, і хочете оцінити вплив цих змін, перш ніж перейти до робочої версії.
  • Ви збираєтеся змінити свій екземпляр ML і бажаєте оцінити, як новий екземпляр працюватиме із запитами на логічні висновки.

Наступна схема ілюструє нашу архітектуру рішення.

Для кожного з цих сценаріїв виберіть робочий варіант, який ви хочете перевірити, і SageMaker автоматично розгортає новий варіант у тіньовому режимі та направляє копію запитів на висновок у режимі реального часу в тій самій кінцевій точці. Додатку, що викликає, повертаються лише відповіді виробничого варіанту. Ви можете відхилити або зареєструвати відповіді тіньового варіанту для порівняння в автономному режимі. За бажанням ви можете контролювати варіанти за допомогою вбудованої інформаційної панелі з паралельним порівнянням показників продуктивності. Цю можливість можна використовувати через API кінцевої точки оновлення висновків SageMaker або через консоль SageMaker.

Тіньові варіанти будуються на основі можливостей виробничого варіанту в кінцевих точках висновку SageMaker. Повторюю, а виробничий варіант складається з моделі ML, контейнера обслуговування та примірника ML. Оскільки кожен варіант не залежить від інших, ви можете мати різні моделі, контейнери або типи екземплярів для різних варіантів. SageMaker дозволяє вказувати політики автоматичного масштабування для кожного варіанта, щоб вони могли масштабуватися незалежно залежно від вхідного завантаження. SageMaker підтримує до 10 робочих варіантів для кожної кінцевої точки. Ви можете або налаштувати варіант на отримання частини вхідного трафіку, встановивши ваги варіанта, або вказати цільовий варіант у вхідному запиті. Відповідь із робочого варіанту пересилається назад ініціатору.

A тіньовий варіант (новий) має ті самі компоненти, що й виробничий варіант. Зазначена користувачем частина запитів, відома як відсоток вибірки трафіку, перенаправляється до тіньового варіанту. Ви можете зареєструвати відповідь тіньового варіанту Служба простого зберігання Amazon (Amazon S3) або викиньте його.

Зверніть увагу, що SageMaker підтримує максимум один тіньовий варіант на кінцеву точку. Для кінцевої точки з тіньовим варіантом може бути щонайбільше один робочий варіант.

Після налаштування робочого та тіньового варіантів ви можете контролювати метрики виклику як для виробництва, так і для тіньових варіантів Amazon CloudWatch під AWS/SageMaker простір імен. Усі оновлення кінцевої точки SageMaker організовано за допомогою синьо-зелені розгортання і відбуваються без втрати доступності. Ваші кінцеві точки продовжуватимуть відповідати на робочі запити, коли ви додасте, зміните або видалите тіньові варіанти.

Цю можливість можна використовувати одним із двох способів:

  • Кероване тіньове тестування за допомогою консолі SageMaker – Ви можете використовувати консоль для керованого досвіду, щоб керувати наскрізною подорожжю тіньового тестування. Це дає змогу встановлювати тіньові тести на заздалегідь визначений період часу, відстежувати прогрес за допомогою інформаційної панелі в реальному часі, очищати після завершення та діяти відповідно до результатів.
  • Тіньове тестування самообслуговування за допомогою API SageMaker Inference – Якщо ваш робочий процес розгортання вже використовує API створення/оновлення/видалення кінцевої точки, ви можете продовжувати використовувати їх для керування тіньовими варіантами.

У наступних розділах ми розглянемо кожен із цих сценаріїв.

Сценарій 1 – Кероване тіньове тестування за допомогою консолі SageMaker

Якщо ви бажаєте вибрати SageMaker для керування наскрізним робочим процесом створення, керування та виконання результатів тіньових тестів, розгляньте можливість використання тіньових тестів у розділі Inference консолі SageMaker. Як зазначалося раніше, це дає змогу налаштувати тіньові тести на попередньо визначений період часу, відстежувати прогрес за допомогою інформаційної панелі в реальному часі, надавати параметри очищення після завершення та діяти відповідно до результатів. Щоб дізнатися більше, відвідайте тіньові тести розділ нашої документації для покрокового ознайомлення з цією можливістю.

Передумови

Моделі для виробництва та тіні потрібно створити на SageMaker. Будь ласка, зверніться до CreateModel API тут.

Крок 1 – Створіть тіньовий тест

перейдіть до Висновок розділ лівої навігаційної панелі консолі SageMaker, а потім виберіть Тіньові тести. Ви перейдете на інформаційну панель із усіма запланованими, запущеними та завершеними тіньовими тестами. Натисніть "створити тіньовий тест". Введіть назву для тесту та оберіть далі.

Ви перейдете на сторінку налаштувань тіньового тесту. Ви можете вибрати наявну роль IAM або створити ту, яка має AmazonSageMakerFullAccess Політика IAM додається. Далі виберіть "Створити нову кінцеву точку і введіть назву (xgb-prod-shadow-1). Ви можете додати один робочий і один тіньовий варіанти, пов’язані з цією кінцевою точкою, натиснувши «додати" у розділі Варіанти. Ви можете вибрати моделі, які ви створили в «Додати модель' діалогове вікно. Це створює виробництво або варіант. За бажанням ви можете змінити тип екземпляра та кількість, пов’язану з кожним варіантом.

Весь трафік спрямовується на робочий варіант і відповідає на запити виклику. Ви можете контролювати частину запитів, які спрямовуються до тіньового варіанту, змінивши Traffic Sampling Percentage.

Ви можете контролювати тривалість тесту від однієї години до 30 днів. Якщо не вказано, за умовчанням він становить 7 днів. Після закінчення цього терміну тест вважається завершеним. Якщо ви запускаєте тест на існуючій кінцевій точці, після завершення його буде відкочено до стану, що передував запуску тесту.

За потреби ви можете захопити запити та відповіді варіанту Shadow за допомогою Захоплення даних параметри. Якщо не вказано, відповіді тіньового варіанту відкидаються.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Крок 2 – Монітор тіньового тесту

Ви можете переглянути список тіньових тестів, перейшовши до Shadow Tests розділ під Висновки. Клацніть тіньовий тест, створений на попередньому кроці, щоб переглянути деталі тіньового тесту та спостерігати за ним під час його виконання або після його завершення.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

У розділі «Показники» представлено порівняння ключових показників і накладені графіки між робочим і тіньовим варіантами, а також описову статистику. Ви можете порівняти показники виклику, наприклад ModelLatency та Invocation4xxErrors а також метрики екземплярів, такі як CPUUtilization та DiskUtilization.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Крок 3 – просування тіньового варіанту до нового робочого варіанту

Після порівняння ви можете вибрати, щоб тіньовий варіант став новим виробничим варіантом, або видалити тіньовий варіант. Для обох цих параметрів виберіть "Позначити як завершене' у верхній частині сторінки. Це надає вам можливість підвищити або видалити тіньовий варіант.

Якщо ви вирішите просувати, вас буде спрямовано на сторінку розгортання, де ви зможете підтвердити налаштування варіанту перед розгортанням. Перед розгортанням ми рекомендуємо визначити розмір тіньових варіантів, щоб вони могли обробляти 100% трафіку викликів. Якщо ви не використовуєте тіньове тестування для оцінки альтернативних типів або розмірів екземплярів, ви можете скористатися опцією "зберегти налаштування варіантів виробництва. В іншому випадку ви можете вибрати "зберегти параметри тіньового варіанту. Якщо ви обираєте цей варіант, переконайтеся, що для вибірки трафіку встановлено 100%. Крім того, ви можете вказати тип екземпляра та кількість, якщо ви бажаєте змінити ці налаштування.

Щойно ви підтвердите розгортання, SageMaker ініціює оновлення вашої кінцевої точки, щоб розмістити тіньовий варіант у новому робочому варіанті. Як і у випадку з усіма оновленнями SageMaker, ваша кінцева точка все ще працюватиме під час оновлення.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Сценарій 2: Тіньове тестування за допомогою API висновків SageMaker

У цьому розділі описано, як використовувати існуючі API кінцевої точки створення/оновлення/видалення SageMaker для розгортання тіньових варіантів.

Для цього прикладу ми маємо дві моделі XGBoost, які представляють дві різні версії попередньо навчених моделей. model.tar.gz це модель, яка зараз використовується у виробництві. model2 є новішою моделлю, і ми хочемо перевірити її продуктивність з точки зору операційних показників, таких як затримка, перш ніж вирішити використовувати її у виробництві. Ми розгортаємо model2 як тіньовий варіант model.tar.gz. Обидві попередньо навчені моделі зберігаються в публічному відрі S3 s3://sagemaker-sample-files. Спочатку ми завантажуємо модель нашого локального обчислювального екземпляра, а потім завантажуємо в S3.

Моделі в цьому прикладі використовуються для прогнозування ймовірності того, що мобільний клієнт залишить поточного оператора мобільного зв’язку. Набір даних, який ми використовуємо, є загальнодоступним і згадується в книзі Відкриття знань у даних Деніел Т. Лароуз. Ці моделі були навчені за допомогою Блокнот прогнозування відтоку XGB у SageMaker. Ви також можете використовувати власні попередньо навчені моделі, у цьому випадку ви можете пропустити завантаження з s3://sagemaker-sample-files і скопіюйте власні моделі безпосередньо в папку model/.

!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model.tar.gz model/
!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model2.tar.gz model/

Крок 1 – Створення моделей

Ми завантажуємо файли моделі в наше власне відро S3 і створюємо дві моделі SageMaker. Перегляньте наступний код:

model_url = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
)
model_url2 = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model2.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
from sagemaker import image_uris
image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-1")
image_uri2 = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-2")

model_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
model_name2 = f"DEMO-xgb-churn-pred2-{datetime.now():%Y-%m-%d-%H-%M-%S}"

resp = sm.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri, "ModelDataUrl": model_url}],
)

resp = sm.create_model(
    ModelName=model_name2,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri2, "ModelDataUrl": model_url2}],
)

Крок 2. Розгорніть дві моделі як робочий і тіньовий варіанти до кінцевої точки висновку в реальному часі

Ми створюємо конфігурацію кінцевої точки з робочим і тіньовим варіантами. The ProductionVariants та ShadowProductionVariants представляють особливий інтерес. Обидва ці варіанти мають екземпляри ml.m5.xlarge з 4 vCPU і 16 ГіБ пам’яті, а початковий підрахунок екземплярів встановлено на 1. Перегляньте наступний код:

ep_config_name = f"Shadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"
production_variant_name = "production"
shadow_variant_name = "shadow"
create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=ep_config_name,
    ProductionVariants=[
    # Type: Array of ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html) objects
      { 
         "VariantName": shadow_variant_name,
        {
            "VariantName": production_variant_name,
            "ModelName": model_name,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1,
        }
    ],
     # Type: Array of ShadowProductionVariants 
    ShadowProductionVariants = [
         "ModelName": model_name2,
         "InitialInstanceCount": 1,
         "InitialVariantWeight": 0.5,
         "InstanceType": "ml.m5.xlarge" 
      }
   ]
)

Нарешті, ми створюємо робочий і тіньовий варіанти:

endpoint_name = f"xgb-prod-shadow-{datetime.now():%Y-%m-%d-%H-%M-%S}"
create_endpoint_api_response = sm.create_endpoint(
                                    EndpointName=endpoint_name,
                                    EndpointConfigName=ep_config_name,
                                )

Крок 3 – виклик кінцевої точки для тестування

Після успішного створення кінцевої точки ви можете почати її викликати. Ми надсилаємо близько 3,000 запитів по черзі:

def invoke_endpoint(endpoint_name, wait_interval_sec=0.01, should_raise_exp=False):
    with open("test_data/test-dataset-input-cols.csv", "r") as f:
        for row in f:
            payload = row.rstrip("n")
            try:
                for i in range(10): #send the same payload 10 times for testing purpose
                    response = sm_runtime.invoke_endpoint(
                        EndpointName=endpoint_name, ContentType="text/csv", Body=payload
                    )
            except Exception as e:
                print("E", end="", flush=True)
                if should_raise_exp:
                    raise e

invoke_endpoint(endpoint_name)

Крок 4 – Порівняйте показники

Тепер, коли ми розгорнули робочу та тіньову моделі, давайте порівняємо показники виклику. Список метрик викликів, доступних для порівняння, див Відстежуйте Amazon SageMaker за допомогою Amazon CloudWatch. Почнемо з порівняння викликів робочого та тіньового варіантів.

Команда InvocationsPerInstance метрика стосується кількості викликів, надісланих до робочого варіанту. Частина цих викликів, указана у вазі варіанта, надсилається до тіньового варіанту. Виклик на екземпляр обчислюється шляхом ділення загальної кількості викликів на кількість екземплярів у варіанті. Як показано на наступних діаграмах, ми можемо підтвердити, що робочий і тіньовий варіанти отримують запити на виклик відповідно до вагових коефіцієнтів, указаних у конфігурації кінцевої точки.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Далі порівняємо затримку моделі (ModelLatency метричний) між виробничим і тіньовим варіантами. Затримка моделі – це час, потрібний моделі для відповіді, якщо дивитися в SageMaker. Ми можемо спостерігати, як затримка моделі тіньового варіанту порівнюється з робочим варіантом, не наражаючи кінцевих користувачів на тіньовий варіант.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Ми очікуємо затримки накладних витрат (OverheadLatency метрика), щоб бути порівнянними між робочими та тіньовими варіантами. Затримка накладних витрат – це інтервал, виміряний від часу, коли SageMaker отримує запит, до моменту, коли він повертає відповідь клієнту, мінус затримка моделі.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Крок 5. Просувайте свій тіньовий варіант

Щоб перевести тіньову модель у робочу, створіть нову конфігурацію кінцевої точки з поточною ShadowProductionVariant як новий ProductionVariant і видаліть ShadowProductionVariant. Це прибере струм ProductionVariant і просувати тіньовий варіант, щоб він став новим виробничим варіантом. Як завжди, усі оновлення SageMaker організовано як синьо-зелені розгортання під капотом, і під час оновлення доступність не втрачається.

За бажанням можна скористатися плечем Розгортання огороджень якщо ви хочете використовувати перемикання всього трафіку й автоматичний відкат під час оновлення.

promote_ep_config_name = f"PromoteShadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"

create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=promote_ep_config_name,
    ProductionVariants=[
        {
            "VariantName": shadow_variant_name,
            "ModelName": model_name2,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1.0,
        }
    ],
)
print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")

update_endpoint_api_response = sm.update_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=promote_ep_config_name,
)

wait_for_endpoint_in_service(endpoint_name)

sm.describe_endpoint(EndpointName=endpoint_name)

Крок 6 – Очищення

Якщо ви не плануєте використовувати цю кінцеву точку далі, вам слід видалити кінцеву точку, щоб уникнути додаткових витрат і очистити інші ресурси, створені в цьому блозі.

dsm.delete_endpoint(EndpointName=endpoint_name)
sm.delete_endpoint_config(EndpointConfigName=ep_config_name)
sm.delete_endpoint_config(EndpointConfigName=promote_ep_config_name)
sm.delete_model(ModelName=model_name)
sm.delete_model(ModelName=model_name2)

Висновок

У цій публікації ми представили нову можливість висновку SageMaker для порівняння продуктивності нової версії стека обслуговування моделі з поточною розгорнутою версією перед повним розгортанням виробництва, використовуючи практику безпеки розгортання, відому як тіньове тестування. Ми розповіли вам про переваги використання тіньових варіантів і методи налаштування варіантів за допомогою наскрізний приклад. Щоб дізнатися більше про тіньові варіанти, зверніться до тіньових тестів документація.


Про авторів

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Рагу Рамеша є архітектором рішень машинного навчання в команді Amazon SageMaker Service. Він зосереджується на допомозі клієнтам створювати, розгортати та переносити робочі навантаження ML на SageMaker у великих масштабах. Він спеціалізується на машинному навчанні, штучному інтелекті та комп’ютерному зорі, а також має ступінь магістра комп’ютерних наук в UT Dallas. У вільний час захоплюється подорожами та фотографією.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Цінвей Лі є спеціалістом з машинного навчання в Amazon Web Services. Отримав ступінь доктора філософії. в дослідженні операцій після того, як він зламав грантовий рахунок свого радника і не вручив обіцяну Нобелівську премію. Зараз він допомагає клієнтам у сфері фінансових послуг і страхування створювати рішення машинного навчання на AWS. У вільний час любить читати та викладати.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Цюнь Чжао є старшим інженером з розробки програмного забезпечення команди Amazon SageMaker Inference Platform. Він є провідним розробником Deployment Guardrails і Shadow Deployments, і він зосереджується на допомозі клієнтам керувати робочими навантаженнями й розгортаннями в масштабі з високою доступністю. Він також працює над розвитком архітектури платформи для швидкого й безпечного розгортання завдань МЛ і легкого проведення онлайн-експериментів МЛ. У вільний час він любить читати, грати та подорожувати.

Мінімізуйте вплив оновлень моделей машинного навчання на виробництво за допомогою тіньового тестування Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Тарун Сайрам є старшим менеджером із продуктів Amazon SageMaker Inference. Йому цікаво дізнаватися про останні тенденції машинного навчання та допомагати клієнтам використовувати їх. У вільний час любить кататися на велосипеді, лижах і грати в теніс.

Часова мітка:

Більше від AWS Машинне навчання