计算机视觉/视频分析

使用 GPUNet 在 NVIDIA GPU 上击败 SOTA 推理性能

 

GPUNet 由 AI 为 AI 精心打造,是一类卷积神经网络,旨在使用 NVIDIA TensorRT 最大化 NVIDIA GPU 的性能。

使用新的神经架构搜索( NAS )方法构建, GPUNet 展示了最先进的推理性能,比 EfficientNet-X 和 FBNet-V3 快两倍。

NAS 方法有助于为广泛的应用构建 GPUNet ,以便深度学习工程师可以根据相对精度和延迟目标直接部署这些神经网络。

GPUNet NAS 设计方法

高效的体系结构搜索和部署就绪模型是 NAS 设计方法的关键目标。这意味着几乎不与领域专家进行交互,并且有效地使用集群节点来培训潜在的架构候选。最重要的是,生成的模型已准备好部署。

人工智能制作

为目标设备寻找性能最佳的架构搜索可能很耗时。 NVIDIA 构建并部署了一种新型的 NAS AI 代理,该代理可以有效地做出构建 GPUNET 所需的艰难设计选择,使 GPUNET 比当前的 SOTA 模型领先 2 倍。

此 NAS AI 代理在中自动协调数百个 GPU Selene 超级计算机 而不需要领域专家的任何干预。

使用 TensorRT 为 NVIDIA GPU 优化

GPUNet 通过相关的 TensorRT 推理延迟成本,提升 GPU 友好的运算符(例如,较大的筛选器)而不是内存绑定运算符(例如花哨的激活)。它在 ImageNet 上提供了 SOTA GPU 延迟和精度。

部署就绪

GPUNet 报告的延迟包括 TensorRT 发货版本中可用的所有性能优化,包括融合内核、量化和其他优化路径。构建的 GPune 已准备好部署。

构建 GPune :端到端 NAS 工作流

在高层次上,神经架构搜索( NAS ) AI 代理分为两个阶段:

  • 根据推理延迟对所有可能的网络架构进行分类。
  • 使用适合延迟预算的这些网络的子集,并优化其准确性。

在第一阶段,由于搜索空间是高维的,代理使用 Sobol 采样来更均匀地分布候选。使用延迟查找表,然后将这些候选对象分类到子搜索空间,例如, NVIDIA V100 GPU 上总延迟低于 0.5 毫秒的网络子集。

此阶段中使用的推断延迟是一个近似成本,通过将延迟查找表中每个层的延迟相加来计算。延迟表使用输入数据形状和层配置作为键来查找查询层上的相关延迟。

在第二阶段,代理建立贝叶斯优化损失函数,以在子空间的延迟范围内找到性能最佳的高精度网络:

loss = CrossEntropy(model weights) + \alpha * latency(architecture candidate)^{\beta}

Control flow block diagram of the NAS AI Agent, starting with a baseline model to ending with a list of best ranked neural architectures.
图 2. NVIDIA NAS AI 代理端到端工作流

AI 代理使用客户端 – 服务器分布式训练控制器来跨多个网络架构同时执行 NAS 。 AI 代理在一个服务器节点上运行,提出并训练在集群上多个客户端节点上运行的网络候选。

根据结果,只有满足目标硬件的准确度和延迟目标的有前途的网络体系结构候选者得到排名,从而产生了一些性能最佳的 GPUNET ,可以使用 TensorRT 部署在 NVIDIA GPU 上。

GPUNet 模型体系结构

GPUNet 模型架构是一个八级架构,使用 EfficientNet-V2 作为基线架构。

搜索空间定义包括搜索以下变量:

  • 操作类型
  • 跨步数
  • 内核大小
  • 层数
  • 激活函数
  • IRB 扩展比
  • 输出通道滤波器
  • 挤压激励( SE )

表 1 显示了搜索空间中每个变量的值范围。

Table 1. Value ranges for search space variables
Stage Type Stride Kernel Layers Activation ER Filters SE
0 Conv 2 [3,5] 1 [R,S]   [24, 32, 8]  
1 Conv 1 [3,5] [1,4] [R,S]   [24, 32, 8]  
2 F-IRB 2 [3,5] [1,8] [R,S] [2, 6] [32, 80, 16] [0, 1]
3 F-IRB 2 [3,5] [1,8] [R,S] [2, 6] [48, 112, 16] [0, 1]
4 IRB 2 [3,5] [1,10] [R,S] [2, 6] [96, 192, 16] [0, 1]
5 IRB 1 [3,5] [0,15] [R,S] [2, 6] [112, 224, 16] [0, 1]
6 IRB 2 [3,5] [1,15] [R,S] [2, 6] [128, 416, 32] [0, 1]
7 IRB 1 [3,5] [0,15] [R,S] [2, 6] [256, 832, 64] [0, 1]
8 Conv1x1 & Pooling & FC    

前两个阶段使用卷积搜索磁头配置。受 EfficientNet-V2 的启发,第二级和第三级使用融合 IRB 。然而,融合的 IRB 会导致更高的延迟,因此在第 4 至 7 阶段,这些被 IRB 取代。

专栏显示阶段中的层范围。例如,阶段 4 中的[1 , 10]表示该阶段可以具有 1 到 10 个 IRB 。专栏过滤器显示阶段中各层的输出通道滤波器范围。该搜索空间还调整 IRB /融合 IRB 内部的扩展比( ER )、激活类型、内核大小和压缩激励( SE )层。

最后,在步骤 32 ,从 224 到 512 搜索输入图像的尺寸。

来自搜索空间的每个 GPUNet 候选构建被编码为 41 宽的整数向量(表 2 )。

Table 2. The encoding scheme of networks in the search space
Stage Type Hyperparameters Length
Resolution [Resolution] 1
0 Conv [#Filters] 1
1 Conv [Kernel, Activation, #Layers] 3
2 Fused-IRB [#Filters, Kernel, E, SE, Act, #Layers] 6
3 Fused-IRB [#Filters, Kernel, E, SE, Act, #Layers] 6
4 IRB [#Filters, Kernel, E, SE, Act, #Layers] 6
5 IRB [#Filters, Kernel, E, SE, Act, #Layers] 6
6 IRB [#Filters, Kernel, E, SE, Act, #Layers] 6
7 IRB [#Filters, Kernel, E, SE, Act, #Layers] 6

在 NAS 搜索结束时,返回的排序候选是这些性能最佳的编码的列表,这些编码又是性能最佳的 GPUNET 。

总结

鼓励所有 ML 从业人员阅读 CVPR 2022 GPUNet 研究报告 ,并在 NVIDIA /深度学习示例 GitHub repo ,并在 协作实例 在可用云上 GPU 。 GPUNet 推理也可在 PyTorch hub colab 运行实例使用 NGC 集线器上托管的 GPUNet 检查点。这些检查点具有不同的准确性和延迟折衷,可以根据目标应用程序的要求应用。

 

Tags