Tengo dos modelos CoreML. Uno funciona bien y el otro genera este mensaje de error:
[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:0Ambos modelos son muy similares (modelos Conv2D). Se generan con los mismos scripts y versiones de PyTorch, ONNX y onnx-coreml. El modelo que funciona tiene 1036 capas y el modelo que genera el error tiene 599 capas. Ambos usan capas estándar: Conv2D, BatchNorm, ReLU, MaxPool y Upsample (sin capas personalizadas y sin elementos funcionales o Numpy). Ambos usan relativamente la misma cantidad de características por capa. Siguen esencialmente la misma estructura, excepto que el modelo de errores omite una capa de maxpool al principio (de ahí la resolución de salida más alta).
Ambos toman una imagen en color de 256x256 como entrada y emiten 16 canales a 64x64 (en funcionamiento) y 128x128 (con errores).
La aplicación no falla, pero da resultados basura para el modelo con errores.
Ambos modelos entrenan, evalúan, etc. bien en sus formatos nativos (PyTorch).
No tengo idea de lo que es un Code=5 "processRequest:qos:qIndex:error:: 0x3: Program Inference overflow" , y las búsquedas de Google no arrojan nada productivo, ya que deduzco que "Espresso" y "ANERuntimeEngine" son privados Bibliotecas de Apple.
¿Qué me dice este mensaje de error? ¿Cómo puedo arreglarlo?
¿Puedo evitar este mensaje de error si no ejecuto el modelo en el chip biónico sino en la CPU/GPU?
Cualquier ayuda es apreciada, gracias.
¡Son MUCHAS capas!
Espresso es la biblioteca de C++ que ejecuta los modelos Core ML. ANERuntimeEngine se utiliza con el chip Apple Neural Engine.
Al pasar un MLModelConfiguration con computeUnits establecido en .cpuAndGPU cuando carga el modelo de Core ML, puede decirle a Core ML que no use Neural Engine.