【问题标题】:How to check that Tensorflow graph rewrites that use MKL occur?如何检查使用 MKL 的 Tensorflow 图重写是否发生?
【发布时间】:2017-07-03 08:18:26
【问题描述】:

通过查看Tensorflow code,一些 MKL 优化是通过使用 MKL 的融合函数替换节点集的图形重写来完成的。我试图用tf.logging.set_verbosity(1) 寻找重写,但从未见过log messages I expect。

我已经从 CPU 上的源代码构建了 Tensorflow,并启用了 MKL 和 XLA。我认为构建使用的是 MKL,因为如果 tf.nn.conv2d 和 tf.nn.bias_add 一起出现,我可以在前向传递中使用“NCHW”数据格式。它还运行得更快并充分利用了 CPU。反向传递虽然错误说“CPU BiasGradOp 仅支持 NHWC”,但看起来 MKL 函数可以将 Conv2D 和 BiasAdd 与“NCHW”向前和向后融合。所以我想直接寻找重写。

如何查看图形重写是否正在发生?

【问题讨论】:

    标签: tensorflow intel-mkl


    【解决方案1】:

    一种方法是使用时间线/跟踪功能。您可以关注此StackOverflow 答案。如果它使用 MKL,您会看到名称为 _MklReshape 或 _MklConv2D 的节点

    【讨论】:

      【解决方案2】:

      这不是专门测试图形重写,但您可以使用以下方法检查是否在 tensorflow 中启用了 mkl:

      tf.python.pywrap_tensorflow.IsMklEnabled()
      

      发件人:https://github.com/tensorflow/tensorflow/issues/17176#issuecomment-371364155

      【讨论】:

      • 在当前版本中,命令改为:python -c "import tensorflow; print(tensorflow.pywrap_tensorflow.IsMklEnabled())"
      【解决方案3】:

      Tensorflow 有一个调试器 (tfdbg) 和教程 here。调试器在运行之前打印session.run() 将访问的所有图形节点的列表。

      您还可以探索输入张量、输出张量以及每个节点的属性。

      如果您不想花时间使用 tfdbg 进行编译,Ariel 的回答也可以查看操作类型。

      【讨论】:

        【解决方案4】:

        对于 v2.0.0+,命令是:

        python -c "from tensorflow.python import pywrap_tensorflow; print(pywrap_tensorflow.IsMklEnabled())"
        

        来源:https://software.intel.com/en-us/forums/intel-optimized-ai-frameworks/topic/837000

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-16
          • 1970-01-01
          • 1970-01-01
          • 2011-07-11
          • 1970-01-01
          • 1970-01-01
          • 2020-07-06
          • 2011-12-02
          相关资源
          最近更新 更多