Непрерывно тренировать модель 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 вы можете скомпилировать модель, загрузить с сервера.
(Подробности)
Ответ 6
Начиная с CoreML3 и UpdatableTask, обучение на устройстве предлагается на устройстве: https://developer.apple.com/documentation/coreml/mlupdatetask
Ответ 7
CoreML 3 теперь поддерживает персонализацию модели на устройстве. Вы можете улучшить свою модель для каждого пользователя, сохраняя свои данные в секрете.
https://developer.apple.com/machine-learning/core-ml/