Изменения в конвейере Tensorflow lite из-за изменения порядка приведения - PullRequest
0 голосов
/ 19 июня 2019

Эта проблема связана с переупорядочением приведения, которое является нежелательным атрибутом во время преобразования TFLite. У нас есть файл pb, в котором оператор перед изменением происходит перед операцией Cast. В основном мы хотели, чтобы операция по изменению формы была быстрее в мобильном графическом процессоре, чтобы она выполнялась первой, а затем оператор Cast, который будет запускаться в процессоре. Но по неизвестным причинам поток выполнения переходит от GPU к CPU в самой середине, выполняя сначала оператор Cast. Эти преобразования формы и преобразования были сделаны в этом порядке, чтобы получить некоторую скорость. Копирование данных с мобильного GPU на мобильный CPU, если оно выполняется в меньших измерениях, а не в четырех измерениях, оказывается хорошим фактором при определении времени работы модели. Даже если на уровне pb, Cast отображается после оператора Reshape на Уровень TF-Lite, позиции меняются. Когда график анализируется с помощью инструмента тестирования производительности и Netron, вводится дополнительный ввод, называемый Cast-reorder. Что это за перестановка ролей и как это можно устранить?

1) При обрезании графика на уровне Reshape график получается ожидаемым, но без оператора Cast.

1 Ответ

0 голосов
/ 22 июня 2019

Из описания немного неясно, что происходит.Мне нужно кое-что уточнить:

  1. Является ли проблема, которую вы описываете, ошибкой в ​​Toco?
  2. Или проблема заключается в выполнении графического процессора?

В любом случае, визуализация может помочь.

Также обратите внимание, что:

RESHAPE в GPU довольно медленный.Для любых операций по изменению формы вы должны делать это в CPU. Я не знаком с CAST, но эта операция не поддерживается графическим процессором.Кроме того, все входные данные для графического процессора должны быть с плавающей запятой. Меньшие измерения не помогают.Он всегда будет преобразован в дружественный к GPU макет формата PHWC4.
...