Шаблони розміщення моделей у SageMaker: передові методи тестування та оновлення моделей у SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Шаблони розміщення моделей у SageMaker: найкращі методи тестування та оновлення моделей у SageMaker

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

  • Для синхронних передбачень, які потрібно обслуговувати в порядку мілісекунд, використовуйте SageMaker висновок у реальному часі
  • Для робочих навантажень, які мають періоди простою між стрибками трафіку та можуть переносити холодний запуск, використовуйте Безсерверний висновок
  • Для запитів із великим розміром корисного навантаження до 1 ГБ, тривалим часом обробки (до 15 хвилин) і вимогами до затримки майже в реальному часі (від секунд до хвилин) використовуйте SageMaker Асинхронний висновок
  • Щоб отримати прогнози для всього набору даних, використовуйте SageMaker пакетне перетворення

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

Існують певні випадки використання, коли ви хочете розгорнути кілька варіантів однієї моделі у виробництві, щоб оцінити їх продуктивність, виміряти покращення або запустити A/B-тестування. У таких випадках багатоваріантні кінцеві точки SageMaker є корисними, оскільки вони дозволяють розгортати кілька виробничих варіантів моделі в одній кінцевій точці SageMaker.

У цій публікації ми обговорюємо багатоваріантні кінцеві точки SageMaker і найкращі методи оптимізації.

Порівняння варіантів висновків SageMaker у реальному часі

На наступній діаграмі наведено короткий огляд параметрів виводу в реальному часі за допомогою SageMaker.

Кінцева точка з однією моделлю дозволяє розгортати одну модель у контейнері, розміщеному на виділених екземплярах або без сервера, для низької затримки та високої пропускної здатності. Ви можете створити модель і retrieve a Образ, який підтримує SageMaker для таких популярних фреймворків, як TensorFlow, PyTorch, Scikit-learn тощо. Якщо ви працюєте з настроюваною структурою для своєї моделі, ви також можете принести свій контейнер який встановлює ваші залежності.

SageMaker також підтримує розширені параметри, такі як мультимодельні кінцеві точки (MME) і мультиконтейнерні кінцеві точки (MCE). MME корисні, коли ви маєте справу з сотнями чи десятками тисяч моделей і де вам не потрібно розгортати кожну модель як окрему кінцеву точку. MME дозволяють розміщувати кілька моделей економічно ефективним і масштабованим способом в одній кінцевій точці за допомогою спільного контейнера для обслуговування, розміщеного на екземплярі. Базова інфраструктура (контейнер і екземпляр) залишається незмінною, але моделі завантажуються та вивантажуються динамічно із загального розташування S3 відповідно до використання та обсягу пам’яті, доступної на кінцевій точці. Вашій програмі просто потрібно включити виклик API з цільовою моделлю до цієї кінцевої точки, щоб досягти низької затримки та високої пропускної здатності. Замість того, щоб платити за окрему кінцеву точку для кожної моделі, ви можете розмістити багато моделей за ціною однієї кінцевої точки.

MCE дозволяють запускати до 15 різних контейнерів ML на одній кінцевій точці та викликати їх незалежно. Ви можете створити ці контейнери ML на різних стеках обслуговування (таких як фреймворк ML, модельний сервер і алгоритм), щоб вони запускалися на одній кінцевій точці для економії коштів. Ви можете зшити контейнери разом в a послідовний конвеєр виведення або викликати контейнер самостійно. Це може бути ідеальним, якщо у вас є кілька різних моделей ML з різними моделями трафіку та подібними потребами в ресурсах. Приклади використання MCE включають, але не обмежуються, наступне:

  • Розміщення моделей у різних фреймворках (таких як TensorFlow, PyTorch і Scikit-learn), які не мають достатнього трафіку для насичення повної потужності екземпляра
  • Розміщення моделей з одного фреймворку з різними алгоритмами ML (такими як рекомендації, прогнозування або класифікація) і функціями обробки
  • Порівняння подібних архітектур, що працюють на різних версіях фреймворку (наприклад, TensorFlow 1.x проти TensorFlow 2.x) для таких сценаріїв, як A/B-тестування

Багатоваріантні кінцеві точки (MVE) SageMaker дозволяють тестувати кілька моделей або версій моделі за однією кінцевою точкою, використовуючи робочі варіанти. Кожен робочий варіант визначає модель ML і ресурси, розгорнуті для розміщення моделі, наприклад контейнер обслуговування та екземпляр.

Огляд багатоваріантних кінцевих точок SageMaker

У робочих процесах ML науковці та інженери ML вдосконалюють моделі за допомогою різноманітних методів, таких як перепідготовка на основі дрейфу даних/моделі/концепції, налаштування гіперпараметрів, вибір функцій, вибір структури тощо. Виконання A/B-тестування між новою моделлю та старою моделлю з робочим трафіком може бути ефективним останнім кроком у процесі перевірки нової моделі. Під час A/B-тестування ви тестуєте різні варіанти своїх моделей і порівнюєте ефективність кожного варіанта відносно один одного. Потім ви вибираєте найефективнішу модель, щоб замінити попередню модель новою версією, яка забезпечує кращу продуктивність, ніж попередня версія. Використовуючи робочі варіанти, ви можете тестувати ці моделі ML і різні версії моделей за тією самою кінцевою точкою. Ви можете навчати ці моделі ML, використовуючи різні набори даних, різні алгоритми та фреймворки ML; розгорнути їх у різних типах екземплярів; або будь-яка комбінація цих варіантів. Балансувальник навантаження, підключений до кінцевої точки SageMaker, надає можливість розподіляти запити на виклик між кількома варіантами виробництва. Наприклад, ви можете розподілити трафік між робочими варіантами, вказавши розподіл трафіку для кожного варіанту, або ви можете викликати певний варіант безпосередньо для кожного запиту.

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

На наступній діаграмі більш детально показано, як працює MVE.

Багатоваріантна кінцева точка SageMaker

Розгортання MVE також дуже просте. Усе, що вам потрібно зробити, це визначити об’єкти моделі із зображенням і даними моделі за допомогою create_model побудувати з SageMaker Python SDK і визначити конфігурації кінцевої точки за допомогою production_variant конструкції для створення виробничих варіантів, кожен зі своєю окремою моделлю та вимогами до ресурсів (тип екземпляра та кількість). Це також дає змогу тестувати моделі на різних типах екземплярів. Для розгортання використовуйте endpoint_from_production_variant конструкція для створення кінцевої точки.

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

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

У попередньому прикладі ми створили два варіанти, кожен зі своєю моделлю (вони також можуть мати різні типи екземплярів і кількість). Ми встановили initial_weight з 1 для обох варіантів: це означає, що 50% наших запитів надходять до Variant1, а решта 50% до Variant2. Сума ваг для обох варіантів дорівнює 2, і кожному варіанту присвоєно вагу 1. Це означає, що кожен варіант отримує 50% загального трафіку.

Виклик кінцевої точки подібний до звичайної конструкції SageMaker invoke_endpoint; Ви можете викликати кінцеву точку безпосередньо з даними як корисним навантаженням:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

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

Щоб викликати певну версію моделі, вкажіть варіант як TargetVariant у дзвінку до invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

Ви можете оцінити продуктивність кожного варіанту виробництва, переглядаючи такі показники, як точність, точність, відкликання, оцінка F1 та робочі характеристики/площа під кривою приймача для кожного варіанту за допомогою Монітор моделі Amazon SageMaker. Потім ви можете вирішити збільшити трафік до найкращої моделі, оновивши ваги, призначені кожному варіанту, зателефонувавши Оновити EndpointWeightsAndCapacities. Це змінює розподіл трафіку на робочі варіанти, не вимагаючи оновлення вашої кінцевої точки. Таким чином, замість 50% трафіку від початкового налаштування ми переводимо 75% трафіку на Variant2 шляхом призначення нових ваг кожному варіанту за допомогою UpdateEndpointWeightsAndCapacities. Дивіться наступний код:

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

Коли ви задоволені продуктивністю варіанта, ви можете спрямувати 100% трафіку на цей варіант. Наприклад, ви можете встановити вагу для Variant1 до 0 і вага для Variant2 до 1. Потім SageMaker надсилає 100% усіх запитів на висновок до Variant2. Потім ви можете безпечно оновити свою кінцеву точку та видалити Variant1 від вашої кінцевої точки. Ви також можете продовжити тестування нових моделей у виробництві, додавши нові варіанти до кінцевої точки. Ви також можете налаштувати ці кінцеві точки на автоматичне масштабування на основі трафіку, який отримують кінцеві точки.

Переваги багатоваріантних кінцевих точок

MVE SageMaker дозволяють виконувати такі дії:

  • Розгортайте та тестуйте кілька варіантів моделі за допомогою однієї кінцевої точки SageMaker. Це корисно для тестування варіантів моделі у виробництві. Наприклад, припустімо, що ви розгорнули модель у виробництві. Ви можете протестувати варіант моделі, спрямувавши невелику кількість трафіку, скажімо, 5%, на нову модель.
  • Оцініть продуктивність моделі у виробництві, не перериваючи трафік, відстежуючи робочі показники для кожного варіанту в CloudWatch.
  • Оновлюйте моделі у виробництві без втрати доступності. Ви можете змінити кінцеву точку, не виводячи з експлуатації моделі, які вже розгорнуто у виробництві. Наприклад, ви можете додати нові варіанти моделі, оновити конфігурації екземплярів обчислень ML існуючих варіантів моделі або змінити розподіл трафіку між варіантами моделі. Для отримання додаткової інформації див UpdateEndpoint та Оновити EndpointWeightsAndCapacities.

Проблеми під час використання багатоваріантних кінцевих точок

SageMaker MVE має такі проблеми:

  • Зусилля тестування навантаження – Вам потрібно докласти чимало зусиль і ресурсів для тестування та порівняння матриці моделей для кожного варіанту. Щоб A/B-тест вважався успішним, вам потрібно виконати статистичний аналіз показників, зібраних під час тесту, щоб визначити, чи є статистично значущий результат. Звести до мінімуму дослідження неефективних варіантів може стати складним завданням. Ви могли б потенційно використати багаторукий бандит метод оптимізації, щоб уникнути надсилання трафіку на експерименти, які не працюють, і оптимізувати продуктивність під час тестування. Для тестування навантаження ви також можете дослідити Amazon SageMaker Inference Recommender для проведення широких тестів на основі виробничих вимог щодо затримки та пропускної здатності, користувацьких моделей трафіку та екземплярів (до 10), які ви вибираєте.
  • Тісний зв’язок між варіантом моделі та кінцевою точкою – Це може стати складним залежно від частоти розгортання моделі, оскільки кінцева точка може опинитися в updating статус для кожного оновленого варіанту виробництва. SageMaker також підтримує розгортання огороджень, який ви можете використовувати для легкого контрольованого переходу від поточної моделі у виробництві до нової. Цей варіант вводить канарейка та лінійний режими переміщення трафіку, щоб ви могли детально контролювати переміщення трафіку від вашої поточної моделі до нової під час оновлення. Завдяки вбудованим запобіжним заходам, таким як автоматичне відкатування, ви можете виявити проблеми на ранній стадії та автоматично вжити заходів для їх усунення, перш ніж вони спричинять значний вплив на продуктивність.

Найкращі практики для багатоваріантних кінцевих точок

Розміщуючи моделі за допомогою MVE SageMaker, враховуйте наступне:

  • SageMaker чудово підходить для тестування нових моделей, оскільки ви можете легко розгорнути їх у середовищі тестування A/B і платити лише за те, що використовуєте. З вас стягується плата за годину інсталяції, використану для кожного екземпляра під час роботи кінцевої точки. Коли ви закінчите з тестуванням і більше не використовуєте кінцеву точку або варіанти широко, вам слід видалити його, щоб заощадити кошти. Ви завжди можете відтворити його, коли він вам знадобиться знову, оскільки модель зберігається в Служба простого зберігання Amazon (Amazon S3).
  • Ви повинні використовувати найоптимальніший тип і розмір екземпляра для розгортання моделей. Наразі SageMaker пропонує Екземпляри обчислень ML на різних сімействах примірників. Екземпляр кінцевої точки працює весь час (поки екземпляр обслуговується). Тому вибір правильного типу екземпляра може значно вплинути на загальну вартість і продуктивність моделей ML. Тестування навантаженням це найкраща практика для визначення відповідного типу екземпляра та розміру парку з автоматичним масштабуванням або без нього для вашої живої кінцевої точки, щоб уникнути надмірного надання та оплати додаткової ємності, яка вам не потрібна.
  • Ви можете контролювати продуктивність моделі та використання ресурсів у CloudWatch. Ви можете налаштувати a ProductionVariant to use Автоматичне масштабування програми. Щоб указати показники та цільові значення для політики масштабування, ви налаштовуєте політику масштабування відстеження цілей. Ви можете використовувати або попередньо визначену метрику, або спеціальну метрику. Щоб отримати додаткові відомості про синтаксис конфігурації політики, див TargetTrackingScalingPolicyConfiguration. Інформацію про налаштування автоматичного масштабування див Автоматично масштабуйте моделі Amazon SageMaker. Щоб швидко визначити політику масштабування цільового відстеження для варіанта, ви можете вибрати конкретну метрику CloudWatch і встановити порогові значення. Наприклад, використовуйте метрику SageMakerVariantInvocationsPerInstance щоб відстежувати середню кількість разів на хвилину, коли кожен екземпляр для варіанта викликається, або використовуйте метрику CPUUtilization для моніторингу суми роботи, яку виконує центральний процесор. У наступному прикладі використовується SageMakerVariantInvocationsPerInstance попередньо визначену метрику, щоб налаштувати кількість екземплярів варіантів, щоб кожен екземпляр мав InvocationsPerInstance метрика 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • Зміна або видалення артефактів моделі або зміна коду висновку після розгортання моделі призводить до непередбачуваних результатів. Перш ніж розгортати моделі в робочій версії, радимо перевірити, чи успішно розміщено модель у локальному режимі після достатнього налагодження фрагментів коду висновку (наприклад, model_fn, input_fn, predict_fn та output_fn) у локальному середовищі розробки, як-от екземпляр блокнота SageMaker або локальний сервер. Якщо вам потрібно змінити або видалити артефакти моделі або змінити код висновку, змініть кінцеву точку, надавши нову конфігурацію кінцевої точки. Після надання нової конфігурації кінцевої точки ви можете змінити або видалити артефакти моделі, що відповідають старій конфігурації кінцевої точки.
  • Ви можете використовувати SageMaker пакетне перетворення тестувати варіанти виробництва. Пакетне перетворення ідеально підходить для отримання висновків із великих наборів даних. Ви можете створити окреме завдання трансформації для кожного нового варіанту моделі та використовувати набір даних для перевірки. Для кожного завдання трансформації вкажіть унікальну назву моделі та розташування в Amazon S3 для вихідного файлу. Для аналізу результатів використовуйте журнали конвеєра висновків і метрики.

Висновок

SageMaker дозволяє легко тестувати A/B моделі ML у виробництві, запускаючи кілька варіантів виробництва на кінцевій точці. Ви можете використовувати можливості SageMaker для тестування моделей, які були навчені з використанням різних навчальних наборів даних, гіперпараметрів, алгоритмів або фреймворків ML; як вони працюють на різних типах екземплярів; або поєднання всього перерахованого вище. Ви можете надати розподіл трафіку між варіантами на кінцевій точці, і SageMaker розподілить трафік висновку на варіанти на основі вказаного розподілу. Крім того, якщо ви хочете протестувати моделі для певних сегментів клієнтів, ви можете вказати варіант, який має обробляти запит на висновок, надавши TargetVariant заголовок, і SageMaker спрямує запит до вказаного вами варіанта. Додаткову інформацію про тестування A/B див Безпечне оновлення моделей у виробництві.

посилання


Про авторів

Шаблони розміщення моделей у SageMaker: передові методи тестування та оновлення моделей у SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Діпалі Раджале є спеціалістом зі штучного інтелекту та ML, технічним менеджером з роботи з клієнтами в Amazon Web Services. Вона працює з корпоративними клієнтами, надаючи технічні рекомендації щодо впровадження рішень машинного навчання з передовим досвідом. У вільний час вона любить піші прогулянки, перегляд фільмів і спілкування з родиною та друзями.

Шаблони розміщення моделей у SageMaker: передові методи тестування та оновлення моделей у SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Дхавал Патель є головним архітектором машинного навчання в AWS. Він працював з організаціями, починаючи від великих підприємств і закінчуючи стартапами середнього розміру, над проблемами, пов’язаними з розподіленими обчисленнями та штучним інтелектом. Він зосереджується на глибокому навчанні, включаючи домени НЛП та комп’ютерного зору. Він допомагає клієнтам досягти високопродуктивної моделі висновку на SageMaker.

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

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

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