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

Что у нас есть: Предварительно обученная модель компьютерного зрения из модельного зоопарка. Что мы хотим: скомпилированная / оптимизированная модель для вывода на определенной платформе / устройстве, которая позже может быть выполнена с помощью Neo Deep Learning Runtime.

Здесь мы используем предварительно обученную модель yolo3 (вы посмотрите только один раз) с базой даркнета из зоопарка моделей Gluon-cv и оптимизируем ее для вывода на устройстве Raspberry pi. Однако тот же процесс можно применить к любой из предварительно обученных моделей компьютерного зрения из модельного зоопарка для вывода на любом целевом устройстве.

Предварительные требования

Python3 установлен на машине вместе с библиотеками mxnet и gluoncv. И mxnet, и gluoncv можно установить с помощью команды pip.

pip install --upgrade mxnet gluoncv

Выполнив три упомянутых ниже шага, предварительно обученную модель можно скомпилировать с помощью SageMaker Neo.

Шаг 1. Экспортируйте предварительно обученную модель.

Создайте файл python export_model.py со следующим содержимым и выполните его. Это экспортирует предварительно обученную модель путем создания файла JSON, который включает вычислительный граф и файл параметров, который включает предварительно обученные веса модели.

import gluoncv as gcv
from gluoncv.utils import export_block
net = gcv.model_zoo.get_model('yolo3_darknet_voc', pretrained=True)
export_block('yolo3_darknet_voc', net, preprocess=True,layout='HWC')

get_model загружает указанную предварительно обученную модель в каталог ~ / .mxnet / models, если для параметра pre-training установлено значение True (строка 3).

export_block создает два файла yolo3_darknet53_voc-0000.params и yolo3_darknet53_voc-symbol.json в том же каталоге, что и файл export_model.py (строка 4).

Шаг 2. Сожмите файлы .params и .json в файл tar.gz и загрузите его в корзину s3, чтобы компилятор Neo может получить к нему доступ как вход. Пусть путь к созданному ведру s3 с файлом tar будет,

s3: //compile-me/yolo3-darknet-voc.tar.gz

Шаг 3. Создайте задание компиляции в консоли Amazon SageMaker. Из своих сервисов AWS в своей учетной записи перейдите к Amazon SageMaker. Нажмите создать задание компиляции, как показано на следующем рисунке.

В настройках задания выберите

  1. Имя задания - дайте любое произвольное имя, которое хотите, но убедитесь, что оно отличается от существующих имен уже скомпилированных заданий.
  2. Роль IAM - вы можете выбрать существующую роль или создать новую, чтобы предоставить SageMaker доступ к другим ресурсам. Поскольку наша предварительно обученная модель находится в корзине S3, убедитесь, что эта роль имеет разрешение на доступ к этой корзине s3.

В конфигурации ввода выберите

  1. Расположение артефактов модели: s3 path of the bucket -

s3: //compile-me/yolo3-darknet-voc.tar.gz

2. Конфигурация ввода данных: Обученная матрица формы данных. Gluoncv yolo3 обучается с цветными изображениями формы 512 x 512, и, поскольку используется макет HWC, конфигурация ввода принимает следующий формат

{«данные»: [1, 512, 512, 3]}

3. Фреймворк машинного обучения: фреймворк, на котором предварительно обучается модель - Mxnet.

В конфигурации вывода выберите

  1. Целевое устройство: выберите целевое устройство или целевую платформу по вашему выбору - rasp3b.
  2. Расположение вывода S3: нам нужно указать путь к ведру s3, где мы хотим, чтобы наши скомпилированные артефакты были. Вы можете создать корзину s3, если ее нет, и указать путь к ней - s3: // compiled-artifacts /

После того, как вы укажете все необходимые параметры для запуска задания компиляции, отправьте его.

Когда мы обнаружим, что компиляция прошла успешно, перейдите к расположению выходного ведра s3, чтобы найти скомпилированные артефакты 🎉

Эти скомпилированные артефакты теперь можно загружать и выполнять с помощью Neo Deep Learning Runtime Api.

Ссылки