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

Руководство по развертыванию 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):
    """Formats model outputs as JSON string, 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 и узнай о дополнительных инструментах и возможностях, которые могут улучшить твои проекты по машинному обучению.

ВОПРОСЫ И ОТВЕТЫ

Как развернуть модель Ultralytics YOLOv8 на конечных точках Amazon SageMaker?

Чтобы развернуть модель Ultralytics YOLOv8 на конечных точках Amazon SageMaker, выполни следующие шаги:

  1. Настрой свое окружение AWS: Убедись, что у тебя есть AWS-аккаунт, IAM-роли с необходимыми правами и настроенный AWS CLI . Установи AWS CDK, если это еще не сделано (смотри инструкцию по AWS CDK).
  2. Клонируй репозиторий YOLOv8 SageMaker.:
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    
  3. Настрой среду CDK: Создай виртуальное окружение Python , активируй его, установи зависимости и обнови библиотеку AWS CDK.
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. Развертывание с помощью AWS CDK: Синтезируй и разверни стек CloudFormation, загрузи окружение.
    cdk synth
    cdk bootstrap
    cdk deploy
    

Для получения более подробной информации просмотри раздел документации.

Каковы предварительные условия для развертывания YOLOv8 на Amazon SageMaker?

Чтобы развернуть YOLOv8 на Amazon SageMaker, убедись, что у тебя есть следующие предварительные условия:

  1. Аккаунт AWS: Активный аккаунт AWS(зарегистрируйся здесь).
  2. Роли IAM: Настрой IAM-роли с разрешениями для SageMaker, CloudFormation и Amazon S3.
  3. AWS CLI: Установил и настроил интерфейс командной строки AWS(руководство по установке AWS CLI ).
  4. AWS CDK: Установленный AWS Cloud Development Kit(руководство по настройке CDK).
  5. Квоты на обслуживание: Достаточные квоты для ml.m5.4xlarge экземпляры как для конечной точки, так и для ноутбука (попроси увеличить квоту).

О детальной настройке читай в этом разделе.

Почему мне стоит использовать Ultralytics YOLOv8 на Amazon SageMaker.

Использование Ultralytics YOLOv8 на Amazon SageMaker дает несколько преимуществ:

  1. Масштабируемость и управление: SageMaker предоставляет управляемую среду с такими функциями, как автомасштабирование, что помогает при необходимости делать выводы в режиме реального времени.
  2. Интеграция с сервисами AWS: Бесшовная интеграция с другими сервисами AWS, такими как S3 для хранения данных, CloudFormation для создания инфраструктуры как кода и CloudWatch для мониторинга.
  3. Простота развертывания: Упрощенная настройка с помощью скриптов AWS CDK и оптимизированные процессы развертывания.
  4. Производительность: Используй высокопроизводительную инфраструктуру Amazon SageMaker для эффективного выполнения масштабных задач вывода.

Узнай больше о преимуществах использования SageMaker в разделе "Введение".

Можно ли настроить логику выводов для YOLOv8 на Amazon SageMaker?

Да, ты можешь настроить логику выводов для YOLOv8 на Amazon SageMaker:

  1. Измените inference.py: Найдите и настройте output_fn функция в inference.py файл для настройки выходных форматов.

    import json
    
    
    def output_fn(prediction_output):
        """Formats model outputs as JSON string, extracting attributes like boxes, masks, keypoints."""
        infer = {}
        for result in prediction_output:
            if result.boxes is not None:
                infer["boxes"] = result.boxes.numpy().data.tolist()
            # Add more processing logic if necessary
        return json.dumps(infer)
    
  2. Разверни обновленную модель: Убедись, что ты перевернул модель, используя предоставленные блокноты Jupyter (1_DeployEndpoint.ipynb), чтобы включить эти изменения.

Обратись к подробным шагам по развертыванию измененной модели.

Как протестировать развернутую модель YOLOv8 на Amazon SageMaker?

Чтобы протестировать развернутую модель YOLOv8 на Amazon SageMaker:

  1. Открой блокнот для тестирования: Найдите 2_TestEndpoint.ipynb Блокнот в среде SageMaker Jupyter.
  2. Запусти блокнот: Следуй инструкциям блокнота, чтобы отправить изображение на конечную точку, выполнить умозаключение и вывести результаты на экран.
  3. Визуализируй результаты: Используй встроенные функции построения графиков, чтобы визуализировать показатели производительности, например, ограничительные рамки вокруг обнаруженных объектов.

Чтобы получить исчерпывающие инструкции по тестированию, посети раздел "Тестирование".



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

Комментарии