上周帮组里跑模型,被这俩配置纠结了三天

事情是这样的,我们组要训一个中等规模的视觉模型,预算卡得死死的。老大丢给我一句话:单张A100还是凑四张3090,你算算哪个划算。我当时心想这有啥好算的,A100肯定强啊。结果一查价格和实测数据,真的会谢,没那么简单。

先说结论性的东西吧,免得你看半天:要是你的模型能塞进单卡显存、对显存带宽敏感、还想省心,A100基本闭眼选;要是你预算有限、跑的任务能拆成数据并行、不怕折腾,多张3090的性价比能把A100按在地上摩擦。但中间有一堆坑,我一个个说。

显存这事,不是简单加法

很多新人(包括三周前的我)会觉得:A100是80G显存,四张3090一张24G,加起来96G,那不比A100还多?这个想法离谱在哪?显存不能像拼乐高一样直接拼。

四张3090的96G是物理上分开的四块,每块只能装下自己那部分。如果你的模型本身就大到单层都放不下一张24G卡,那对不起,你得上模型并行(model parallelism),把一个模型劈成几块塞到不同卡上。这一劈,卡和卡之间就得疯狂通信,传中间结果。

而A100的80G是一整块,模型整个塞进去,前向反向都在自己肚子里消化,不用跟别人商量。这就好比四个人合租一套房,每人一间,你要做顿大餐得在四个厨房来回跑端菜;A100是一个人住大平层,厨房客厅连一块,转身就够着。

带宽差距才是隐藏大BOSS

3090用的是PCIe通信,多卡之间走PCIe 4.0 x16,理论16GB/s左右,实际跑起来更低。A100有NVLink,第三代NVLink单卡能到600GB/s。这个差距不是一点半点。

所以当你训练需要频繁同步梯度(gradient)的时候,3090的卡间通信就成了瓶颈。你卡再多,数据堵在路上传不过去,GPU利用率上不去,干瞪眼。这就跟你家千兆宽带,结果用了根五类线一样,带宽全卡在那根破线上。

上点真东西,实测数据摆出来

下面这组是我拿组里环境跑的,ResNet-50在ImageNet子集上,batch size尽量拉满,混合精度(AMP)开着。数据有波动,但趋势很明显。

配置 单卡显存 训练吞吐(images/s) 整机功耗 裸卡参考价
单张 A100 80G 80G 约 2350 约 400W ~10万
4张 RTX 3090 24G×4 约 3100 约 1400W ~2.4万(二手)

看到没,4张3090的吞吐居然更高,价格还只有四分之一不到。这时候你可能想喊:那还选啥A100,3090真香!

先别急。这是数据并行(data parallelism)跑得开的理想情况,模型能完整塞进单张3090的24G。一旦你的模型显存吃到30G、40G,3090直接OOM给你看,连跑都跑不起来,吞吐就是0。这时候A100那80G就是降维打击。

电费和散热,新人最容易忽略的账

四张3090满载1400W,这还没算CPU、主板、风扇。一台四卡机器接近2000W是常态。你跑一个月7×24,按工业电价1块钱一度算:

配置 整机日耗电 月电费(连续跑)
单张A100整机(约600W) 约14.4度 约430元
四张3090整机(约2000W) 约48度 约1440元

一年下来电费差一万二。再加上四张3090的散热,夏天机房不给力,卡温度上80度直接降频,性能打折。我们组之前那台四卡机,没装够风扇,跑着跑着自动掉频,吞吐能跌掉两成,查了半天才发现是热的,真服了。

买卡还是租云,这才是大多数人的真问题

说实话,绝大多数小团队和个人,根本不该自己买卡。买四张3090二手是便宜,但你得自己配电源、配主板、装系统、调驱动、处理散热、还要担心二手卡是不是矿渣。我装第一台多卡机的时候,光NCCL通信调到正常就折腾了两天,CUDA版本和驱动对不上报一堆错,差点把电脑砸了。

云上按需租,跑完就停,不用管硬件死活。短期任务、波峰波谷明显的活,租比买划算太多。你要是只是跑个毕设、做个demo、临时打个比赛,买整机那点折旧和电费都够你租好久了。

如果你也在折腾这类需要稳定带宽和算力的部署,可以看看129云(idc129.net),他们做高性能云服务器和G口大带宽这块挺专的,海外节点线路也优质,本地原生IP那种。比如美国精品大宽带-E型,16核16G、200G SSD、1Gbps峰值带宽配3.5TB流量,霄龙(EPYC)CPU,跑数据预处理和分发挺顶用;要是只是搭个轻量推理服务或者测试环境,日本BGP-A型那种2核2G、15Mbps精品网络的小配置就够起步,成本低。想问具体方案直接打他们客服400-9177118,比自己瞎猜配置靠谱。

什么情况选A100,什么情况选3090

我给你画个简单的决策线,照着对号入座:

你的情况 推荐 原因
模型大,单卡显存>24G放不下 A100 3090直接OOM,没得选
大模型微调、需要NVLink高速通信 A100 PCIe带宽是3090的硬伤
模型不大、数据并行就能跑、预算紧 多张3090 性价比吊打,吞吐还更高
短期任务、不想碰硬件 云服务器按需租 不折腾,跑完就停
机房散热差、电费贵 A100或上云 3090四卡功耗和热量太顶

还有个坑,框架支持也得看

多卡训练你得用DistributedDataParallel(DDP)这套,配置比单卡麻烦不少。如果你团队里没人熟悉分布式训练,光是把多卡跑通、把GPU利用率拉到80%以上,就能耗掉你好几天。单张A100就一张卡,啥并行都不用想,代码改都不用改,直接跑。这个时间成本,对赶进度的项目来说也是真金白银。

我自己的感受是,新人阶段如果是学习和小项目,单卡A100或者云上租一张省心;真要降本增效跑生产任务、模型又不大,再考虑多卡3090这种方案,那时候你对分布式也熟了,踩坑也踩得起。一上来就整四卡,驱动报错能给你劝退。

对了,二手3090买的时候记得看看是不是矿卡,显存有没有跑过坏点,散热硅脂干没干,这些我下次单独开一篇写,被坑过的人都懂。