NVIDIA 优化框架

DLProf Viewer 用户指南

摘要

DLProf Viewer 用户指南提供了关于如何使用 DLProf Viewer 分析由 NVIDIA 深度学习分析器 收集的性能结果的说明。


1.1. 概述

DLProf Viewer 通过显示耗时最多的前 10 个操作、Tensor Core 操作的资格和 Tensor Core 使用率,以及交互式迭代报告,使可视化模型性能变得容易。

1.2. 1.2.0 版本的新增功能

DLProf Viewer v1.2.0 / r21.06 的主要功能有:

  • DLProf 插件不再嵌入 TensorBoard 中。DLProf Viewer 现在使用 Gunicorn 和 Django 提供的 Web 服务。
  • 在主仪表板中添加了新的“资源使用情况细分”面板。
  • 在现有的迭代图表中添加了内存持续时间和 CPU 持续时间。
  • “给我们发邮件”链接和“在线文档”链接已从导航面板移至新导航栏的右侧。
  • 从主仪表板中删除了“Op GPU 时间”面板。
  • 从“操作和内核”视图以及“按操作迭代”视图中删除了“输入形状”列。

1.3. 功能

此版本包含以下命令和功能:

  • 面板化仪表板摘要视图:一个由多个面板组成的摘要视图,可快速概览性能结果。
  • 顶级关键指标:摘要视图显示了几个用于快速衡量性能质量的关键指标,包括平均迭代时间和 Tensor Core 利用率。
  • 前 10 个 GPU 操作节点:摘要视图中的一个表格列出了 GPU 上花费时间最多的前 10 个操作节点。
  • 专家系统面板:此面板显示 DLProf 专家系统检测到的任何问题,以及关于如何解决这些问题并提高模型性能的建议。
  • 迭代摘要面板:此面板以可视化方式显示迭代。用户可以快速查看模型中有多少次迭代、聚合/分析的迭代以及每次迭代中 Tensor Core 内核的持续时间。
  • 交互式表格:详细视图中的所有表格都是完全交互式的,允许用户对显示进行排序、过滤和分页。
  • 可互操作的表格:多个视图都具有向下钻取以获取更多信息的能力。在一个表格中选择一行将填充下一个表格,其中包含与所选内容相关的性能信息。
  • 客户端/服务器架构:
    • 所有数据现在都在关系数据库中。
    • 所有视图的加载时间都得到了改善。
  • GPU 视图:显示分析期间使用的所有 GPU 的 GPU 利用率和 GPU 属性。

2.1. 使用 Python Wheel 安装

可以从 NVIDIA PY 索引轻松安装 DLPROF Viewer。

安装 nvidia-pyindex

复制
已复制!
            

$ pip install nvidia-pyindex

接下来使用 pip 安装 DLProf Viewer

复制
已复制!
            

$ pip install nvidia-dlprofviewer

2.2. 使用 NGC Docker 容器

在尝试本节中的步骤之前,请确保您已登录 NGC,如先决条件中所述。使用 docker pull 从 NGC 获取 TensorFlow 容器

复制
已复制!
            

$ docker pull nvcr.io/nvidia/tensorflow:<21.06>-tf1-py3

其中 <xx.yy> 是您要拉取的 TensorFlow 容器的版本。

假设模型的训练数据在 /full/path/to/training/data 中可用,您可以使用以下命令启动容器

复制
已复制!
            

$ docker run --rm --gpus=1 --shm-size=1g --ulimit memlock=-1 \ --ulimit stack=67108864 -it -p8000:8000 -v/full/path/to/training/data:/data \ nvcr.io/nvidia/tensorflow:<xx.yy>-tf1-py3

2.3. 生成 DLProf 数据库

事件文件直接从深度学习分析器创建。有关如何生成数据库的信息,请参阅深度学习分析器用户指南

2.4. 启动 DLProf Viewer

DLProf Viewer 安装在所有安装了 DLProf 的容器中,这些容器位于 NVIDIA GPU 云 (NGC) 中。容器必须使用 -p8000:8000 选项运行,以打开端口 8000 以供 DLProf Viewer 使用。可以使用任何端口,例如 8001、8002 等。

复制
已复制!
            

Usage: usage: dlprofviewer [-h] [--version] [-b ADDRESS] [-p PORT] database positional arguments: database specify path to DLProf database optional arguments: -h, --help show this help message and exit --version show program's version number and exit -b ADDRESS, --bind ADDRESS specify alternate bind address [default: all interfaces] -p PORT, --port PORT specify alternate port [default: 8000]

Viewer 直接从容器启动

复制
已复制!
            

$ dlprofviewer dlprof_dldb.sqlite

其中 dlprof_dldb.sqlite 是 DLProf 数据库的路径。如果您希望本地网络上的任何人都能在其浏览器中访问您的 dlprofviewer 服务器,请使用 -b 0.0.0.0 启动

复制
已复制!
            

$ dlprofviewer -b 0.0.0.0 dlprof_dldb.sqlite


您还可以使用 -p PORT 指定自定义端口

复制
已复制!
            

$ dlprofviewer -b 0.0.0.0 -p 8001 dlprof_dldb.sqlite


运行后,可以在浏览器中使用 URL 查看数据

复制
已复制!
            

http://<machine IP Address>:8000

本节介绍 DLProf Viewer 中每个可用的视图。

3.1. 视图概述

以下信息是 DLProf Viewer 中所有视图共有的。

术语和定义

术语 定义
聚合 给定迭代开始、迭代停止和关键节点的情况下,指标的汇总。
操作节点 图中对传入张量执行操作的节点。
模型、图、网络 <同义词>

3.2. 窗格概述

DLProf Viewer 用户界面分为三个窗格:

tb_pane_layout.png

窗格 定义
导航窗格 在此窗格中,您可以导航到不同的视图并选择不同的 NVTX 范围。此外,您可以导航到在线文档并启动您的电子邮件应用程序向我们发送评论。单击“X”以删除导航器窗格。
内容窗格 也称为“视图”窗格,您可以在其中看到分析的神经网络的所有不同部分。
详细信息窗格 此窗格用于显示有关内容窗格中所选信息的其他详细信息。假设您正在内容窗格中查看“内核摘要”面板,并且想要查看有关内核的更多信息。单击
tb_expand_button.png
按钮(工具提示 = “显示内核详细信息”)。详细的内核信息将显示在“详细信息”窗格中。单击“X”按钮以删除详细信息窗格。

此标准导航栏是位于 Viewer 顶部的导航标题。它包含一些按钮,就像大多数标准网站一样。它不会滚动出屏幕,因此这些按钮始终可用。

tb_nav_bar.png

UI 控件

tb_nav_pane.png

UI 控件

3.5. 详细信息窗格

此窗格显示有关系统特定区域的更多详细信息。

3.5.1. 内核详细信息面板

显示在浏览器右上角,导航栏下方。此面板提供有关网络中在特定迭代范围内聚合的内核的关键指标。

tb_kernel_details_panel.png

字段

字段 定义
所有内核 汇总网络中所有内核的总 GPU 时间和计数。
使用 TC 的内核 汇总所有使用 Tensor Core 的内核的总 GPU 时间和计数。
内存内核 汇总所有内存内核的总 GPU 时间和计数。
所有其他内核 汇总所有剩余内核类型的总 GPU 时间和计数。

UI 控件

控件 定义
X 关闭详细信息窗格。


4.1. 仪表板

仪表板视图在面板化视图中提供了性能结果的高级摘要。此视图充当分析结果的起点,并提供几个关键指标。

tb_dashboard_content_pane.png


4.1.1. GPU 利用率面板

GPU 空闲面板以可视化方式指示聚合迭代执行期间的 GPU 利用率时间百分比。将鼠标悬停在图表中的切片上将显示数字百分比。

tb_gpu_util.png

字段

图例标签 定义
正在使用 GPU 所有 GPU 的平均 GPU 利用率百分比。
空闲 GPU 所有 GPU 的平均 GPU 空闲百分比。

UI 控件

控件 定义
图例标签 在图表中隐藏和显示图例条目之间切换。
更多... 显示更多视图的下拉菜单(仅当在分析期间使用多个 GPU 时才可见)。

4.1.2. 资源使用情况细分面板

该面板提供按资源类别细分的分析活动。

resource_usage_breakdown_panel.png

字段

图例标签 定义
使用 Tensor Core 所有使用 Tensor Core 的内核的累积持续时间。
未使用 Tensor Core 所有未使用 Tensor Core 的内核的累积持续时间。
内存 所有内存操作的累积持续时间。
CPU 所有 CPU 操作的累积持续时间。
其他 不属于任何其他类别的所有时间。

UI 控件

控件 定义
图例标签 在图表中隐藏和显示图例条目之间切换。

4.1.3. 总内核 GPU 时间面板

该面板提供有关网络中在特定迭代范围内聚合的内核的关键指标。

  • 将鼠标悬停在图表中的切片上将显示聚合的 GPU 时间。
  • 单击图例项目将在图表中切换其可视化效果。

tb_kernel_summary_panel.png

字段

图例标签 定义
使用 Tensor Core 汇总所有使用 Tensor Core 的内核的总 GPU 时间。
内存内核 汇总所有与内存相关的内核的总 GPU 时间。
所有其他内核 汇总所有剩余内核类型的总 GPU 时间。

UI 控件

控件 定义
tb_expand_button.png
在“详细信息”窗格中显示内核详细信息面板
图例标签 在图表中隐藏和显示图例条目之间切换。
更多... 显示更多视图的下拉菜单。

4.1.4. Tensor Core 内核效率面板

  • 将鼠标悬停在图表中的切片上将显示百分比。
  • 单击图例项目将在图表中切换其可视化效果。

tb_tensor_core_kernel_eff.png

性能摘要面板

性能摘要面板提供有关在特定迭代范围内聚合的性能数据的顶级关键指标。将鼠标悬停在“i”图标上时,将出现有用的工具提示文本。

tb_perf_summary.png

字段 定义
实际运行时间 这是聚合范围的总运行时间,定义为 CPU 上起始迭代中第一个操作的开始时间与 CPU 或 GPU 上最终迭代中最后一个操作的结束时间之间的时间,以时间戳最大者为准。
Tensor Core 内核效率 % 此高级指标表示 Tensor Core 启用内核的利用率。Tensor Core 操作可以提供性能改进,应尽可能使用。此指标的计算公式为:[Tensor Core 内核的总 GPU 时间] / [Tensor Core 合格操作的总 GPU 时间]。100% 的 Tensor Core 利用率意味着所有合格的操作都仅在 GPU 上运行 Tensor Core 启用内核。50% 的 Tensor Core 利用率可能意味着所有合格的操作仅在一半时间内运行 Tensor Core 内核,或者只有一半的合格操作仅运行 Tensor Core 内核。此指标应与“操作摘要”面板一起使用,以确定 Tensor Core 使用的质量。

越高越好。

GPU 利用率 % 所有 GPU 的平均 GPU 利用率。

越高越好。

总迭代次数 在网络中找到的迭代总数。
分析的迭代次数 用于聚合性能结果的迭代总数。此数字是使用“开始迭代”和“停止迭代”计算得出的。
开始迭代 用于生成性能结果的起始迭代编号。
停止迭代 用于生成性能结果的结束迭代编号。
平均迭代时间 平均迭代时间是总实际运行时间除以迭代次数。

4.1.6. 迭代摘要面板

此面板以可视化方式显示迭代。用户可以快速查看模型中有多少次迭代、聚合/分析的迭代以及每次迭代中 Tensor Core 内核的持续时间。此面板上的颜色与所有其他仪表板面板上的颜色匹配。

iteration_summary_panel.png

有关此面板的更多信息,请参阅迭代视图

4.1.7. 前 10 个 GPU 操作面板

“前 10 个 GPU 操作”表格显示 GPU 上执行时间最长的前 10 个操作。此表格已预先排序,每行的顺序按 GPU 时间降序排列。该表格不可排序或搜索。

tb_top_10_gpu_ops.png

定义
GPU 时间 显示所有 GPU 上所有内核的总 GPU 时间。
操作名称 操作的名称。
方向 操作的 fprop/bprop 方向。(仅在 PyTorch 运行中可见)。
操作类型 操作的类型。
调用次数 操作被调用的次数。
TC 合格 一个真/假字段,指示操作是否符合使用 Tensor Core 内核的条件。
正在使用 TC 一个真/假字段,指示在此操作中启动的内核之一是否正在使用 Tensor Core。

4.1.8. 系统配置面板

tb_system_config.png

字段 定义
配置文件名称 (可选)用于描述分析的网络的有用标签。此字段中的值对应于 DLProf 中 --profile_name 命令行参数中提供的值。
GPU 计数 训练期间在计算机上找到的 GPU 设备数量。
GPU 名称 训练期间在计算机上找到的 GPU 设备列表。
CPU 型号 训练期间计算机上 CPU 的型号。
GPU 驱动程序版本 用于 NVIDIA Graphics GPU 的驱动程序的版本。
框架 用于生成分析数据的框架(例如,TensorFlow、PyTorch)。
CUDA 版本 CUDA 并行计算平台的版本。
cuDNN 版本 训练期间使用的 CUDA 深度神经网络的版本。
NSys 版本 训练期间使用的 Nsight Systems 的版本。
DLProf 版本 用于生成在 DLProf Viewer 中可视化的数据的深度学习分析器的版本。
DLProf DB 版本 DLProf 数据库的版本。
DLProf Viewer 版本 DLProf Viewer 的版本。

4.1.9. 建议面板

“建议”面板显示在分析的网络中检测到的常见问题,并提供潜在的解决方案和建议来解决这些问题。该面板仅显示 DLProf 检测到的问题。有关 DLProf 查找的潜在问题的完整列表,请参阅深度学习分析器用户指南中的“专家系统”部分

双绿色箭头将显示有关检测到的问题的其他信息。

tb_recommendations.png

定义
问题 DLProf 在分析网络时检测到的场景的描述。
>> (可选)如果存在,单击双箭头将显示一个新视图,其中详细显示问题。
建议 建议或可操作的反馈,用户可以执行以改进网络的切实建议。单击建议内的超链接将在浏览器中打开一个新选项卡。

4.1.10. 指导面板

此面板向用户提供静态指导,以帮助用户了解有关 Tensor Core、混合精度训练的更多信息。该面板包含用于进一步阅读的超链接。单击“指导”面板内的超链接将在浏览器中打开一个新选项卡。

tb_guidance.png

4.2. 操作类型摘要

此表格汇总了所有操作类型的指标,使用户能够从操作类型(例如,卷积、矩阵乘法等)的角度查看所有操作的性能。

有关所有数据表中可用的所有功能的说明,请参阅此处。

tb_op_type_summary.png

操作类型数据表

列名 描述
操作类型 操作类型。
操作数 具有上述操作类型的操作数。
调用次数 操作被调用/执行的实例数。
总 CPU 时间(纳秒) 此操作类型的所有实例的总 CPU 时间。
平均 CPU 时间(纳秒) 此操作类型的所有实例的平均 CPU 时间。
最小 CPU 时间(纳秒) 在此操作类型的所有实例中找到的最小 CPU 时间。
最大 CPU 时间(纳秒) 在此操作类型的所有实例中找到的最大 CPU 时间。
总 GPU 时间(纳秒) 此操作类型的所有实例的总 GPU 时间。
平均 GPU 时间(纳秒) 此操作类型的所有实例的平均 GPU 时间。
最小 GPU 时间(纳秒) 在此操作类型的所有实例中找到的最小 GPU 时间。
最大 GPU 时间(纳秒) 在此操作类型的所有实例中找到的最大 GPU 时间。
总 CPU 开销时间(纳秒) 此操作类型的所有实例的总 CPU 开销。
平均 CPU 开销时间(纳秒) 此操作类型的所有实例的平均 CPU 开销。
最小 CPU 开销时间(纳秒) 在此操作类型的所有实例中找到的最小 CPU 开销。
最大 CPU 开销时间(纳秒) 在此操作类型的所有实例中找到的最大 CPU 开销。
总 GPU 空闲时间(纳秒) 此操作类型的所有实例的总 GPU 空闲时间。
平均 GPU 空闲时间(纳秒) 此操作类型的所有实例的平均 GPU 空闲时间。
最小 GPU 空闲时间(纳秒) 在此操作类型的所有实例中找到的最小 GPU 空闲时间。
最大 GPU 空闲时间(纳秒) 在此操作类型的所有实例中找到的最大 GPU 空闲时间。

4.3. 操作和内核

此视图使用户能够查看、搜索、排序整个网络中的所有操作及其相应的内核。

tb_ops_kernels.png


4.3.1. 操作数据表

在“操作”表格中选择一行时,将在底部表格中显示该操作的每个内核的摘要。

有关所有数据表中可用的所有功能的说明,请参阅此处。

条目 描述
GPU 时间(纳秒) 执行为操作启动的所有 GPU 内核的累积时间。
CPU 时间(纳秒) 在 CPU 上执行所有操作实例的累积时间。
操作名称 操作的名称。
方向

操作的 fprop/bprop 方向。(仅在 PyTorch 运行中可见)。

操作类型 操作
调用次数 操作被调用的次数。
TC 合格 一个真/假字段,指示操作是否符合使用 Tensor Core 内核的条件。要过滤,请输入“1”表示真,“0”表示假。
正在使用 TC 一个真/假字段,指示在此操作中启动的内核之一是否正在使用 Tensor Core。要过滤,请输入“1”表示真,“0”表示假。
内核调用次数 在操作中启动的内核数。
数据类型 此操作的数据类型(例如,float16、int64、int32)
堆栈跟踪

操作的堆栈跟踪。(仅在 PyTorch 运行中可见)。

如果此单元格的内容超过 100 个字符,则会出现“查看更多”超链接。单击后,将显示单元格的完整内容。展开单元格后,超链接文本将更改为“查看更少”。单击后,单元格将折叠回前 100 个字符。

4.3.2. 内核摘要数据表

有关所有数据表中可用的所有功能的说明,请参阅此处。

内核摘要表格

条目 描述
内核名称 内核的完整名称。
正在使用 TC 一个真/假字段,指示内核是否实际使用 Tensor Core。要过滤,请输入“1”表示真,“0”表示假。
调用次数 调用次数
GPU 时间(纳秒) 此内核被启动的次数。
总计(纳秒) 每次内核启动的聚合持续时间。
平均值(纳秒) 每次内核启动的平均持续时间。
最小值(纳秒) 所有内核启动的最小持续时间。

最大值(纳秒)

所有内核启动的最大持续时间。

tb_kernels_by_iterations_plugin.png


4.4. 按迭代次数划分的内核

“按迭代次数划分的内核”视图显示每次迭代的操作及其执行时间。一目了然,您可以比较迭代在时间以及执行的内核方面的差异。

4.4.1. 迭代摘要数据表

描述
要查看特定迭代的内核,请单击顶部表格中的一行。“选定迭代中的内核”表格将填充来自选定迭代的内核。 有关所有数据表中可用的所有功能的说明,请参阅此处。
迭代 迭代间隔编号。
时间戳 此迭代开始的确切时间。
持续时间 此迭代执行所花费的时间长度。此列上的单位是动态的。
总内核数 在此迭代期间调用的 GPU 内核数。
TC 内核 在迭代期间调用的 GPU Tensor Core 内核数。
  1. 平均 GPU 时间(微秒)
  2. 迭代期间所有 GPU 上所有内核的平均执行时间。此单元格的内容分为多个部分:
  3. 该值是此迭代在所有 GPU 上的平均执行时间。
  4. 进度条以可视化方式指示此迭代在 GPU 上执行了多少。

该百分比是所有 GPU 上所有内核的平均 GPU 时间占总迭代时间的百分比。

将鼠标悬停在此单元格上将显示带有有用信息的工具提示文本。 此列上的单位是动态的。
  1. 平均 TC GPU 时间(微秒)
  2. 迭代期间所有 GPU 上所有 Tensor Core 内核的平均执行时间。此单元格的内容分为多个部分:
  3. 该值是此迭代期间所有 GPU 上 Tensor Core 内核的平均执行时间。
  4. 进度条以可视化方式指示此迭代在 GPU 上执行了多少。

该百分比是所有 GPU 上所有内核的平均 GPU 时间占总迭代时间的百分比。

进度条以可视化方式指示此迭代执行 Tensor Core 内核的程度。

该百分比是所有 GPU 上使用 Tensor Core 的内核的平均 GPU 时间占总迭代时间的百分比。

描述
操作名称 4.4.2. 选定迭代中的内核
有关所有数据表中可用的所有功能的说明,请参阅此处。 启动内核的操作的名称。
内核名称 内核的名称。
设备 ID 内核的设备 ID。
GPU 时间(纳秒) 内核时间戳(纳秒)
在 CPU 线程中为此内核发出 CUDA API 调用时的时间戳。有助于查看内核被调用的顺序。 GPU 时间(纳秒)
在 GPU 上执行内核所花费的时间。 用户 TC
一个真/假字段,指示内核是否使用 Tensor Core。要过滤,请输入“1”表示真,“0”表示假。 网格

内核的网格大小。

内核的块大小。

tb_kernels_by_ops.png


4.5. 按操作划分的内核

“按操作划分的内核”视图是“按迭代次数划分的内核”视图的变体。它能够按迭代和操作过滤内核列表。

有关所有数据表中可用的所有功能的说明,请参阅此处。

描述
要查看特定迭代的内核,请单击顶部表格中的一行。“选定迭代中的内核”表格将填充来自选定迭代的内核。 4.5.1. 迭代摘要数据表
迭代 迭代间隔编号。
时间戳 此迭代开始的确切时间。
持续时间 此迭代执行所花费的时间长度。此列上的单位是动态的。
总内核数 在此迭代期间调用的 GPU 内核数。
TC 内核 在“迭代摘要”表格中选择迭代将在“选定迭代中的操作”表格中填充来自选定迭代的操作的所有分析数据。在“选定迭代中的操作”表格中选择操作将在“选定操作中的内核”表格中填充为选定操作和迭代执行的内核列表和计时数据。
  1. 平均 GPU 时间(微秒)
  2. 迭代期间所有 GPU 上所有内核的平均执行时间。此单元格的内容分为多个部分:
  3. 该值是此迭代在所有 GPU 上的平均执行时间。
  4. 进度条以可视化方式指示此迭代在 GPU 上执行了多少。

该百分比是所有 GPU 上所有内核的平均 GPU 时间占总迭代时间的百分比。

将鼠标悬停在此单元格上将显示带有有用信息的工具提示文本。 有关所有数据表中可用的所有功能的说明,请参阅此处。
  1. 平均 TC GPU 时间(微秒)
  2. 迭代期间所有 GPU 上所有 Tensor Core 内核的平均执行时间。此单元格的内容分为多个部分:
  3. 该值是此迭代期间所有 GPU 上 Tensor Core 内核的平均执行时间。
  4. 进度条以可视化方式指示此迭代在 GPU 上执行了多少。

该百分比是所有 GPU 上所有内核的平均 GPU 时间占总迭代时间的百分比。

4.5.2. 所选迭代中的操作表

所选迭代中的操作

请参阅此说明,了解所有数据表中的所有可用功能。

描述
操作名称 4.4.2. 选定迭代中的内核
方向

操作的 fprop/bprop 方向。(仅在 PyTorch 运行中可见)。

操作类型 操作的类型。
操作开始时间 操作启动的时间。用于按时间顺序对操作进行排序。
持续时间 此迭代执行所花费的时间长度。此列上的单位是动态的。
总内核数 在此迭代期间调用的 GPU 内核数。
总 GPU 时间(纳秒) 操作期间 GPU 上所有内核的累积执行时间。
TC GPU 时间 (ns) 操作期间 GPU 上所有 Tensor Core 内核的累积执行时间。
数据类型 此操作的数据类型(例如,float16、int64、int32)。
堆栈跟踪

操作的堆栈跟踪。(仅在 PyTorch 运行时可见)

如果此单元格的内容超过 100 个字符,则会出现“查看更多”超链接。单击后,将显示单元格的完整内容。展开单元格后,超链接文本将更改为“查看更少”。单击后,单元格将折叠回前 100 个字符。

4.5.3. 内核所选迭代/操作组合表

所选迭代/操作组合中的内核

请参阅此说明,了解所有数据表中的所有可用功能。

描述
有关所有数据表中可用的所有功能的说明,请参阅此处。 启动内核的操作的名称。
内核名称

内核的设备 ID。

设备 ID

内核的设备 ID。

GPU 时间(纳秒)

内核时间戳(纳秒)

使用 TC GPU 时间(纳秒)
在 GPU 上执行内核所花费的时间。

用户 TC

一个真/假字段,指示内核是否使用 Tensor Core。要过滤,请输入“1”表示真,“0”表示假。

网格

4.6. 迭代视图

此视图以可视化方式显示迭代。用户可以快速查看模型中有多少次迭代、聚合/分析的迭代以及每次迭代中 Tensor Core 内核的累积持续时间。

iterations_view.png

字段

字段 定义
X 轴 模型的迭代。
Y 轴 迭代的持续时间。此轴的单位是动态的(例如,毫秒、纳秒、秒等)。
徽章

在右上角,四个徽章显示已分析网络的迭代详细信息。

  • 总计

  • 已分析

  • 开始

  • 停止

开始和停止徽章内的值直接来自 DLProf:请参阅 --iter_start 和 --iter_stop 命令行选项。

图例
  • 深绿色:所有使用 Tensor Core 的内核的累积持续时间

  • 浅绿色:所有不使用 Tensor Core 的内核的累积持续时间

  • 蓝色:所有内存操作的累积持续时间

  • 橙色:所有 CPU 操作的累积持续时间

  • 粉色:不属于其他任何类别的所有时间

  • 灰色:配置文件之外的迭代持续时间。

  • 黑色:用户定位的聚合边界。请参阅下面的“选择迭代开始”和“选择迭代停止”。

UI 控件

控件 定义
切换按钮
  • 所有迭代:显示整个网络中的所有迭代

  • 已分析迭代:放大以仅显示已分析的迭代

悬停 当鼠标悬停在迭代上时,会出现一个弹出窗口,显示迭代的所有组成部分的值。
选择迭代开始 指定新的“迭代开始”值。用于重新聚合查看器内的数据。可以通过在字段中键入、单击向上/向下箭头微调器或将光标悬停在字段上并旋转鼠标滚轮来更改该值。当此值更改时,左侧黑条将相应移动。
选择迭代停止 指定新的“迭代停止”值。用于重新聚合查看器内的数据。可以通过在字段中键入、单击向上/向下箭头微调器或将光标悬停在字段上并旋转鼠标滚轮来更改该值。当此值更改时,右侧黑条将相应移动。
选择关键节点
  1. 现有关键节点值显示在只读字段中。
  2. 有时关键节点可能非常长。如果选择了长关键节点,则关键节点的前几个字符将显示在字段中。当光标悬停在字段上时,将显示关键节点字段的整个长度。
  3. 单击“关键节点选择器”按钮以查看和选择新的关键节点。请参阅下面的对话框。
重新聚合 指示 DLProf 后端服务器使用指定的参数重新聚合网络。

工作流程

有时,DLProf 命令行上的原始聚合参数指定了迭代开始值、迭代停止值,甚至关键节点,这些值产生的网络配置文件表示不佳(例如,包括预热节点)。此功能允许用户更改这些值并重新聚合。这是一个示例:

  1. 请注意上面的“迭代视图”屏幕截图:
    1. 迭代 8 不包含任何工作,并且
    2. 迭代 9 到 15(以及其他迭代)包含的工作量过大。整个查看器中的聚合值包含这些操作和内核,并可能扭曲结果。
  2. 您可以通过多种方式更改迭代开始和迭代停止值:键入和单击向上和向下微调器。最好的方法是将鼠标悬停在字段上并旋转鼠标滚轮。
  3. 某些平台对于神经网络没有默认的关键节点。有时,预定义的关键节点不是最佳的。通过单击“选择关键节点”选择器,可以选择一个关键节点。这是一个功能齐全的面板,允许进行过滤、排序和分页以查找关键节点。有关更多详细信息,请参阅名为操作和内核的视图。
    注意

    注意:此处的列数少于视图中的列数,但可用性相同。


    select_key_node_dialog.png
  4. 一旦这三个字段中的任何一个发生更改,请单击“重新聚合”按钮。将显示一个确认对话框:
    reaggregate_confirmation_it_dialog.png

    重新聚合正在进行时,查看器功能齐全。“进行中!”面板将一直保持在所有其他视图和面板之上,直到重新聚合完成。

    注意

    注意:请勿单击浏览器的“后退”或“刷新”按钮。如果意外单击了其中任何一个按钮,“进行中!”面板将不再显示。重新聚合将继续进行。

  5. 确认后,将向后端 DLProf 服务器发送消息,以使用这些值重新聚合配置文件。此重新聚合过程可能需要几分钟,因此以下面板将显示在所有面板之上:
    reaggregate_underway_panel.png

    重新聚合正在进行时,查看器功能齐全。“进行中!”面板将一直保持在所有其他视图和面板之上,直到重新聚合完成。

    注意

    注意:请勿单击浏览器的“后退”或“刷新”按钮。如果意外单击了其中任何一个按钮,“进行中!”面板将不再显示。重新聚合将继续进行,不受影响。

  6. 重新聚合完成后,将出现一个“成功!”面板,如下所示:
    reaggregate_success_panel.png
  7. 此时,单击“刷新”按钮会将所有新重新聚合的数据加载到查看器中。如果“选择聚合”下拉列表尚未显示,则它将显示在导航窗格中:
    new_aggregation_droplist.png

4.7. GPU 视图

此视图显示分析运行期间所有 GPU 的利用率。它分为两个不同但相关的元素:

  • 条形图 - 快速可视化,您可以在其中查看分析期间使用的每个 GPU 的 GPU 利用率。此视图仅在配置文件中使用多个 GPU 时出现。
  • 表格 - 此表显示有关每个 GPU 设备的更多详细信息,包括其名称、计算能力和 SM 计数。

gpus_view.png

数据表在 DLProf 查看器的许多视图中使用。数据表中的功能使使用者能够快速查找信息。下面是一个屏幕截图,用于查看这些功能的位置,后跟一个表格,描述了每个功能的功能。

tb_using_data_tables.png

数据表功能 定义
显示标签 表格下方的标签(左下方)将显示表格中行数的实时计数。
搜索文本框 按文本搜索筛选结果。在此字段中键入将仅显示包含框中文本的行。在“搜索”框中添加或删除文本将更新“显示...”标签。
列搜索 在大多数列标题下方的文本框中键入将仅显示包含输入文本的行。这非常强大,因为用户可以为多列输入搜索条件,以缩小到感兴趣的行。带有“x”和“对勾标记”的列是布尔字段。用户可以输入“1”以显示带有“对勾标记”的行,输入“0”以仅显示带有“x”的行。
排序切换按钮 单击列标题将对表格进行排序。单击后,所有行都将按升序或降序排序。大多数数字列的初始排序为降序。
显示条目下拉列表 此下拉列表允许用户显示 10、25、50 或 100 行。更改设置将更新“显示...”标签。
分页按钮 上一页、下一页和页码导航。允许用户快速翻阅大型数据集。使用“显示条目”设置并更新“显示...”标签。
导出到按钮

允许用户轻松地将数据表中的数据导出为众所周知的格式。当在 DLProf 中使用--profile_name命令行参数时,可选的配置文件名称将显示在所有导出的标头中。

警告:单击大型网络上的任何这些按钮时,会发生轻微延迟。

在浏览器中启用弹出窗口以导出为 PDF。


数据库不包含合法配置

找不到 DLProf 数据库

database_not_found.png

请参阅上面的部分,了解如何启动 DLProf 服务器

找到了较旧的数据库。

old_unsupported_db_found.png

找到了新的数据库。

new_db_found.png

在 URL 中找到错误的参数。

bad_parameters_found.png


声明

本文档仅供参考,不得视为对产品的特定功能、状况或质量的保证。NVIDIA Corporation(“NVIDIA”)对本文档中包含的信息的准确性或完整性不作任何明示或暗示的陈述或保证,并且对本文档中包含的任何错误不承担任何责任。NVIDIA 对因使用此类信息而造成的后果或使用,或因使用此类信息而可能导致的侵犯第三方专利或其他权利的行为不承担任何责任。本文档不承诺开发、发布或交付任何材料(下文定义)、代码或功能。

NVIDIA 保留随时对此文档进行更正、修改、增强、改进和任何其他更改的权利,恕不另行通知。

客户在下订单之前应获取最新的相关信息,并应验证此类信息是否为最新且完整。

除非 NVIDIA 和客户的授权代表签署的个别销售协议(“销售条款”)另有约定,否则 NVIDIA 产品的销售受订单确认时提供的 NVIDIA 标准销售条款和条件的约束。NVIDIA 特此明确反对将任何客户一般条款和条件应用于购买本文档中引用的 NVIDIA 产品。本文档未直接或间接地形成任何合同义务。

NVIDIA 产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命维持设备,也不适用于 NVIDIA 产品的故障或失灵可能合理预期会导致人身伤害、死亡或财产或环境损害的应用。NVIDIA 对在上述设备或应用中包含和/或使用 NVIDIA 产品不承担任何责任,因此,此类包含和/或使用风险由客户自行承担。

NVIDIA 不保证或声明基于本文档的产品将适用于任何特定用途。NVIDIA 不一定会执行每个产品所有参数的测试。客户有责任评估和确定本文档中包含的任何信息的适用性,确保产品适合客户计划的应用和用途,并为该应用执行必要的测试,以避免应用或产品发生故障。客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的附加或不同的条件和/或要求。对于可能基于或归因于以下原因的任何故障、损坏、成本或问题,NVIDIA 不承担任何责任:(i) 以任何违反本文档的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。

本文档未授予任何 NVIDIA 专利权、版权或其他 NVIDIA 知识产权的明示或暗示许可。NVIDIA 发布的有关第三方产品或服务的信息不构成 NVIDIA 授予的使用此类产品或服务的许可,也不构成对此类产品或服务的保证或认可。使用此类信息可能需要获得第三方的专利或其他知识产权的许可,或者获得 NVIDIA 的专利或其他知识产权的许可。

只有在事先获得 NVIDIA 书面批准的情况下,才允许复制本文档中的信息,并且复制的信息必须未经过修改,完全符合所有适用的出口法律和法规,并附带所有相关的条件、限制和声明。

本文档以及所有 NVIDIA 设计规范、参考板、文件、图纸、诊断程序、列表和其他文档(统称为“材料”)均按“原样”提供。NVIDIA 对材料不作任何明示、暗示、法定或其他形式的保证,并且明确否认所有关于不侵权、适销性和特定用途适用性的暗示保证。在法律未禁止的范围内,在任何情况下,NVIDIA 均不对因使用本文档而引起的任何损害(包括但不限于任何直接、间接、特殊、偶然、惩罚性或后果性损害,无论因何种原因引起,亦无论责任理论为何)承担责任,即使 NVIDIA 已被告知可能发生此类损害。尽管客户可能因任何原因遭受任何损害,但 NVIDIA 对本文所述产品的客户承担的累计总责任应根据产品的销售条款进行限制。

VESA DisplayPort

DisplayPort 和 DisplayPort Compliance Logo、DisplayPort Compliance Logo for Dual-mode Sources 以及 DisplayPort Compliance Logo for Active Cables 是视频电子标准协会在美国和其他国家/地区的商标。

HDMI

HDMI、HDMI 徽标和 High-Definition Multimedia Interface 是 HDMI Licensing LLC 的商标或注册商标。

OpenCL

OpenCL 是 Apple Inc. 的商标,已获得 Khronos Group Inc. 的许可使用。

商标

NVIDIA、NVIDIA 徽标以及 cuBLAS、CUDA、cuDNN、DALI、DIGITS、DGX、DGX-1、DGX-2、DGX Station、DLProf、Jetson、Kepler、Maxwell、NCCL、Nsight Compute、Nsight Systems、NvCaffe、NVIDIA Ampere GPU Architecture、PerfWorks、Pascal、SDK Manager、Tegra、TensorRT、Triton Inference Server、Tesla、TF-TRT 和 Volta 是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。其他公司和产品名称可能是与其关联的各自公司的商标。

© 2021-2021 NVIDIA Corporation。保留所有权利。 上次更新时间:2021 年 6 月 25 日。