Развертывание высококачественных, обученных моделей машинного обучения (ML) для выполнения пакетных выводов или логических выводов в реальном времени является критически важной частью обеспечения ценности для клиентов. Однако процесс экспериментирования с машинным обучением может быть утомительным — существует множество подходов, требующих значительного времени для реализации. Вот почему предварительно обученные модели машинного обучения, такие как представленные в Зоопарк моделей PyTorch так полезны. Создатель мудреца Амазонки предоставляет унифицированный интерфейс для экспериментов с различными моделями машинного обучения, а зоопарк моделей PyTorch позволяет нам легко менять наши модели стандартным образом.
В этом сообщении блога показано, как выполнять логические выводы машинного обучения с использованием модели обнаружения объектов из PyTorch Model Zoo в SageMaker. Предварительно обученные модели машинного обучения из зоопарка моделей PyTorch готовы и могут легко использоваться как часть приложений машинного обучения. Настройка этих моделей машинного обучения в качестве конечной точки SageMaker или Пакетное преобразование SageMaker выполнить онлайн или офлайн вывод легко, следуя шагам, описанным в этом сообщении в блоге. Мы будем использовать Быстрее R-CNN модель обнаружения объектов для прогнозирования ограничивающих рамок для предварительно определенных классов объектов.
Мы рассмотрим сквозной пример, от загрузки весов модели обнаружения объектов Faster R-CNN до их сохранения в Сервис Amazon Simple Storage (Amazon S3) ведро, а также к написанию файла точки входа и пониманию ключевых параметров в API PyTorchModel. Наконец, мы развернем модель машинного обучения, выполним логические выводы с помощью SageMaker Batch Transform, проверим выходные данные модели машинного обучения и узнаем, как интерпретировать результаты. Это решение можно применить к любой другой предварительно обученной модели в зоопарке моделей PyTorch. Список доступных моделей см. Документация PyTorch Model Zoo.
Обзор решения
В этом сообщении блога будут рассмотрены следующие шаги. Полную рабочую версию всех шагов см. create_pytorch_model_sagemaker.ipynb
- Шаг 1. Настройка
- Шаг 2. Загрузка модели машинного обучения из PyTorch Model Zoo
- Шаг 3. Сохраните и загрузите артефакты модели машинного обучения в Amazon S3.
- Шаг 4. Создание сценариев вывода модели ML
- Шаг 5. Запуск задания пакетного преобразования SageMaker
- Шаг 6: Визуализация результатов
Схема архитектуры
структура каталогов
Код для этого блога можно найти в этом Репозиторий GitHub. Кодовая база содержит все необходимое для создания артефактов модели машинного обучения, запуска задания преобразования и визуализации результатов.
Это рабочий процесс, который мы используем. Все следующие шаги будут относиться к модулям в этой структуре.
Ассоциация sagemaker_torch_model_zoo
папка должна содержать inference.py
в качестве файла точки входа и create_pytorch_model_sagemaker.ipynb для загрузки и сохранения весов модели, создания объекта модели SageMaker и, наконец, передачи его в задание пакетного преобразования SageMaker. Чтобы добавить свои собственные модели машинного обучения, измените пути в разделе «Шаг 1: настройка» записной книжки и загрузите новую модель в разделе «Шаг 2: Загрузка модели машинного обучения из зоопарка моделей PyTorch». Остальные шаги ниже останутся прежними.
Шаг 1. Настройка
Роли IAM
SageMaker выполняет операции с инфраструктурой, которой управляет SageMaker. SageMaker может выполнять только действия, разрешенные в соответствии с ролью выполнения IAM, сопровождающей блокнот для SageMaker. Более подробную документацию по созданию ролей IAM и управлению разрешениями IAM см. Документация по ролям AWS SageMaker. Мы можем создать новую роль или получить Блокнот SageMaker (студия)роли выполнения по умолчанию, запустив следующие строки кода:
Приведенный выше код получает роль выполнения SageMaker для экземпляра записной книжки. Это роль IAM, которую мы создали для нашего экземпляра записной книжки SageMaker или SageMaker Studio.
Настраиваемые пользователем параметры
Вот все настраиваемые параметры, необходимые для создания и запуска нашего задания пакетного преобразования SageMaker:
Шаг 2. Загрузка модели машинного обучения из зоопарка моделей PyTorch
Затем мы указываем модель обнаружения объектов из PyTorch Model Zoo и сохраняем веса ее модели ML. Обычно мы сохраняем модель PyTorch, используя расширения файлов .pt или .pth. Фрагмент кода ниже загружает предварительно обученную модель Faster R-CNN ResNet50 ML из зоопарка моделей PyTorch:
модель = torchvision.models.detection.fasterrcnn_resnet50_fpn (предварительно обученный = True)
Пакетное преобразование SageMaker требует в качестве входных данных некоторых весов модели, поэтому мы сохраним предварительно обученную модель машинного обучения как model.pt. Если мы хотим загрузить пользовательскую модель, мы можем вместо этого сохранить веса модели из другой модели PyTorch как model.pt.
Шаг 3. Сохраните и загрузите артефакты моделей машинного обучения в Amazon S3.
Поскольку мы будем использовать SageMaker для вывода машинного обучения, нам нужно загрузить веса модели в корзину S3. Мы можем сделать это, используя следующие команды или загрузив и просто перетащив файл прямо в S3. Следующие команды сначала сожмут группу файлов внутри model.pt
в архив и скопируйте веса модели с нашей локальной машины в корзину S3.
Внимание: Для запуска следующих команд вам необходимо иметь Интерфейс командной строки AWS (AWS CLI) установлен.
Затем мы копируем наше входное изображение на S3. Ниже приведен полный путь S3 для образа.
Мы можем скопировать этот образ на S3 с помощью другой команды aws s3 cp.
Шаг 4. Создание сценариев вывода модели ML
Теперь мы пройдемся по нашему файлу точки входа, inference.py
модуль. Мы можем развернуть модель PyTorch, обученную вне SageMaker, с помощью класса PyTorchModel. Сначала мы создаем экземпляр объекта PyTorchModelZoo. Затем мы создадим файл точки входа inference.py для выполнения вывода машинного обучения с использованием пакетного преобразования SageMaker для выборочных данных, размещенных в Amazon S3.
Понимание объекта PyTorchModel
Ассоциация PyTorchМодель Класс в SageMaker Python API позволяет нам выполнять вывод ML, используя наш загруженный артефакт модели.
Чтобы инициировать класс PyTorchModel, нам нужно понять следующие входные параметры:
name
: Наименование модели; мы рекомендуем использовать либо название модели + дату и время, либо случайную строку + дату и время для уникальности.model_data
: URI S3 упакованного артефакта модели машинного обучения.entry_point
: определяемый пользователем файл Python, который будет использоваться образом Docker для вывода для определения обработчиков входящих запросов. Код определяет загрузку модели, предварительную обработку входных данных, логику прогнозирования и постобработку выходных данных.framework_version
: необходимо установить версию 1.2 или выше, чтобы включить автоматическую переупаковку модели PyTorch.source_dir
: каталог файла entry_point.role
: Роль IAM для отправки сервисных запросов AWS.image_uri
: используйте этот образ контейнера Amazon ECR Docker в качестве основы для вычислительной среды модели машинного обучения.sagemaker_session
: сеанс SageMaker.py_version
: используемая версия Python.
Следующий фрагмент кода создает экземпляр класса PyTorchModel для выполнения логического вывода с использованием предварительно обученной модели PyTorch:
Понимание файла точки входа (inference.py)
Параметр entry_point указывает на файл Python с именем inference.py
. Эта точка входа определяет загрузку модели, предварительную обработку входных данных, логику прогнозирования и постобработку выходных данных. Он дополняет код обслуживания модели ML в готовом PyTorch. Контейнер глубокого обучения SageMaker изображения.
Inference.py
будут содержать следующие функции. В нашем примере мы реализуем model_fn
, input_fn
, predict_fn
и output_fn
функции для переопределения обработчик вывода PyTorch по умолчанию.
model_fn
: принимает каталог, содержащий контрольные точки статической модели в образе вывода. Открывает и загружает модель по указанному пути и возвращает модель PyTorch.input_fn
: принимает полезную нагрузку входящего запроса (request_body) и тип содержимого входящего запроса (request_content_type) в качестве входных данных. Управляет декодированием данных. Эту функцию необходимо настроить для того, какой ввод ожидает модель.predict_fn
: вызывает модель данных, десериализованных в input_fn. Выполняет прогнозирование десериализованного объекта с загруженной моделью машинного обучения.output_fn
: сериализует результат прогнозирования в желаемый тип содержимого ответа. Преобразует прогнозы, полученные из функции predict_fn, в форматы JSON, CSV или NPY.
Шаг 5. Запуск задания пакетного преобразования SageMaker
В этом примере мы получим результаты вывода машинного обучения с помощью задания пакетного преобразования SageMaker. Задания пакетного преобразования наиболее полезны, когда мы хотим получить выводы из наборов данных один раз, без необходимости в постоянной конечной точке. Мы создаем экземпляр sagemaker.transformer.transformer объект для создания заданий пакетного преобразования SageMaker и взаимодействия с ними.
См. документацию по созданию задания пакетного преобразования по адресу CreateTransformJob.
Шаг 6: Визуализация результатов
После завершения задания пакетного преобразования SageMaker мы можем загрузить выходные данные ML из Amazon S3. Для этого перейдите в Консоль управления AWS и найдите Amazon SageMaker. На левой панели под выводСм. Задания пакетного преобразования.
После выбора Пакетное преобразование, см. веб-страницу со списком всех заданий пакетного преобразования SageMaker. Мы можем просмотреть ход выполнения нашего последнего задания.
Во-первых, задание будет иметь статус «Выполняется». Как только это будет сделано, посмотрите, как статус изменится на «Завершено».
Как только статус будет отмечен как завершенный, мы можем щелкнуть задание, чтобы просмотреть результаты. Эта веб-страница содержит сводку задания, включая конфигурации задания, которое мы только что выполнили.
Под Конфигурация выходных данных, мы увидим выходной путь S3. Здесь мы найдем наш вывод ML.
Выберите выходной путь S3 и увидите файл [image_name].[file_type].out с нашими выходными данными. Наш выходной файл будет содержать список отображений. Пример вывода:
Затем мы обрабатываем этот выходной файл и визуализируем наши прогнозы. Ниже мы указываем наш доверительный порог. Получаем список классов из Сопоставление объектов набора данных COCO. Во время вывода модели требуются только входные тензоры, и она возвращает постобработанные прогнозы в виде List[Dict[Tensor]], по одному для каждого входного изображения. Поля Dict следующие, где N — количество обнаружений:
- коробки (FloatTensor[N, 4]): предсказанные коробки в
[x1, y1, x2, y2]
формат, с0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H
, ГдеW
ширина изображения иH
высота изображения - этикетки (
Int64Tensor[N]
): предсказанные метки для каждого обнаружения - баллы (
Tensor[N]
): баллы прогноза для каждого обнаружения
Для получения более подробной информации о выводе см. PyTorch Faster R-CNN Документация FPN.
Выходные данные модели содержат ограничивающие рамки с соответствующими оценками достоверности. Мы можем оптимизировать отображение ложных срабатываний, удалив ограничивающие рамки, для которых модель не уверена. Следующие фрагменты кода обрабатывают прогнозы в выходном файле и рисуют ограничивающие прямоугольники на прогнозах, где оценка выше нашего порога достоверности. Устанавливаем порог вероятности, CONF_THRESH
, до 75 для этого примера.
Наконец, мы визуализируем эти сопоставления, чтобы понять наш вывод.
Внимание: если изображение не отображается в вашем блокноте, найдите его в дереве каталогов в левой части JupyterLab и откройте оттуда.
Запуск примера кода
Для полного рабочего примера клонируйте код в amazon-sagemaker-примеры GitHub и запустить ячейки в create_pytorch_model_sagemaker.ipynb
Блокнот.
Заключение
В этой записи блога мы продемонстрировали сквозной пример выполнения вывода ML с использованием модели обнаружения объектов из зоопарка моделей PyTorch с использованием пакетного преобразования SageMaker. Мы рассмотрели загрузку весов модели обнаружения объектов Faster R-CNN, сохранение их в корзину S3, запись файла точки входа и понимание ключевых параметров в PyTorchModel API. Наконец, мы развернули модель и выполнили вывод модели машинного обучения, визуализировали выходные данные модели и научились интерпретировать результаты.
Об авторах
Дипика Хуллар является инженером по машинному обучению в Лаборатория решений Amazon ML. Она помогает клиентам интегрировать решения машинного обучения для решения своих бизнес-задач. Совсем недавно она построила конвейеры обучения и логического вывода для клиентов СМИ, а также модели прогнозирования для маркетинга.
Марсело Аберле является инженером по машинному обучению в организации AWS AI. Он возглавляет усилия MLOps в Лаборатория решений Amazon ML, помогая клиентам разрабатывать и внедрять масштабируемые системы машинного обучения. Его миссия состоит в том, чтобы направлять клиентов на пути к корпоративному машинному обучению и ускорить переход от машинного обучения к производству.
Нинад Кулкарни является ученым-прикладником в Лаборатория решений Amazon ML. Он помогает клиентам внедрять машинное обучение и искусственный интеллект, создавая решения для решения их бизнес-задач. Совсем недавно он создал прогностические модели для спортивных, автомобильных и медиа-клиентов.
Яш-Шах является научным менеджером в Лаборатория решений Amazon ML. Он и его команда ученых-прикладников и инженеров машинного обучения работают над рядом вариантов использования машинного обучения в здравоохранении, спорте, автомобилестроении и производстве.
- AI
- ай искусство
- генератор искусств ай
- искусственный интеллект
- Амазонское машинное обучение
- Лаборатория решений Amazon ML
- Создатель мудреца Амазонки
- искусственный интеллект
- сертификация искусственного интеллекта
- искусственный интеллект в банковском деле
- робот с искусственным интеллектом
- роботы с искусственным интеллектом
- программное обеспечение искусственного интеллекта
- Машинное обучение AWS
- блокчейн
- конференция по блокчейну
- Coingenius
- разговорный искусственный интеллект
- криптоконференция ИИ
- дал-и
- глубокое обучение
- google ai
- обучение с помощью машины
- Платон
- Платон Ай
- Платон Интеллектуальные данные
- Платон игра
- ПлатонДанные
- платогейминг
- масштаб ай
- синтаксис
- Технические инструкции
- зефирнет