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

Початок роботи з розгортанням моделей реального часу на Amazon SageMaker

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

  1. Висновок у реальному часі
  2. Безсерверний висновок
  3. Асинхронний висновок
  4. Пакетне перетворення

Ці чотири параметри можна в цілому класифікувати на онлайнові та пакетні варіанти висновку. У режимі онлайнового висновку очікується, що запити оброблятимуться по мірі надходження, а програма-споживач очікує відповіді після обробки кожного запиту. Це може відбуватися або синхронно (вивід у реальному часі, без сервера), або асинхронно (асинхронний висновок). У синхронному шаблоні програма-споживач блокується і не може продовжити, доки не отримає відповідь. Ці робочі навантаження, як правило, стосуються додатків у реальному часі, таких як онлайн-виявлення шахрайства з кредитними картками, де відповіді очікуються в порядку від мілісекунд до секунд, а корисне навантаження запитів невелике (кілька МБ). В асинхронному шаблоні робота програми не блокується (наприклад, подання страхової претензії через мобільний додаток) і зазвичай вимагає більшого розміру корисного навантаження та/або більшого часу обробки. У офлайновому висновку агрегація (пакет) запитів на висновок обробляється разом, а відповіді надаються лише після обробки всього пакета. Зазвичай ці робочі навантаження не чутливі до затримки, передбачають великі обсяги (кілька ГБ) даних і плануються з регулярною частотою (наприклад, запустіть виявлення об’єктів на записах камер спостереження в кінці дня або обробіть дані про заробітну плату в кінці дня). кінець місяця).

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

Вибір варіанту розгортання моделі

Вибір правильного типу висновку може бути важким, і наступний простий посібник може вам допомогти. Це не сувора блок-схема, тому, якщо ви виявите, що інший варіант підходить вам краще, сміливо використовуйте його. Зокрема, Real-Time Inference є чудовим варіантом для розміщення ваших моделей, коли у вас низька та постійна затримка (порядку мілісекунд або секунд) і робочі навантаження, чутливі до пропускної здатності. Ви можете контролювати тип екземпляра та підрахунок за кінцевою точкою під час налаштування Автомасштабування політика обробки трафіку. Є ще два параметри SageMaker Inference, які також можна використовувати для створення кінцевої точки. Асинхронний висновок — це коли у вас є великі розміри корисного навантаження та пропускна здатність майже в реальному часі. Це хороший варіант, особливо для моделей NLP і Computer Vision, які мають довший час попередньої обробки. Безсерверний висновок — чудовий варіант, коли у вас є переривчастий трафік і ви не хочете керувати масштабуванням інфраструктури. Рецепт створення кінцевої точки залишається незмінним незалежно від вибраного вами типу висновку. У цьому дописі ми зосередимося на створенні кінцевої точки на основі екземпляра в реальному часі, але ви можете легко адаптувати її до будь-якого з інших варіантів висновку на основі вашого випадку використання. Нарешті, пакетний висновок відбувається в автономному режимі, тож ви можете надати набір даних, з яких хочете отримати висновок, і ми його запустимо. Це так само базується на екземплярах, тому ви можете вибрати оптимальний екземпляр для свого робочого навантаження. Оскільки кінцева точка не працює, ви платите лише за тривалість роботи. Це добре для обробки гігабайтів даних, а тривалість роботи може становити кілька днів. Існують вбудовані функції, які полегшують роботу зі структурованими даними, і оптимізація для автоматичного розподілу структурованих даних. Деякі приклади використання: моделювання схильності, прогнозне обслуговування та прогнозування відтоку. Усе це може відбуватися офлайн масово, оскільки не потрібно реагувати на конкретну подію.

Розміщення моделі на SageMaker Endpoints

По суті, SageMaker Real-Time Endpoints складається з моделі та інфраструктури, за допомогою яких ви вирішуєте підтримувати кінцеву точку. SageMaker використовує контейнери для розміщення моделей, що означає, що вам потрібен контейнер, який належним чином налаштовує середовище для фреймворку, який ви використовуєте для кожної моделі, яку ви надаєте. Наприклад, якщо ви працюєте з моделлю Sklearn, ви повинні передати свої сценарії/дані моделі в контейнер, який правильно налаштовує Sklearn. На щастя, SageMaker надає керовані зображення для популярних фреймворків, таких як TensorFlow, PyTorch, Sklearn і HuggingFace. Ви можете отримувати та використовувати ці зображення за допомогою високого рівня SageMaker Python SDK і вставте свої сценарії моделі та дані в ці контейнери. У випадку, якщо SageMaker не має підтримуваного контейнера, ви також можете Створіть свій власний контейнер і надішліть свій власний власний образ, установивши залежності, необхідні для вашої моделі.

SageMaker підтримує як навчені, так і попередньо навчені моделі. У попередньому параграфі, коли ми говоримо про модельні сценарії/дані, ми посилаємося на це питання. Ви можете змонтувати сценарій у своєму контейнері або, якщо у вас є попередньо навчений артефакт моделі (наприклад, `model.joblib` для SKLearn), тоді ви можете надати це разом із своїм зображенням SageMaker. Щоб зрозуміти SageMaker Inference, є три основні сутності, які ви створите в процесі створення кінцевої точки:

  1. SageMaker Model Entity – тут ви можете передати навчені дані моделі/сценарій моделі та зображення, з яким ви працюєте, незалежно від того, чи належить воно AWS, чи створено вами.
  2. Створення конфігурації кінцевої точки – тут ви визначаєте свою інфраструктуру, тобто ви вибираєте тип екземпляра, кількість тощо.
  3. Створення кінцевої точки – це кінцева точка REST, на якій розміщено вашу модель, яку ви викликаєте, щоб отримати відповідь. Давайте розглянемо, як ви можете використовувати керований образ SageMaker і власний створений на замовлення образ для розгортання кінцевої точки.

Вимоги до кінцевої точки реального часу

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

Кінцеві точки SageMaker складаються з a Модель SageMaker та Конфігурація кінцевої точки.
Якщо ви використовуєте Boto3, ви повинні створити обидва об’єкти. В іншому випадку, якщо ви використовуєте SageMaker Python SDK, тоді конфігурація кінцевої точки створюється від вашого імені, коли ви використовуєте .deploy(..) функції.

Сутності SageMaker:

  • Модель SageMaker:
    • Містить деталі вихідного зображення, розташування артефактів моделі в Amazon Simple Storage Service (Amazon S3), конфігурація мережі та AWS Identity and Access Management (IAM) роль, яку використовуватиме Кінцева точка.
      • SageMaker вимагає, щоб ваші артефакти моделі були стиснуті в a .tar.gz файл. SageMaker автоматично витягує це .tar.gz файл у файл /opt/ml/model/ каталог у вашому контейнері. Якщо ви використовуєте один із контейнерів фреймворку, як-от TensorFlow, PyTorch або MXNet, тоді контейнер очікує, що ваша структура TAR буде такою:
        • TensorFlow
          model.tar.gz/
          |--[model_version_number]/
          |--variables
          |--saved_model.pb
          code/
          |--inference.py
          |--requirements.txt

        • PyTorch
          model.tar.gz/
          |- model.pth
          |- code/
          |- inference.py
          |- requirements.txt # only for versions 1.3.1 and higher

        • MX Net
          model.tar.gz/
          |- model-symbol.json
          |- model-shapes.json
          |- model-0000.params
          |- code/
              |- inference.py
              |- requirements.txt # only for versions 1.6.0 and higher

        • Sklearn
          model.tar.gz/
          |- model.joblib
          | code/ 
          |- inference.py

      • Використовуючи образ Framework, ми можемо надати спеціальний сценарій точки входу, де ми можемо реалізувати власну попередню та післяобробку. У нашому випадку сценарій висновку упакований у model.tar.gz у каталозі /code.
    • Конфігурація кінцевої точки
      • Містить інформацію про інфраструктуру, необхідну для розгортання моделі SageMaker на кінцевій точці.
      • Наприклад, тут вказано створену нами модель SageMaker, а також тип екземпляра та кількість початкових екземплярів.

Фреймворки та BYOC

    • Отримання зображень SageMaker
      • Ця частина не завжди є необхідною, і вона виділяється SageMaker Python SDK за допомогою оцінювачів. Однак, якщо ви бажаєте мати можливість отримати кероване зображення SageMaker, щоб розширити його, ви можете отримати зображення, доступні через SDK. Нижче наведено приклад отримання зображення TF 2.2 для висновку.
        import sagemaker
        tf_image = sagemaker.image_uris.retreive(framework="tensorflow", region="us-east-1",
        image_scope = "inference", version = "2.2", instance_type = "ml.c5.xlarge)
        print(tf_image)

    • Frameworks
      • У випадку, якщо ви хочете розгорнути модель Framework, таку як TensorFlow, PyTorch або MXNet, все, що вам потрібно, це артефакти моделі.
      • Перегляньте документацію щодо розгортання моделей безпосередньо з артефактів моделі для TensorFlow, PyTorchабо MX Net.
    • Вибір між 1P і BYOC
      • SageMaker SDK також абстрагує обробку зображення, як ви бачили в попередньому розділі Frameworks. Він має готові оцінювачі для Sklearn, TensorFlow і PyTorch, які автоматично вибирають для вас зображення на основі вибраної версії. Потім ви можете пройти сценарій навчання/виведення Режим сценарію у ці оцінки.
        from sagemaker.pytorch import PyTorch #PyTorch Estimator within SageMaker SDK
        estimator_parameters = {"entry_point": "train_deploy_pytorch_without_dependencies.py",
        "source_dir": "pytorch_script","instance_type": train_instance_type,
        "instance_count": 1,"hyperparameters": hyperparameters,
        "role": role,"base_job_name": "pytorch-model","framework_version": "1.5",
        "py_version": "py3",}
        
        ## Model Training
        estimator = PyTorch(**estimator_parameters)estimator.fit(inputs)
        
        ## Deploy Trained model
        pytorch_predictor = estimator.deploy(initial_instance_count=1, instance_type="ml.m5.xlarge", endpoint_name=pytorch_endpoint_name)

      • Не всі пакунки та зображення підтримуються SageMaker, і в цьому випадку ви повинні принесіть власний контейнер (BYOC). Це означає створення Dockerfile, який налаштує належне середовище для обслуговування вашої моделі. Прикладом цього є модуль Spacy NLP, для якого немає керованих контейнерів SageMaker. Тому ви повинні надати Dockerfile, який інсталює Spacy. Усередині контейнера ви також монтуєте сценарії виведення моделі. Давайте швидко обговоримо компоненти, які ви надаєте у форматі Bring Your Own Container, оскільки вони залишаються послідовними для більшості прикладів.
        • «nginx.conf» це файл конфігурації для інтерфейсу nginx. Вам не доведеться редагувати цей файл, якщо ви не хочете налаштувати ці частини.
        • “predictor.py” це програма, яка фактично реалізує веб-сервер Flask і код моделі для вашої програми. У вашому контейнері можуть бути додаткові файли або функції Python, які можна викликати в цьому файлі.
        • «подавати» програма запускається, коли контейнер запускається для розміщення. Він просто запускає сервер gunicorn, який запускає кілька екземплярів програми Flask, визначеної в predictor.py. Як і nginx.conf, вам не потрібно редагувати цей файл, якщо ви не бажаєте виконати додаткові налаштування.
        • «поїзд» це програма, яка викликається, коли контейнер запускається для навчання. Ви зміните цю програму, щоб реалізувати свій алгоритм навчання. Якщо ви використовуєте попередньо навчену модель або фреймворк, наприклад Spacy, цей файл вам не потрібен.
        • “wsgi.py” це невелика оболонка, яка використовується для виклику програми Flask. Ви повинні мати можливість прийняти цей файл як є, якщо ви не змінили назву файлу predictor.py. У такому випадку переконайтеся, що карти тут належним чином.
    • Спеціальний сценарій висновку
      • Контейнери SageMaker Framework надають вам гнучкість у обробці запиту до/після завантаження моделі за допомогою спеціального сценарію точки входу/inference.py.
      • Перегляньте документацію щодо створення спеціального сценарію inference.py для TensorFlow, PyTorch та MX Net.
    • Спеціальний контейнер

Різні способи взаємодії з кінцевими точками SageMaker

Існує багато варіантів програмного використання SageMaker, щоб ви могли викликати свої розгорнуті моделі, щоб отримати висновки. The Інтерфейс командного рядка AWS (AWS CLI), REST API, AWS CloudFormation, AWS Cloud Development Kit (AWS CDK) і пакети SDK для AWS є поширеними інструментами, які пропонує AWS і широко підтримуються іншими службами AWS. Для SageMaker ми також маємо SDK SageMaker Python. Тепер давайте порівняємо різні варіанти створення, виклику та керування кінцевими точками SageMaker.

На додаток до SageMaker CLI, є два способи програмної взаємодії з кінцевими точками в SageMaker через SDK. Давайте розглянемо деякі відмінності між SageMaker Python SDK та Boto3 Python SDK:

  1. SDK високого рівня SageMaker “Python” – цей SDK є бібліотекою з відкритим вихідним кодом, яка забезпечує абстракцію вищого рівня, спеціально призначену для програмного виклику API SageMaker за допомогою Python. Хороша частина цього SDK полягає в тому, що дуже легко викликати API sagemaker, багато важкої роботи вже зроблено, наприклад виклик API в синхронному/асинхронному режимі (допомагає уникнути опитування), простіша схема запитів/відповідей, набагато менше коду та багато іншого простіший код. SageMaker Python SDK надає кілька абстракцій високого рівня для роботи з SageMaker. Пакет призначений для спрощення різних процесів машинного навчання на SageMaker.
  2. Низькорівневий AWS SDK (Boto3 SDK) – цей SDK працює на нижчому рівні, дозволяючи користувачеві вибирати з підтримуваних мов програмування та програмно викликати будь-які служби AWS. Це стосується не лише SageMaker, але й може використовуватися загалом для всіх служб AWS. Низькорівневі SDK AWS доступні різними мовами програмування, такими як .NET, Python, Java, Node.js тощо. Одним із популярних використовуваних SDK є boto3 python SDK, який популярний у спільноті спеціалістів із обробки даних для ML. Хороша частина цього SDK полягає в тому, що він дуже легкий і доступний за замовчуванням, установленим на AWS Lambda Час виконання. Крім того, ви можете використовувати цей SDK для взаємодії з будь-якою службою AWS за межами SageMaker.

Обидва ці SDK можна використовувати для тих самих завдань, але в деяких випадках інтуїтивно зрозуміліше використовувати один частіше, ніж інший. SageMaker Python SDK рекомендовано для легкого тестування, тоді як AWS SDK/Boto3 рекомендовано для виробничих випадків використання для кращого контролю продуктивності. Наприклад, SageMaker як сервіс надає готові та підтримувані образи для популярних фреймворків, таких як Sklearn, PyTorch і TensorFlow. Особливо корисним може бути використання SageMaker SDK для отримання зображень із глибоким навчанням, використання моделей навчання Оцінювачіі легко розгорнути модель за допомогою простого виклику API. Можна знайти приклад, щоб продемонструвати це в дії тут.

З іншого боку, іноді у вас є попередньо навчені моделі або різні фреймворки, які ви можете використовувати. Це вимагає значного налаштування, а SageMaker SDK не завжди пропонує це. У нас є три важливі кроки та відповідні виклики boto3 API, які нам потрібно виконати, щоб розгорнути кінцеву точку: Створення моделі, Створення конфігурації кінцевої точки та Створення кінцевої точки. Перші дві сутності були абстраговані за допомогою SageMaker SDK із нашими підтримуваними фреймворками, але ми бачимо ці деталі з Boto3 SDK. Розгорнутий приклад для демонстрації етапів використання Boto3 SDK для створення та керування кінцевою точкою можна знайти тут.

Розглядання хостингу SageMaker

SageMaker Real-Time Inference має дві основні оптимізації, які ви можете розглянути: 1/ оптимізація продуктивності та 2/ оптимізація витрат. Давайте спочатку подивимося оптимізація продуктивності, тому що коли ми маємо справу з навантаженнями, чутливими до затримки, кожна мілісекунда має вирішальне значення. Існують різні ручки, які можна налаштувати, щоб оптимізувати затримку та пропускну здатність. На рівні екземпляра можна використовувати Рекомендатор висновків, наш вбудований інструмент тестування навантаження, який допоможе вам вибрати правильний тип екземпляра та підрахувати його для вашого робочого навантаження. Використання правильної комбінації обчислень допоможе підвищити продуктивність і вартість. Ви також можете налаштувати на рівні контейнера та фреймворку.
Серед запитань, які варто поставити собі:

  1. Який фреймворк ви використовуєте?
  2. Чи є якісь змінні середовища, які можна налаштувати у своєму контейнері?

Прикладом цього є максимізація Продуктивність TensorFlow із контейнерами SageMaker. Ще один приклад оптимізації рівня контейнера з використанням gRPC а не REST позаду вашої кінцевої точки. Нарешті, ви також можете оптимізувати на рівні сценарію. Ваш код висновку потребує додаткового часу на певних блоках? Вибір часу кожного рядка вашого сценарію допоможе вам виявити будь-які вузькі місця у вашому коді.

Є три способи розгляду покращення використання кінцевої точки реального часу:

  1. Багатомодельні кінцеві точки (MME)
    • Ви можете розмістити тисячі моделей за однією кінцевою точкою. Це ідеально підходить для тих випадків, коли вам не потрібна окрема кінцева точка для кожної з ваших моделей. MME працює найкраще, коли моделі мають подібний розмір і затримку та належать до однієї структури ML. Зазвичай їх можна використовувати, коли вам не потрібно постійно викликати ту саму модель. Ви можете динамічно завантажувати відповідну модель у кінцеву точку SageMaker для виконання вашого запиту. Можна знайти приклад, який демонструє MME у дії тут. Якщо ви хочете дізнатися більше про різні застереження та найкращі методи розміщення моделей на MME, зверніться до публікації тут.
  2. Багатоконтейнерні кінцеві точки (MCE)
    • Замість того, щоб використовувати кілька кінцевих точок для розміщення кількох контейнерів, ви можете розмістити до 15 контейнерів на одній кінцевій точці. Кожен із цих контейнерів можна викликати безпосередньо. Таким чином, ви можете подивитися на розміщення різних моделей різних фреймворків на одній кінцевій точці. Цей варіант найкращий, якщо контейнери демонструють подібні характеристики використання та продуктивності. Можна знайти приклад, який демонструє MCE тут. Якщо ви хочете дізнатися більше про різні застереження та найкращі методи розміщення моделей на MCE, зверніться до публікації тут.
  3. Послідовний конвеєр виведення (SIP)
    • Якщо у вас є конвеєр кроків у вашій логіці висновку, ви можете використовувати послідовний конвеєр виведення (SIP). SIP дозволяє з’єднувати 2-15 контейнерів разом за однією кінцевою точкою. SIP добре працює, коли у вас є етапи попередньої та постобробки. Якщо ви хочете дізнатися більше про шаблони проектування для конвеєрів послідовного виведення, зверніться до публікації тут.

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

SageMaker також пропонує Ощадні плани. Плани економії можуть скоротити ваші витрати до 64%. Це 1 або 3-річне зобов’язання щодо постійного обсягу використання ($/год.). Дивіться це link для отримання додаткової інформації. І подивіться це link щоб найкраще оптимізувати витрати на Inference на Amazon SageMaker.

Висновок

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

Дивіться відповідний GitHub сховище і спробуйте приклади.


Про авторів

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

Початок роботи з розгортанням моделей реального часу на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Рам Вегіражу є архітектором ML у команді SageMaker Service. Він зосереджується на допомозі клієнтам створювати й оптимізувати свої рішення AI/ML на Amazon SageMaker. У вільний час любить подорожувати та писати.

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

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

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

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

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