почему я включил Metal API, но мой пользовательский слой Coreml все еще работает на CPU - PullRequest
0 голосов
/ 25 июня 2018

Я действительно новичок в Coreml и Metal.

Сейчас я работаю над проектом по тестированию производительности модели Core Ml. Я реализовал модель CNN, основанную на тензорном потоке, и преобразовал эту модель в .mlmodel, используя инструмент tf-coreml.

Но в моей модели CNN он имеет опцию под названием «равно», которую Coreml не поддерживает. Он преобразован в пользовательский слой .mlmodel мой снимок экрана файла .mlmodel

Затем я последовал за потрясающим блогом Холлемана http://machinethink.net/blog/coreml-custom-layers/, чтобы реализовать этот пользовательский слой как на CPU, так и на GPU. Моя версия процессора работает хорошо, но когда я реализовал эту опцию на GPU, она не может активировать «функцию кодирования». Я следовал всем шагам в блоге Холлемана, создавая вычислительные ядра Metal и все остальное. Но когда я запускаю свой проект, он всегда запускается на процессоре. Казалось, он никогда не попадал в функцию кодирования. запускается только на функции оценки

Я много искал в Google, но не нашел идеального ответа, который действительно расстроил меня. Если у кого-то есть намеки, я буду очень признателен. Заранее спасибо.

1 Ответ

0 голосов
/ 03 июля 2018

Когда вы запрашиваете у вашей модели прогноз , вы можете указать опции, например , работающие только на процессоре .Одной из возможных причин того, что ваша модель не работает на графическом процессоре, может быть то, что в вашем коде есть что-то вроде

let options = MLPredictionOptions() options.usesCPUOnly = true

, и вы передаете options методу прогнозирования.Установите для свойства usesCPUOnly значение false, чтобы модель могла работать на графическом процессоре.Поскольку в блоге Холлемана (что действительно здорово) не упоминается, что вы можете выбрать запуск модели на процессоре или графическом процессоре, я думаю, это может быть одной из причин, по которой ваша модель продолжает работать на процессоре.

...