第二章:云端训练芯片——四大阵营的技术博弈
各位同学,今天我们来聊聊云端训练芯片。这个领域,说白了就是AI的“发动机”。没有它,再好的算法也只是纸上谈兵。
我入行那会儿,训练一个ResNet-50要跑好几天。现在呢?几个小时就搞定了。这背后,是芯片架构的疯狂迭代。我个人习惯把云端训练芯片分成四大阵营:NVIDIA、Google、AMD,还有咱们国产的华为昇腾和寒武纪。咱们一个一个来看。
2.1 NVIDIA GPU:从“游戏卡”到“AI霸主”
NVIDIA的故事,大家都熟悉。但你可能不知道,它最早是给游戏做显卡的。我2012年做深度学习时,用的还是GTX 580。那时候CUDA生态刚起步,文档少得可怜,踩坑是家常便饭。
2.1.1 架构演进:从Kepler到Hopper
NVIDIA的架构演进,我总结为“每两年一次大升级”。咱们看几个关键节点:
| 架构 | 发布年份 | 核心改进 | 我的评价 |
|---|---|---|---|
| Kepler (GK系列) | 2012 | SMX单元、动态并行 | 入门级,现在看太老了 |
| Maxwell (GM系列) | 2014 | 能效比大幅提升 | 当年做推理的首选 |
| Pascal (GP系列) | 2016 | NVLink、FP16支持 | 我第一个大规模集群用的就是它 |
| Volta (GV系列) | 2017 | Tensor Core、独立线程调度 | AI训练的转折点 |
| Turing (TU系列) | 2018 | RT Core、INT4/TensorRT优化 | 推理更强,训练一般 |
| Ampere (GA系列) | 2020 | 第三代Tensor Core、稀疏化 | 目前最主流的训练卡 |
| Hopper (GH系列) | 2022 | Transformer引擎、DPX指令 | 专门为大模型设计 |
嗯,这里要注意:Volta架构的Tensor Core是个分水岭。它把矩阵乘法从通用计算单元里独立出来,专门做混合精度训练。我记得当时第一次跑FP16训练,速度直接翻倍,但精度损失几乎为零。从那以后,我就再也没用过纯FP32训练了。
核心观点:NVIDIA的成功,60%靠硬件,40%靠CUDA生态。你想想看,如果没有cuDNN、TensorRT这些库,再强的GPU也只是个“裸金属”。
2.1.2 避坑指南:显存带宽是瓶颈
我曾经在一个项目中,用A100训练GPT-2模型。理论算力足够,但实际吞吐量只有峰值的40%。查了半天,发现是显存带宽不够。模型参数太大,频繁在HBM和SRAM之间搬运数据。后来用了模型并行+梯度累积,才把利用率提上去。
警告:别只看算力(TFLOPS),更要看显存带宽(GB/s)。对于大模型,带宽往往比算力更关键。
2.2 Google TPU:为TensorFlow量身定做的“怪物”
Google的TPU,是个很有意思的产品。它不像NVIDIA那样“通用”,而是专门为TensorFlow优化的。说白了,就是“一条路走到黑”。
2.2.1 TPU架构原理
TPU的核心是Systolic Array(脉动阵列)。这东西听起来高大上,其实原理很简单:把多个乘法器排成矩阵,数据像流水一样“流”过它们。这样做的好处是,数据复用率高,功耗低。
我举个例子:假设你要做两个4x4矩阵的乘法。用传统GPU,需要16个乘法器并行工作,每个乘法器都要从内存取数据。而TPU的脉动阵列,只需要把数据从左边和上边“推”进去,结果从右边和下边“流”出来。中间的数据搬运,几乎为零。
小技巧:如果你用TPU训练,记得把batch size设大一点。TPU对大批量数据特别友好,小batch反而效率低。我一般设到1024以上。
2.2.2 TPU的演进
- TPU v1 (2016):只做推理,不支持训练。当时主要用于Google搜索的RankBrain。
- TPU v2 (2017):加入训练能力,支持FP32/FP16混合精度。我2018年在Google Cloud上用过,速度比V100快30%。
- TPU v3 (2018):算力翻倍,液冷散热。嗯,这代开始支持BF16,精度比FP16好。
- TPU v4 (2021):光互联,支持4096颗芯片互联。说实话,这规模我还没机会用,太贵了。
为什么会这样?Google把TPU做成“黑盒”,你只能通过TensorFlow/PyTorch的API调用。好处是用户不用管底层细节,坏处是灵活性差。我有个朋友想在上面跑自定义算子,折腾了两周没搞定。
2.3 AMD ROCm:开源生态的“搅局者”
AMD的ROCm,我一直觉得是“被低估的选手”。它走的是开源路线,对标CUDA。但说实话,生态成熟度还差一截。
2.3.1 ROCm的核心组件
| 组件 | 功能 | 对标NVIDIA |
|---|---|---|
| HIP | CUDA代码移植工具 | CUDA Runtime |
| MIOpen | 深度学习加速库 | cuDNN |
| RCCL | 多卡通信库 | NCCL |
| ROCgdb | 调试工具 | cuda-gdb |
我个人习惯用HIP做代码移植。大部分CUDA代码,改几行就能跑在AMD卡上。但要注意,有些CUDA特有的API(比如cudaGraph)没有对应实现,需要自己写替代方案。
我的经验:如果你团队有CUDA开发经验,转ROCm大概需要1-2周适应期。但如果是新手,建议直接学HIP,别碰CUDA了。
2.3.2 避坑指南:驱动兼容性
我曾经在Ubuntu 20.04上装ROCm 5.0,折腾了三天。原因是内核版本不兼容。后来发现,ROCm对Linux内核版本要求很严格,必须用官方推荐的版本。建议用Ubuntu 22.04 LTS + ROCm 5.4以上版本,省心很多。
警告:ROCm目前只支持Linux,不支持Windows。如果你团队用Windows开发,建议用WSL2或者直接上Linux。
2.4 国产算力:华为昇腾与寒武纪
国产芯片这几年进步很快。我2019年第一次用华为昇腾910,当时觉得“能用,但不好用”。现在昇腾910B,已经能跟A100掰手腕了。
2.4.1 华为昇腾:从“能用”到“好用”
昇腾的核心是Da Vinci架构。它跟NVIDIA最大的不同是:采用“达芬奇”核心,每个核心包含3个Cube(矩阵计算单元)、2个Vector(向量计算单元)和1个Scalar(标量计算单元)。这种设计,对Transformer类模型特别友好。
我举个例子:在昇腾上跑BERT训练,性能能达到A100的80%。但要注意,昇腾的软件栈CANN(华为自己的CUDA)还在完善中。有些算子需要自己手写TBE(Tensor Boost Engine)代码。
小技巧:用昇腾时,尽量用华为官方提供的ModelZoo模型。自己从PyTorch转过来的模型,性能可能打折扣。我一般先在ModelZoo里找,找不到再自己转。
2.4.2 寒武纪:AI芯片的“老兵”
寒武纪是国内最早做AI芯片的公司之一。它的思元系列,主打“通用性”。跟昇腾不同,寒武纪的芯片可以跑各种框架(TensorFlow、PyTorch、PaddlePaddle等)。
但说实话,寒武纪的生态比华为差一些。我2021年用思元270时,文档不全,社区也不活跃。最近听说思元590性能不错,但还没机会实测。
我的建议:如果做国产化替代,优先选华为昇腾。生态更成熟,技术支持也更好。寒武纪适合有自研能力的团队,可以深度定制。
2.5 知识体系总览
下面这张图,是我自己整理的云端训练芯片知识体系。你可以把它当作“地图”,随时回来查阅。
2.6 市场测算:谁在赚钱?
最后聊点实际的。根据我看到的行业数据,2023年云端训练芯片市场大概是这样的:
- NVIDIA:市场份额约85%。A100/H100供不应求,交期长达6个月。
- Google TPU:内部使用为主,不对外销售。但通过Google Cloud提供服务,间接赚钱。
- AMD:市场份额约5%。MI250/MI300性能不错,但生态拖后腿。
- 国产芯片:合计约3%。华为昇腾增长最快,寒武纪在收缩。
嗯,这里要注意:国产芯片的市场份额虽然小,但增速很快。我预计到2025年,国产芯片在云端训练市场的份额能达到10%以上。原因很简单:政策驱动 + 性价比。
我的判断:未来3年,云端训练芯片会从“一超多强”变成“多极竞争”。NVIDIA依然领先,但Google、AMD、华为都会蚕食它的份额。作为工程师,多掌握几种平台总没错。
好了,这一章就到这里。记住:芯片选型没有银弹,只有最适合你场景的方案。下一章,我们聊聊推理芯片,那又是另一番天地了。
公众号:蓝海资料掘金营,微信deep3321