高效的管道设计对数据科学家至关重要。在编写复杂的端到端工作流时,您可以从各种构建块中进行选择,每种构建块都专门用于特定任务。不幸的是,在数据格式之间重复转换容易出错,而且会降低性能。让我们改变这一点!
在本系列文章中,我们将讨论高效框架互操作性的不同方面:
在第一个职位中,讨论了不同内存布局以及异步内存分配的内存池的优缺点,以实现零拷贝功能。
在这篇文章中,我们将重点介绍数据加载/传输过程中出现的瓶颈,以及如何使用远程直接内存访问( rdma )技术来缓解这些瓶颈。
在第三篇文章中,我们深入讨论了端到端管道的实现,展示了所讨论的跨数据科学框架的最佳数据传输技术。
要了解有关框架互操作性的更多信息,请查看 nvidia gtc 2021 年会议上的演示。
数据加载和数据传输瓶颈
数据加载瓶颈
到目前为止,我们假设数据已经加载到内存中,并且使用了单个 gpu 。本节重点介绍了 mig 在将数据集从存储器加载到设备内存或使用单节点或多节点设置在两个 gpu 之间传输数据时出现的几个瓶颈。然后我们讨论如何克服它们。
在传统工作流(图 1 )中,当数据集从存储器加载到 gpu 内存时,数据将使用 cpu 和 pcie 总线从磁盘复制到 gpu 内存。加载数据至少需要两份数据副本。第一种情况发生在将数据从存储器传输到主机内存( cpu ram )时。将数据从主机内存传输到设备内存( gpu vram )时,会出现数据的第二个副本。
图 1 :在传统设置下,存储器 cpu 内存和 gpu 内存之间的数据移动。
或者,使用利用 nvidia magnum io gpudirect storage 技术的基于 gpu 的工作流(见图 2 ),数据可以使用 pcie 总线直接从存储器流向 gpu 存储器,而无需使用 cpu 或主机存储器。由于数据只复制一次,因此总体执行时间缩短。不涉及此任务的 cpu 和主机内存也使这些资源可用于管道中其他基于 cpu 的作业。
图 2 :启用 gpu 直接存储技术时,存储器和 gpu 内存之间的数据移动。
节点内数据传输瓶颈
某些工作负载要求位于同一节点(服务器)中的两个或多个 gpu 之间进行数据交换。在 nvidia gpudirect peer to peer 技术不可用的情况下,来自源 gpu 的数据将首先通过 cpu 和 pcie 总线复制到主机固定共享内存。然后,数据将通过 cpu 和 pcie 总线从主机固定共享内存复制到目标 gpu 。请注意,数据在到达目的地之前复制了两次,更不用说 cpu 和主机内存都参与了这个过程。图 3 描述了前面描述的数据移动。
图 3 :当 nvidia gpu 直接 p2p 不可用时,同一节点中两个 gpu 之间的数据移动。
当 gpu 直接对等技术可用时,将数据从源 gpu 复制到同一节点中的另一 gpu 不再需要将数据临时转移到主机内存中。如果两个 gpu 都连接到同一 pcie 总线, gpu 直接 p2p 允许在不涉及 cpu 的情况下访问其相应的内存。前者将执行相同任务所需的复制操作数量减半。图 4 描述了刚才描述的行为。
图 4 :启用 nvidia gpu 直接 p2p 时,同一节点中两个 gpu 之间的数据移动。
节点间数据传输瓶颈
在 nvidia gpudirect remote direct memory access 技术不可用的多节点环境中,在不同节点的两个 gpu 之间传输数据需要五个复制操作:
第一次复制发生在将数据从源 gpu 传输到源节点中主机固定内存的缓冲区时。
然后,该数据被复制到源节点的 nic 驱动程序缓冲区。
在第三步中,数据通过网络传输到目标节点的 nic 驱动程序缓冲区。
将数据从目标节点 nic 的驱动程序缓冲区复制到目标节点中主机固定内存的缓冲区时,会发生第四次复制。
最后一步需要使用 pcie 总线将数据复制到目标 gpu 。
这样总共进行了五次复制操作。真是一次旅行,不是吗?图 5 描述了前面描述的过程。
图 5 :当 nvidia gpu 直接 rdma 不可用时,不同节点中两个 gpu 之间的数据移动。
启用 gpu 直接 rdma 后,数据拷贝数将减少到一个。共享固定内存中不再有中间数据拷贝。我们可以在一次运行中直接将数据从源 gpu 复制到目标 gpu 。与传统设置相比,这为我们节省了四个不必要的复制操作。图 6 描述了这个场景。
图 6 :当 nvidia gpu 直接 rdma 可用时,不同节点中两个 gpu 之间的数据移动。
结论
在我们的第二篇文章中,您已经了解了如何利用 nvidia gpu 直接功能来进一步加快管道的数据加载和数据分发阶段。
在我们三部曲的第三部分中,我们将深入研究医学数据科学管道的实现细节,该管道用于连续测量的心电(ecg)流中的心跳异常检测。
关于作者
christian hundt 在德国美因茨的 johannes gutenberg 大学( jgu )获得了理论物理的文凭学位。在他的博士论文中,他研究了时间序列数据挖掘算法在大规模并行架构上的并行化。作为并行和分布式体系结构组的博士后研究员,他专注于各种生物医学应用的高效并行化,如上下文感知的元基因组分类、基因集富集分析和胸部 mri 的深层语义图像分割。他目前的职位是深度学习解决方案架构师,负责协调卢森堡的 nvidia 人工智能技术中心( nvaitc )的技术合作。
miguel martinez 是 nvidia 的高级深度学习数据科学家,他专注于 rapids 和 merlin 。此前,他曾指导过 udacity 人工智能纳米学位的学生。他有很强的金融服务背景,主要专注于支付和渠道。作为一个持续而坚定的学习者, miguel 总是在迎接新的挑战。
智慧养殖环境监测系统
EVCVTS B110北斗三代手持机的参数配置
瑞萨电子亮相2023慕尼黑华南电子展
ADI AD9547网络时钟发生与同步方案
差分隐私和现有的隐私保护方法相结合:从用户群体中学习的系统架构详解
高效框架互操作性第2部分:数据加载传输瓶颈和RDMA解决方案
立体声信号相位差电平差测试仪设计方案
双十一热水器怎么选?海尔智家Leader热水器线上增幅2位数
3D DRAM还能这样玩?
发光二极管串联和并联后压降会不会改变呢?
中国联通发布了2018-2020年通信云新建工程硬件采购项目
德州仪器如何助力可持续发展
LDO如何实现输出过载保护?
联想推出一款新AR和VR系统 向个人电脑业务之外的新领域扩张
LED日光灯电源发热烧坏MOS管五大技术点分析
英特尔称高通诉讼为“诡辩”
主流的卡片门禁、人脸门禁、二维码门禁中哪一个最难破解
工商业光伏电站通信方案有哪些?
force之后,采样时怎么没生效呢?
焊接机器人示教器有哪些作用?