优化批量 AI/ML 推理工作负载中的数据传输

借助 NVIDIA Nsight™ 系统深入探讨数据传输瓶颈、识别瓶颈及其解决方案 - 第 2 部分优化批量 AI/ML 推理工作负载中的数据传输一文首先出现在 Towards Data Science 上。

来源:走向数据科学

是关于优化 AI/ML 工作负载中的数据传输的内容,我们演示了如何使用 NVIDIA Nsight™ 系统 (nsys) 来研究和解决常见的数据加载瓶颈,即 GPU 在等待 CPU 的输入数据时出现空闲状态。在这篇文章中,我们将重点关注从 GPU 设备到 CPU 主机的相反方向传输的数据。更具体地说,我们解决了模型返回的输出大小相对较高的 AI/ML 推理工作负载。常见示例包括:1)在批量高分辨率图像上运行场景分割(每像素标记)模型,2)使用编码器模型捕获输入序列的高维特征嵌入(例如,创建矢量数据库)。这两个示例都涉及在输入批次上执行模型,然后将输出张量从 GPU 复制到 CPU 以进行额外的处理、存储和/或通过网络通信。

模型输出的 GPU 到 CPU 内存副本在优化教程中通常比为模型提供数据的 CPU 到 GPU 副本受到的关注要少得多(例如,请参见此处)。但它们对模型效率和执行成本的潜在影响也可能同样有害。此外,虽然 CPU 到 GPU 数据加载的优化有详细记录且易于实施,但相反方向的数据复制优化则需要更多的体力劳动。

在这篇文章中,我们将应用我们在上一篇文章中使用的相同策略:我们将定义一个玩具模型并使用 nsys profiler 来识别和解决性能瓶颈。我们将在 Amazon EC2 g6e.2xlarge 实例(配备 NVIDIA L40S GPU)上运行实验,该实例运行 AWS 深度学习 (Ubuntu 24.04) AMI、PyTorch (2.8)、nsys-cli 分析器(版本 2025.6.1)和 NVIDIA 工具扩展 (NVTX) 库。

免责声明

非常感谢 Yitzhak Levi 和 Gilad Wasserman 对本文的贡献。

玩具 PyTorch 模型

我们运行以下命令来捕获 nsys 配置文件跟踪:

结果