ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI芯片选型与部署实战:从训练到推理的架构、软件栈与避坑指南

AI芯片选型与部署实战:从训练到推理的架构、软件栈与避坑指南

1. 从算力焦虑说起:为什么AI芯片突然成了焦点

如果你在过去两年里深度参与过任何与深度学习相关的项目,大概率经历过这样的场景:模型结构调优已经到位,数据集清洗得干干净净,训练脚本反复检查了三遍,结果一跑起来就卡在显存溢出或者多卡通信瓶颈上。这时候你才意识到,限制项目进度的往往不是算法本身,而是底层那颗芯片到底能不能扛住。

AI芯片这个词,放在五年前还只是芯片圈和学术圈的小众话题,如今已经变成科技行业最热的关键词之一。它涵盖的范围其实很广,从云端训练用的大算力加速卡,到边缘侧推理用的低功耗NPU,再到终端设备里嵌入的微型神经网络处理单元,都属于这个范畴。我写这篇东西,不是要复述新闻稿里的融资消息或者发布会参数,而是想从一个实际使用者的角度,把AI芯片当前到底发展到了什么阶段、不同技术路线各自解决了什么问题、落地时又会遇到哪些坑,尽量讲清楚。

这篇文章适合几类人看:一是正在做模型部署、需要选型的工程师;二是关注半导体和AI交叉领域的技术管理者;三是对硬件加速感兴趣但还没深入动手的学生或转行者。我会尽量避开空洞的行业展望,把重点放在技术逻辑和实际体验上,让你读完能对AI芯片的现状有一个可操作的认知框架,而不是只记住几个厂商名字。

2. 拆开一颗AI芯片:它和普通处理器到底差在哪

2.1 冯诺依曼瓶颈与数据搬运的代价

要理解AI芯片为什么必须存在,得先回到一个老生常谈但极其关键的问题:传统CPU的冯诺依曼架构里,计算单元和存储单元是分离的。每次做一次乘法累加运算,数据都要从内存搬到寄存器,算完再搬回去。这个搬运过程消耗的时间和能量,远远超过计算本身。

我做过一个粗略的估算:在典型的深度学习推理任务中,一次MAC操作(乘加运算)如果从DRAM取数,能耗大约是计算本身的几十倍甚至上百倍。这意味着什么?意味着你花大价钱买的算力,大部分都浪费在等数据上了。AI芯片的核心设计思路,就是围绕“减少数据搬运”来做文章。无论是把存储和计算做近,还是把大量计算单元堆在一起做并行,本质上都是在跟这个瓶颈较劲。

2.2 从通用到专用:架构光谱上的不同选择

市面上常说的AI芯片,其实是一个很宽的光谱。一端是仍然保持一定通用性的GPU和GPGPU,另一端是极度专用的ASIC。中间还夹着FPGA和各类可重构架构。它们之间的取舍逻辑,用一句话概括就是:越专用,能效越高,但灵活性越差。

GPU之所以在训练领域占据主导,是因为它保留了SIMT的编程模型,成千上万个线程可以灵活调度,适合处理动态图、变长序列这些不那么规整的计算。而ASIC比如某些推理加速卡,把卷积、矩阵乘的硬件流水线焊死,能效可以做到GPU的好几倍,但一旦模型结构发生大变化,可能就得重新流片。这个取舍没有绝对优劣,完全取决于你的业务场景是“模型固定、量大管饱”还是“快速迭代、什么都要试”。

2.3 训练与推理:两种截然不同的负载特征

很多人把AI芯片当成一个整体来讨论,但实际上训练芯片和推理芯片的设计目标差异巨大。训练阶段需要高精度(FP16甚至FP32)、大显存、高互联带宽,因为要存储梯度、优化器状态,还要做多卡同步。推理阶段则更看重低延迟、低功耗、高吞吐,精度往往可以量化到INT8甚至INT4。

我见过不少团队在选型时犯的一个错误,就是拿训练卡的指标去套推理场景,结果发现功耗和成本完全不可接受。反过来,用推理卡去跑训练,又会因为显存不够和互联带宽不足而寸步难行。所以第一步永远是先搞清楚:你到底是要训模型,还是要跑模型。

3. 云端训练芯片的竞争格局:谁在领跑,谁在追赶

3.1 GPU的护城河:不只是硬件,更是软件栈

谈到云端训练,绕不开的一个事实是:某家GPU厂商的统治地位,很大程度上不是靠单颗芯片的峰值算力,而是靠围绕它建立起来的软件生态。CUDA经过十几年的积累,已经形成了从底层驱动、编译器、通信库到上层框架的完整闭环。你遇到任何算子不支持、任何性能异常,社区里几乎都能找到答案。

这种生态壁垒的可怕之处在于,即使竞争对手的硬件在纸面参数上追平甚至反超,用户迁移的成本依然高得吓人。我亲身经历过一次从CUDA迁移到另一个平台的过程,光是自定义算子的重写和精度对齐就花了团队两个月,这还不算调试分布式训练时遇到的各种通信问题。所以短期内,训练市场的格局不会因为一两款新硬件就发生根本性改变。

3.2 专用训练芯片的突围方向:互联与集群

追赶者选择的策略通常不是正面硬刚单卡性能,而是从集群互联和系统级优化入手。比如有些方案把芯片间的互联带宽做得极高,试图用大规模并行来弥补单卡差距。另一些则主打液冷和整机柜交付,把部署密度和能效比作为卖点。

这些方向在特定场景下确实有优势。比如训练超大参数量的模型时,互联带宽往往比单卡算力更关键,因为梯度同步的通信量会随着卡数增加而急剧上升。但问题在于,软件栈的成熟度需要时间打磨,很多团队在试用阶段就被各种算子缺失和调试困难劝退了。我的建议是,如果你现在要选训练平台,除非有非常明确的成本或供应链理由,否则还是优先考虑生态最成熟的那一套。

3.3 训练芯片选型时最容易忽略的三个指标

很多人在看训练卡参数时,眼睛只盯着TFLOPS。但实际用起来,下面这三个指标往往更决定体验:

  • 显存容量与带宽:模型参数量、batch size、序列长度,最终都反映在显存占用上。显存不够,再高的算力也跑不起来。带宽则决定了数据喂给计算单元的速度。
  • 卡间互联带宽:做数据并行或模型并行时,梯度同步的开销直接取决于这个。带宽不足,多卡加速比会惨不忍睹。
  • 软件栈对主流框架的支持程度:不是所有芯片都能无缝跑PyTorch或TensorFlow的最新版本。有些平台需要特定的分支或补丁,升级框架时可能踩坑。

我个人的经验是,在预算允许的情况下,显存尽量往大了选。因为模型只会越来越大,而显存是最难通过软件优化来弥补的硬约束。

4. 推理侧的真实战场:边缘与终端的芯片选择逻辑

4.1 推理场景的碎片化:没有一颗芯片能通吃

训练市场相对集中,但推理市场极其碎片化。云端推理、边缘服务器、移动端、IoT设备,每个场景对功耗、算力、成本、延迟的要求都不一样。云端推理可能看重吞吐量和多模型并发,边缘侧看重低延迟和离线可用,移动端则必须在毫瓦级别的功耗预算内完成计算。

这种碎片化导致了一个结果:没有哪家厂商能像训练市场那样形成绝对垄断。这反而给了很多专用芯片公司机会,它们可以在某个细分场景里做到极致,比如安防摄像头里的人形检测、车载场景里的多路视频分析、工业质检里的缺陷识别。

4.2 量化与剪枝:让模型适配芯片的关键手段

如果你打算把模型部署到边缘设备上,几乎不可能绕过量化这个环节。FP32的模型直接跑在低功耗芯片上,要么跑不动,要么功耗爆炸。量化的本质是用更低的数值精度来表示权重和激活值,比如把FP32转成INT8,理论上可以把模型大小压缩到四分之一,计算速度提升两到四倍。

但量化不是免费的午餐。我踩过的最大的坑是:训练时用FP32,推理时直接转INT8,结果精度掉得惨不忍睹。后来才明白,量化感知训练或者至少做一轮校准,是保证精度的必要步骤。另外,不是所有层都适合量化,比如某些归一化层和注意力机制里的softmax,对精度非常敏感,强行量化会引入明显误差。

4.3 边缘部署的隐藏成本:内存墙与散热

在边缘设备上部署模型,很多人只关注芯片的算力参数,却忽略了内存和散热这两个隐形杀手。边缘设备的内存通常很小,模型权重加上中间激活值,很容易就把内存撑爆。这时候就需要做内存复用和算子融合,把中间结果尽量留在片上缓存里。

散热问题同样棘手。工业场景里设备可能工作在高温环境下,如果芯片的散热设计不到位,降频是小事,死机重启就麻烦了。我见过一个项目,芯片选型时只看算力,结果夏天车间温度一高,设备频繁重启,最后不得不加装散热片和风扇,成本和体积都上去了。

5. 制程、封装与存储:决定AI芯片上限的底层变量

5.1 先进制程的红利与代价

AI芯片的性能提升,很大程度上依赖于半导体制造工艺的进步。从7nm到5nm再到3nm,晶体管密度不断提高,同样面积下能塞进更多计算单元,同时功耗还能降低。但先进制程的代价是流片成本急剧上升,一颗5nm芯片的设计和制造费用可能高达数亿人民币。

这就导致了一个分化:大厂可以靠出货量摊薄成本,小公司则很难承受先进制程的试错代价。所以很多初创公司的第一代产品会选择相对成熟的制程,先把架构和软件跑通,等出货量上来再考虑升级。

5.2 先进封装:绕开制程限制的另一条路

当制程微缩越来越难、越来越贵时,先进封装成了提升芯片性能的重要途径。Chiplet(芯粒)技术就是把不同功能的小芯片像搭积木一样封装在一起,比如计算芯粒用先进制程,I/O芯粒用成熟制程,这样既能保证性能,又能控制成本。

这种思路对AI芯片尤其有吸引力,因为AI芯片往往包含计算阵列、高带宽存储接口、各种外设控制器,不同模块对制程的需求并不一样。用Chiplet的方式做异构集成,可以在性能和成本之间找到更好的平衡点。不过,Chiplet也带来了新的挑战,比如芯粒之间的互联带宽和延迟、封装良率、热管理等,这些都需要在架构设计阶段就考虑清楚。

5.3 高带宽存储:算力之外的真正瓶颈

如果你问我AI芯片最容易被低估的部分是什么,我会说是存储。计算单元的算力可以靠堆面积来提升,但存储带宽的提升要困难得多。高带宽存储(HBM)通过把DRAM堆叠起来,用硅通孔连接,可以在很小的面积内提供极高的带宽。但HBM的成本很高,而且供应集中在少数几家厂商手里。

在实际项目中,我经常看到算力利用率上不去,排查到最后发现是存储带宽不够,计算单元在等数据。所以评估一颗AI芯片时,不能只看TFLOPS,还要看它的存储带宽和容量是否匹配。算力与带宽的比例,往往比绝对算力更能反映实际性能。

6. 软件栈的隐形战争:编译器、框架与算子库

6.1 编译器为什么这么难做

AI芯片的软件栈里,编译器是连接上层框架和底层硬件的桥梁。它的任务是把PyTorch或TensorFlow的计算图,转换成芯片能执行的指令序列,同时还要做算子融合、内存分配、指令调度等优化。这件事的难度在于,深度学习模型的结构千变万化,编译器要能覆盖足够多的算子,还要在性能上不拖后腿。

我接触过一些芯片平台,硬件参数很漂亮,但编译器经常遇到不支持的算子,或者生成的代码性能远低于预期。这时候要么等厂商更新编译器,要么自己写算子,无论哪种都很耗时。所以选型时一定要拿自己真实的模型去跑一遍,看看编译器的支持程度和优化效果。

6.2 算子库的覆盖度决定迁移成本

算子库是另一个关键。主流框架里的算子有几百个,芯片厂商不可能一开始就全部支持。通常的做法是先覆盖最常用的那些,比如卷积、矩阵乘、激活函数、归一化等。但如果你用的模型里有比较新的或者冷门的算子,就可能遇到不支持的情况。

我的经验是,在项目早期就梳理清楚模型用到的所有算子,然后对照芯片厂商的算子支持列表逐一确认。对于不支持的算子,要提前评估是自己实现还是找替代方案。这个工作做得越早,后期踩坑的概率越小。

6.3 从CUDA迁移的真实体验:坑在哪里

如果你之前一直用CUDA,迁移到其他平台时,下面这几个坑几乎一定会遇到:

  • 线程模型差异:CUDA的线程层次结构(thread、block、grid)在其他平台上可能有不同的对应关系,需要重新理解并行映射方式。
  • 内存管理差异:显存分配、释放、拷贝的API和行为可能不同,特别是异步操作和流的概念。
  • 数学库差异:cuBLAS、cuDNN这些库的替代品,在接口和精度上可能有细微差别,需要做数值对齐。
  • 调试工具差异:性能分析工具、调试器的使用方式不同,排查问题的效率会受影响。

我建议在迁移前,先写一个最小可用的测试用例,把矩阵乘、卷积这些核心操作跑通,确认精度和性能都符合预期,再逐步迁移整个模型。

7. 落地实践中的选型框架与避坑清单

7.1 先问清楚五个问题再谈选型

在对比具体芯片型号之前,我通常会先问团队五个问题:

  1. 模型是训练还是推理?这决定了你关注的是训练卡还是推理卡。
  2. 部署环境是什么?云端、边缘服务器、移动端还是嵌入式设备?
  3. 模型结构会频繁变化吗?如果会,就需要更高的灵活性,GPU或FPGA可能更合适。
  4. 功耗和成本约束是什么?边缘场景对功耗极其敏感,云端则更看重吞吐量。
  5. 团队的技术栈是什么?如果团队只熟悉CUDA,迁移到其他平台的隐性成本要算进去。

把这五个问题回答清楚,选型范围基本就缩小到两三个选项了。

7.2 纸面参数与实际性能的差距从哪里来

厂商标称的峰值算力,通常是在理想条件下测出来的,比如特定精度、特定batch size、特定算子。实际跑起来,受限于存储带宽、编译器优化、算子支持度等因素,能达到峰值的一半就算不错了。

我在评估芯片时,会特别关注厂商有没有提供端到端的benchmark,比如跑一个完整的ResNet或BERT,而不是只给单个算子的数据。另外,最好能拿到实机做压力测试,用自己的模型和数据集跑一遍,看看延迟、吞吐、功耗的真实表现。

7.3 供应链与长期维护:容易被忽视的风险

芯片选型不只是技术决策,也是供应链决策。如果选的芯片供货周期很长,或者厂商的路线图不清晰,后续产品迭代就会很被动。我见过一些项目,第一批量产用了某款芯片,结果第二年想扩产时发现芯片停产了,不得不重新做硬件设计和软件适配,代价非常大。

所以除了技术指标,还要评估厂商的持续供货能力、软件更新频率、社区活跃度。对于关键项目,最好有备选方案,避免被单一供应商锁定。

8. 未来几年的技术走向与个人判断

8.1 架构创新会从哪里冒出来

从目前公开的信息来看,AI芯片的架构创新主要集中在几个方向:一是存内计算,把计算单元嵌入存储阵列,从根本上消除数据搬运;二是光互联,用光信号代替电信号做芯片间通信,提升带宽和降低延迟;三是类脑计算,模仿神经元的脉冲发放机制,做事件驱动的稀疏计算。

这些方向都很有前景,但也都面临各自的工程化难题。存内计算的精度和可靠性还需要验证,光互联的成本和封装复杂度很高,类脑计算的编程模型和生态几乎是从零开始。我个人判断,未来三到五年内,主流市场仍然会是GPU、ASIC和FPGA的混合格局,新架构会先从特定场景切入,逐步扩大份额。

8.2 软件生态的开放与封闭之争

另一个值得关注的趋势是软件生态的走向。目前训练市场是封闭生态占主导,但推理市场因为碎片化,反而出现了更多开放标准的机会。比如ONNX这样的中间表示格式,正在被越来越多的芯片厂商支持,这降低了模型在不同硬件间迁移的成本。

如果未来出现一个真正跨平台的、高性能的编译器栈,那么芯片硬件的差异化就会更多体现在制程、封装和存储上,而不是软件锁定。这对用户来说是好事,但对靠生态壁垒吃饭的厂商来说,压力会越来越大。

8.3 给不同阶段从业者的建议

如果你刚入行,我的建议是先把CUDA或某一套主流软件栈用熟,理解并行计算和性能优化的基本方法。这些底层能力是跨平台通用的,即使以后换硬件,学习成本也会低很多。

如果你正在做选型,不要只看参数表,一定要拿真实模型去实测。多和厂商的技术支持沟通,了解他们的算子覆盖情况和路线图。对于关键项目,做好备选方案和迁移预案。

如果你在做架构设计,多关注存储和互联,这两块往往比计算本身更容易成为瓶颈。另外,软件栈的投入要趁早,硬件流片一次就是几千万,软件迭代的成本相对低得多,但决定了硬件能不能真正用起来。

这个领域变化很快,今天的主流方案可能两年后就被替代。保持动手实验的习惯,比记住任何结论都重要。我在实际使用中发现,很多看似复杂的选型问题,一旦把真实负载跑起来,答案往往就清晰了。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进