Перейти к содержимому

Руководство по развертыванию YOLOv8 на конечных точках Amazon SageMaker

Развертывание продвинутых моделей компьютерного зрения, таких как Ultralytics' YOLOv8, на конечных точках Amazon SageMaker открывает широкие возможности для различных приложений машинного обучения. Ключ к эффективному использованию этих моделей лежит в понимании процессов их настройки, конфигурации и развертывания. YOLOv8 становится еще более мощным, когда он органично интегрирован с Amazon SageMaker, надежным и масштабируемым сервисом машинного обучения от AWS.

Это руководство шаг за шагом проведет тебя через процесс развертывания моделей YOLOv8 PyTorch на конечных точках Amazon SageMaker. Ты узнаешь, как подготовить среду AWS, настроить модель соответствующим образом и использовать для развертывания такие инструменты, как AWS CloudFormation и AWS Cloud Development Kit (CDK).

Amazon SageMaker

Обзор Amazon SageMaker

Amazon SageMaker - это сервис машинного обучения от Amazon Web Services (AWS), который упрощает процесс построения, обучения и развертывания моделей машинного обучения. Он предоставляет широкий набор инструментов для работы с различными аспектами рабочих процессов машинного обучения. Сюда входят автоматизированные функции для настройки моделей, опции для обучения моделей в масштабе и простые методы для развертывания моделей в производстве. SageMaker поддерживает популярные фреймворки машинного обучения, обеспечивая гибкость, необходимую для разнообразных проектов. Его функции также охватывают маркировку данных, управление рабочими процессами и анализ производительности.

Развертывание YOLOv8 на конечных точках Amazon SageMaker

Развертывание YOLOv8 на Amazon SageMaker позволит тебе использовать его управляемую среду для выводов в реальном времени и воспользоваться такими функциями, как автомасштабирование. Взгляни на архитектуру AWS ниже.

Архитектура AWS

Шаг 1: Настрой свою среду AWS

Для начала убедись, что у тебя есть следующие необходимые условия:

  • Аккаунт AWS: Если у тебя его еще нет, зарегистрируй аккаунт AWS.

  • Настроенные роли IAM: Тебе понадобится IAM-роль с необходимыми разрешениями для Amazon SageMaker, AWS CloudFormation и Amazon S3. У этой роли должны быть политики, которые позволят ей получить доступ к этим сервисам.

  • AWS CLI: Если он еще не установлен, скачай и установи интерфейс командной строки AWS (CLI) и настройте его, указав данные своего аккаунта. Следуй инструкциям AWS CLI по установке.

  • AWS CDK: если он еще не установлен, установи AWS Cloud Development Kit (CDK), который будет использоваться для написания сценариев развертывания. Следуй инструкциям по установке AWS CDK.

  • Достаточная квота на обслуживание: Убедись, что у тебя достаточно квот для двух отдельных ресурсов в Amazon SageMaker: один для ml.m5.4xlarge для использования конечных точек, а другой - для ml.m5.4xlarge для использования экземпляра ноутбука. Для каждого из них требуется минимум одно значение квоты. Если твои текущие квоты ниже этого требования, необходимо запросить увеличение каждой из них. Ты можешь запросить увеличение квоты, следуя подробным инструкциям в Документация по квотам на услуги AWS.

Шаг 2: Клонируй репозиторий YOLOv8 SageMaker.

Следующий шаг - клонирование специального AWS-репозитория, содержащего ресурсы для развертывания YOLOv8 на SageMaker. Этот репозиторий, размещенный на GitHub, включает в себя необходимые CDK-скрипты и конфигурационные файлы.

  • Клонируй репозиторий GitHub: Выполни в терминале следующую команду, чтобы клонировать репозиторий host-yolov8-on-sagemaker-endpoint:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • Перейди в каталог клонированного хранилища: Измени свою директорию на клонированный репозиторий:
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

Шаг 3: Настрой среду CDK

Теперь, когда у тебя есть необходимый код, настрой свое окружение для развертывания с помощью AWS CDK.

  • Создай виртуальную среду Python : Это изолирует твою Python среду и зависимости. Запускай:
python3 -m venv .venv
  • Активируй виртуальную среду:
source .venv/bin/activate
  • Установи зависимости: Установи необходимые Python зависимости для проекта:
pip3 install -r requirements.txt
  • Обнови библиотеку AWS CDK: Убедись, что у тебя установлена последняя версия библиотеки AWS CDK:
pip install --upgrade aws-cdk-lib

Шаг 4: Создай стек AWS CloudFormation.

  • Синтезируй CDK-приложение: Сгенерируй шаблон AWS CloudFormation из твоего кода CDK:
cdk synth
  • Загрузи приложение CDK: Подготовь свое окружение AWS к развертыванию CDK:
cdk bootstrap
  • Разверни стек: Это позволит создать необходимые ресурсы AWS и развернуть твою модель:
cdk deploy

Шаг 5: Разверни модель YOLOv8 .

Прежде чем погрузиться в инструкцию по развертыванию, обязательно ознакомься с ассортиментом моделейYOLOv8 , предлагаемых Ultralytics. Это поможет тебе выбрать наиболее подходящую модель под требования твоего проекта.

После создания стека AWS CloudFormation следующим шагом будет развертывание YOLOv8.

  • Открой экземпляр ноутбука: Зайди в AWS Console и перейди на сервис Amazon SageMaker. На приборной панели выбери "Notebook Instances", а затем найди экземпляр блокнота, который был создан твоим скриптом развертывания CDK. Открой экземпляр блокнота, чтобы получить доступ к среде Jupyter.

  • Получи доступ к файлу inference.py и измени его: Открыв экземпляр блокнота SageMaker в Jupyter, найди файл inference.py. Отредактируй функцию output_fn в inference.py, как показано ниже, и сохрани свои изменения в скрипте, убедившись, что в нем нет синтаксических ошибок.

import json

def output_fn(prediction_output, content_type):
    """Formats model outputs as JSON string according to content_type, extracting attributes like boxes, masks, keypoints."""
    print("Executing output_fn from inference.py ...")
    infer = {}
    for result in prediction_output:
        if result.boxes is not None:
            infer['boxes'] = result.boxes.numpy().data.tolist()
        if result.masks is not None:
            infer['masks'] = result.masks.numpy().data.tolist()
        if result.keypoints is not None:
            infer['keypoints'] = result.keypoints.numpy().data.tolist()
        if result.obb is not None:
            infer['obb'] = result.obb.numpy().data.tolist()
        if result.probs is not None:
            infer['probs'] = result.probs.numpy().data.tolist()
    return json.dumps(infer)
  • Разверни конечную точку с помощью 1_DeployEndpoint.ipynb: в среде Jupyter открой блокнот 1_DeployEndpoint.ipynb, расположенный в директории sm-notebook. Следуй инструкциям в блокноте и запусти ячейки, чтобы загрузить модель YOLOv8, упаковать ее с обновленным кодом выводов и загрузить в ведро Amazon S3. Блокнот проведет тебя через создание и развертывание конечной точки SageMaker для модели YOLOv8.

Шаг 6: Проверь свою установку

Теперь, когда твоя модель YOLOv8 развернута, важно проверить ее производительность и функциональность.

  • Открой тестовый блокнот: В той же среде Jupyter найди и открой блокнот 2_TestEndpoint.ipynb, также находящийся в директории sm-notebook.

  • Запусти тестовый блокнот: Следуй инструкциям в блокноте, чтобы протестировать развернутую конечную точку SageMaker. Это включает в себя отправку изображения на конечную точку и выполнение умозаключений. Затем ты построишь график вывода, чтобы визуализировать производительность и точность модели, как показано ниже.

Результаты тестирования YOLOv8

  • Ресурсы для очистки: Тестовый блокнот также проведет тебя через процесс очистки конечной точки и размещенной модели. Это важный шаг для эффективного управления затратами и ресурсами, особенно если ты не планируешь сразу использовать развернутую модель.

Шаг 7: Мониторинг и управление

После тестирования очень важен постоянный мониторинг и управление твоей развернутой моделью.

  • Осуществляй мониторинг с помощью Amazon CloudWatch: Регулярно проверяй производительность и здоровье своей конечной точки SageMaker с помощью Amazon CloudWatch.

  • Управляй конечной точкой: Используй консоль SageMaker для постоянного управления конечной точкой. Это включает в себя масштабирование, обновление или переразвертывание модели по мере необходимости.

Выполнив эти шаги, ты успешно развернешь и протестируешь модель YOLOv8 на Amazon SageMaker Endpoints. Этот процесс не только вооружит тебя практическим опытом использования сервисов AWS для развертывания машинного обучения, но и заложит фундамент для развертывания других продвинутых моделей в будущем.

Резюме

В этом руководстве ты шаг за шагом пройдешь путь развертывания YOLOv8 на конечных точках Amazon SageMaker с помощью AWS CloudFormation и AWS Cloud Development Kit (CDK). Процесс включает в себя клонирование необходимого репозитория GitHub, настройку среды CDK, развертывание модели с помощью сервисов AWS и тестирование ее работы на SageMaker.

Для получения более подробной технической информации обратись к этой статье на AWS Machine Learning Blog. Также ты можешь ознакомиться с официальной документацией Amazon SageMaker, чтобы получить больше информации о различных возможностях и функциях.

Тебе интересно узнать больше о различных интеграциях YOLOv8 ? Загляни на страницу руководства по интеграциямUltralytics и узнай о дополнительных инструментах и возможностях, которые могут улучшить твои проекты по машинному обучению.



Создано 2024-01-04, Обновлено 2024-05-03
Авторы: glenn-jocher (3), abirami-vina (1)

Комментарии