Это перекрестное сообщение из моего блога; вы можете найти исходный пост здесь.

Apple вкладывает значительные средства в возможности машинного обучения (ML) для своих платформ разработки. Приобретение стартапов по прикладному машинному обучению позволяет Apple использовать свои технологии в оборудовании, операционной системе и инструментах разработки программного обеспечения для своих продуктов. Создание удобных для разработчиков фреймворков упрощает использование возможностей машинного обучения на вычислительных устройствах Apple, позволяя создавать большее количество приложений, которые могут применять машинное обучение в более широком спектре сценариев использования.

Разработчики приложений должны творчески использовать эти мощные возможности. Широкий спектр доступных входных данных (видео, аудио, текст и датчики) позволяет разработчикам создавать привлекательные приложения в таких различных секторах, как здравоохранение, дополненная реальность и инструменты для творчества.

В этом посте обсуждается, как машинное обучение вписывается в экосистему разработки Apple. Мы посмотрим на фреймворки и инструменты, которые Apple представила за последние несколько лет, и на то, как они вписываются в более широкий мир машинного обучения.

Вывод на устройстве

«Логический вывод на устройстве» - это, по сути, технический способ сказать, что «модель машинного обучения выполняет прогнозирование входящих данных, не отправляя данные на сервер, работающий где-то в облаке» или «данные, используемые для прогнозирования, никогда не покидают устройство пользователя. . »

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

Одним из основных преимуществ вывода на устройстве является то, что он может выполняться при плохом или отсутствующем сетевом подключении.

Инструменты для работы с машинным обучением на платформах Apple

CoreML

CoreML - это фреймворк для запуска моделей машинного обучения на устройстве Apple. Никакие данные не отправляются с устройства на облачный сервер, который обрабатывает пользовательские данные - все выводы выполняются с помощью некоторой комбинации ЦП, графического процессора и Neural Engine (кремний, который является частью A11 Bionic и более новых процессоров, предназначенных для ускорения определенные задачи ML).

Существующие модели CoreML

Apple создала множество моделей CoreML для разработчиков, чтобы сразу начать работу с машинным обучением на устройстве. Эти модели включают обнаружение объектов, сегментацию изображения, прогнозирование рисования и другие.

TuriCreate

TuriCreate - это библиотека Python, которая позволяет разработчикам создавать собственные модели машинного обучения нескольких различных типов:

После создания модели машинного обучения с помощью TuriCreate ее можно преобразовать в модель CoreML, готовую к развертыванию в приложении.

Разработчики машинного обучения, знакомые с существующими инструментами машинного обучения на основе Python, такими как TensorFlow или PyTorch, должны найти TuriCreate знакомыми.

Чтобы получить подробное описание того, как использовать TuriCreate, взгляните на эту презентацию Apple с прошлогоднего мероприятия WWDC.

TuriCreate является результатом приобретения Apple в 2016 году Turi, стартапа машинного обучения из Сиэтла, который назвал себя платформой машинного обучения для разработчиков и специалистов по обработке данных.

Инструмент разработчика CreateML

Apple недавно выпустила инструмент разработчика CreateML, связанный с Xcode 11:

Он позволяет разработчикам создавать модели CoreML с помощью интерфейса перетаскивания; модели строятся из источников изображений, звука, звука, движения, текста и табличных данных.

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

Apple вкладывает много денег и часов в создание фреймворков и инструментов, которые помогают экспертам, не занимающимся машинным обучением, создавать модели, которые могут работать на их платформах. Я не думаю, что будет преувеличением сказать, что CreateML может в конечном итоге позволить пользователям создавать все типы моделей машинного обучения, поддерживаемые TuriCreate, без необходимости написания какого-либо кода.

Преобразование существующих моделей в CoreML

Существует множество инструментов с открытым исходным кодом для преобразования предварительно обученных моделей машинного обучения в модели CoreML, которые затем можно использовать в приложении. Проект Apple CoreML Community Tools с открытым исходным кодом, coremltools, предоставляет сценарии для преобразования всего перечисленного ниже в формат модели CoreML:

  • scikit-learn
  • LIBSVM
  • Кафе
  • Керас
  • XGBoost

У Гаэля Фопполо есть сообщение в блоге с пошаговым руководством по использованию coremltools для выполнения преобразования модели.

Важно отметить, что не все типы архитектуры модели могут быть автоматически преобразованы в CoreML! Обязательно проверьте этот документ от Apple, чтобы убедиться, что модель, которую вы хотите преобразовать, может быть преобразована. Если это не предусмотрено, вам, возможно, придется использовать сторонние инструменты с открытым исходным кодом или написать свой собственный код преобразования.

Помимо инструментов core-ml, существует проект с открытым исходным кодом для преобразования моделей TensorFlow в CoreML под названием tf-coreml.

Если у вас есть предварительно обученная модель, которую вы хотите преобразовать, чтобы воспользоваться преимуществами аппаратного обеспечения нейронного ядра Apple, вы можете преобразовать ее в CoreML с помощью этих инструментов. Кроме того, если вы пишете модель с нуля и имеете существующий конвейер разработки машинного обучения, в котором используются такие фреймворки, как Caffe, Keras, TensorFlow; и т. д., вы можете продолжить разработку модели, используя их, а затем преобразовать модель в CoreML, как только она будет завершена.

Обучение на устройстве

Начиная с CoreML3, CoreML теперь предлагает возможность персонализировать модели машинного обучения непосредственно на устройстве пользователя, что позволяет приложению точно настраивать встроенную модель машинного обучения для адаптации к индивидуальным данным пользователя.

Когда пользователь взаимодействует с приложением, имеющим персонализированную модель машинного обучения, приложение будет анализировать данные взаимодействия с пользователем, чтобы настроить модель в соответствии с индивидуальным пользователем.

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

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

У Маттиса Холлеманса есть подробный, состоящий из нескольких частей обзор того, как работают возможности CoreML для обучения на устройстве.

А как насчет TFLite и других мобильных фреймворков?

Хотя кроссплатформенные фреймворки, такие как TFLite или PyTorch Mobile, могут быть развернуты на устройствах Apple, они не могут воспользоваться преимуществами работы, проделанной Apple по созданию микросхем для машинного обучения, которые теперь находятся на их устройствах. SDK или API для прямого взаимодействия с этими чипами отсутствуют - операционная система управляет их использованием для разработчика через CoreML. Разработчик занимается только реализацией модели машинного обучения, в то время как CoreML управляет тем, как эта модель запускается на уровне кристалла.

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

TensorFlow Lite

TensorFlow Lite - это облегченная версия TensorFlow, предназначенная для работы в IoT и мобильных устройствах. Разработчики выбирают существующую предварительно обученную модель или создают новую с помощью TensorFlow, а затем используют конвертер TensorFlow Lite для преобразования модели для работы в TensorFlow Lite. Конвертер оптимизирует эти предварительно обученные модели TensorFlow для работы на устройствах с ограниченным объемом вычислительных ресурсов и ресурсов памяти.

PyTorch Mobile

Недавно анонсированный фреймворк PyTorch Mobile разработан как кроссплатформенная библиотека для развертывания моделей PyTorch на устройствах iOS и Android. Модель будет создана один раз в PyTorch, а затем развернута через соответствующие платформы для конкретных платформ.

Дальнейшее обучение и полезная работа

  • Сотрудники fritz.ai отлично поработали, опубликовав свои выводы, а также подготовили фантастический информационный бюллетень, в котором представлены самые последние разработки в области мобильных технологий машинного обучения.
  • Блог Маттейса Холлеманса - отличный ресурс для подробных технических сообщений и примеров использования CoreML в проектах iOS.
  • В репозитории GitHub Awesome CoreML Models есть, как следует из названия, список действительно потрясающих моделей CoreML с открытым исходным кодом, а также примеры проектов, которые их используют.