高性能计算

使用 NVIDIA Nsight Deep Learning Designer 设计深度学习应用程序

NVIDIA Nsight Deep Learning Designer 是一款新工具,有助于简化性能模型设计过程。 DL Designer 对模型的结构以及它在 NVIDIA 硬件上的性能提供了有价值的见解。可以使用用户友好的拖放界面创建模型,该界面具有最流行的深度学习框架中所有常用操作符的节点。

性能分析

从一开始就必须了解模型的性能特征。设计模型后,可以对其进行性能分析。

要选择并查看最新的分析报告,请选择发射推断,看法,推理运行记录器.

Screenshot of the Nsight DL Designer showing inference performance profiling with GPU metrics as blue bar graphs.
图 1 。Nsight DL Designer 工具,显示性能分析选项。

这分为两个主要部分。如前所示,第一个为您提供了一个运算符表、它们的超参数和执行时间。默认情况下,它们是按优化优先级顺序列出的(类似于 nvprof 按优化优先级顺序列出内核的方式)。

对于在 NVIDIA 硬件上运行的任何模型,无论是训练还是推理,一个重要的问题是,“该模型是否使用张量核”?剖面报告的第二部分显示了张量核的利用情况。

这里有两组图,第一组给出了整个网络的 Tensor 核心利用率、内存吞吐量和 SM 占用率。第二个为从前面列表中单独选择的操作员提供这些相同的度量。在张量核心利用率没有意义的情况下,例如在池运算符的情况下,张量核心利用率显示为零。

Screenshot of Nsight DL Designer showing TensorCore and Memory Utilization in blue bar graphs.
图 2 。 Nsight DL Designer 工具,显示 Tensor 内核和内存利用率。

内存利用率可以快速告诉您是否内存受限。在这种情况下,谨慎的做法是寻找机会,在适当的情况下融合运营商,以使用更快的内存。如果有效地使用 GPU 硬件,培训时间可以大大缩短。在培训大型模型或使用基于云的服务时,这可以迅速转化为大大降低的生产成本。

训练模型

在分析模型以提高性能后,可以将模型导出到 PyTorch 并执行培训。当使用 NHWC 布局并且您的 conv2d 卷积至少有八个输入/输出通道的倍数时,改进领域可以包括确保 FP16

要导出到 PyTorch ,请选择文件,出口,生成 PyTorch 文件(图 3 )。

Screenshot of a dialog box asking to Generate Pytorch code from DL Designer Options menu.
图 3 。从 DL 设计器生成 PyTorch 代码

将模型导出到 PyTorch 可以为您提供一些选项,以检查模型的名称以及为您选择的文件。但是,您必须为 PyTorch 文件指定一个输出目录,该目录由一个可训练模型和一些使用该模型的实用方法组成。

要导出到 PyTorch , PATH 环境变量和以下模块中必须有 Python 3 环境:

  • PyTorch
  • Numpy
  • 枕头
  • Matplotlib 。
  • 快速进展

成功生成后,关闭代码生成完成对话框。

Screenshot of dialog box stating that Pytorch Code Generation is completed.
图 4 。完成 PyTorch 代码生成步骤。

分析模型

Screenshot of Nsight DL Designer showing code output when training a model and applying weights to analyze performance.
图 5 。训练模型和应用权重分析绩效.

现在,您的代码可以使用了!下一步是对其进行训练,并将权重加载回 DL Designer ,以便您可以分析模型执行其设计任务的情况。

这里的模型是一个去噪器模型。你可以在样品中自己试一试。首先要做的是将其加载到 DL 设计器中。接下来,获取并应用 PyTorch 中训练获得的权重。

要配置经过训练的模型,请选择工具,网络设置.

Screenshot of DL Designer showing trained weights being loaded.
图 6 。网络设置

首先要看的是“权重”文件夹。选择输出训练权重的目录。 DL Designer 会选择这些选项,并将其应用于适当的运算符。

另外,请确保已设置为 FP16 、 NHWC 布局和 CUDA 后端。要将快速张量核用于卷积和 GEMM (矩阵乘法)等运算,请使用 FP16 。要获得最快的吞吐量,请使用 NHWC 。

现在,您可以开始对模型执行一些可视化分析。在此之前,请使用一些 DL Designer 分析功能,并向经过训练的模型添加一些方便的节点,以帮助您评估其作为去噪器的性能。

分析层

Screenshot of Nsight DL Designer showing Analysis Layers in the form of boxes interconnected in a workflow simulating a neural network.
图 7 。“图层”选项板的“分析”部分的视图。

从扩展分析部分调色板要添加的第一个新层是噪音层这有助于向输入图像中注入一些噪声,以便评估在没有噪声的情况下,去噪器重建图像的效果。要执行此操作,请首先选择并删除之间的连接 input_image 以及它所连接的三个节点:conv _ enc _ b,conv _ enc _ 1转换预洗牌.

Screenshot of Nsight DL Designer showing how to edit connections and insert a noise layer.
图 8 。添加噪音层来测试去噪器。

现在,选择图像输入节点并将其向上移动一点,以便可以将噪波层放在中间。最后,连接 output_image 节点到新的噪音层,然后将新层连接到先前从图像输入连接的三个节点。运行此模型时,可以控制要添加到图像中的噪波量。

Screenshot of Nsight DL Designer showing connecting the new noise layer node with three input image nodes.
图 9 。连接噪音层到连接到的三个节点输入图像.

在运行分析之前,您 MIG 发现还有一个节点很有用:混合节点。此节点使您能够在添加噪声之前,将最终去噪输出与原始输入进行比较。如您所见,您可以通过多种方式执行此比较,从而了解模型的性能。

删除之间的连接Conv Out 0output_image 然后插入混合节点位于这两个节点之间,很像通过替换连接对噪波节点所做的操作。我建议谨慎,因为 mix 节点实际上有两个输入。

您已经指定了Conv Out 0作为一个输入。现在,在添加噪波之前,添加其他输入以连接到原始图像层的输出,即模型顶部。

到目前为止,您已经添加了方便的实用程序来帮助分析模型。此时,将模型另存为denoiser _ analyze . xml(或类似的东西)然后选择 Launch Analysis 查看模型的运行情况。下面是用户界面的快速分解:

  • 图像输入数据– 右键单击并选择开放式图像输入浏览用作原始输入的 JPG 或 PNG 文件。当你选择Ok,模型开始生效,模型的输出显示在中央面板中。
  • 噪音混合– 刚刚添加的两个分析层的选项。
  • 网络概述– 由模型推理执行的节点图。

定制设计检查

要继续,请双击噪音层,这是下面的第二层网络概述. 通过航道检查员在此选项卡下,您可以看到推理期间生成的张量的各个通道,即隐藏层。和噪音层通道在视图中,现在可以返回屏幕右下角的噪波层选项。拖动规模向右滑动一点,查看图像输入上显示的噪声量增加。

Screenshot of Nsight DL Designer showing several green and red images distorting the original image with noise.
图 10 。使用航道检查员用于识别和区分推理过程中产生的张量的各个通道的特征

在下面航道检查员,双击conv _ 2s图层并加载该隐藏层的通道。这显示了在推断过程中卷积运算的结果。

Screenshot of Nsight DL Designer showing how to adjust channel display and help identify noise distortion in the image.
图 11 。通道检查器在推断过程中在点处进行卷积操作,从而加载隐藏层

这些通道中的功能有点模糊,但您可以通过选择“放大”图标来增强它们(图 12 )。

Screenshot of Nsight DL Designer showing icons at the top of the screen that can be used to scale up or down the channel brightness of the image.
图 12 。放大或缩小通道亮度

这使您能够更好地了解这些层的性能,并且可以清楚地看到这里没有任何崩溃。在模型中有很强的信号传播。任何显示为绿色的数据都是正值,任何显示为红色的数据都是负值。

您还可以使用 shift 按钮移动显示的值,使您能够按所有键将显示为正值或负值。

Screenshot of Nsight DL Designer showing controlling icons at the top to Increase or decrease the displayed image in a positive or negative tone.
图 13 。将显示的值切换为正值或负值

查看模型的最终输出,并将其与原始输入进行比较。这就是混合层发挥作用的地方。关闭通道检查器并再次查看图像输出。使用左上角的缩放按钮使输出填充用户界面,以便您可以真正看到正在发生的事情。

Screenshot of Nsight DL Designer showing icons to Zoom in or out of the channel inspector.
图 14 。两个缩放图标使输出填充 Nsight DL Designer 屏幕

在下面混合层在左下角,更改混合选择V 分裂. 当你拖动混合量从左到右滑动,您可以看到,您实际上在原始输入和重构、去噪输出之间获得了一个分割屏幕。它当然有用,但效果相当微妙。

Screenshot of Nsight DL Designer showing how to select a split screen view of the image.
图 15 。使用“混合层”选项创建分割屏幕视图

您可以得出这样的结论:去噪器正在发挥它的作用,但区别是微妙的。如何才能更清楚地了解哪些图像部分的性能优于其他部分?

在下面混合层改变混合选择风俗. 对于混合配方,将现有表达式替换为: alpha * (a-b)alpha 关键字实际上是滑块的标准化值, ab 是该层的两个输入。这将创建输入和输出的视觉差异,您可以使用混合滑块在视觉上增强该差异,并告诉您输入和输出之间的根本差异。

这类事情告诉你,“是的,你的模型很好。”或者,“你应该重新审视你的架构或培训数据。”

Screenshot of Nsight DL Designer showing a gray image and how Mixing between two tensors using a slider can help differentiate.
图 16 。由混合滑块功能增强的输入和输出的视觉差异。

结论

NVNsight DL Designer 提供了更多功能,例如 NvNeural ,一个高度优化的推理引擎,具有可扩展的基于插件的体系结构,使您能够实现自己的层类型。

与设计和分析工具一起, DL Designer 是一个高度交互式和多功能的模型设计解决方案,可以减少编码错误和复杂性,从而更加关注模型的功能和性能。

有关更多信息,请参阅以下参考资料:

 

Tags