带你读《弹性计算技术指导及场景应用》——1. 技术改变AI发展:CUDA Graph优化的底层原理分析

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 带你读《弹性计算技术指导及场景应用》——1. 技术改变AI发展:CUDA Graph优化的底层原理分析

简介:随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。CUDA是一种并行计算平台和编程模型,由Nvidia推出,可利用GPU的强大处理能力进行加速计算。

CUDA 异步执行模型

对于GPU运算集中的AI应用场景,为了提升系统的性能,最大化地利用GPU资源是一个重要的优化方向。比较常用的方式是尽量将GPU运算转换为异步操作,CPU侧负责任务提交,保证有足够的cuda kernel发送到GPUGPU按照CUDA Stream流队列中的Kernel顺序执行。只要这中间不存在同步操作,GPU完全可以不用等待,顺序地将所有的kernel执行完,然后再通知CPUCPU运算和GPU运算是相互独立的协作关系。

 

以上的模型是一个理想化的状态,听起来合乎逻辑,而且很完美。大致的运行效果如图1。可以看到CPU通过CUDA API已经将Kernel提前准备好,GPU的任务一个接一个。GPU的利用率也比较高。

 

image.png

1 GPU异步执行的典型场景

 

对于一般的性能优化,达到这种状态已经很好了。但如果想进一步的优化就需要知道模型的实际运行情况。随着GPU算力的提升,计算任务的执行时间在慢慢缩小,一个GPU执行单元可能在us或者ms级完成。

 

通常情况下一个好的AI运算框架或模型应该尽量让GPU Kernel的运算时间长一些,从而使得GPU的性能能够更好地发挥,因为有个事实是:GPU Kernel提交到硬件也是有开销的,虽然这个时间可能只有0.x us。这里的提交不是指的cudaLaunchKernel而是更底层驱动和硬件之间的真正的提交。

 

如果业务场景中有很多小的usKernel要执行,则整个系统的性能会随着短Kernel的比例增加整体性能输出越来越差,GPU资源并不能充分利用起来。

CUDA Graph 性能优化效果

CUDA Graph可以通过CaptureCreate的方式将多个Kernel组合在一起生成一个Graph,与Kernel融合不同,在Graph内部仍然是多个Kernel的形式存在,但提交操作只需要一次,如果可以将尽量多的Kernel组合在一起,那么理论上可以节约很多Kernel提交的开销。

 

CUDA Graph也有其自身的限制,它的设计思路是将多个任务单元作为一个快照进行组合,也就意味着这个快照的参数和结构组成是固定的,不能变换,同时实例化这个快照是比较耗时的,但如果这个快照被反复执行(replay)的次数足够多,实例化快照的时间是可以忽略的。

 

以一个简单的Kernel为例介绍CUDA Graph是如何影响性能输出的。这里需要自己开发构造一个Kernel:可以根据运算复杂度调整执行时间,但在运行过程中没有HostDevice侧的数据交互。

 

以下分析均基于这个自定义Kernel进行。通过对比CUDA Graph优化前后的性能数据(图2)可以看到CUDA Graph对于执行时间越小的Kernel性能提升越明显,原因是Kernel提交的开销占比会更大(假设单次提交的开销是固定的,接下来会证明这一假设)。

 

image.png

图 不同执行时间kernel CUDA Graph优化后性能提升对照表

CUDA Graph 性能优化原理

为什么Kernel的提交会有系统开销并最终影响到GPU卡的性能输出?

 

从图1GPU异步执行逻辑来看,GPU完全可以按照CUDA Stream的队列顺序自己控制Kernel的执行节奏,只要队列中的任务足够,就能输出最大的性能。

 

Kernel提交的开销究竟在哪里?

 

3 可以有一个侧面的解释。在Kernel的执行过程中是有持续的双向数据流量的。而且这个流量和Kernel的执行时间是成反比的。这是个很重要的信息,因为Kernel执行过程中是没有运算数据流量的,HostToDevice的流量就是CPUKernel提交产生的,DeviceToHost的流量就是GPU执行完Kernel需要和Host交互产生的。而且这个流量是和Kernel的提交频率有关,和Kernel本身并没有关系。

 

image.png

图 不同执行时间kernel对应的GPU流量对照表

 

进一步研究Kernel提交究竟会有多大的数据流量,图4 做了一个展示,单次Kernel的提交产生数据流量大约在1KBGPU执行与Host同步的数据量大约在0.22KB,而且从统计结果看与Kernel的大小无关。这也可以证明前面的假设:Kernel的提交开销总体上是固定的。

 

image.png

4. 不同Kernel单次提交产生的数据流量对照表

CUDA Graph引入分析总结:

∙        cuda kernel在执行时存在确定的HostDevice侧交互

∙        交互的频率或流量与cuda kernel的提交频率有关,与cuda kernel大小无关

∙        CUDA Graph通过组合Kernel的方式可以将Kernel提交频率大幅降低,提高GPU的性能输出,但对于执行时间长的Kernel性能优化不明显。

∙        对于HostDevice端延时明显的场景,这种优化都是有益的。因为这个Kernel的提交开销本质上就是H2D 延时的开销,延时越小Kernel提交的效率就越高。

∙        对于物理机为了能够得到极致的性能可以尽量减少中间PCIe Switch的级数,因为每一级的switch引入RTT延时大约在0.3us,我们目前使用的GPU Box机型普遍有2Switch,引入RTT延时在0.6us。如果是采用gn7i的机型,GPU卡直连PCIe Root Complex,这0.6us是完全没有的,性能表现在小Kernel占比较高的场景中会更优越。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
3天前
|
传感器 人工智能 自动驾驶
构建未来:利用AI技术优化城市交通系统
【4月更文挑战第27天】 随着城市化的快速发展,交通拥堵已成为全球城市的普遍问题。本文探讨了人工智能(AI)技术在缓解城市交通压力、提升交通效率方面的应用前景。通过分析智能信号控制、交通流量预测、自动驾驶车辆以及公共交通优化等关键技术的实际案例,评估了AI在现代交通系统中的潜力与挑战。本研究不仅展示了AI技术在改善城市交通中的有效性,同时也指出了实施过程中需要克服的技术和社会障碍。
|
1天前
|
机器学习/深度学习 人工智能 监控
构建未来:AI在个性化学习路径设计中的应用
【4月更文挑战第29天】 随着人工智能(AI)的飞速发展,教育领域正经历一场由数据驱动的变革。本文聚焦于AI技术在个性化学习路径设计中的应用,探讨其如何通过精准分析学习者的行为和表现来优化教学策略和内容。我们展示了利用机器学习模型来预测学习成果、识别学习障碍以及提供即时反馈的潜力。文章还讨论了实施个性化学习所面临的挑战,包括数据隐私保护和技术整合问题,并提出了相应的解决策略。
|
2天前
|
机器学习/深度学习 人工智能 测试技术
自动化测试中AI与机器学习的融合应用
【4月更文挑战第29天】 随着技术的不断进步,人工智能(AI)和机器学习(ML)在软件测试中的应用越来越广泛。本文将探讨AI和ML如何改变自动化测试领域,提高测试效率和质量。我们将讨论AI和ML的基本概念,以及它们如何应用于自动化测试,包括智能测试用例生成,缺陷预测,测试执行优化等方面。最后,我们还将讨论AI和ML在自动化测试中的挑战和未来发展趋势。
|
2天前
|
机器学习/深度学习 人工智能 算法
深入分析自动化测试中AI驱动的测试用例生成技术
【4月更文挑战第29天】随着人工智能技术的不断发展,其在软件测试领域的应用也越来越广泛。本文主要探讨了AI驱动的测试用例生成技术在自动化测试中的应用,以及其对提高测试效率和质量的影响。通过对现有技术的深入分析和实例演示,我们展示了AI如何通过学习和理解软件行为来自动生成有效的测试用例,从而减少人工编写测试用例的工作量,提高测试覆盖率,降低错误检测的成本。
|
3天前
|
机器学习/深度学习 人工智能 算法
AI作画原理及相关理论解析
本文探讨了AI作画,特别是深度学习技术如何驱动这一艺术形式的发展。AI作画基于卷积神经网络(CNN),通过学习艺术作品风格和内容生成新作品。流程包括数据收集、模型训练、风格迁移和后处理。文章介绍了风格迁移理论,包括内容损失和风格损失,以及生成对抗网络(GAN)的基本概念。提供的代码示例展示了使用TensorFlow和Keras实现风格迁移的简化过程。为了优化结果,可以调整优化器、权重参数、模型选择及图像处理技术。
|
3天前
|
机器学习/深度学习 数据采集 人工智能
【热门话题】AI作画算法原理解析
本文解析了AI作画算法的原理,介绍了基于机器学习和深度学习的CNNs及GANs在艺术创作中的应用。从数据预处理到模型训练、优化,再到风格迁移、图像合成等实际应用,阐述了AI如何生成艺术作品。同时,文章指出未来发展中面临的版权、伦理等问题,强调理解这些算法对于探索艺术新境地的重要性。
15 3
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:AI在持续学习系统中的创新应用
【4月更文挑战第27天】 随着人工智能(AI)技术的飞速发展,其在自我进化的持续学习系统中扮演的角色日益重要。本文探讨了AI如何通过创新算法、自适应策略和交互式学习环境来优化其学习能力。重点分析了深度学习、增强学习和迁移学习等技术如何共同作用于AI系统,使其能够不断从新数据中提取知识,适应不断变化的任务要求,并实现跨领域的知识转移。此外,文章还探讨了在设计这些系统时面临的挑战,包括数据隐私、算法偏见和系统的可解释性问题。
|
4天前
|
机器学习/深度学习 人工智能 算法
详解AI作画算法原理
AI作画算法运用深度学习和生成对抗网络(GAN),通过学习大量艺术作品,模拟艺术家风格。卷积神经网络(CNN)提取图像特征,GAN中的生成器和判别器通过对抗训练生成艺术图像。循环神经网络和注意力机制可提升作品质量。这种技术开创了艺术创作新途径。
|
5天前
|
人工智能 边缘计算 Kubernetes
阿里云边缘容器云帮助AI推理应用快速落地
2024全球分布式云大会·北京站,阿里云徐若晨演讲内容分享
15 0
|
7天前
|
人工智能 Oracle 关系型数据库
【AI Agent系列】【LangGraph】0. 快速上手:协同LangChain,LangGraph帮你用图结构轻松构建多智能体应用
【AI Agent系列】【LangGraph】0. 快速上手:协同LangChain,LangGraph帮你用图结构轻松构建多智能体应用
20 0