Непрерывно тренируйте модель CoreML после грузить

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

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

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

5 ответов


The .файл mlmodel компилируется Xcode в a .структура mlmodelc (который на самом деле папка в пакете приложения).

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

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

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


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


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

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

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

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


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


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


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

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