一、参数表上真正有用的四项
1. 显存容量:能不能装下
显存容量决定一件事:这个模型放不放得下。放不下,其他参数都无从谈起。粗略估算的办法是把参数量乘以每个参数占用的字节数,再乘上优化器状态与激活值带来的倍数。
关键在于「倍数」有多大。做全参数训练时,权重、梯度、优化器状态加起来往往要达到参数量的十几倍;做参数高效微调时,这个倍数能压到个位数;做纯推理时,加上上下文缓存,倍数又回到几倍量级。同一张卡,三种用途下能带动的模型规模差别很大。
2. 显存带宽:读得快不快
带宽决定单位时间内能把多少权重与缓存搬进搬出。推理阶段每生成一个词元都要把权重读一遍,所以带宽直接决定单卡能产出多少词元。这是推理场景里比峰值更实用的一个数字。
判断办法很直接:把带宽除以模型大小,得到理论上每秒能过多少遍权重,再乘以批大小,就是单卡吞吐的量级估计。算出来的数字与实测对比,差得远说明瓶颈在别处。
3. 卡间互联:多卡能不能一起干活
互联带宽决定多卡并行时通信占多少时间。训练时每步都要同步梯度,互联弱的卡在其他参数上再占优,也会被通信拖住,加速比远低于卡数增长。
这一项在单卡测试里完全看不出来。选型时如果只看单卡跑分,很容易选中「单卡好、多卡弱」的组合。
4. 精度支持与功耗形态
精度支持决定能不能用低精度换吞吐。支持低精度格式的卡,在推理与训练中都能把吞吐提上去,代价是数值精度略降,是否可接受要靠任务验证。
功耗与散热形态决定能不能落地。高功耗卡需要更充裕的供电与散热条件,机柜、电源、风道任何一项不满足,卡就装不进去或者只能降频运行。这一项属于现场条件,采购前要一并确认。
二、训练用途:先看互联,再看单卡
1. 小规模训练:单机内部互联是关键
单机多卡是常见的起步形态。此时决定效率的是机内卡间互联方式,以及是否支持更高速的互联拓扑。数据并行、张量并行对通信的要求不同,其中张量并行对互联更敏感。
判断办法是看加速比:卡数翻倍,吞吐能不能接近翻倍。达不到,说明通信吃掉了收益。这个数字只能实测,看不出来。
2. 大规模训练:跨机网络比卡本身更要紧
跨机训练时,梯度同步走的是节点间网络。这一环配不好,几百张卡的实际产出可能还不如一半数量的卡配得好。
所以大规模场景的选型顺序要调过来:先定节点间网络方案,再定卡型。反过来先定卡,末了发现网络撑不住,只能降规模用。
3. 长周期训练:稳定性优先于峰值
跑几周的任务,担心的是单点故障导致整批重来。选型时要问三件事:单卡故障会不会拖垮整个任务、有没有断点续训机制、故障恢复到近一个检查点要多久。
这三件事属于系统能力,不属于卡型参数,但它们对长周期任务的影响比峰值大得多。
三、推理用途:先看带宽与显存,再看批处理
1. 在线的短请求:带宽决定单卡能扛多少
在线服务看的是单卡在可接受延迟内能同时服务多少路请求。这一能力主要由带宽与显存决定:带宽决定单次生成的速度,显存决定能放多少并发请求的上下文缓存。
判断办法是先测单卡在目标延迟内的稳定并发,再乘卡数就是整套服务的能力上限。这个数字比峰值算力更能预测成本。
2. 长文本与多轮:显存先成为瓶颈
上下文变长之后,缓存占用会迅速上升。同一张卡,处理短请求能带几十路并发,换成超长上下文可能只剩几路。显存先撞顶,带宽反而还没用满。
这类场景选型时要重点看显存,并给缓存留出余量。余量不足的表现不是报错,而是并发上来后延迟陡增。
3. 离线批处理:吞吐优先,延迟可以让
批量打分、内容审核、离线生成这类任务,不在乎单条响应多快,在乎单位时间能做多少。此时可以用大批处理把带宽吃满,甚至可以用更低的精度换吞吐。
这一类与在线服务应该分开配卡。用同一批卡兼顾两种形态,结果往往是两边都不理想。
四、微调用途:显存够不够是硬门槛
1. 全参数微调:显存需求接近预训练
全参数微调要存权重、梯度、优化器状态,显存需求与预训练是同一量级。规模稍大就要多卡并行,于是又回到互联问题上。
如果团队主要做微调,不必按预训练的规格配卡,但要按「能不能装下」这条硬线配。装不下就是装不下,参数调优解决不了。
2. 参数高效微调:显存压力大幅下降
只训练一小部分参数的方法,把优化器状态的开销压下去了,单卡能带动的规模明显上升。这类方法的代价是效果略逊于全参数微调,但对多数业务场景够用。
这是选型里性价比颇高的一条路:不必为微调配大规模集群,用较少卡数配合高效微调方法,往往就能达到目标。
3. 混合用途:按上限需求配,按日常用量付
一个团队常同时有微调、研判、小批量推理三种需求。此时不必为每种需求各配一套卡,而是按上限需求定卡型,按日常用量定规模,峰值时再临时扩。
这样配的前提是资源能弹性获取。若卡是自购的,就只能按峰值配,闲置成本自担。
五、四处容易误读的地方
1. 峰值算力不等于实际产出
厂商标称的峰值是在理想条件下的数字,实际受散热、供电、内存带宽、数据供给限制,日常跑出来的比例往往只有六七成。用峰值直接推算工期,通常会乐观。
2. 显存大不等于能带大模型
显存大只说明放得下权重,能不能跑起来还要看带宽与互联。单卡显存够、带宽不够,跑起来慢;多卡显存合计够、互联不够,通信会吃掉收益。
3. 卡数多不等于快
加速比随卡数增长而衰减,衰减程度取决于互联与并行策略。四卡到八卡可能是线性,八卡到十六卡常开始折减,再往上折减更明显。排期时要按实测的加速比算,不按卡数等比算。
4. 低精度不总是能用
低精度能换吞吐,但对数值敏感的任务会带来偏差。是否可用要靠任务本身的验证:同一批输入在高精度与低精度下各跑一遍,比较结论是否一致。一致可以用,不一致就别用。
六、把「要什么型号」翻译成「要什么参数」
1. 先写需求六行
第一行:做什么用途,训练、微调还是推理。第二行:模型规模,参数量与上下文长度。第三行:精度要求。第四行:单次任务时长或延迟目标。第五行:可用卡数的上限。第六行:现场条件,供电与散热能到什么程度。
六行写完,型号选择的空间会自然收窄。反过来先问「有哪些型号」,容易被参数表带着走。
2. 用三个问题问清规格
一是这个规格在目标区域的库存与可用时段;二是这套卡型的机内互联方式与节点间网络方案;三是这套配置下,同类任务的实测加速比或单卡并发是多少。
第三个问题要紧,也少人问。供应商能给实测数据,说明这套配置有人真跑过。
3. 拿到手先做三项实测
第一项:单卡跑目标模型,测单卡吞吐与显存水位。第二项:多卡跑同一任务,测加速比与通信占比。第三项:按目标并发压一轮推理,测延迟分位值与稳定并发数。
三项实测数据是后面所有排期与成本估算的依据。跳过这一步直接上正式任务,等于拿真实工期做试验。
4. 留一条换型路径
卡型迭代快,两年后的性价比结构会变。选型时留一条换型路径:任务代码不绑定特定卡型的专有接口,配置与镜像可替换。这样换代时改的是配置,不是重写代码。
结语
卡型的差别,落在四个数字上:显存容量、显存带宽、卡间互联、精度与功耗。训练先看互联,推理先看带宽与显存,微调先看显存够不够,三种用途的排序并不相同。把用途定清楚,参数表才有意义;用途不定,比的都是别人的场景。
落地建议:先用需求六行把用途、规模、精度、时长、卡数上限、现场条件写下来;再按用途对应的优先项去筛;拿到资源先做单卡、多卡、并发三项实测,用实测数字排期与算成本。判断选得对不对,有个很实际的标准:跑完一个完整任务之后,实际用时与预估工期的差距在一成以内,且没有出现「卡在手、跑不动」的情况。