Непрерывно тренировать модель CoreML после отправки

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

Есть ли способ добавить данные обучения к обученной модели после отправки?

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

Ответ 1

Файл .mlmodel скомпилирован Xcode в структуру .mlmodelc(которая на самом деле является папкой внутри вашего пакета приложений).

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

Возможно, ваше приложение может загружать скомпилированные данные .mlmodelc с сервера, скопировать его в каталог приложений и создать экземпляр модели. Попробуйте.; -)

(Предполагается, что App Store не выполняет никакой дополнительной обработки данных .mlmodelc, прежде чем он упакует ваше приложение и отправит его пользователю.)

Ответ 2

Apple недавно добавила новый API для компиляции модели на устройстве. Теперь вы можете скачать свою модель и скомпилировать ее на устройстве

Ответ 3

Core ML поддерживает вывод, но не обучение на устройстве.


Вы можете обновить модель, заменив ее новым с сервера, но это заслуживает собственного вопроса.

Ответ 4

Чтобы динамически обновлять модель (без обновления всего приложения), вам нужно использовать MPS (Metal Performance Shader) напрямую вместо того, чтобы полагаться на .mlmodel, который должен быть связан с приложением.

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

Это хорошее видео, чтобы посмотреть, хотите ли вы узнать больше о MPS.

https://developer.apple.com/videos/play/wwdc2017/608/

Ответ 5

Теперь с iOS11 beta4 вы можете скомпилировать модель, загрузить с сервера.

(Подробности)

Ответ 7

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

https://developer.apple.com/machine-learning/core-ml/