Это простое руководство по использованию возможности 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. Нажмите создать задание компиляции, как показано на следующем рисунке.
В настройках задания выберите
- Имя задания - дайте любое произвольное имя, которое хотите, но убедитесь, что оно отличается от существующих имен уже скомпилированных заданий.
- Роль IAM - вы можете выбрать существующую роль или создать новую, чтобы предоставить SageMaker доступ к другим ресурсам. Поскольку наша предварительно обученная модель находится в корзине S3, убедитесь, что эта роль имеет разрешение на доступ к этой корзине s3.
В конфигурации ввода выберите
- Расположение артефактов модели: 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.
В конфигурации вывода выберите
- Целевое устройство: выберите целевое устройство или целевую платформу по вашему выбору - rasp3b.
- Расположение вывода S3: нам нужно указать путь к ведру s3, где мы хотим, чтобы наши скомпилированные артефакты были. Вы можете создать корзину s3, если ее нет, и указать путь к ней - s3: // compiled-artifacts /
После того, как вы укажете все необходимые параметры для запуска задания компиляции, отправьте его.
Когда мы обнаружим, что компиляция прошла успешно, перейдите к расположению выходного ведра s3, чтобы найти скомпилированные артефакты 🎉
Эти скомпилированные артефакты теперь можно загружать и выполнять с помощью Neo Deep Learning Runtime Api.
Ссылки