首页 > 解决方案 > VNCoreMLModel 启动时间慢

问题描述

有人第一次打电话有什么问题VNImageRequestHandler吗?

我正在VNCoreMLModel使用 Apple进行测试,MobileNet.mlmodel我发出的第一个请求VNImageRequestHandler(ciImage: sourceImage, orientation: imageOrientation)大约需要 1.9 秒,但每个后续请求需要 0.213 秒。我通过简单地生成请求:VNCoreMLRequest(model: model, completionHandler: { ... }CIContext在生成请求的VNImageRequestHandler(ciImage: sourceImage, orientation: imageOrientation)处理VNImageRequestHandler程序CIContext

所以真的我的问题是什么可能导致第一个和第二个请求之间的时间差异。

干杯!

标签: ioscoreml

解决方案


我不记得以前见过这个,虽然也许我没有引起足够的注意。但是当你第一次使用模型时,有一些事情需要发生,特别是如果它在 GPU 上运行:

  • 模型权重需要加载到内存中并转换为 GPU 内核使用的格式。
  • 需要加载 GPU 内核。
  • GPU 需要“进入状态”。对于速度测试,您需要先通过模型几次,以便 GPU 预热,然后进行测量。
  • 安装应用程序后首次使用 MPS 内核时,需要将 Metal 字节码编译为设备中 GPU 的特定机器代码。

如果模型在 CPU 或神经引擎上运行,则可能需要类似的初始化步骤。很难确切地说会发生什么,因为 Core ML 隐藏了所有这些东西。


推荐阅读