最近那场专访一出来,朋友圈又热闹了。马斯克没怎么聊新车,反倒花了不少篇幅谈算力和芯片,这让我有点意外,但仔细想想也不奇怪。做过自动驾驶、星链、人形机器人这些业务的人,天天都在和功耗、算力打交道,对芯片的敏感度天生就高。我做AI基础设施这些年,日常主要就是围着两件事转:算力怎么规划才够用,芯片怎么选型才不浪费。这篇不写虚的,从算力单位怎么读开始,讲到AI集群怎么搭、资源受限时怎么调度、个人怎么低成本拿到算力,最后聊几个芯片调试里最常踩的坑,一次性把这些事说透。无论你只是关心AI趋势,还是正在选型芯片的工程师,都能拿到一套可以直接用的思路。
1. 算力不是单纯的“快”,而是一套可量化的体系
1.1 从TOPS到TFLOPS:先学会看算力单位
很多人把算力理解成一个速度,哪个风扇转得快就代表算力强。真实的算力是一个多维体系,评估任何算力需求至少要拆成三个维度:单位时间完成多少次运算,也就是吞吐;每次运算处理多少位数据,也就是精度;数据搬进搬出的速度,也就是内存带宽。
看设备参数时常见到TOPS和TFLOPS。TOPS是每秒万亿次整数运算,NPU和端侧推理芯片最爱用这个单位。TFLOPS是每秒万亿次浮点运算,GPU和FPGA常用这个。买卡或者租卡时,如果不看精度直接比数字,一定会被参数表带沟里去。同一张GPU在不同精度下算力差别巨大,例如A100 80G的FP16算力约312 TFLOPS,FP32会低一截,INT8做推理时又完全不同。所以网上那种“这块卡比那块卡快十倍”的说法,通常是把峰值往里堆,实际跑模型根本不是那么回事。
我自己的习惯是,拿到一台机器先跑一遍真实模型的小规模profiling,看它实际能跑到多少有效算力,再看官方标称的峰值算力,两者的比值才是这台设备真实的利用率。很多卡标得天花乱坠,实际跑起来只有四五成,原因大多数出在数据搬运或者算子实现上,后面会详细说。
1.2 FP16、FP32、INT8、FP64的取舍逻辑
把计算精度搞明白,芯片选型基本就成了一半。这些名词看起来专业,本质上就是“用多少位二进制数来表示一个小数”。
| 格式 | 位数 | 数值范围 | 典型场景 | 资源消耗 |
|---|---|---|---|---|
| FP32 | 32位 | 较大,通用性强 | 传统训练、精度敏感任务 | 较高 |
| FP16 | 16位 | 较小,容易溢出 | 大模型混合精度训练 | 约为FP32一半 |
| INT8 | 8位 | 整数,动态范围有限 | 推理量化、边缘端部署 | 很低 |
| FP64 | 64位 | 非常大,误差极小 | 科学计算、气象模拟、物理仿真 | 极高,消费级硬件常被弱化 |
从FP32到FP16再到INT8,本质上是用“数值表达的细腻程度”换“速度和容量”。训练阶段,数值精度直接影响梯度更新,所以主流做法是FP32做主权重,FP16做加速,这就是混合精度训练。推理阶段模型参数已经固定,容错能力高一些,把权重从FP32压缩到INT8,精度损失往往只有零点几个百分点,速度和并发却能涨一大截。
这里有一个特别容易踩的坑:买消费级显卡跑科学计算。很多消费级GPU的FP64能力被硬件砍掉大半,标称几万GPU算力指的是FP32或者FP16,一旦跑需要双精度的仿真任务,速度会断崖式下跌。真正的科学计算卡,FP64算力才完整,价格自然贵很多。所以选硬件之前先问自己一个问题:我到底是训练还是推理?训练看FP16/FP32性能,推理看INT8性能和并发路数,别买错方向。
1.3 被忽略的内存带宽,才是大模型算力墙
讨论算力峰值时可以很容易忽略一个事实:大模型在推理和训练时,真正卡住生产效率的往往是内存带宽。这里用一组很直观的估算来说明。一个70B参数的大模型,按INT8量化后参数大约70GB。如果一张卡的显存带宽是1TB/s,那么每做一次完整权重遍历,理论上最少也要70毫秒。模型参数越大,带宽不够的情况下生成的每一个token都要等待这个搬运过程,GPU即便算力很强也只能空转等待。
这也是为什么高端AI加速卡要配HBM显存,因为它把存储和计算堆得更近,带宽能达到普通GDDR显存的数倍。所以选算力设备,不能只看“每秒多少次运算”,还要看“每秒能搬多少字节”。显存容量决定模型放不放得下,显存带宽决定跑得快不快,算力峰值决定算子计算快不快。三者缺一不可。
2. AI芯片家族盘点:GPU、NPU、FPGA、ASIC、SoC到底怎么选
2.1 GPU仍是主力,但别把GPU当成万能药
AI大规模训练几乎绕不开GPU。它最核心的优势不是单个计算单元有多强,而是CUDA生态把“把大规模并行计算变得可编程”这件最难的事做完了。PyTorch默认支持,NCCL集合通信库成熟,各类算子库齐全,多卡互联还有NVLink这种高速通道。你写一个PyTorch代码,不用关心底层怎么调度几千个CUDA核心,框架已经帮你处理好了。
AMD Instinct系列和国产AI加速卡这几年进步很快,但工程生态的成熟度确实还有差距。真到生产环境里,团队为迁移付出的时间成本往往会比硬件省下的费用更高。不过GPU的问题也很明显:功耗大、成本高、极度通用,因此在专用场景下未必是性价比最优解。如果只是跑一个固定结构的模型推理,用GPU等于开着越野车跑城市通勤,油耗高还不好停车。
2.2 NPU与ASIC:在特定场景里把算力用到极致
NPU本质上就是为神经网络算子专门设计的ASIC。它把卷积、矩阵乘、激活函数、池化这些高频操作直接做成硬件模块,跑AI任务时同功耗下的吞吐往往比GPU高一个量级。这是因为GPU还要兼顾图形渲染、通用计算,指令里有一大堆和AI无关的内容;NPU则把功耗全部砸在有用算子指令上。
手机SoC里几乎都塞进了NPU,自动驾驶芯片更明显。地平线征程系列、英伟达Orin、高通Snapdragon Ride都是类似的加速路线。它们的共同特点是:硬件本身强,但灵活度弱。遇到一个新算子,经常需要手写算子映射、调整层融合策略,甚至要改模型结构去适配硬件约束。带方向的工程调优,比单纯换一块贵卡更棘手。
我自己的体会是,端侧推理先用NPU工具链尝试,能跑通就大力出奇迹,跑不通再回退到GPU或者CPU。不要在NPU上死磕不兼容的算子,那是浪费生命。
2.3 FPGA:给不批量的需求留一扇窗
FPGA的定位很特殊。它功耗比GPU低、延时比CPU可控,最关键的是能“现场改电路”,不需要流片就能重新定义逻辑。做通信接口、实时控制、雷达信号处理这类场景时,FPGA依然是刚需。在AI推理上,FPGA也能做INT8加速,灵活性比ASIC强很多。
但FPGA的门槛很高。开发需要会硬件描述语言,要做时序约束,要理解底层资源分布,不是调参工程师能随便上手的。从投入产出比看,FPGA适合三种情况:一是产品还没定型,逻辑需要频繁改;二是需求量不大,流片划不来;三是延迟要求极高,通用GPU做不到微秒级响应。反过来说,产品一旦定型且出货量很大,最后还是要走ASIC把成本摊薄。FPGA更像四驱越野车,能去很多地方,但长期跑任务还得靠高铁。
2.4 落地在边缘:SoC与MCU的小算力方案
聊芯片不能只看计算卡,边缘设备里最常见的其实是一堆SoC和MCU。STM32、ESP32、RK3588这些名字,可能比A100出现在更多工程师的工作日报里。
它们之间定位差异很大。STM32F103C8T6是Cortex-M3内核,跑不了像样的AI模型,但在电机控制、工业通信、简单采集上稳如老狗。ESP32自带Wi-Fi和蓝牙,适合做边缘网关和物联网端点。RK3588则带了一个6 TOPS的NPU,能在几瓦功耗下做轻量视觉推理,是我个人很推荐的一款边缘AI平台。还有人会问地平线的芯片和RK3588怎么选,大体答案是:如果做车载和安防,地平线工具链更垂直;如果做通用视觉和边缘盒子,RK3588生态更开放。
对AI项目落地来说,云端大模型负责生成和理解,边缘芯片负责采集、预处理、控制与简单判断,两者是协作关系,不是替代关系。把模型的复杂度和硬件算力匹配好,很多时候比单纯堆GPU更能解决问题。
3. 从单卡到集群:搭建AI算力集群的五个关键维度
3.1 计算节点配置:先把CPU、内存、电源盘算清楚
许多朋友觉得搭集群就是买8张GPU插进机箱,实际上计算节点只是整个集群里的一层。硬件层面至少还有网络、存储、电源、散热和软件栈,任何一层成短板,GPU都会被拖累。
先看计算节点。如果你做8卡GPU集群,CPU必须有足够多的PCIe通道,比如AMD EPYC或者Intel Xeon这类服务器芯片,不然两张卡抢通道,通信性能直接减半。内存容量建议是显存总量的1到2倍,数据预处理、加载权重、Dataloader都会吃内存,容量不够模型跑不起来。主板要选支持多GPU分槽供电的型号,不要随便拿消费级主板凑合。电源更别按GPU的TDP算,要按满载峰值功耗加20%到30%余量。我见过不少人电源余量不足,一跑训练就重启,排查半天还以为是驱动问题。
算力集群是一个典型木桶,最短的那块板决定整机的利用率。采购前把每一层的瓶颈提前排掉,比买完之后不断查日志要省钱得多。
3.2 高速网络:IB与RoCE的实战选择
单机多卡,NVLink和PCIe还能应付,一旦要多机并行训练,网络就会变成最大的坑。
目前三种主流路线各有特点。第一种是单机NVLink/PCIe互联,速度快,但只能用在单机8卡内,节点与节点之间仍然要过网络。第二种是InfiniBand,专门为HPC设计的RDMA网络,低时延高带宽,但交换机和网卡都很贵,一般是规模较大的团队才用。第三种是RoCEv2,基于以太网实现RDMA,价格便宜,能复用现有交换机,但对网络丢包极其敏感,需要开启PFC等无损网络配置,稍有不慎性能会掉一半以上。
我建议创业团队和实验室一开始不要追求三层全互联。先用单机多卡把业务跑通,再逐步上RoCE或者IB。真要做跨机训练,第一天就要把无损网络配置验证到位。
3.3 存储与数据路径:别让数据等算力
训练任务每迭代一次都要不断获取数据。存储系统的带宽和延迟,会直接决定GPU到底是在计算还是在空等。本地SSD读写快,但多机共享数据集时,NAS和NFS往往撑不住高并发。挂载方式不对,几千张图片的加载时间比训练时间还长。
比较务实的做法是引入并行文件系统,或者用对象存储配本地缓存,让每个节点把训练数据预先拉到本地高速盘,训练时只读本地。数据做不做预处理、缓存策略合不合理,往往比换一张更贵的卡带来更高提升。我在项目里经常把数据和模型权重分开存储,模型放性能盘,原始数据放廉价大容量盘,成本控制得会更好。
3.4 散热与供电:决定集群是否降频的隐形工程
很多小团队会把机房散热这件事放在最后考虑,直到GPU开始掉性能才想起来。8张满载GPU的机柜,功耗轻松超过6千瓦;一个标准数据中心机柜电容甚至有二三十千瓦。风冷压不住的场景就得考虑液冷,否则温度一高,GPU自动降频,标称算力直接缩水两三成。
我见过不少机房事故,最常见的就是空调停机导致整机过热。如果自己做小型算力中心,建议给UPS留出1.5倍以上余量,机房温度持续高于27℃就要预警。不要只看服务器自己的风扇,机房环境散热才是决定集群长期稳定性的隐形工程。
3.5 软件栈与运行环境:把驱动、容器和框架串起来
硬件就位之后,软件栈的坑也非常集中。基础流程是先在宿主机安装GPU驱动、CUDA Toolkit,再上Docker或Kubernetes,最后在容器里装PyTorch、TensorFlow等框架。
最常翻车的环节是版本匹配。宿主机驱动版本决定支持多新的CUDA,容器里的cudatoolkit版本又得和驱动兼容,两不对应,一跑起来就报错。还有共享GPU时,不同容器之间显存和算力怎么隔离,需要靠调度平台去管。所以在小规模阶段就养成容器化习惯,后面才有平滑上K8s的可能。
4. 算力约束下的资源调度与优化策略
4.1 算力永远是稀缺品:先设计调度再谈扩容
绝大多数团队的现状不是算力不够,而是预算永远有限,任务永远排着队。算力约束下,想靠无限扩机器解决问题,基本不现实。正确的姿势是先算好账,再花钱,先把调度设计好,再谈扩容。
学术和科研场景,Slurm这类调度器依然很主流;云原生场景,Kubernetes加GPU设备插件是默认路线;大厂内部还会有商业调度平台或者自研系统。不管用哪种,核心功能都是一样的:任务排队、多租户配额、显存隔离、工作负载感知。没有这些,买再多的卡也会被混乱的任务管理浪费掉。
4.2 异构算力调度平台的设计与落地
现在不少团队不是只有一种硬件,而是训练用GPU,推理用国产加速卡,数据采集用FPGA或MCU。这种情况下,一个异构算力调度平台会比“人手一个集群”高效得多。市面上也有开源方案可以实现企业级异构算力调度,核心设计思路可以总结为三点。
第一,抽象硬件。把GPU、NPU、FPGA、CPU统一成资源单位,上层任务不直接感知底层硬件差异。第二,按任务类型路由。训练任务优先匹配大显存卡,推理任务优先匹配低延迟设备,量化任务按算力需求调度到合适硬件。第三,动态调整。支持任务优先级抢占、弹性伸缩、节点故障转移。
落地时建议从轻开始,先用Kubernetes配合Device Plugin管理GPU资源,再逐步把FPGA、NPU注册成自定义资源,通过CRD接入集群。不要一上来就复制大厂的全套架构,复杂度会把你淹没。
4.3 显存碎片、抢占队列、弹性伸缩:三个真问题
调度平台真正上线后,会遇到几个书本不太写的问题。
显存碎片是最常见的。多用户跑任务时,一个几百MB的容器请求把显存切得七零八落,后面的大任务明明总量够,却申请不到连续的大块显存。解决办法是预留大显存池,或者定时做碎片整理。
排队死等也是大问题。任务多、资源少时,小任务可能被大任务堵死。要做可抢占队列,允许小任务暂停并保存状态,把资源让给高优先级大任务,跑完再恢复。这个机制实现起来有点复杂,但对利用率的提升非常显著。
弹性伸缩适合推理场景。夜间访问量低,白天卷积高,如果一直按峰值开机,成本浪费很大。配置节点自动扩容缩容,经常能省下30%到50%的电费。结合模型常驻策略,把热门模型常驻显存,冷门模型按需加载,就能避免重复加载权重造成的浪费。
4.4 算力成本优化:从估算需求到用好每一张卡
怎么评估一个项目需要多少算力,是一个被问很多次的问题。我的办法是分四步走。
第一步,给模型做基准测试,看它的计算密度和显存占用。第二步,用代表性数据跑一个step,记录算力利用率、内存占用、通信时间。第三步,如果是推理场景,根据每秒请求数反推需要的卡数。第四步,调优batch size。小模型场景里,把batch从1提升到8,吞吐经常能涨5倍,延迟只增加30%左右。
这些指标凑齐之后,你才有依据去决定租什么卡、租几张、跑多久。靠拍脑袋评估算力,钱浪费最严重的地方往往不是在采购环节,而是在使用环节。
5. 个人与中小企业获取算力的现实路径
5.1 云上租号:按小时付费的GPU到底怎么用
个人开发者一个比较理想的起步方式是租云GPU,比买实体卡便宜很多。AutoDL这类平台按小时计费,一般几块钱一小时,做学习和中小规模实验很划算。
但租卡前有几个坑要提前确认。第一,是否支持SSH直连,这决定你能不能方便地传代码和调试。第二,存储是否持久化,很多按量付费的机器一停机数据就没了,代码和模型权重不备份等于白干。第三,数据传输速度。云平台走对象存储内网快,公网直传往往慢得让人怀疑人生。
不要因为按小时计费便宜就长时间挂着不关机。机时费滚起来比想象中快,哪怕只是忘了关机,夜里那几小时也在扣钱。预算有限的场景,跑完任务立即释放是一个好习惯。
5.2 共享算力与闲置设备变现:值不值得碰
如果你手上本身有RTX 3090、4090这种卡,白天不跑任务时确实可以考虑共享算力的玩法。市面上有一些平台支持把闲置GPU出租,按小时收费,平台负责把任务排队和资源隔离。核心是GPU虚拟化,把一张卡切成多个小片,互不干扰。
这件事说不上是骗局,但要注意合规和数据安全。敏感模型、客户数据尽量不要放到外部共享平台上。万一数据泄露,省下的那点租金完全不够填坑。另外一种更轻量的玩法是用BOINC这类分布式计算项目,把个人电脑闲置算力捐给科研项目,顺便攒一点积分。图个参与感倒是挺好,“算力变现”就别指望了。
5.3 本地小型工作站:预算1到2万的高性价比组合
很多数据敏感、需要高频调试的场景,本地小型工作站依然是最便利的方案。我最推荐的组合是二手RTX 3090配24GB显存,或者直接用4090,配两颗PCIe x16插槽以上的主板,1000W以上电源,散热优先选三风扇版本避免降频。
这套配置大概一到两万就能拿下,微调7B、13B中小模型,跑知识图谱微调、蒸馏实验都够用。唯一要注意的是显卡容易扎堆发热,机箱要选风道好的,没有机架环境就老老实实把机箱放通风处,别塞进密闭柜子里。
5.4 边缘端算力:在几瓦功耗里把模型塞进去
边缘端的算力约束最极端,几瓦功耗里要完成实时推理。这时就必须深度理解SoC里NPU的能力边界。
以RK3588为例,它自带约6 TOPS NPU,可以跑YOLOv5改进型模型做实时检测。地平线旭日系列和英伟达Jetson系列则是自动驾驶和边缘视觉里更常见的平台。这些平台的推理流程需要把模型转换成工具链格式,比如RKNN、ONNX Runtime或TensorRT,转换过程往往卡在某个不兼容的算子,有时候一个Reshape就能让整个模型转不过去。
边缘推理和云端是两套思路。云端可以暴力堆算力,边缘只能精打细算,模型结构要剪枝、算子要替换、内存要复用。把这一套流程跑顺,才算真正入行了边缘AI。
6. 芯片调试与常见坑:一线工程师的实测心得
6.1 先修电源和看门狗,再谈代码
做嵌入式调试的朋友,一定经历过“程序跑一会儿乱飞”的诡异问题。遇到这种情况先别急着翻代码,绝大多数是硬件问题。
最常见的是电源纹波过大,或者独立看门狗芯片没有正确喂狗。看门狗芯片独立于CPU运行,程序正常时定时清除,异常时就会产生复位信号。排查顺序建议是先量电源纹波,看电压跌落;再用串口打印,看死机前最后日志;最后调整看门狗复位参数。
8205这类充电管理芯片,TPS61088这类升降压电源芯片,都容易在负载跳变时输出电压跌落。如果跌落超过5%,系统就会无规律重启。不修硬件光调软件,有时候一天都排查不出来,修完电源问题可能半天就解决了。
6.2 接口芯片和信号完整性:PCB上一步错步步错
HDMI输入输出芯片、PHY网卡芯片、RF芯片这类接口芯片,是另一类高频翻车点。它们的核心问题在于信号完整性。PCB走线需要严格做阻抗匹配,HDMI差分线阻抗一般控制在100欧姆左右,网卡PHY对差分线也有类似要求。差分线要等长,布局要留出安全间距,否则画面上出现闪烁、网络出现丢包,都是信号质量的锅。
设计阶段一定要留测试点,方便用示波器测眼图。没有眼图,你根本判断不了信号质量到底行不行。红外发射芯片、RFID阅读器这种模拟前端也一样,瞬间功率不足会导致通信距离变短。查到最后通常不是逻辑问题,而是电源纹波。
6.3 封测、后端与芯片测试:把裸片变成可靠器件的最后一里路
芯片领域离前端设计最近的岗位,往往最容易忽视后端和封测。所谓后端,是芯片的物理设计,包括布局布线、时钟树综合、时序收敛,马虎一点流片出来可能性能完全不对。封测则是把裸片封装成可用的芯片,再去做功能和时序测试。
很多工程师带着“代码写完就完事”的惯性,进入芯片领域会被工艺偏差、电源完整性和热膨胀狠狠教训。VCSEL芯片的工艺流程,从外延生长到氧化孔径再到镀膜测试,每一个环节都对良率有决定性影响。芯片绝对不只是纯功能测试跑一遍就够,还得做时序测试和压力测试。入门芯片封测,先把“测试不是为了证明能用,是为了找出什么时候不能用”这句话刻在脑子里。
6.4 定位问题三步法:观察、缩小、复现
最后分享一套我用了很多年的故障定位方法,无论面对电路板还是服务器集群,都适用。
第一步是观察。看电源输出是否正常、指示灯状态有没有异常,先别翻代码。第二步是缩小。把现象按模块拆分成电源、时钟、通信、内存、逻辑五个环节,逐个排除。第三步是复现。稳定复现的问题才好修,如果你的问题只在特定温度、特定负载下出现,那就先从环境因素下手。
这套方法帮我省下了一半以上排障时间。很多时候,直接盯着代码看是看不出问题的,因为你已经把自己框死在“代码有bug”的假设里。退一步,先看硬件和环境,反而很快能找到病根。做算力和芯片相关的工作,最需要的能力其实不是把复杂问题想明白,而是能在最短时间内把问题限定在一个可操作的范围里,剩下的就是逐个击破。