Tensorflow выделяет в 4 раза больше памяти в процессоре, чем размер бинарной модели - PullRequest
2 голосов
/ 27 мая 2019

Мы используем API-интерфейс tenorflow C версии 1.13.1. отсюда https://www.tensorflow.org/install/lang_c

Наша модель нейронной сети frozen_graph.pb размер 230 МБ с MobileNet архитектура. Когда мы загружаем его, тензор потока выделяет около 1,1 ГБ при первом запуске сеанса, а затем объем памяти уменьшается до ~ 900 МБ и остается в этом значении.

Мы попробовали инструмент преобразования графа отсюда https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/graph_transforms/README.md для оптимизации графика. Но только квантование кажется эффективным для уменьшения также размера модели и использования памяти. Но иногда мы не можем использовать его, так как квантование снижает точность модели на 15%.

Поскольку в настоящее время мы думаем, что единственный способ уменьшить размер модели и не оказать существенного влияния на точность - это

1) Переход на другой сервер, например, в MXNET и т. Д. *

2) Использовать технику перегонки знаний для переподготовки небольших моделей. https://arxiv.org/pdf/1503.02531.pdf

Мы ожидаем, что выделение памяти для одной модели не превышает 150% двоичного размера. Любое решение приемлемо. Спасибо.

...