这些年做AI基础设施相关工作,我有一个很深的感触:大部分团队讨论AI项目时,优先聊的是模型结构、训练技巧和数据质量,但真正决定项目上限的,往往是那些不怎么上发布会PPT的东西——现代AI计算硬件与基础设施技术体系。同一套模型代码,放在不同的底层环境上,训练时间可以差出十倍以上,账单也能差出一个数量级。这不是模型写得好不好的问题,而是底座到底撑不撑得住的问题。
这篇文章不是芯片评测,也不是硬件导购。我想站在一个长期负责AI集群建设、运维和调优的从业者角度,把现代AI计算硬件与基础设施技术体系完整拆开讲一遍:从加速卡选型、服务器组成、集群组网,到存储、供电、散热、软件栈调度,再到常见故障排查。目标是让准备搭建或正在使用AI基础设施的同学,先建立起一张完整的技术地图,理解每一步为什么要这么做,以及我已经踩过的那些坑。
如果你正要为实验室或公司采购AI服务器,如果你在云上训练但总感觉资源利用率不高,如果你做算法但偶尔要跟基础设施团队打交道,这篇文章都有参考价值。基础概念我会顺带解释,但重点还是落在工程决策和实操经验上。
1. 项目概述与核心脉络
1.1 为什么先看硬件,再看模型?
接触过不少训练任务之后,我发现一个规律:模型层面的问题往往是显性的,比如loss不降、精度不够,大家会花大量时间调参;而硬件和基础设施的问题却是隐性的,比如显存溢出、通信卡顿、磁盘读写慢,这些问题的表象经常会被误判成模型问题。
举个例子,A同学训练一个大模型,发现每个step的耗时从0.8秒涨到了1.5秒,他以为是模型结构写错了,反复检查网络和代码,后来才发现是数据读取线程被前一个任务占满,磁盘IO成了瓶颈。这种问题在算力规模越大的集群里越常见,因为单卡时代,GPU和CPU的算力差距还没有大到让存储完全追不上;到了多卡、多机时代,任何一层短板都会被放大成整个集群的等待。
所以我在做项目时,习惯把AI系统看成一组“资源约束的博弈”。显存决定batch size和模型并行策略;通信带宽决定集群扩展效率;存储吞吐决定数据能不能喂饱计算单元;散热和供电决定硬件能稳定跑多久。任何一个环节成为短板,整条训练链路都会拖慢。理解这一点,才算真正进入AI基础设施的语境。
1.2 一套完整体系应该从哪些层级拆解
如果要把现代AI计算硬件与基础设施技术体系画成一张地图,我一般分成六个层级:算力单元、服务器平台、集群互联、存储管线、供电散热、软件调度。它们之间是层层支撑的关系,每一层的特点是“下面决定上限,上面决定效率”。
这里可以直观列出每一层的职责和容易出问题的地方:
| 层级 | 典型组成 | 核心指标 | 常见瓶颈 |
|---|---|---|---|
| 算力单元 | GPU、专用AI芯片、NPU | 算力、显存带宽、功耗 | 显存不足、算子适配差 |
| 服务器平台 | CPU、内存、主板、固件 | PCIe通道数、稳定性 | 通道不足、供电不稳 |
| 集群互联 | 交换机、网卡、光模块 | 带宽、时延、丢包率 | 收敛比过高、丢包重传 |
| 存储管线 | 本地盘、分布式存储、对象存储 | IOPS、带宽、延迟 | 小文件太多、元数据开销 |
| 供电散热 | PDU、UPS、液冷/风冷 | 功率冗余、散热能力 | 机柜功率瓶颈、热点 |
| 软件调度 | 容器平台、调度器、监控 | 资源利用率、恢复速度 | 资源碎片、任务排队 |
这张表也对应了后面几个章节的展开顺序。实际运维中,每一层都不是孤立的:网络丢包会表现为多卡训练变慢,存储延迟会表现为GPU利用率下降,供电波动会表现为节点莫名重启。所以我常说,AI基础设施工程师其实是个“全栈排查工”,既要懂硬件,也要懂系统软件。
2. 算力单元:从GPU到专用加速器的选型逻辑
2.1 通用GPU为什么仍然是主力
先说结论:在当前的大规模训练场景里,通用GPU依旧是最稳妥的选择。核心原因是它的并行计算架构天然适合深度学习里大量的矩阵乘法和卷积运算。GPU里有数千个计算核心,可以同时处理成千上万个乘加操作;再加上高带宽显存和成熟的数据并行指令流,让模型训练的效率明显高于传统CPU。
另一个关键因素是生态。主流深度学习框架的核心算子,几乎都针对当前主流加速卡生态做过深度优化。你不需要从零手写底层矩阵乘法,框架会自动调用已经优化好的算子库。这意味着团队可以把精力放在模型结构上,而不是去抠一个GEMM到底应该怎么拆。
但通用GPU的问题也很明显:功耗高、显存扩展受限、价格不便宜。尤其是显存容量,是所有大模型训练团队都会撞到的墙。很多模型不是算力不够,而是显存放不下。所以选型时不能只看峰值算力,必须把“显存容量 + 显存带宽 + 单卡功耗 + 厂方生态成熟度”放在一起看。我的习惯是先跑一遍自己真实场景的算子组合,而不只是跑通用基准测试,因为通用基准往往更偏向短时峰值性能,持续训练时的降频和散热表现才是关键。
2.2 专用AI芯片与ASIC的价值与代价
除了通用GPU,现在越来越多的团队在考虑专用AI芯片。这类芯片把训练或推理中固定不变的计算模式直接用硬件电路实现,比如矩阵乘累加单元、卷积单元。好处是单位功耗下的算力更高,大批量部署时总成本更低;劣势是灵活性差,如果算法结构变化,很多硬件优化就失效了,严重时甚至要重新设计芯片。
可以打个比方:通用GPU像请一个全能厨师,什么菜系都能做;专用ASIC像建了一条做固定菜品的流水线,专一、省人,但菜谱不能随便改。实际部署中,AI专用芯片通常不会在所有场景上替代GPU,更多是在特定推理场景上做边际成本优化。某公司自研芯片跑固定结构的推荐模型,单次推理成本确实可以降得很低;但要让它去跑最新的多模态大模型,可能要等下一次流片。
选型时一定要问三个问题:核心模型结构未来一年会不会大改?推理流量是否足够稳定?算子是否能被专用芯片完整覆盖?如果三个答案都是“是”,专用芯片值得认真评估;如果有一个是“不确定”,那我还是建议以通用GPU作为主力,留足回旋余地。
2.3 NPU与异构SoC的实际价值
很多人的视野只盯着数据中心里的加速卡,忽略了边缘侧AI硬件。手机里的NPU、嵌入式平台上的AI加速单元、自动驾驶域控里的异构SoC,本质上都是为“低功耗、低延迟推理”设计的专用算力单元。它们把神经网络算子固化在芯片内部,配合CPU和GPU组成异构计算系统。
这类NPU一般不能单独承担所有计算任务,真正的价值在于异构调度。系统级软件会把适合NPU执行的算子分给它,把适合CPU处理的预处理逻辑留在CPU上,从而在整体功耗受限的情况下得到最高能效。训练在云端完成,推理下沉到边缘,这是很多真实项目的标准架构。
如果想把“云边一体”做扎实,基础设施体系就不能只盯着机房里的那堆加速卡,还要考虑模型量化工具、编译工具链是否能把训练好的模型高效部署到NPU上。我在实际项目里见过很多边缘硬件买了却用不起来的情况,问题往往不是硬件差,而是配套工具链不完整,或者模型太大、量化后精度损失严重。所以在技术选型阶段就要把边缘推理路径一起规划进去。
3. 服务器与集群:把单卡算力变成集群算力
3.1 单台AI服务器怎么选
一台AI服务器不是简单把八张卡塞进机箱。选型时我会按这个顺序过一遍:CPU核心数和主频是否够用;内存通道数和容量;PCIe通道数是否足够让多张卡和网卡都跑在完整速率上;整机供电和散热规格;带外管理和故障诊断能力。很多人只看前两项,忽略PCIe通道和供电,结果装进机柜以后频繁降频或宕机。
为什么八卡机是主流?首先PCIe通道数和机箱空间刚好支持8张卡;其次训练时数据并行需要在卡间频繁同步梯度,八卡一张交换网络的拓扑正好能找到成本和性能的平衡点。当然也有四卡、六卡方案,适合推理或小规模微调,但对大模型训练来说,八卡几乎是默认起点。
选型时,我建议用目标模型做反推。单次step显存需求大致等于:模型参数显存 + 优化器状态 + 激活值 + 单批数据显存 + 梯度暂存。如果超出单卡显存,就得考虑模型并行、流水线并行或者重计算。这个计算过程不要只看参数规模,还要看optimizer类型和激活值策略。比如同样规模的语言模型,开启激活重计算之后显存需求可能下降30%以上。
3.2 多卡互联:为什么通信比计算更敏感
把多张卡放进一台服务器只是开始,真正决定效率的是卡与卡之间的通信能力。数据并行训练里,每经过一个step,所有卡都需要执行一次全局梯度同步,也就是把所有计算节点上的梯度汇总后再分发给每张卡。这个同步过程如果很慢,计算单元就只能白白等待。
我实测过一个规模不大的Transformer训练,把batch size压到极小,让计算时间几乎可以忽略,这时测出来的耗时基本就是通信耗时。如果通信耗时占到总step耗时的30%以上,多卡扩展效率就会很差。这正是多卡互联技术存在的原因:卡间高速总线让通信绕过CPU和内存中转,直接把数据从一张卡的显存搬进另一张卡的显存,延迟和带宽都会好得多。
选择服务器时,要特别确认主板和加速卡是否支持卡间直连。有些看似参数很好的主板,PCIe通道复用得厉害,多卡同时通信时会争抢带宽,大幅拖慢训练。最简单的验证方法是跑一个allreduce基准测试,把消息大小从1MB一直调到1GB,观察带宽有没有出现断崖式下跌。这个测试十分钟就能做完,比看任何宣传参数都靠谱。
3.3 集群组网:树形、全互联与高低速混合
如果要扩展到多台服务器,就进入集群组网设计。训练集群组网大致分三档:低带宽以太网用于管理、存储和控制面;中等带宽的融合以太网方案用于中小规模训练;高带宽的专用高性能网络用于大规模训练,比如InfiniBand或同等规格技术。
很多人会问:能不能用普通以太网把训练集群凑起来?可以,但要做好心理准备。训练同步通信对丢包非常敏感,一旦出现丢包,TCP重传会直接导致同步时间成倍增长。用融合以太网方案时,必须开启流控和拥塞控制,并在交换机上做精细化配置,否则性能可能连万兆以太网都不如。相比之下,专用高性能网络配置更简单,但成本和生态锁定也会更重。
组网还要考虑收敛比。1:1收敛意味着任何时间带宽都有保障;一些省钱方案会用4:1或更高收敛,这在推理场景下可能还行,但在训练场景中很容易变成瓶颈。我的经验是:训练集群至少做到2:1收敛,规模越大越要谨慎。更关键的是,网络规划要在初期就留好扩展余量,因为机柜、交换机和光纤的物理位置决定了后期加节点非常麻烦,强行扩容往往要重新布线。
4. 存储与数据管道:算力再强也怕数据饿死
4.1 算力等待数据的代价
存储系统是最容易被低估的环节。很多团队的想法是“能存就行”,但训练任务对存储的真实要求是持续、高吞吐、低延迟地提供海量样本。尤其在图片、视频、多模态这类场景下,训练数据通常由成千上万个小文件组成,频繁打开小文件会让文件系统元数据开销变得非常大。
我习惯在训练脚本的数据加载器里打点,打印每个step里等待样本读取的时间。如果平均等待时间超过step总耗时的10%,就说明数据管线已经拖后腿了。更严重的情况下,GPU利用率可能只有50%甚至更低,但监控面板上看不到任何硬件故障,所有设备都活着,训练就是快不起来。
可以把GPU比作一个高速加工厂,存储是原材料仓库。工厂产能再高,仓库断供也只能停工。数据管道优化的目标,就是保证“产品”能在加工厂需要的瞬间送到手里。
4.2 冷热数据分层
针对不同访问频率的数据,我会做冷热分层。热数据是最常访问的训练子集,放在每个节点本地NVMe盘上;温数据是完整数据集,放在分布式高性能存储上;冷数据是不常用的历史数据集,放到对象存储或归档系统里。这样既保证高频数据访问速度,又不会让昂贵的高速存储浪费空间。
具体做法是:训练任务启动前,先用一个预热脚本把关键数据子集复制到本地盘,并让操作系统页缓存把命中样本缓存起来。如果任务是全随机读取,缓存命中率上不去,这时候不如直接读远端高性能存储,避免本地盘容量被无效数据占满。
这里要特别提醒:不要把“本地缓存命中率”当成唯一指标。如果模型经常做全样本一次遍历,缓存作用有限;如果是流式训练又希望低成本复用,缓存才有价值。存储架构要根据数据访问模式来设计,不能套模板。
4.3 数据加载管线的三个经典优化
我每次优化数据管线,基本是三步走。第一,多进程异步预取。用多个工作进程提前读样本、解码、做数据增强,把结果放进内存队列,训练主线程只负责从队列里取数据。这样能避免Python全局解释器锁带来的阻塞。
第二,统一文件格式。把成千上万个小文件打包成少量大文件或记录文件,降低文件系统元数据和打开文件的开销。这个优化在文件数超过十万时效果尤其明显。第三,压缩与解码前置。如果从冷存储读取,可以先压缩再传输,训练节点上解压,用CPU换GPU等待。但要注意观察CPU占用,别把CPU抢得只剩一点,否则数据增强等其他任务也会变慢。
实践中,我还会给不同任务配置不同的workers数量。并不是越大越好,因为worker太多会引发内存抖动和CPU争抢。一般建议先按物理核心数的一半起步,通过实验找到最佳值。
5. 散热与供电:被低估的物理约束
5.1 功耗核算
AI服务器满载功耗不是小数目。常见的一台八卡训练服务器,整机功耗普遍在3kW到10kW之间,新加速卡加入后可能更高。一个机柜如果放六台这样的服务器,总功率就是数十kW。而普通数据中心单个机柜设计功率可能只有4kW到8kW,显然无法支撑。
所以拿到一台新设备,第一步不要急着上架,先查三样东西:机柜供电上限、PDU端口规格、UPS容量。核算时,我习惯把单机满载功耗除以电源转换效率,再加上网络设备功耗和散热系统损耗,最终还要留出20%到30%余量。UPS容量还要看视在功率,也就是kVA,不能只看有功功率(kW),不然大功率插上去瞬间就可能过载。
5.2 风冷、液冷与浸没式的选择
机柜功率密度超过15kW以后,传统风冷会非常吃力。风扇声音大、散热效率低,而且容易产生局部热点,导致GPU温度过高而自动降频。如果发现训练速度随温度周期性下降,大概率就是散热设计跟不上。
液冷方案里,冷板式液冷是当前最常见的选择:冷却液通过冷板紧贴CPU和加速卡,热量直接带走,其余部分仍然风冷。部署时要重点关注漏液检测、冷却液管路材质、水泵冗余和长期维护成本。浸没式散热效率最高,整个服务器泡在绝缘冷却液里,但维护成本高,不是常规训练集群的首选。
决策原则很简单:先算TCO。不要为了省电费盲目上液冷,因为液冷改造的初始成本和运维复杂度很高;只有在功率密度确实超过风冷能力上限时才值得。很多中等规模集群其实做好机房气流组织和风冷布局,也能跑得不错。
5.3 供电链路与电力容量规划
从市电到机柜,电力经过UPS、配电柜、PDU等多级链路,每一级都有额定容量。经常有人只看上级总闸够大,结果PDU单个端口电流不够,插上高功耗设备就跳闸。规划时必须按“额定电流 × 电压 × 功率因数”算出每个端口可用功率。
比如单相220V、16A端口,功率因数0.9,可用功率大约是3.1kW。如果单台服务器截功率已经是5kW,就不能只插一个PDU口,要分两路或使用三相接入。同时还要注意电源冗余:双电源服务器要分别接在两路不同的UPS上,这样一路检修时另一路还能撑着,至少能给训练任务留出保存检查点的时间。
供电链路还要做监控。我给每个机柜都装了电流表和温度探头,一旦出现电流异常或温度上升,立刻告警。这个习惯救过我好几次,有的故障在硬件报错之前就已经从电流曲线里看出端倪了。
6. 软件栈与调度平台:硬件之上真正决定效率的部分
6.1 硬件生态与算子库
硬件之上,第一层是驱动、编译器和算子库。很多AI训练框架不会直接控制加速卡,而是调用由硬件厂商或开源社区维护的底层加速库。这些库决定了大部分算子的执行效率,甚至决定了一个模型能不能跑起来。
实际开发中,我常提醒团队:先确认关键算子在底层库里是否已有优化。如果框架自动调用的实现没有针对当前加速卡优化,就算卡再贵也可能跑不过上一代硬件。这个现象在国产芯片或者新架构加速卡上尤其明显:硬件峰值很高,但生态工具链跟不上,实测性能就打折扣。
所以我建议尽量保持主流硬件和软件框架的版本兼容序列,不要盲目追新。每次升级驱动或底层库之前,先在任何一台机器上跑一遍标准基准和真实小任务,确认性能没有回退再批量升级。这套流程虽然麻烦,但能避开很多“上线后才发现性能不对”的坑。
6.2 容器化与任务编排
规模一大,基础设施就不能再靠人手工分配任务。我们通常用容器化封装训练环境,避免不同任务之间的依赖冲突;再用统一调度平台管理加速卡资源,提供队列、配额、优先级和故障重试能力。这套体系决定了团队能否把硬件资源高效拼起来。
调度平台需要关注的不只是“能跑几个任务”,还包括:任务失败能否自动重试;断点续训如何挂;不同任务之间如何隔离;显存和CPU是否支持细粒度切分。我见过最典型的问题是大家都在申请整张加速卡,可很多小任务连十分之一的算力都用不到。如果把资源切成可分配的单位,配合显存隔离,整集群利用率能提升不少。
但也不要过度调度。频繁抢占和重排任务会让大模型训练不稳定,反而降低整体效率。我的经验是区分“长任务”和“短任务”,长任务用预留队列,短任务用抢占式空闲资源,两者分开调度。
6.3 可观测性与故障恢复
没有监控的AI集群就像一个不看仪表盘的飞行员。我会采集每台机器的温度、功耗、显存占用、卡间通信错误计数、网络丢包率、存储延迟,同时把训练脚本里的迭代耗时和loss曲线同步到监控系统里。这样当训练异常时,可以快速判断是模型问题、硬件问题还是网络问题。
故障恢复方面,主流深度学习框架基本都支持保存检查点并恢复训练。但关键是把检查点保存在独立存储节点上,而不是只写本地盘。否则节点宕机,检查点也一起丢了,之前的训练时间就白白浪费。我习惯每N个step保存一次,并保留最近几个检查点,同时配置训练任务健康检查,连续心跳丢失后自动拉新容器,加载最近检查点继续训练。
这套机制看起来不复杂,但能极大缩短故障恢复时间。没有它,一次节点宕机可能意味着几小时的训练进度全部作废。
7. 常见问题与排查技巧实录
7.1 硬件与基础设施问题速查
把常见的问题整理成速查表,能让团队在出状况时少走弯路。
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 训练速度突然下降 | 加速卡降频、过热 | 查看温度、功耗日志,清理风扇或检查液冷 |
| 多卡训练时利用率低 | 通信慢、数据读取慢 | 先单卡跑批对比,再开多卡;检查网络丢包 |
| 节点训练中假死 | 内存耗尽、驱动异常 | 查看系统日志,检查内存和显存占用 |
| 报显存不足 | batch过大、显存泄漏 | 降低batch,检查数据管线是否缓存未释放 |
| 网络丢包严重 | 拥塞控制未开启 | 交换机开启流控和ECN,检查网卡统计 |
这个速查表只能作为起点,真正的定位还是要靠日志和数据说话。我建议团队把每次故障的处理过程记录下来,沉淀成一个内部知识库,后面再遇到同样问题就能直接翻历史。
7.2 性能瓶颈定位的五个信号
我发现性能问题其实有比较明显的信号。第一个信号是GPU利用率忽高忽低,大概率是存储或数据预处理卡住了,这时候去看数据加载器的队列深度和磁盘IO等待时间。第二个信号是多卡速度不成比例提升,比如四卡只比单卡快1.5倍,基本可以断定通信瓶颈,跑一次allreduce基准测速最直接。
第三个信号是loss正常但step耗时持续增加,这可能是内存泄漏、显存碎片或者CPU被其他进程抢占。第四个信号是网络发送队列长期积压,说明网卡或交换机已经过载,需要检查流量模型和收敛比。第五个信号是温度或功耗接近阈值报警,这就是散热供电在边缘状态,需要马上降载。
五个信号本质对应五个不同层级:算力等待、通信效率、系统资源、网络带宽、物理环境。排查时先判断属于哪一层,再深入,效率会高很多。
7.3 基础设施工程师的避坑清单
最后分享一份我这些年攒下来的避坑清单。新加速卡上架前一定要做24小时老化测试和全量校验,不要省这一步;带外管理功能尽量保留,否则服务器宕机你可能要跑进机房手动重启。所有配置和指标都要规范化命名,方便监控和回溯;网络设备该开流控和ECN就开,别依赖TCP重传兜底;电源冗余要接到不同路由,不能都插一个PDU。
存储侧也有几个习惯:大目录定期清理,训练完的临时数据及时删除,检查点定期同步到异地存储。软件侧,环境镜像要版本化,训练代码和依赖锁在一个镜像里,避免“在我机器上是好的”这类经典问题。
踩过几次坑之后,我现在最大的体会是:AI基础设施不是“买完硬件就完事”的一次性工程,它是一个持续迭代的动态系统。唯一可靠的办法是把监控、自动化恢复和故障复盘都做扎实,让团队从“天天救火”的状态里解放出来,专注在模型和业务本身。希望这篇拆解能帮你少走一些弯路。