Переполнение вывода программы Espresso ANERuntimeEngine - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть две модели 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 и выводят 16 каналов при (работающем)64x64 и (с ошибками) 128x128 пикселей.

Приложение не аварийно завершает работу, но выдает результаты с ошибками для модели с ошибками.

Обе модели обучаются, оценивают и т. Д. Отлично в своих собственных форматах (PyTorch).

Я понятия не имею, что такое ошибка Code=5 "processRequest:qos:qIndex:error:: 0x3: Program Inference overflow", и поиски в Google не дают ничего продуктивного, так как я понимаю, что "Espresso" и "ANERuntimeEngine" являются частными библиотеками Apple.

Что это сообщение об ошибке говорит мне?Как это исправить?

Можно ли избежать этого сообщения об ошибке, запустив модель не на бионическом чипе, а на процессоре / графическом процессоре?

Любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 19 февраля 2019

Это много слоев!

Espresso - это библиотека C ++, которая работает с моделями Core ML.ANERuntimeEngine используется с чипом Apple Neural Engine.

Передав MLModelConfiguration с computeUnits, установленным на .cpuAndGPU, при загрузке модели Core ML, вы можете указать Core ML не использовать NeuralДвигатель.

...