预热 CoreML MLModel
Pre-heat CoreML MLModel
我在 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:)
编译的。
我在 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:)
编译的。