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

Шаблони проектування для послідовного висновку на Amazon SageMaker

У міру того як машинне навчання (ML) стає мейнстримом і набуває все більшого поширення, програми на базі ML стають все більш поширеними для вирішення низки складних бізнес-завдань. Рішення цих складних бізнес-проблем часто вимагає використання кількох моделей ML. Ці моделі можна послідовно об’єднувати для виконання різних завдань, таких як попередня обробка, перетворення даних, вибір моделі, генерація висновків, консолідація висновків і постобробка. Організаціям потрібні гнучкі варіанти для організації цих складних робочих процесів машинного навчання. Послідовні конвеєри виводу є одним із таких шаблонів проектування для впорядкування цих робочих процесів у серію кроків, де кожен крок збагачує або додатково обробляє вихідні дані, створені попередніми кроками, і передає вихідні дані на наступний крок у конвеєрі.

Крім того, ці послідовні конвеєри виведення повинні забезпечувати наступне:

  • Гнучка та індивідуальна реалізація (залежності, алгоритми, бізнес-логіка тощо)
  • Повторюваність і послідовність для виробництва
  • Недиференційований важкий підйом за рахунок мінімізації управління інфраструктурою

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

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

Використовуйте Case Опис випадку використання Основні міркування Загальна складність впровадження Рекомендовані варіанти реалізації Артефакти зразків коду та блокноти
Послідовний конвеєр виведення (включаючи етапи попередньої та постобробки) Конвеєр висновків повинен попередньо обробити вхідні дані перед тим, як викликати навчену модель для генерації висновків, а потім обробити згенеровані висновки, щоб їх можна було легко використовувати наступними програмами Простота реалізації низький Контейнер висновків за допомогою інструментарію SageMaker Inference Toolkit Розгорніть навчену модель PyTorch
Послідовний конвеєр виведення (включаючи етапи попередньої та постобробки) Конвеєр висновків повинен попередньо обробити вхідні дані перед тим, як викликати навчену модель для генерації висновків, а потім обробити згенеровані висновки, щоб їх можна було легко використовувати наступними програмами Відокремлення, спрощене розгортання та оновлення Medium Конвеєр висновку SageMaker Конвеєр виведення з користувацькими контейнерами та xgBoost
Серійний модельний ансамбль Конвеєр виведення повинен розміщувати та впорядковувати кілька моделей послідовно, щоб кожна модель посилювала висновок, створений попередньою, перш ніж генерувати остаточний висновок Відокремлення, спрощене розгортання та оновлення, гнучкість у виборі каркаса моделі Medium Конвеєр висновку SageMaker Конвеєр висновків із Scikit-learn і Linear Learner
Послідовний конвеєр виведення (з цільовим викликом моделі з групи) На додаток до завдань попередньої та постобробки конвеєр виведення повинен викликати певну налаштовану модель із групи розгорнутих моделей на основі характеристик запиту або для оптимізації витрат. Оптимізація витрат і налаштування Високий Конвеєр виведення SageMaker із мультимодельними кінцевими точками (MME) Мультимодельні кінцеві точки Amazon SageMaker за допомогою Linear Learner

У наступних розділах ми детальніше обговорюємо кожен варіант використання.

Послідовний конвеєр виведення з використанням контейнерів виведення

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

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

SageMaker MMS очікує сценарій Python, який реалізує такі функції для завантаження моделі, попередньої обробки вхідних даних, отримання прогнозів із моделі та постобробки вихідних даних:

  • input_fn () – Відповідає за десеріалізацію та попередню обробку вхідних даних
  • model_fn () – Відповідає за завантаження навченої моделі з артефактів Служба простого зберігання Amazon (Amazon S3)
  • predict_fn () – Відповідає за створення висновків з моделі
  • output_fn() – Відповідає за серіалізацію та постобробку вихідних даних (висновки)

Докладні кроки щодо налаштування контейнера висновків див Адаптація власного контейнера висновків.

Контейнери виведення є ідеальним шаблоном проектування для випадків використання конвеєра послідовного виводу з наступними основними міркуваннями:

  • Висока згуртованість – Логіка обробки та відповідна модель керують єдиною бізнес-функціональністю та потребують спільного розташування
  • Низька загальна затримка – Час, що минув між поданням запиту на висновок і отриманням відповіді

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

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

Послідовний конвеєр виведення з використанням конвеєра виведення SageMaker

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

  • Розв'язка – Різні етапи конвеєра мають чітко визначену мету, і їх потрібно виконувати в окремих контейнерах через задіяні базові залежності. Це також допомагає зберегти структуру трубопроводу.
  • Frameworks – На різних етапах конвеєра використовуються спеціальні фреймворки, що відповідають цілям (наприклад, scikit або Spark ML), і тому їх потрібно запускати в окремих контейнерах.
  • Ізоляція ресурсів – Різні етапи конвеєра мають різні вимоги до споживання ресурсів, тому їх потрібно запускати в окремих контейнерах для більшої гнучкості та контролю.

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

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

ml9154-конвеєр-виведення

Конвеєр висновків SageMaker складається з лінійної послідовності з 2–15 контейнерів, які обробляють запити на висновки щодо даних. Конвеєр виведення надає можливість використовувати попередньо навчені вбудовані алгоритми SageMaker або спеціальні алгоритми, упаковані в контейнери Docker. Контейнери розміщені на одному базовому екземплярі, що допомагає зменшити загальну затримку та мінімізувати витрати.

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

Ми починаємо зі створення та визначення моделей на основі Spark ML і XGBoost, які ми маємо намір використовувати як частину конвеєра:

from sagemaker.model import Model
from sagemaker.pipeline_model import PipelineModel
from sagemaker.sparkml.model import SparkMLModel
sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
sparkml_model = SparkMLModel(model_data=sparkml_data)
xgb_model = Model(model_data=xgb_model.model_data, image=training_image)

Потім моделі впорядковуються послідовно у визначенні моделі конвеєра:

model_name = 'serial-inference-' + timestamp_prefix
endpoint_name = 'serial-inference-ep-' + timestamp_prefix
sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model])

Потім конвеєр виводу розгортається за кінцевою точкою для висновку в реальному часі, вказуючи тип і кількість екземплярів хосту ML:

sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)

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

Конвеєри висновків SageMaker повністю керовані. Коли конвеєр розгортається, SageMaker встановлює та запускає всі визначені контейнери на кожному з Обчислювальна хмара Amazon Elastic (Amazon EC2) екземпляри, надані як частина кінцевої точки або завдання пакетного перетворення. Крім того, оскільки контейнери розташовані та розміщені в одному екземплярі EC2, загальна затримка конвеєра зменшується.

Ансамбль серійної моделі з використанням конвеєра виведення SageMaker

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

Давайте розглянемо конкретний приклад, пов’язаний із ансамблем серійних моделей, де нам потрібно згрупувати завантажені користувачем зображення на основі певних тем або тем. Цей конвеєр може складатися з трьох моделей ML:

  • Модель 1 – Приймає зображення як вхідні дані та оцінює якість зображення на основі роздільної здатності зображення, орієнтації тощо. Потім ця модель намагається підвищити якість зображення та надсилає оброблені зображення, які відповідають певному порогу якості, до наступної моделі (модель 2).
  • Модель 2 – Приймає зображення, перевірені за допомогою моделі 1, і працює розпізнавання зображень для визначення об’єктів, місць, людей, тексту та інших спеціальних дій і понять на зображеннях. Вихідні дані з моделі 2, які містять ідентифіковані об’єкти, надсилаються до моделі 3.
  • Модель 3 – Приймає вихідні дані з моделі 2 і виконує завдання обробки природної мови (NLP), такі як тематичне моделювання для групування зображень разом на основі тем. Наприклад, зображення можна згрупувати на основі місця розташування або ідентифікованих людей. Вихідні дані (групи) надсилаються назад клієнтській програмі.

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

ml9154-модель-ансамбль

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

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

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

Послідовний конвеєр виведення (із цільовим викликом моделі з групи) за допомогою конвеєра виведення SageMaker

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

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

мл9154-мме

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

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

Одним із ключових міркувань під час використання MME є розуміння моделі поведінки затримки виклику. Як обговорювалося раніше, під час виклику моделі динамічно завантажуються в пам’ять контейнера екземпляра, на якому розміщена кінцева точка. Таким чином, виклик моделі може зайняти більше часу, коли він викликається вперше. Коли модель вже знаходиться в пам’яті контейнера екземпляра, наступні виклики відбуваються швидше. Якщо пам’ять екземпляра використовується високо і потрібно завантажити нову модель, невикористані моделі вивантажуються. Якщо обсяг пам’яті екземпляра заповнений, невикористані моделі видаляються з обсягу пам’яті. SageMaker повністю керує завантаженням і вивантаженням моделей без виконання будь-яких спеціальних дій. Однак важливо розуміти цю поведінку, оскільки вона впливає на затримку виклику моделі та, отже, на загальну наскрізну затримку.

Параметри конвеєрного хостингу

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

Тепер ви можете використовувати NVIDIA Triton Inference Server для обслуговування моделей для виведення на SageMaker для неоднорідних вимог до обчислень. Перевірити Розгорніть швидкий і масштабований AI за допомогою NVIDIA Triton Inference Server в Amazon SageMaker для отримання додаткової інформації.

Висновок

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

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


Про авторів

Шаблони проектування для послідовного висновку на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Рахул Шарма є старшим архітектором рішень у AWS Data Lab, допомагаючи клієнтам AWS проектувати та створювати рішення AI/ML. До того, як приєднатися до AWS, Рахул кілька років працював у фінансовому та страховому секторі, допомагаючи клієнтам створювати дані та аналітичні платформи.

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

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

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

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

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