随着 ChatGPT 的现象级走红,引领了AI大模型时代的变革,从而导致 AI 算力日益紧缺。与此同时,中美贸易战以及美国对华进行AI芯片相关的制裁导致 AI 算力的国产化适配势在必行。之前也分享过一些国产 AI 芯片(昇腾910B、含光、寒武纪思元、壁仞、燧原) 和 AI 框架(MindFormers、PaddleNLP)。具体如下:
国产知名AI芯片厂商产品综述-昇腾、海光、天数智芯...
另外,我撰写的
大模型相关的博客及配套代码
均整理放置在Github:
https://github.com/liguodongiot/llm-action
,有需要的朋友自取。
前面的文章
国产知名AI芯片厂商产品综述-昇腾、海光、天数智芯...
中概述了国产AI芯片的产品。粗略划分一下(当然还有一些厂商出于某些原因未出现在这里,偏主观,别杠,杠就是你对):
目前来说,国产AI芯片市面上昇腾相对容易碰到一点,海光、天数等也有一些。
本文将分析目前国内知名AI芯片厂商的软件生态。目前主流的路线主要有三种:
第一种选择从芯片到计算平台库都全自研,比如:华为基于自己的Ascend系列ASIC构建的CANN计算平台库;寒武纪基于自家的MLU系列ASIC构建的Neuware;
第二种则是选择自研+开源的路线,比如:海光信息则是自研开发了DTK(DCU Toolkit)计算平台库,兼容开源的ROCm,并适配自家自研的DCU,以对标CUDA及GPU。由于兼容了ROCm开源计算平台库,进一步保证了海光DTK的通用性,再加上海光DCU加持,使得海光DTK发展成为较为成熟的生态环境。
第三种选择自研+兼容CUDA,即在API接口协议和编译器层面与CUDA对应一致。如:天数智芯、摩尔线程。
昇腾
昇腾芯片是华为公司采用自家的达芬奇架构发布的 AI 处理器(NPU),包括昇腾910(用于训练)和昇腾310(用于推理)处理器。昇腾在国际上对标的主要是英伟达的GPU,国内对标的包括寒武纪、海光等厂商生产的系列AI芯片产品(如:思元590、深算一号等)。
整个昇腾软硬件全栈包括5层,自底向上为
Atlas系列硬件、异构计算架构、AI框架、应用使能、行业应用
。
AI框架层主要包括自研框架MindSpore(昇思) 和第三方框架(PyTorch、TensorFlow等) ,其中MindSpore完全由华为自主研发,第三方框架华为只是做了适配和优化,让PyTorch和TensorFlow等框架编写的模型可以高效的跑在昇腾芯片上。
目前训练框架主要支持Pytorch和Mindspore。大模型训练分别提供了ModelLink和MindFormers
。
应用使能层主要包括ModelZoo、MindX SDK、MindX DL、MindX Edge、MindIE等。
MindX SDK:帮助特定领域的用户快速开发并部署人工智能应用,比如工业质检、检索聚类等,致力于简化昇腾 AI 处理器推理业务开发过程,降低使用昇腾AI处理器开发的门槛。
MindX DL(昇腾深度学习组件):是支持 Atlas训练卡、推理卡的深度学习组件,提供昇腾 AI 处理器集群调度、昇腾 AI 处理器性能测试、模型保护等基础功能,快速使能合作伙伴进行深度学习平台开发。
MindX Edge(昇腾智能边缘组件): 提供边缘 AI 业务容器的全生命周期管理能力,同时提供严格的安全可信保障,为客户提供边云协同的边缘计算解决方案,使能客户快速构建边缘 AI 业务。
异构计算架构(CANN)是对标英伟达的CUDA + CuDNN的核心软件层,对上支持多种AI框架,对下服务AI处理器,发挥承上启下的关键作用,是提升昇腾AI处理器计算效率的关键平台,主要包括有各种引擎、编译器、执行器、算子库等。之所以叫异构软件,是因为承载计算的底层硬件包括AI芯片和通用芯片,自然就需要有一层软件来负责算子的调度、加速和执行,最后自动分配到对应的硬件上(CPU或NPU)。
昇腾计算语言(Ascend Computing Language,AscendCL)接口是昇腾计算开放编程框架,对开发者屏蔽底层多种处理器差异,提供算子开发接口TBE、标准图开发接口AIR、应用开发接口,支持用户快速构建基于Ascend平台的AI应用和业务。
昇腾计算服务层主要提供昇腾算子库AOL,通过神经网络(Neural Network,NN)库、线性代数计算库(Basic Linear Algebra Subprograms,BLAS)等高性能算子加速计算;昇腾调优引擎AOE,通过算子调优OPAT、子图调优SGAT、梯度调优GDAT、模型压缩AMCT提升模型端到端运行速度。同时提供AI框架适配器Framework Adaptor用于兼容Tensorflow、Pytorch等主流AI框架。
昇腾计算编译层通过图编译器(Graph Compiler)将用户输入中间表达(Intermediate Representation,IR)的计算图编译成昇腾硬件可执行模型;同时借助张量加速引擎TBE(Tensor Boost Engine)的自动调度机制,高效编译算子。
昇腾计算执行层负责模型和算子的执行,提供运行时库(Runtime)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、人工智能预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。
昇腾计算基础层主要为其上各层提供基础服务,如共享虚拟内存(Shared Virtual Memory,SVM)、设备虚拟化(Virtual Machine,VM)、主机-设备通信(Host Device Communication,HDC)等。
寒武纪
Cambricon NeuWare 是寒武纪专门针对其云、边、端的智能处理器产品打造的软件开发平台。其采用云边端一体、训推一体架构,可同时支持寒武纪云、边、端的全系列产品。
寒武纪终端IP、边缘端芯片、云端芯片共享同样的软件接口和完备生态,可以方便地进行智能应用的开发,迁移和调优。
Neuware软件架构从上往下分别为深度学习应用、主流的深度学习框架、寒武纪机器学习编程库CNML(Cambricon Neuware Machine Learning Library)、寒武纪Bang编程语言、寒武纪运行时库CNRT(Cambricon Neuware Runtime Library)、系统工具层以及驱动层。此外还包括针对多媒体智能处理的SDK。
Neuware集成的开源深度学习编程框架包括TensorFlow、Caffe、PyTorch、Android NN,其中,Android NN仅支持寒武纪处理器IP核。这些框架的API与官方开源框架一致,内部实现则加入了针对寒武纪智能处理器产品的定制。
寒武纪机器学习计算库CNML,提供了机器学习,主要是深度学习应用的开发所需基础算子,开发者可以便捷地调用这些算子灵活地构造各类深度神经网络模型以及其他机器学习领域的算法,而无须关心寒武纪智能处理器产品的内部硬件资源如何调度。
寒武纪运行时库CNRT,提供了一套针对寒武纪智能处理器产品的上层编程接口,用于与寒武纪智能处理器产品的硬件之间进行交互和调度硬件资源。用户既可以调用CNRT协同CNML一起开发深度学习应用,也可以直接基于CNRT来高效地运行Neuware构建的神经网络离线模型。
寒武纪Bang语言,专门针对寒武纪智能处理器产品设计的编程语言,它支持最常用的 C99和C++11语言的语法特性,并提供了用于编写高性能程序的内置函数接口。此外,Bang语言还增加了与寒武纪智能处理器产品硬件相关的类型系统,使用这些内置函数和新增类型系统能够充分发挥寒武纪智能处理器的算力和性能。
Neuware的编译器部分包括了面向寒武纪产品的Bang语言和汇编语言编译,针对寒武纪产品设计的高级汇编语言做了多种优化,输出能够运行于寒武纪各类硬件产品上的可执行二进制文件。
调试工具CNGDB,是Linux系统上调试Bang语言的工具,它是基于GNU的调试器GDB开发的。使用CNGDB可以在真实的硬件上同时调试寒武纪处理器产品的设备侧和主机侧的代码。
性能优化工具CNPerf(Cambricon Neuware Performance),可针对寒武纪智能处理器产品进行性能剖析。
系统工具CNMon(Cambricon Neuware Monitor),能够采集寒武纪智能处理器产品的底层硬件信息,并实时获取上层软件对硬件资源调度状态等。
自动化硬件诊断软件CNQual(Cambricon Neuware Qualification),针对寒武纪智能处理卡进行功耗测试、PCIe链路状态诊断、硬件压力测试、多卡互联状态诊断等测试等功能,确保寒武纪智能处理卡在系统中能够长时间稳定工作。
CNCL(Cambricon Communications Library,寒武纪通信库)是面向 MLU 设计的高性能通信库。
应用开发者优化了基于 MLU 进行多机多卡的集合通信(Collective)操作。
能够根据芯片的互联拓扑关系,
自动的选择最优的通信算法和数据传输路径
,从而最大化利用传输带宽完成不同的通信操作。
支持多种 MLU 处理芯片的互联技术,包括
PCIe、MLU-Link、MLU-Link over RoCE、RoCE、Infiniband Verbs 以及 Sockets
。
Neuware软件栈中还提供了丰富的多媒体开发套件,包括CNStream、Gstreamer等视频智能处理的SDK和CNCodec图片、视频的编解码SDK。
寒武纪云边端一体、训推一体开发和部署流程如下所示。
海光DTK
由于海光信息采用自研开发的DTK(DCU Toolkit)计算平台库,兼容开源的ROCm。因此,先来了解下ROCm计算平台库。
ROCm(Radeon Open Compute Platform)是AMD主导的一个开源计算平台库,Radeon是AMD GPU产品的品牌名,除ROCm之外,还有一系列ROCx的简称,如:ROCr(ROC Runtime),ROCk(ROC kernel driver),ROCt(ROC Thunk)等。
ROCm之于AMD GPU,相当于CUDA之于NVIDIA GPU,ROCm第一个版本是在2016年发布,目前最新的ROCm版本为6.2。虽然从发布的时间来看,ROCm比CUDA晚了将近10年,但ROCm生态发展很快,已经能够提供与CUDA类似的API、工具以及各种函数库,因此,上层的深度学习框架可以基于ROCm的生态进行构建。
CUDA和ROCm的对比:
海光DTK(DCU ToolKit)是海光的开放软件平台,兼容了ROCm生态相关组件。
同时基于DCU的硬件进行优化并提供完整的软件工具链,对标CUDA的软件栈,为开发者提供运行、编译、调试和性能分析等功能。
并提供多种深度优化的计算加速库,原生支持TensorFlow/Pytorch/PaddlePaddle等深度学习框架以及Open-mmlab/Vision/FastMoe等三方组件,提供FP32/FP16/INT8等多精度训练和推理支持,覆盖计算机视觉、智能语音、智能文本、推荐系统和强化学习等多个人工智能领域。
海光DTK生态社区(https://cancon.hpccube.com:65024/1/main)还是比较完备的,DTK适配版本、AI生态包、驱动、性能分析的工具包都可以直接下载,从发布时间来看,DTK每年会在4月和10月发布两个稳定版本,听说24.04版本的DTK也已经发布,24.04相较于23.10在AI模型训练和推理上又做了不少提升,同时也针对现在爆火的大模型做了针对性适配与优化。
AI生态包针对每个DTK版本发布了对应的深度学习框架(如:pytorch、tensorflow等),还有大模型加速训练、推理的包(如:deepspeed、vllm等)也都提供出来了,直接下载whl,然后install就可以,还是挺方便的。
海光光合社区还提供了一些性能及压力测试的工具,总体来说还是比较全面的,也是简单易上手,作为国产AI算力基础生态建设的领头羊,还是很值得推荐跟鼓励的。
另外,海光还提供光源社区(https://sourcefind.cn/#/main-page),里面会提供适配DCU硬件的相关环境镜像,大家可以直接下载使用;同时也有一些模型仓库,也是可以直接运行测试。
天数智芯
天数智算软件栈兼容主流 GPU 通⽤计算模型,提供⽀持主流 GPU 通⽤计算模型的等效组件、特性、 API 和算法,在API接口协议和编译器层面与CUDA(目前是CUDA-10.2)对应一致,以助⼒⽤⼾便捷地实现系统或应⽤的⽆痛迁移。正是由于天数智算软件栈⽀持常⽤的主流 GPU 通⽤计算 API,因此,多数情况下⽤⼾⽆需修改代码即能完成迁移。
天数智算软件栈包括⼈⼯智能深度学习应⽤、主流框架、函数库、编译器及⼯具、运⾏时库及驱动。
集成了 TensorFlow、 PyTorch、PaddlePaddle 等国内外主流的深度学习框架,提供与官⽅开源框架⼀致的算⼦,并针对天数智芯加速卡持续优化性能。
天数智算软件栈的函数库不仅⽀持通⽤计算还提供了深度学习应⽤开发所需的基础算⼦,开发者可以便捷地调⽤这些算⼦灵活地构造各类深度神经⽹络模型以及其他机器学习领域的算法。
ixJPEG 多媒体库为深度学习和超⼤规模多媒体应⽤程序中常⽤的图像格式提供⾼性能、 GPU 加速的图⽚
解码功能。
ixCODEC 多媒体库提供全加速硬件视频解码能⼒,⽀持多路同时解码,完全独⽴运⾏于计算/图形引擎。
CUTLASS:适配 CUTLASS v2.5.1
ix-TransformerEngine:适配 Transformer Engine v1.6.0
ixCCL 通信库接⼝兼容 NCCL v2.14.3,并优化多卡⼤模型推理通信等相关内容。
天数智芯编译器兼容主流 GPU 通⽤计算模型,且针对天数智芯加速卡的汇编语⾔做了多种优化。
ixSMI ⼯具能够采集天数智芯加速卡的底层硬件信息,并实时获取上层软件对硬件资源调度状态等。
ixPROF ⼯具能够收集和查看追踪数据,可针对天数智芯加速卡进⾏性能剖析。
ixKN ⼯具在 CUDA 核函数(kernel)执⾏期间,抓取性能分析指标 (event/metric) 的数据。
ixSYS ⼯具在 CUDA 应⽤程序运⾏时对系统进⾏采样抓取 trace, trace 信息可⽤ web 图形化⽅式统计及
展⽰。
ixGDB ⼯具是基于 CUDA-GDB 并提供针对天数智芯加速卡的 CUDA 应⽤程序的开源调试⼯具。
为了发挥天数加速卡的极致性能,天数智芯⾃研了推理框架和引擎:
ixFormer:专⽤于⼤模型推理优化的加速框架,⽀持业界⽬前主流⼤模型的推理加速,实现⼤模型在天数智芯加速卡上的最佳推理性能。IxFormer 还提供了对 vLLM 和 TGI 框架进⾏推理加速的⽀持。
IGIE:⾼性能、⾼通⽤、全流程的神经⽹络推理框架,可为推理场景提供易部署、⾼吞吐量、低延迟的完整⽅案。
IxRT:天数智芯专⽤推理加速引擎,⽀持对业界主流训练框架的模型进⾏解析及优化,实现视觉、语⾳、推荐、⾃然语⾔等领域模型在天数智芯加速卡上的最优推理性能。
天数智芯还提供 VGPU ⽅案,针对天数智芯加速卡实现的基于 Kubernetes(K8s) 集群系统的 GPU 虚拟化。
燧原
燧原科技也有计算及编程平台TopsPider,提供全新的编程模型,开放的编程接口和全新的profiling工具,支持自适应图优化策略及算子泛化和系统级设备虚拟化,同时具备高加速比的分布式训练能力。通过软硬件协同架构设计,充分释放邃思芯片的强大性能。
与
Enflame GCU硬件
配套的软件生态矩阵包括
核心异构加速计算平台
(驱动、运行时、编译器、开发者工具)以及
扩展开发库、计算图、框架、AI开发相关的工具集
,上层还提供丰富的模型、镜像、解决方案和AI开发平台等。软件组件众多,可归为以下6大类别: