跳转到主要内容

NVTX的Python绑定

项目描述

License Release PyPI - Implementation PyPI - Implementation Circle-CI Documentation Status..

NVTX插件用于深度学习

NVTX插件允许用户将自定义的NVIDIA工具扩展(NVTX)事件和时间范围添加到TensorFlow图中。集成NVTX的应用程序可以使用NVIDIA Nsight Systems和Nsight Compute捕获和可视化这些事件和时间范围。

https://github.com/NVIDIA/nvtx-plugins/raw/master/docs/images/nvtx_demo.jpg

NVTX范围通过使用nvtx开始和结束操作包装计算图的区域来添加。

https://github.com/NVIDIA/nvtx-plugins/raw/master/docs/images/nvtx_graph.svg

NVTX插件还提供了Keras回调和会话钩子。

更多关于


目录


安装或构建NVTX插件

先决条件

  • Linux

  • Python 3.4+

  • NVIDIA GPU + CUDA工具包10.0或更高版本

  • TensorFlow 1.13或更高版本

安装NVTX-Plugins

该软件包可以从PyPI安装

# Stable release
pip install nvtx-plugins

# Pre-release (may present bugs)
pip install nvtx-plugins --pre

该软件包还可在GitHub上下载:https://github.com/NVIDIA/nvtx-plugins/releases

pip install nvtx-plugins*.tar.gz

从源代码安装

您可以从源代码构建和安装该软件包

python setup.py sdist
pip install dist/nvtx-plugins*.tar.gz

对于开发目标,您可以使用以下命令直接从源代码安装软件包:

python setup.py install

我们建议在NVIDIA的NGC TensorFlow容器内构建软件包:https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow

有关如何开始使用NGC容器的更多信息,请参阅以下NVIDIA GPU云文档和Deep Learning DGX文档的部分:从NVIDIA GPU云开始使用、访问并从NGC容器注册表中拉取以及运行TensorFlow。

构建文档

通过运行以下命令构建文档:

cd docs
pip install -r requirements.txt
make html

文档文件将生成在docs/build/html

构建文档不需要安装NVTX插件。不过,由于Sphinx中的问题,**只支持Python 3.7构建文档**。


快速入门指南

向图中添加标记

通过将计算图的部分包装在开始和结束操作中添加标记。这些操作是恒等操作(不修改地将输入传递到输出)但它们有生成nvtx标记的副作用。

import nvtx.plugins.tf as nvtx_tf

x, nvtx_context = nvtx_tf.ops.start(x, message='Dense 1-3',
    domain_name='Forward', grad_domain_name='Gradient')
x = tf.layers.dense(x, 1000, activation=tf.nn.relu, name='dense_1')
x = tf.layers.dense(x, 1000, activation=tf.nn.relu, name='dense_2')
x = tf.layers.dense(x, 1000, activation=tf.nn.relu, name='dense_3')
x = nvtx_tf.ops.end(x, nvtx_context)
x = tf.layers.dense(x, 1000, activation=tf.nn.relu, name='dense_4')

为了方便,该软件包还提供了一个函数装饰器

@nvtx_tf.ops.trace(message='Dense Block', domain_name='Forward',
                   grad_domain_name='Gradient')
def dense_block(x):
    x = tf.layers.dense(x, 1000, activation=tf.nn.relu, name='dense_1')
    x = tf.layers.dense(x, 1000, activation=tf.nn.relu, name='dense_2')
    x = tf.layers.dense(x, 1000, activation=tf.nn.relu, name='dense_3')
    return x

更详细的示例可以在examples/中找到,还可以查看文档以获取有关其他工作流程的更多信息,包括会话钩子、Keras层和回调。

可视化范围

NVTX需要一个记录器来注册生成的事件和范围,我们将使用NVIDIA Nsight Systems来捕获这些事件。

使用nsys(预安装在NVIDIA的NGC TensorFlow容器中)运行您的代码以生成一个qdrep文件

nsys profile -d 60 \
    -w true \
    --sample=cpu \
    -t 'nvtx,cuda' \
    -o ./generated_timeline \
    python ./network.py

生成的qdrep可以使用Nsight Systems查看。

Nsight Systems和nsys也可以从NVIDIA开发者网站下载。

有关nsys和Nsight Systems的更多详细信息,请参阅此处


文档

有关NVTX插件的更多详细信息,请在此处查看:https://nvtx-plugins.readthedocs.io/en/latest/


致谢

该项目结构受TensorFlow自定义操作示例的影响很大:https://github.com/tensorflow/custom-op


免责声明

该项目处于测试阶段,预计未来会有重大更改。


贡献

欢迎对NVTX插件做出贡献。若要贡献代码,请从本地分支向主分支提交一个拉取请求

我们欢迎反馈、提问或错误报告。如果您需要关于代码的帮助,请创建一个GitHub问题。请遵循Stack Overflow https://stackoverflow.com/help/mcve 文档中概述的过程。确保发布的示例是

  • 最小化:使用尽可能少的代码来重现相同的问题。

  • 完整:提供重现问题的所有必要部分。检查您是否可以去除外部依赖项并仍然显示问题。我们花费在重现问题上的时间越少,我们就能有更多时间来修复它们。

  • 可验证:测试您即将提供的代码,以确保它可以重现问题。删除与您的请求无关的所有其他问题。


项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

nvtx-plugins-0.1.8.tar.gz (22.9 kB 查看哈希值)

上传时间

支持