用于非模型计算的 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】:我发现我正在寻找的 nvprof
和 nvvp
和 nsight
工具可以作为 Conda install of cudatoolkit-dev 使用。用法在this gist 中进行了描述。
【讨论】:
以上是关于用于非模型计算的 TensorFlow 分析的主要内容,如果未能解决你的问题,请参考以下文章
代码解析深度学习系统编程模型:TensorFlow vs. CNTK
AI 赋能边缘计算:在 Kuiper 中运行 TensorFlow Lite 模型
78tensorflow滑动平均模型,用来更新迭代的衰减系数
Tensorflow Lite tflite模型的生成与导入