在 MLPerf Inference v3.0 中,NVIDIA 首次向新推出的 网络分割 投入,现在是 MLPerf 推理数据中心套件的一部分。网络分割旨在模拟真实的数据中心设置,努力将包括硬件和软件在内的网络效果纳入端到端推理性能。
网络部门中有两种类型的节点:前端节点生成查询,这些查询通过标准网络结构(如以太网或InfiniBand)发送,由加速器节点处理,加速器节点执行推理。
图 1 显示了 Closed 分区完全在单个节点上运行。在“网络”部分中,查询在“前端”节点上生成,并传输到“加速器”节点进行推理。
在网络部分,加速器节点包含推理加速器以及所有网络组件。这包括网络接口控制器( NIC )、网络交换机和网络结构。因此,虽然网络部门试图衡量加速器节点和网络的性能,但它排除了前端节点的影响,因为后者在基准测试中的作用有限。
NVIDIA 在 MLPerf 推理 v3.0 网络部门的表现
在 MLPerf 推理 v3.0 中,NVIDIA 对 ResNet-50 和 BERT 工作负载进行了网络部门提交。NVIDIA 提交的文件通过使用极高的网络带宽和低延迟,利用GPUDirect RDMA技术和NVIDIA ConnectX-6 InfiniBand smart adapter cards,在 ResNet-50 上实现了 100% 的单节点性能。
基准 | DGX A100 ( 8x A100 80GB ) | 网络部门与封闭部门的绩效比较 |
ResNet-50 (低精度) | 脱机 | 100% |
服务器 | 100% | |
BERT (低精度) | 脱机 | 94% |
服务器 | 96% | |
BERT (高精度) | 脱机 | 90% |
服务器 | 96% |
NVIDIA 平台在 BERT 工作负载方面也表现出了出色的性能,由于主机端的批处理开销,与相应的封闭部门提交相比,仅对性能产生了轻微影响。
NVIDIA 网络部门提交中使用的技术
大量的全栈技术使 NVIDIA 网络部门的强大性能得以实现:
- A. NVIDIA TensorRT 优化推理引擎的后端。
- InfiniBand RDMA 是一种基于低延迟、高通量张量通信的网络传输,其中使用 IBV verbs,并在 Mellanox OFED 软件堆栈中实现。
- 用于配置交换、运行状态同步和检测信号监控的以太网 TCP 套接字
- A. 使用 NUMA-aware 实现,以利用 CPU 、 GPU 和 NIC 资源获得最佳性能。
网络划分实施细节
以下是 MLPerf 推理网络部门的实现细节:
- 用于高吞吐量、低延迟通信的 InfiniBand
- 网络划分推理流程
- 性能优化
用于高吞吐量、低延迟通信的 InfiniBand
网络部门要求提交者实现查询调度库( QDL ),该库从负载生成器获取查询,并以适合提交者设置的方式将查询调度到加速器节点。
- 在生成输入张量序列的前端节点中, QDL 提取测试( SUT ) API 下的 LoadGen 系统,使 MLPerf Inference LoadGener 看到加速器可用于本地测试。
- 在 Accelerator 节点中, QDL 显示它与 LoadGen 直接交互以获取推理请求和响应。在 NVIDIA 的 QDL 实现中,我们使用 InfiniBand IBV 谓词和以太网 TCP 套接字实现了无缝数据通信和同步。
图 2 显示了使用 InfiniBand 技术构建在 QDL 中的数据交换组件。
图 3 显示了如何使用该数据交换组件在两个节点之间建立连接。
无限带宽的 队列对(QPs) 是节点之间的基本连接点。NVIDIA 实现使用无损的 可靠连接(RC) 和传输模式,并利用 InfiniBand HDR 光纤结构解决方案来维持高达 200 Gbits/sec 的吞吐量。
基准测试开始时, QDL 初始化会发现系统中可用的 InfiniBand NIC 。根据存储在 IBCfgs 中的配置,指定使用的 NIC 将填充为 IBDevice 实例。在这个填充过程中,用于 RDMA 传输的内存区域被分配、固定和注册为 RDMA 缓冲区,并与适当的句柄一起保存在 IBResources 中。
加速器节点的 RDMA 缓冲区位于 GPU 内存中,利用 GPUDirect RDMA,将 RDMA 缓冲区信息以及适当的保护密钥通过以太网上的 TCP 套接字与对等节点通信,从而为 QDL 创建 IBConnection 实例。
QDL 实现支持 NUMA ,并将最近的 NUMA 主机内存 CPU 和 GPU 映射到每个 NIC 。每个 NIC 都使用 IBConnection 与对等 NIC 进行通信。
网络划分推理流程
图 4 显示了推理请求是如何从 Frontend 节点发送并在 Accelerator 节点处理的:
- LoadGen 生成一个查询(推理请求),其中包含输入张量。
- QDL 基于仲裁方案将该查询重定向到适当的 IBConnection 。
- 查询样本库( QSL )可能已经注册在 RDMA 缓冲区内。如果没有,则 QDL 将查询暂存(复制)到 RDMA 缓冲区。
- QDL 启动具有相关联的 QP 的 RDMA 传输。
- InfiniBand 网络传输通过网络交换机进行。
- 查询到达对等方的 QP 。
- 然后通过直接存储器访问将查询传输到目的地 RDMA 缓冲区。
- 在加速器节点 QDL 中确认 RDMA 完成。
- QDL 使 Accelerator 节点能够批处理此查询。 QDL 标记要发布到 Accelerator 节点的某个加速器的一批查询。
- 加速器节点的加速器使用 CUDA 和 TensorRT 执行推断,并在 RDMA 缓冲器中产生响应。
当最终如步骤 10 中那样执行推断时,生成输出张量并将其填充在 RDMA 缓冲器中。然后加速器节点开始以类似的方式但以相反的方向将响应张量传输到前端节点。
性能优化
NVIDIA 实现使用 InfiniBand RDMA 写入,并利用最短的延迟。要使 RDMA 写入成功,发送方必须显式管理目标内存缓冲区。
Frontend 和 Accelerator 节点都管理缓冲区跟踪器,以确保每个查询和响应都保存在内存中,直到用完为止。例如, ResNet-50 要求每个连接( QP )管理多达 8K 个事务,以维持性能。
以下一些关键优化包含在 NVIDIA 实现中。
以下关键优化支持更好的可扩展性:
- 每个 IBConnection ( QP )的事务跟踪器:每个 IBConnection 都有一个独立的事务跟踪器,从而实现无锁、连接内事务记账。
- 每个 NIC 支持多个 QP :任意数量的 IBConnections 可以在任何 NIC 上实例化,从而可以轻松地自发支持大量事务。
以下关键优化提高了 InfiniBand 的资源效率:
- 使用 INLINE 传输小消息:通过 INLINE 传输传输小消息(通常小于 64 字节)可避免 PCIe 传输,从而显著提高性能和效率。
- 使用属于未被忽略的 RDMA 写入:由于未签名的事务在 CQ 中等待,直到签名的事务发生,从而触发到目前为止在同一节点中排队的所有事务的完成处理(批量完成),因此 CQ 维护变得更加高效。
- 申请 IB 转让的使用:未经请求的 RDAM 事务可能会在远程节点中排队,直到发生请求的 RDMA 事务,从而触发远程节点中的批量完成。
- 基于事件的 CQ 管理:避免忙于等待 CQ 管理释放 CPU 个周期。
以下关键优化提高了内存系统的效率:
- 在前端节点中不分段的 RDMA 传输:发送输入张量时,通过在 RDMA 注册的内存中填充输入张量来避免主机内存副本。
- 正在 Accelerator 节点中聚合( CUDA )个 memcpys :通过尽可能多地收集连续内存中的张量,提高 GPU 内存复制和 PCIe 传输的效率。
每个供应商的 QP 实现详细说明了支持的最大完成队列条目数( CQE ),以及支持的最大 QP 条目大小。扩展每个 NIC 的 QP 数量以覆盖延迟,同时保持足够的事务以实现最大吞吐量,这一点很重要。
如果通过轮询在短时间内从 CQ 处理大量事务,那么主机 CPU 也可能受到显著的压力。在这种情况下,基于事件的 CQ 管理以及通知数量的减少非常有帮助。通过尽可能多地聚集连续空间中的数据,并在可能的情况下,聚集 RDMA 注册的内存空间中,最大限度地提高内存访问效率。这对于实现最大性能至关重要。
总结
NVIDIA 平台在其首次提交的网络部门报告中表现出色,而我们在 MLPerf 推理:数据中心封闭部门的表现一直处于领先地位。这些结果是使用许多 NVIDIA 平台功能实现的:
- NVIDIA A100 Tensor Core GPU
- NVIDIA DGX A100
- NVIDIA ConnectX-6 InfiniBand 网络
- NVIDIA TensorRT
- GPUDirect RDMA
结果进一步证明了 NVIDIA AI 平台 在基于行业标准、同行评审基准的真实数据中心部署中的有效性。