问题描述
在我对 MLModel
的第一次预测时,我发现结果慢了 3 到 4 倍。似乎一旦您运行第一个预测,它就会加热模型。找不到任何关于它的官方信息。
预热模型的正确方法是什么?在应用启动时使用虚拟数据在异步线程上调用它?
解决方法
正如@Alladinian 提到的,从 iOS 14 开始,您可以使用 MLModel.load(contentsOf:...)
函数。
以下是预加载本地 .mlmodel
文件的用法示例:
if let url = Bundle.main.url(forResource: "myModel",withExtension: "mlmodelc") {
let config = MLModelConfiguration()
MLModel.load(contentsOf: url,configuration: config) { [weak self] result in
switch result {
case .success(let model):
print("Model loaded and ready.")
let modelWrapper = MyModelWrapper(model: model)
case .failure(let error):
print("Error loading model: \(error)")
}
}
}
如果您想预加载外部获取的模型,请确保它是使用 MLModel.compileModel(at:)
编译的。