您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。 [国泰君安证券]:计算机行业:重视AI芯片配套的软件生态 - 发现报告

计算机行业:重视AI芯片配套的软件生态

信息技术 2024-03-19 - 国泰君安证券 胡冠群
报告封面

投资建议:看好华为CANN崛起,相关生态合作伙伴有望受益。推荐标的:软通动力、拓维信息、中国软件国际(0354.HK),受益标的:润和软件、诚迈科技。 软件生态可能会成为制约AI芯片算力的瓶颈。时至今日,算力对于AI的重要性已经人尽皆知。GPU从一众芯片中脱颖而出成为大模型训练和推理的首选。人们很自然的从一款芯片的性能数据来直观感受芯片强大与否,所有的关注目光都聚焦在一款新品有多少Tflops的算力上。殊不知,计算框架以及配套的软件生态才是将一款芯片性能真正释放出来的幕后推手,也是芯片公司极强的护城河。 CUDA帮助芯片释放了通用计算性能,真正夯实了英伟达算力壁垒。 CUDA,全称Compute Unified Device Architecture,是英伟达推出的一种并行计算平台和编程模型,目的是让开发者能够利用GPU的强大计算能力,不仅限于图形渲染,还能执行各种复杂的计算任务。缺少CUDA优化,GPU的可用性将大幅下降。CUDA凭借超前的布局,在AI计算时代构筑了强大的生态护城河。AMD后发追赶,打造开源生态ROCm,在软硬件端齐发力,意图打破CUDA的垄断地位。虽然硬件层面,AMD的产品性能已经能做到在某些时期内并不逊色于英伟达,甚至实现一定程度的超越。然而在软件生态层面,CUDA凭借强大的软硬件结合开发能力和庞大的既有用户基础,使得AMD依然难以实现对英伟达的追赶超越。 国产AI算力崛起背后离不开软件生态配套,看好华为CANN崛起。 以昇腾为首的国产算力芯片在性能上奋起直追,在某些性能指标上已经与国际领先产品差异不大,但英伟达算力卡仍是市场目前的主流选择,原因在于CUDA的加持将实际训练推理效率最大化。未来国内的算力崛起离不开软件生态的配套,在性能短板补齐后,软件生态将是昇腾需要重点攻克的下一个短板,而CANN将助力昇腾芯片跨越能用到好用的鸿沟。 风险提示:技术发展不确定性;用户习惯与迁移成本;政策和监管变化。 1.CUDA是除性能外英伟达的重要壁垒 1.1.GPU在当下仍是AI算力最好的选择 AI大模型的训练过程对算力的需求极为庞大。AI大模型通常拥有数以亿计的参数,需要在海量数据集上进行训练。例如,GPT-3这样的模型训练所需的算力当量高达3640PD(Petaflops-Day),这意味着如果以每秒一千万亿次的计算速度,需要连续计算3640天。在AI领域,Scaling Law表明,随着模型规模的扩大,其性能和能力也会相应提升,但同时也需要更多的计算资源。自2012年以来,AI训练应用的算力需求每3-4个月就会翻倍,从2012年至今,AI算力增长超过了30万倍。这种增长速度远远超过了摩尔定律预测的芯片性能提升速度。 图1:AI大模型训练任务中对算力的需求爆发式增长 AI算力需求的迅速增长促使大家追逐更好用的算力芯片。在人工智能的世界里,算力就像是燃料,为AI模型的训练和推理提供动力。随着AI技术的发展,AI模型规模的不断扩大,训练和推理所需的计算资源呈现出爆发性的增长趋势,大家都在寻找更高效、更强大的算力芯片。全球学术与产业力量也正倾力投入于高性能、专用化算力芯片技术的探索与创新之中。 图2 AI需要并行计算能力更强的芯片,而CPU无法满足这一需求。AI大模型的计算,尤其是机器学习和深度学习的部分,往往涉及大量的数据处理和矩阵运算,这些任务需要强大的并行处理能力。CPU通常有4个、8个或16个强力ALU核心(arithmetic logic unit,算术逻辑单元),适合处理复杂的通用串行任务,但其核心数量有限,难以同时处理大量的并行任务。因此,对于需要大规模并行计算的AI应用来说,CPU的计算能力就显得不足了。 CPU的局限性促使了专门针对AI计算需求的专用芯片的发展。其中ASIC(Application-Specific Integrated Circuit,专用集成电路)提供了针对特定AI任务的极致性能优化,成为了一个重要的解决方案。ASIC的设计完全针对特定的应用,没有多余的功能,这使得它在功耗和计算速度上都有优势。在AI领域,ASIC芯片通过专门针对AI算法和任务进行硬件优化来实现计算效率的提升。例如,深度学习中的卷积神经网络(CNN)需要大量的矩阵和向量运算。ASIC可以内置专门设计的硬件单元,如卷积核,来直接在硬件级别执行这些运算,而不是依赖于通用处理器的软件实现。 ASIC虽然效率高但是通用性差,技术路径没定下来之前存在局限性。 尽管ASIC在特定应用中表现出色,但ASIC的开发成本高,且一旦设计完成,就无法轻易修改,这限制了它的灵活性。在AI技术快速发展的今天,技术路径和算法不断演进,在处理新兴的、尚未完全定义的计算模型时,ASIC的这种固定性就成为了一个缺点。 GPU成为AI发展兼具通用性与专业性的最优解。GPU最初设计用于处理复杂的图形任务,如游戏和图形渲染,这些任务要求快速且高效地处理大量图像数据。从结构上看,GPU有数百甚至数千个简单ALU核心,虽然其单个ALU处理能力相比CPU的较弱,但GPU能够实现多个ALU并行计算,使得GPU在执行大规模矩阵数据处理任务时能够拥有更好的性能。因此,原本用于游戏的GPU现在也被广泛用于AI研究和应用,以提高模型训练的速度和效率。当然,GPU虽然在特定任务上的效率可能不如专为AI计算搭建的ASIC,但GPU的可编程管线结构允许开发者自定义计算流程,使得GPU因此,在AI技术成熟稳定之前,GPU无疑是一个更实用、更灵活的选择。 图3:GPU并行架构比CPU更适合AI训练 表1:ASIC专业性更强,GPU通用性更强 1.2.CUDA帮助GPU释放了通用计算能力 CUDA是帮助GPU更好释放通用计算性能的工具包。CUDA,全称Compute Unified DeviceArchitecture,是英伟达推出的一种并行计算平台和编程模型,目的是让开发者能够利用GPU的强大计算能力,不仅限于图形渲染,还能执行各种复杂的计算任务。简单来说,CUDA就像是一个桥梁,它让程序员能够用类似于C语言的编程方式来编写代码,这些代码不仅能够在CPU上运行,还能在GPU上运行。CUDA的出现开启了GPU通用计算的新时代,使得GPU不再只是图形处理的专用设备,而是成为了一种强大的通用计算资源。 表2:CUDA全方位释放GPU潜能 CUDA逐层拆解任务显著提升GPU并行处理效率。CUDA架构的并行计算模型将复杂的计算任务分解为多个简单的子任务,通过线程层次结构实现,其中线程被组织成线程块,线程块又组成网格。每个线程块内的线程可以高效地共享数据和同步操作,而线程块之间的通信则通过全局内存实现。这种层次化的线程组织方式使得开发者能够有效地利用GPU的并行处理能力,实现大规模并行计算。 图4:CUDA内部结构可以逐层拆解任务,并行处理。 CUDA通过提供合理的内存访问方式减少延迟。CUDA框架通过精确控制线程和数据的索引计算,显著提升了内存访问的效率。每个线程都有一个唯一的线程ID,而线程块则有一个块ID,这两个标识符共同决定了线程在执行网格中的位置,确保了数据访问的有序性和高效性。CUDA中的warp是一组同时执行的32个线程,它们能够连续访问内存,通过内存访问合并(Memory Coalescing)实现硬件优化,从而提高内存带宽的利用率。流式多处理器(SM)虽然能够管理多达64个warp,但由于资源限制,通常同一时间只能活跃地运行有限数量的warp,而CUDA通过合理分配资源,确保当这些warp同时运行时,每个线程处理的数据大小正好匹配GPU内存系统的带宽,实现了内存系统的高效利用。 缺少CUDA优化,GPU的可用性将大幅下降。借助CUDA的这一框架,软件应用的计算密集型部分以并行方式在数千个GPU核心上运行,GPU能够显著加速计算软件应用。数据表明,缺少CUDA对内存访问系统的优化,GPU将被迫进行许多无效的内存访问,内存读取的有效带宽将下降92%,即有无CUDA优化将对GPU内存访问性能产生13倍的差距。 图5:CUDA通过warp连续访问内存,实现内存系统高效利用 CUDA拥有庞大的软件生态,使用户得以充分利用GPU的并行计算能力。CUDA软件生态系统包括了CUDA Toolkit、CUDA库、CUDA兼容的深度学习框架以及广泛的开发者社区。其中,核心组件CUDA Toolkit包含了编译器、调试器和性能分析工具,为CUDA编程提供了基础环境。 CUDA库,如cuBLAS、cuFFT、cuDNN等,针对特定计算任务进行了优化,显著提高了性能。深度学习框架如TensorFlow和PyTorch通过CUDA后端支持,实现了在GPU上的高效模型训练和推理。此外,CUDA还支持多种编程语言,并通过广泛的第三方库和开发者社区资源,如教程、论坛和大学课程,进一步完善了软件生态。这些工具和资源的结合,使得CUDA成为科研、工程和商业应用中解决复杂计算问题的强大平台。 表3:CUDA拥有庞大的软件生态系统 1.3.硬件设计+软件生态=算力壁垒 除CUDACore外,英伟达还针对AI训练优化硬件推出TensorCore。 Tensor Core是英伟达GPU中的创新硬件单元,专为加速人工智能(AI)运算而设计。它们通过优化的矩阵乘法运算,显著提升了深度学习模型训练和推理的速度。在深度学习中,矩阵乘法是核心操作,TensorCore能够在单个时钟周期内完成多个浮点运算,从而大幅提高计算效率。这种硬件加速对于处理大规模神经网络和复杂数据集至关重要,它使得研究人员和开发者能够更快地迭代模型,实现更高效的AI应用开发。 Tensor Core的引入,不仅提升了GPU在AI领域的性能,也为AI研究和商业应用的快速发展提供了强大的支持。 图6:Tensor core使用混合精度乘法和累加优化运算效率 CUDA架构与TensorCore的协同工作极大提升了AI计算效率。CUDA架构提供了一个强大的并行计算平台,允许开发者利用GPU的大规模并行处理能力来加速复杂的计算任务。Tensor Core在执行深度学习中的矩阵乘法等核心操作时,能够实现更高的计算吞吐量和更低的能耗。这种硬件与软件的协同工作,使得GPU在处理大规模神经网络时,不仅计算速度得到了显著提升,而且能效比也得到了优化。开发者可以利用CUDA编程模型来控制CUDA Core执行各种计算任务,同时通过特定的指令和库(如cuDNN)来利用Tensor Core加速深度学习模型的训练和推理。无论是在研究实验室还是商业数据中心,CUDA与Tensor Core的结合都极大地推动了AI技术的创新和应用,为开发者提供了一个高效、可扩展的计算环境。 2.除性能外,软件生态也是国产AI算力必争之高地 2.1.海外其他厂商对于生态构建也有相关尝试 复盘英伟达与AMD竞争史,英伟达掌握先发优势。在CUDA出现之前,开发者调用GPU主要依赖于低级图形API,这不仅编程复杂度高,难以实现性能优化,且缺乏跨平台兼容性。英伟达在2006年推出CUDA,开创了GPU的通用并行计算新纪元,尽管初期面临资源投入和市场不确定性的双重挑战,但是最终这一前瞻性决策不仅巩固了其行业领导地位,还为AI和深度学习等领域的发展奠定了基础,构建了强大的技术护城河。CUDA提供了一套高级的编程接口,简化了并行计算的编程过程,使得开发者能够轻松编写跨平台的高性能GPU代码,同时借助丰富的生态系统资源,大幅提升了GPU在通用计算任务中的应用潜力。 随后,英伟达在16年间基于CUDA不断更新GPU架构,持续释放GPU潜能。软件生态布局的差异是英伟达和AMD等其他厂商在GPU市场竞争中一个关键的战略区别点,英伟达通过CUDA生态布局,在GPU并行计算领域长期领先。 表4:英伟达发展长期领先于AMD AMD发现了生态的重要性,开始追赶。直到2015年,AMD才开始布局软件生态,推出ROCm(Radeon Op