用于非模型计算的 TensorFlow 分析

Posted

技术标签:

【中文标题】用于非模型计算的 TensorFlow 分析【英文标题】:Tensorflow profiling for non-model computations 【发布时间】:2021-08-02 14:40:37 【问题描述】:

我有一个计算,其中包含 for 循环和对 Tensorflow 矩阵算法的调用,例如 tf.lstsq 和带有 tf.map_fn 的 Tensorflow 迭代。我想对此进行分析,看看我在tf.map_fn 和被调用的矩阵算法中获得了多少并行度。

这似乎根本不是围绕神经网络模型训练循环组织的 Tensorflow Profiler 的用例。

有没有办法使用 Tensorflow Profiler 进行任意 Tensorflow 计算,或者在这种情况下使用 NVidia 工具(如 nvprof)?

【问题讨论】:

nvprof 不能用于这种用例(它已被弃用,因此取决于您拥有的硬件类型,它无论如何都不会工作) 你有什么推荐的?我在 Linux 上有 NVidia GPU。 您在询问计算 GPU 加速 Python 框架正在实现的并行度。这意味着您需要同时在 Python 解释器、主机二进制文件和 GPU 级别进行检测和分析。这不是传统的 GPU 分析用例,我不知道有任何工具可以做到这一点。 CUDA 工具包当然没有提供任何东西 分析器检测对 CUDA 内核的调用,并与调用 CUDA 库的任何程序一起使用。解释器层在做什么并不重要。 GPU有多忙很重要。在 GPU 上分析矩阵计算是一种传统用例。 GPU 有多“忙”与“我得到多少并行度”不同。您获得的并行度是串行计算工作与并行计算工作的比率。如果您想按照问题中的描述进行操作,则需要同时测量两者,即en.wikipedia.org/wiki/Amdahl%27s_law 【参考方案1】:

我发现我正在寻找的 nvprofnvvpnsight 工具可以作为 Conda install of cudatoolkit-dev 使用。用法在this gist 中进行了描述。

【讨论】:

以上是关于用于非模型计算的 TensorFlow 分析的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow - 多 GPU 不适用于模型(输入),也不适用于计算梯度

代码解析深度学习系统编程模型:TensorFlow vs. CNTK

无法使用经过训练的 Tensorflow 模型

AI 赋能边缘计算:在 Kuiper 中运行 TensorFlow Lite 模型

TensorFlow 中的生存分析

在 Tensorflow 中加载文本分类模型时出现 ValueError