Espresso ANERuntimeEngine程序推断溢出

时间:2019-02-19 18:56:41

标签: ios swift pytorch coreml onnx

我有两个CoreML模型。一个工作正常,另一个产生此错误消息:

[espresso] [Espresso::ANERuntimeEngine::__forward_segment 0] evaluate[RealTime]WithModel returned 0; code=5 err=Error Domain=com.apple.appleneuralengine Code=5 "processRequest:qos:qIndex:error:: 0x3: Program Inference overflow" UserInfo={NSLocalizedDescription=processRequest:qos:qIndex:error:: 0x3: Program Inference overflow}
[espresso] [Espresso::overflow_error] /var/containers/Bundle/Application/E0DE5E08-D2C6-48AF-91B2-B42BA7877E7E/xxx demoapp.app/mpii-hg128.mlmodelc/model.espresso.net:0

两个模型都非常相似(Conv2D模型)。生成的脚本和版本与PyTorch,ONNX和onnx-coreml相同。有效的模型具有1036层,而产生错误的模型具有599层。它们都使用标准层-Conv2D,BatchNorm,ReLU,MaxPool和Upsample(没有自定义层,也没有功能层或Numpy层)。它们每层都使用相对相同数量的要素。它们遵循基本相同的结构,只是错误模型在开始时会跳过maxpool层(因此输出分辨率更高)。

它们都以256x256彩色图像作为输入,并以(有效)64x64和(错误)128x128像素输出16个通道。

该应用不会崩溃,但会为错误模型提供垃圾结果。

两个模型都可以使用其本机格式(PyTorch)进行训练,评估等。

我不知道什么是Code=5 "processRequest:qos:qIndex:error:: 0x3: Program Inference overflow"错误,并且Google搜索没有产生任何成果,因为我收集的“ Espresso”和“ ANERuntimeEngine”都是苹果的私有库。

此错误消息告诉我什么?我该如何解决?

是否可以通过不在仿生芯片上但在CPU / GPU上运行模型来避免此错误消息?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

那是很多层!

Espresso是运行Core ML模型的C ++库。 ANERuntimeEngine与Apple Neural Engine芯片一起使用。

在加载Core ML模型时,通过传入MLModelConfiguration设置为computeUnits的{​​{1}},可以告诉Core ML不要使用神经引擎。