【问题标题】:Is it possible to train a CoreML model on device as the app runs?是否可以在应用程序运行时在设备上训练 CoreML 模型?
【发布时间】:2018-10-08 17:37:40
【问题描述】:

是否可以使用 CoreML 模型发布 iOS 应用程序,然后让应用程序根据用户行为继续改进(训练)设备上的模型?因此,该模型将在设备上不断增长和改进,而无需服务器支持...

【问题讨论】:

  • 这会很有趣,但我不相信这是可能的......
  • 不幸的是,我认为现在无法做到这一点。您可以通过 REST API 将数据反馈回您的服务器,以便为将来的版本提供更多训练数据。
  • 没有。培训涉及应用程序更新,这意味着得到 Apple 的批准。您有一些(次优)选项。 (1) 完成审批流程,该流程可能在一天内完成。 (2) 将您的应用程序绑定到服务器提供的模型。 (3) 其他人没有做过并且苹果会批准的事情。 CoreML 工作流程基于在将模型导入CoreML 之前对其进行训练。您可以尝试等待两个月,看看他们在 WWDC '19 上有哪些改进,但我不会屏住呼吸。
  • 就像其他人指出的那样,目前很难或不可能做你想做的事。训练是一项非常昂贵的操作,训练模型需要大量时间。这就是为什么在服务器上而不是在设备本身上执行此操作的原因。已经说过你应该能够将信息发送到服务器并训练模型,然后最终下载模型。
  • 之前评论者写的都是真的。然而......从 iOS 11.3 开始,Core ML 构建在其之上的 MPS 框架(至少对于 GPU 计算而言)可以在设备上进行训练。 Core ML 将在 iOS 12 中获得类似的功能似乎是合理的。此外,它有点 hacky,但你可以自己编写训练代码(可能使用 MPS),然后用你的 mlmodel 文件中的新参数覆盖旧的学习参数并编译将其导入设备上的新 Core ML 模型中。

标签: ios swift machine-learning coreml apple-vision


【解决方案1】:

答案是肯定的。

由于CoreML 3 得到了极大优化——答案是肯定的,您可以在应用运行时在设备上训练 CoreML 模型

但是,使用CoreML 2 无法在设备上训练模型,因为与CoreML 3 相比,运行CoreML 2 应用程序需要相当多的功率来训练模型。这就是为什么使用具有强大 GPU 的台式机和云计算机来创建预训练模型的原因。在 CoreML 2 中,您的 MLmodel 必须预先配置,并且您必须在该阶段包含所有预处理技术,例如 Edge DetectionFrame Differencing

【讨论】:

    【解决方案2】:

    现在可以使用 Core ML 3。 https://developer.apple.com/videos/play/wwdc2019/704/ 跳到 9:00 以查看它的运行情况。如果你只是想要代码,请跳到 13:50。

    【讨论】:

    • 是的,看到了。感谢您发布此内容。好东西。
    • 当我在 Mac 上使用“创建 ML”工具创建模型时,模型没有“更新”并且 XCode 没有生成训练输入类。有关如何创建空模型并使用该应用在设备上对其进行训练的任何 src 代码?
    【解决方案3】:

    我正在尝试做同样的事情。显然,当您使用 coremltools 将模型转换为 Core ML 格式时,您可以将“respect_trainable”参数传递给转换器,它会自动使模型可更新。

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 2020-03-15
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多