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

В Скафосе мобильность - это наша ДНК. Мы понимаем, что мобильные разработчики хотят использовать возможности машинного обучения в своих приложениях, но не всегда знают, с чего начать. Мы также знаем, что внедрение машинного обучения в мобильные приложения сопряжено с некоторыми уникальными проблемами, и мы хорошо знакомы с Руководством Apple по обзору App Store.

Вот почему мы так рады рассказать вам, как Skafos может легко интегрироваться с AWS SageMaker. Используйте SageMaker для обучения вашей модели, используйте Skafos для ее доставки. Чтобы получить более подробный обзор, прочтите этот пост от нашего стажера Эшли Даля. До стажировки у Эшли не было опыта Python, но она смогла создать и предоставить модель Core ML с помощью SageMaker и Skafos всего за несколько часов! Я не могу придумать лучшей рекламы для обеих платформ.

Чтобы упростить задачу, мы создали репозиторий Github с открытым исходным кодом моделей, который можно легко перенести на AWS SageMaker, вместе с инструкциями о том, как это сделать, так что мы начнем с него.

Начало работы с AWS SageMaker

Примечание. Этот раздел также описан в пошаговом руководстве в нашем репозитории github, поэтому, если вы уже сделали это, не стесняйтесь переходить к следующему разделу!

Сначала войдите в AWS SageMaker на странице console.aws.amazon.com/sagemaker. Когда вы попадете туда, вы увидите возможность выбрать экземпляр Notebook слева. Щелкните по нему!

Затем вам нужно выбрать Создать экземпляр записной книжки.

В экземпляре записной книжки вам нужно создать имя записной книжки и (при использовании поддержки графического процессора) выбрать один из типов экземпляров ml.p2.xxxx. В приведенном ниже примере я выбрал ml.p2.xlarge и отказался от дополнительной настройки. Примечание. Имя вашего блокнота должно соответствовать условным обозначениям, которые AWS услужливо перечисляет под полем, в которое вы его вводите. Возможно, я проигнорировал их первые несколько раз и столкнулся с проблемами. :)

Прокрутите вниз до раздела репозиториев Git, выберите Клонировать общедоступный репозиторий Git только в этот экземпляр записной книжки и войдите в репозиторий, содержащий наши примеры моделей Skafos SageMaker. Щелкните ссылку Создать экземпляр SageMaker.

Для раскрутки ноутбука требуется несколько минут, особенно если он выделяет графический процессор на серверной части. На мой взгляд, ожидание того стоит, поскольку мне не нужно беспокоиться о настройке собственного графического процессора. У кого нет 2–3 минут на GPU?

Когда статус записной книжки отобразится как «Работает», нажмите Открыть Jupyter и перейдите к следующему разделу.

Примечание. Если у вас есть собственная прогнозная модель или Jupyter Notebook, вы также можете ссылаться на этот репозиторий. В конечном итоге цель состоит в том, чтобы получить объект модели или артефакт, который можно экспортировать в Core ML и включить в приложение.

Обучение прогнозной модели

Как только вы нажмете Открыть Jupyter, вы сразу попадете в указанное вами репозиторий git. Эта целевая страница выглядит так:

Для этого упражнения я хотел обучить новую модель «Собаки и кошки», поэтому я щелкнул dogs_and_cats.ipynb ссылку во вложенной папке ImageClassification, и SageMaker открыл для меня записную книжку. При желании вы можете выбрать другой блокнот. Прежде чем продолжить, вам нужно будет выбрать ядро. Мы выбрали conda_amazonei_mxnet_p36.

Оказавшись в записной книжке, просмотрите все ячейки доModel Export and Skafos Upload, которые мы рассмотрим в следующем разделе. До этого раздела этот блокнот делал следующее:

  • Установка необходимых библиотек Python, включая правильную версию mxnet, turicreate и coremltools.
  • Импорт фотографий собак и кошек из общедоступного ведра S3 и считывание их во фрейм данных
  • Построение модели классификатора изображений с помощью библиотеки Turi Create. Если вы новичок в машинном обучении, это отличное место для начала!

В конце всего этого у вас будет артефакт модели, который вы можете преобразовать в Core ML, экспортировать в Skafos и интегрировать в приложение iOS.

Доставка вашей модели с помощью Skafos

На мой взгляд (и, конечно, я пристрастен), это самое интересное. Мы можем преобразовать нашу модель в Core ML, передать ее в приложение и сразу увидеть результаты. С помощью Skafos вы можете делать это по воздуху, без необходимости повторно отправлять свое приложение в магазин приложений.

Прежде чем я проведу вас через оставшуюся часть этой записной книжки, которая покажет, насколько просто доставлять модели с помощью Skafos, я предполагаю, что вы выполнили следующие шаги:

  • Зарегистрирован аккаунт на Скафосе
  • На панели управления Skafos создайте приложение Image Classifier, выбрав Попробуйте пример приложения и выбрав Image Classifier. После создания руководство по интеграции проведет вас через настройку приложения с помощью Skafos.

  • Как только вы это сделаете, используйте XCode, чтобы установить приложение на свой телефон!

Теперь у нас есть возможность связать все это вместе; недавно обученная модель классификации изображений, обученная на AWS SageMaker, и место для ее доставки. Для этого вернемся к нашему Jupyter Notebook.

Во-первых, вам нужно указать название модели Core ML и экспортировать только что созданную модель в Core ML. Хотя можно использовать другие типы моделей, в нашем примере приложения используется Core ML, и если вы только начинаете, его легко интегрировать в приложения iOS с помощью Swift.

Затем вам нужно будет импортировать SDK Skafos Python в свой блокнот и, используя свой токен API Skafos, получить сводку по всем приложениям и моделям, к которым у вас есть доступ. Это поможет вам узнать, в какое приложение поставить эту конкретную модель.

Вы можете найти существующие API-токены, сгенерировать новые и отозвать старые на своей странице настроек. Я отредактировал свой на скриншоте выше, но он будет примерно таким: d5c008256d3cc15a3735929897aaa411.

Теперь, когда у вас есть токен и сводка моделей, вам нужен только один вызов функции (да, действительно!), Чтобы доставить эту модель в Skafos. В приведенном ниже примере вы замените информацию о моей организации и приложении своей собственной. Обратите внимание, что, задав токен API в качестве переменной среды выше, вам больше не нужно указывать его ни в одном из вызовов функций Skafos.

Наконец, перейдите на панель управления Skafos и убедитесь, что ваша новая модель там!

Если вы хотите внедрить эту модель в свое приложение, нажмите кнопку Развернуть.

Вот и все. Вы можете делать это столько раз, сколько вам нужно для итерации вашей модели. Вы можете доставить в Skafos, развернуть в Dev и / или Prod по мере необходимости или вернуться к более старым версиям моделей.

Заинтересованы? Хотите попробовать? Есть вопросы? Вот некоторые ресурсы:

  • Полная документация Amazon по AWS SageMaker. С помощью этого инструмента вы можете сделать так много - мы лишь поцарапали поверхность.
  • Видеоурок на нашем канале YouTube, который проведет вас через пример классификации текста, который имеет много шагов, аналогичных тому, что мы только что сделали.
  • Документация Skafos, включая список часто задаваемых вопросов, которая предоставляет дополнительную информацию как о функциональных архитектурах, так и о тактических шагах, которые вы можете предпринять, чтобы внедрить ML в свои приложения.
  • Наш Slack канал. Мы любим общаться и помогать нашим пользователям решать их проблемы. Приходите, поздоровайтесь и дайте нам знать, чем вы занимаетесь.

Нам не терпится увидеть, что вы создадите!