ios - 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
(
所以真的我的问题是什么可能导致第一个和第二个请求之间的时间差异。
干杯!
解决方案
我不记得以前见过这个,虽然也许我没有引起足够的注意。但是当你第一次使用模型时,有一些事情需要发生,特别是如果它在 GPU 上运行:
- 模型权重需要加载到内存中并转换为 GPU 内核使用的格式。
- 需要加载 GPU 内核。
- GPU 需要“进入状态”。对于速度测试,您需要先通过模型几次,以便 GPU 预热,然后进行测量。
- 安装应用程序后首次使用 MPS 内核时,需要将 Metal 字节码编译为设备中 GPU 的特定机器代码。
如果模型在 CPU 或神经引擎上运行,则可能需要类似的初始化步骤。很难确切地说会发生什么,因为 Core ML 隐藏了所有这些东西。
推荐阅读
- http - HTTP 协议中允许多少个标头?
- python - 在树莓派(Python)中安装 google-auth
- php - HTML 中的下拉列表,带有基于 php 行的选项
- c - 在 C 中使用 void 函数操作结构
- kubernetes - 访问 cron 作业 kubernetes 中的日志
- javascript - 包含 cassandra queris 的承诺数组没有很好地触发
- javascript - 错误 TS2339:“HTMLElement”类型上不存在“已检查”属性
- flutter - 如何在方向更改时保留 Flutter 中的选定选项卡?
- javascript - 在webview中自动单击按钮?
- javascript - ES7 的行为会像这里的函数完全同步吗?