第三章 主流国产AI芯片厂商概览

各位同学,今天我们来聊聊国产AI芯片的几大主力厂商。说实话,这几年国产芯片的发展速度,比我预想的要快得多。我在2018年刚接触这个领域时,能用的国产AI芯片一只手就数得过来。现在呢?百花齐放。但每家厂商的定位、技术路线、生态成熟度都不一样,选型时得擦亮眼睛。

3.1 华为昇腾:生态最完整的国产选手

华为昇腾(Ascend)系列,目前是国产AI芯片里生态最成熟的一个。我个人习惯把昇腾比作「国产的NVIDIA」,虽然性能上还有差距,但软件栈的完整度是最接近的。

昇腾的核心产品线包括:

  • 昇腾310:推理芯片,功耗低,适合边缘场景
  • 昇腾910:训练芯片,对标A100,单卡算力可达256 TFLOPS(FP16)
  • 昇腾910B:升级版,显存带宽提升,适合大模型训练

软件生态方面,华为推出了CANN(异构计算架构)和MindSpore框架。嗯,这里要注意一点:CANN的算子库虽然丰富,但和CUDA的兼容性并不是100%。我在项目中遇到过,有些PyTorch模型直接迁移到昇腾上会报算子不支持的错误。解决办法是使用华为提供的迁移工具,或者手动改写部分算子。

关键点:昇腾的优势在于「全栈」。从芯片到框架,再到应用层,华为都做了深度优化。如果你做的是政企项目,昇腾几乎是首选。

避坑指南:我曾经把一个基于TensorFlow的OCR模型迁移到昇腾上,结果发现CANN对TensorFlow 1.x的支持不太好。后来改用MindSpore重写了前向推理部分,性能反而提升了15%。所以我的建议是:如果选昇腾,尽量用MindSpore,别绕弯路。

3.2 寒武纪:AI芯片的「老炮儿」

寒武纪是国内最早做AI芯片的公司之一。我记得2016年他们刚推出Cambricon-1A时,业界还挺震惊的——一个初创公司能把深度学习处理器做到这个水平。

寒武纪的产品线主要分两条:

  • 思元系列:面向云端训练和推理,比如思元290、思元370
  • 玄思系列:面向边缘计算和终端设备

寒武纪的软件栈叫Neuware(寒武纪人工智能软件栈),包含编译器、运行时库和算子库。说实话,Neuware的文档质量在国产芯片里算不错的,但社区活跃度不如华为。你想想看,一个生态好不好,关键看有多少人在上面「踩坑」并分享经验。寒武纪这点还需要积累。

厂商 训练芯片 推理芯片 软件栈 生态成熟度
华为昇腾 昇腾910/910B 昇腾310 CANN + MindSpore ★★★★☆
寒武纪 思元290/370 思元100/270 Neuware ★★★☆☆
海光信息 深算一号 - DTK(类CUDA) ★★★☆☆
燧原科技 云燧T20/T21 云燧i20 GCU驱动 + TopsRider ★★☆☆☆
地平线 - 征程系列 地平线开发平台 ★★★☆☆
百度昆仑芯 昆仑芯1/2 昆仑芯1/2 XPU驱动 + PaddlePaddle ★★★☆☆

3.3 海光信息:x86生态的「借力者」

海光信息走的是另一条路——兼容x86指令集。说白了,他们的芯片可以跑原生的x86代码,这对很多传统服务器应用来说太友好了。我有个朋友在做数据库加速,直接拿海光的芯片跑MySQL,几乎不用改代码。

海光的AI芯片叫「深算一号」,基于DCU(Deep Computing Unit)架构。软件栈叫DTK(海光开发工具包),它其实是对CUDA接口的兼容实现。嗯,这里有个坑:DTK虽然号称兼容CUDA,但只支持到CUDA 11.x的部分API。如果你用了CUDA 12的新特性,可能会遇到兼容性问题。

注意:海光芯片的优势在于「平滑迁移」,适合那些已经有大量x86代码、不想重写的团队。但如果你追求极致的AI算力,海光目前还不是最优选。

3.4 燧原科技:云原生的「新势力」

燧原科技是2018年成立的,算是国产AI芯片里的后起之秀。他们的产品叫「云燧」系列,主打云端训练和推理。我个人觉得,燧原最大的亮点是支持GCU(通用计算单元),说白了就是一张卡既能做AI计算,也能做通用计算。

燧原的软件栈叫TopsRider,包含编译器、算子库和性能分析工具。我去年帮一个客户做POC测试,用TopsRider跑ResNet-50,性能大概能达到A100的70%左右。对于一家成立才几年的公司来说,这个成绩已经不错了。

但燧原的生态还在早期。算子库的丰富度不如华为和寒武纪,社区文档也有些地方写得不够清楚。我曾经在调试一个自定义算子时,翻遍了文档也没找到某个API的详细说明,最后只能去GitHub上提issue。嗯,希望他们后续能补上这块短板。

3.5 地平线:自动驾驶的「隐形冠军」

地平线走的是垂直赛道——智能驾驶和边缘计算。他们的征程系列芯片(征程2、征程3、征程5)在车载AI芯片市场占有率很高。我有个做自动驾驶的朋友说,地平线的芯片在功耗和实时性上做得确实好,特别适合车规级应用。

地平线的软件栈包括:

  • 地平线开发平台:包含模型转换工具、量化工具和推理引擎
  • TogetherROS:面向自动驾驶的中间件

说实话,地平线的软件工具链在易用性上做得不错。他们的模型转换工具支持从PyTorch、TensorFlow、ONNX等主流框架直接转换,而且量化精度损失控制得很好。我试过把YOLOv5s模型量化到INT8,mAP只掉了不到1%。

小技巧:如果你做的是车载或边缘AI项目,地平线是性价比很高的选择。但要注意,他们的芯片主要针对视觉任务,对NLP模型的支持相对弱一些。

3.6 百度昆仑芯:搜索巨头的「自研利器」

百度昆仑芯是百度自研的AI芯片,最早是为了满足百度搜索、智能云等业务的需求。昆仑芯1代和2代都已经量产,主要用在百度的数据中心里。我听说昆仑芯3代也在路上了,性能会有大幅提升。

昆仑芯的软件栈和百度飞桨(PaddlePaddle)深度绑定。说白了,如果你用飞桨框架,昆仑芯的适配度是最好的。但如果你用PyTorch,就需要通过百度提供的转换工具来迁移模型。

我个人觉得,昆仑芯的优势在于「场景驱动」。百度有海量的搜索、广告、语音业务,这些场景下的模型在昆仑芯上跑得又快又稳。但对外部开发者来说,生态的开放度还有提升空间。

3.7 知识体系总览

下面这张图是我整理的国产AI芯片厂商知识体系,方便你快速理解各家定位:

国产AI芯片厂商知识体系 国产AI芯片厂商 华为昇腾 生态最完整 CANN + MindSpore 寒武纪 老牌AI芯片 Neuware软件栈 海光信息 x86兼容 DTK类CUDA 燧原科技 云原生 TopsRider 地平线 自动驾驶 征程系列 百度昆仑芯 自研芯片 飞桨深度绑定 选型建议:看生态成熟度 → 看场景匹配度 → 看迁移成本 没有最好的芯片,只有最适合你项目的芯片

3.8 选型建议

说了这么多,到底该怎么选?我个人的经验是分三步走:

  1. 看生态成熟度:如果团队对CUDA依赖很深,优先考虑华为昇腾或海光信息。昇腾有CANN做桥接,海光直接兼容x86。
  2. 看场景匹配度:做自动驾驶选地平线,做云端大模型选昇腾或燧原,做边缘推理选寒武纪或地平线。
  3. 看迁移成本:如果现有代码是PyTorch写的,昇腾和寒武纪的迁移工具相对成熟。如果是飞桨,直接上昆仑芯。

最后说一句:国产AI芯片的软件生态还在快速演进中。我建议你保持关注,每半年重新评估一次各家的进展。说不定明年这个时候,某家厂商的生态就突然成熟了。

专注资料整理