Что нового в Core ML 3

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

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

Самым большим дополнением к Core ML является введение обучения на устройстве. До этого выпуска Core ML поддерживал только логический вывод. Обучение проводилось на стороне сервера с помощью таких фреймворков, как TensorFlow или PyTorch, а модели были преобразованы в Core ML, чтобы делать прогнозы в приложении. Core ML 3 меняет это положение, став первой широко доступной средой машинного обучения, которая поддерживает как логический вывод, так и обучение непосредственно на устройстве.

Обучение выполняется с помощью комбинации атрибутов mlmodel и вызовов API. К моделям и отдельным слоям можно добавить флаг isUpdatable, чтобы указать, где можно обновить параметры. Определения для обучающих входов, выходов и функций потерь, а также гиперпараметры, такие как скорость обучения, могут быть установлены в файле прототипа mlmodel.

Разработчики могут использовать MLUpdateTask для самостоятельного обучения. Apple предоставляет MLUpdateProgressHandlers, которые действуют как обратные вызовы Keras, позволяя запускать произвольный код в разное время во время обучения, например, когда заканчивается эпоха. Поскольку некоторые обновления могут занимать больше нескольких секунд, задачи Core ML теперь можно запускать в фоновом режиме в течение короткого периода времени.

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

В демонстрации во время секционного занятия по Core ML инженер Apple создал функцию быстрого доступа для учителей, используя приложение для оценки на бумаге. Учитель, отмечающий задание карандашом Apple, мог создавать собственные наброски, которые могла бы распознать модель и преобразовать в стикеры-эмодзи. Новые ярлыки были созданы путем рисования нескольких примерных эскизов, которые использовались для обучения небольшой модели k-ближайших соседей для прогнозирования желаемых смайлов для вывода.

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

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

Осознание преимуществ обучения на устройстве также требует определенного планирования и технических решений. У мобильных устройств не будет таких же вычислительных ресурсов или ресурсов памяти, как у больших облачных кластеров, поэтому важно тщательно продумать, что и когда обновлять. Вместо того, чтобы обновлять веса для каждого слоя в большой модели, Core ML 3 позволяет помечать определенные слои как обновляемые. Архитектура обучения на устройстве должна использовать глобальные статические экстракторы функций и более мелкие обновляемые блоки в верхней части моделей для персонализации.

Новые слои, больше возможностей

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

Новые модели, представленные в Core ML 3, включают:

  • NearestNeighbors.proto - Классификаторы ближайших соседей (kNN) - это простые и эффективные модели для маркировки и кластеризации, которые отлично подходят для персонализации моделей.
  • ItemSimilarityRecommender.proto - древовидные модели, которые принимают список элементов и оценок для прогнозирования оценок сходства между всеми элементами, которые можно использовать для составления рекомендаций.
  • SoundAnalysisPreprocessing.proto - встроенные операции для выполнения общих задач предварительной обработки звука. Например, преобразование сигналов в частотную область.
  • LinkedModels.proto - общие магистрали и экстракторы функций, которые можно повторно использовать в нескольких моделях.

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

Core ML 3 официально поддерживает более 100 типов слоев нейронной сети. В качестве приложения к этой статье я включил исчерпывающий список новых слоев, добавленных в файл NeuralNetwork.proto. Вы можете догадаться, что делает большинство из них, по их названиям, но для подробного описания ознакомьтесь с этим фантастическим глубоким погружением Маттиса Холлеманса.

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

Многие из этих архитектур все еще нуждаются в уменьшении и оптимизации для мобильного использования (веса для полностью обученной модели BERT могут составлять более 1 ГБ), но очень приятно видеть столько доступных возможностей.

Наконец, добавление новых слоев означает, что инструменты преобразования также стали более надежными. Преобразование моделей из Keras, TensorFlow и PyTorch должно быть гораздо более плавным процессом с меньшим количеством пользовательских обходных путей.

Подразумеваемое

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

  1. Core ML готов выйти за рамки компьютерного зрения. Задачи, связанные с изображениями, уже несколько лет доминируют в глубоком обучении, особенно в мобильном глубоком обучении. Поддержка предварительной обработки звука, общих рекомендательных моделей и сложных операций, необходимых для урожая моделей НЛП этого года, обещает изменить это. Разработчикам следует задуматься об опыте использования машинного обучения для пользователей, которые выходят за рамки камеры.
  2. Обучение на устройстве потребует новых шаблонов UX и дизайна. Сколько данных необходимо для персонализации модели с достаточной точностью? Как лучше всего запрашивать данные об обучении у пользователей? Как часто это нужно делать? По мере того как машинное обучение приближается к основной логике приложения, разработчикам необходимо подумать о том, как эти функции доводятся до пользователей.
  3. Персонализированным моделям потребуется постоянство и синхронизация. Обучающие данные для персонализированных моделей останутся на устройстве, но что насчет самой модели, возможно, потребуется хранить в другом месте? Если пользователь удаляет, а затем повторно устанавливает приложение или хочет использовать одно и то же приложение на нескольких устройствах, его персонализация должна идти вместе с ним. Разработчикам потребуются системы для резервного копирования и синхронизации моделей.
  4. Теперь можно выполнять сквозное машинное обучение и пропускать Python. Python уже почти десять лет является предпочтительным языком программирования инженеров машинного обучения. Благодаря возможности обучения моделей Core ML + Swift теперь является жизнеспособной альтернативой для некоторых проектов. Смогут ли мобильные разработчики полностью отказаться от Python и выбрать язык, который они уже знают? Время покажет.

Ресурсы

Для получения дополнительной информации о Core ML 3 ознакомьтесь со следующими ресурсами.

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

Независимо от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.

Приложение - Новые уровни Core ML 3

Уровни потока управления:

  • CopyLayer
  • BranchLayer
  • LoopLayer
  • LoopBreakLayer
  • LoopContinueLayer
  • RangeStaticLayer
  • RangeDynamicLayer

Поэлементные унарные слои:

  • ClipLayer
  • CeilLayer
  • FloorLayer
  • SignLayer
  • RoundLayer
  • Exp2Layer
  • SinLayer
  • CosLayer
  • TanLayer
  • AsinLayer
  • AcosLayer
  • АтанЛайер
  • SinhLayer
  • CoshLayer
  • TanhLayer
  • AsinhLayer
  • AcoshLayer
  • AtanhLayer
  • ErfLayer
  • GeluLayer

Elementwise Binary с поддержкой широковещания

  • EqualLayer
  • NotEqualLayer
  • LessThanLayer
  • LessEqualLayer
  • GreaterThanLayer
  • GreaterEqualLayer
  • LogicalOrLayer
  • LogicalXorLayer
  • LogicalNotLayer
  • LogicalAndLayer
  • ModBroadcastableLayer
  • MinBroadcastableLayer
  • MaxBroadcastableLayer
  • AddBroadcastableLayer
  • PowBroadcastableLayer
  • DivideBroadcastableLayer
  • FloorDivBroadcastableLayer
  • MultiplyBroadcastableLayer
  • SubtractBroadcastableLayer

Тензорные манипуляции

  • TileLayer
  • StackLayer
  • GatherLayer
  • ScatterLayer
  • GatherNDLayer
  • ScatterNDLayer
  • SoftmaxNDLayer
  • GatherAlongAxisLayer
  • ScatterAlongAxisLayer
  • Обратный слой
  • ReverseSeqLayer
  • SplitNDLayer
  • ConcatNDLayer
  • TransposeLayer
  • SliceStaticLayer
  • SliceDynamicLayer
  • РаздвижнойWindowsLayer
  • TopKLayer
  • ArgMinLayer
  • ArgMaxLayer
  • EmbeddingNDLayer
  • BatchedMatMulLayer

Операции типа Tensor Allocation / Reshape

  • GetShapeLayer
  • LoadConstantNDLayer
  • FillLikeLayer
  • FillStaticLayer
  • FillDynamicLayer
  • BroadcastToLikeLayer
  • BroadcastToStaticLayer
  • BroadcastToDynamicLayer
  • SqueezeLayer
  • ExpandDimsLayer
  • FlattenTo2DLayer
  • ReshapeLikeLayer
  • ReshapeStaticLayer
  • ReshapeDynamicLayer
  • RankPreservingReshapeLayer

Случайные распределения

  • СлучайныйNormalLikeLayer
  • RandomNormalStaticLayer
  • СлучайныйНормальныйДинамическийСлой
  • СлучайныйУнифицированныйПодобныйСлой
  • RandomUniformStaticLayer
  • RandomUniformDynamicLayer
  • СлучайныйBernoulliLikeLayer
  • СлучайныйBernoulliStaticLayer
  • СлучайныйBernoulliDynamicLayer
  • КатегориальныйDistributionLayer

Слои, связанные с редукцией:

  • ReduceL1Layer
  • ReduceL2Layer
  • ReduceMaxLayer
  • ReduceMinLayer
  • ReduceSumLayer
  • ReduceProdLayer
  • ReduceMeanLayer
  • ReduceLogSumLayer
  • ReduceSumSquareLayer
  • ReduceLogSumExpLayer

Слои маскирования / выделения

  • WhereNonZeroLayer
  • MatrixBandPartLayer
  • Нижний треугольный слой
  • Верхний треугольный слой
  • WhereBroadcastableLayer

Слои нормализации

  • СлойНормализацияСлой