Как я могу ускорить скорость вывода в TensorFlow, когда я получил разреженную матрицу от обрезки?

#tensorflow #sparse-matrix #hardware #intel-mkl #pruning

#tensorflow #разреженная матрица #аппаратное обеспечение #intel-mkl #обрезка

Вопрос:

Я получил разреженную матрицу веса от Tensorflow-pruning для уменьшения SqueezeNet . После strip_pruning_vars я проверил, что большинство элементов в матрице веса успешно сокращены до 0. Однако производительность модели не увеличилась по сравнению с тем, что я ожидал. Кажется, что требуется дополнительная библиотека программного обеспечения или аппаратное обеспечение, поддерживающее операции с разреженными матрицами. Кто-то сказал мне, что использование Intel-MKL библиотеки будет полезно, но я не знаю, как интегрировать ее с Tensorflow. Теперь у меня есть .pb файлы SqueezeNet, которые были удалены. Любой тип помощи будет высоко оценен.

Ответ №1:

Вы можете попробовать Intel® Optimization для TensorFlow * Wheel.

Для этого рекомендуется использовать среду Intel.

Пожалуйста, выполните следующие действия.

  1. Создайте среду conda с помощью команды:

    conda create -n my_intel_env -c intel python=3.6

  2. Активируйте среду.

    source activate my_intel_env

  3. Установите колесо

    pip install https://storage.googleapis.com/intel-optimized-tensorflow/tensorflow-1.11.0-cp36-cp36m-linux_x86_64.whl

Для получения более подробной информации вы можете обратитьсяhttps://software.intel.com/en-us/articles/intel-optimization-for-tensorflow-installation-guide

После установки вы можете проверить, включен ли mkl, выполнив приведенные ниже команды из приглашения python.

 from tensorflow.python.framework import test_util
test_util.IsMklEnabled()
  

Это должно возвращать ‘True’, если mkl включен.

Надеюсь, это поможет.

Ответ №2:

Я столкнулся с такой же проблемой с вами. Я использовал tensorflow для обрезки модели, но на самом деле сокращенная модель не получила более высокой скорости прогнозирования. В дорожной карте tensorflow (https://www.tensorflow.org/model_optimization/guide/roadmap ) они говорят, что в будущем они будут поддерживать выполнение разреженной модели. Итак, я предполагаю, что причина в том, что tensorflow пока не поддерживает ее, поэтому мы можем получить только разреженную модель, но без улучшения скорости.