一个几百 G 的 AI 大模型,单张显卡根本装不下,怎么办?答案是把模型切开,分摊到多张卡上协同工作,这就是模型切分。听起来像搬家分装——大柜子进不了电梯,拆成几个箱子分开搬。但具体怎么切,门道不少。
单卡装不下怎么办
先明确两件被分开的事:显存装不下权重,和计算速度跟不上,是两个不同的问题,切分方案分别应对。前者要把模型物理上摊到多张卡;后者要把计算任务并行化,让多卡同时干活。切分同时解决这两件事,但方式不同,于是有了两条主要路线。
按层切像流水线
模型由一层层的计算单元堆叠而成,按层切就是把前几层给一张卡、中间几层给另一张、尾部再给一张,数据像流水线上的零件依次流过各工位。类比灌装生产线:第一站灌液、第二站封盖、第三站贴标,每站只做自己那段。好处是卡与卡之间通信少、实现直观;短板是流水线要「转起来」才有效率——前一站没算完,后面的卡只能等,总有工位闲着。
按张量切像协作工位
另一条路是把一次计算内部的大矩阵切开,每张卡负责其中一块,算完再拼合结果。像一份大报表按行拆给几个同事同时填,最后汇总。好处是所有卡同时都在干活,没有流水线的等待;代价是每一步算完都要互相通信对齐,卡之间的高速互联就成了命脉,通信一慢整体跟着慢。
两条路线一个省通信、一个有等待,摊开对比就清楚。
| 切法 | 怎么分 | 强在哪 | 卡在哪 |
|---|---|---|---|
| 按层切 | 前几层给一张卡、中间几层给另一张、尾部再给一张,数据依次流过各工位 | 卡与卡之间通信少,实现直观 | 流水线要转起来才有效率,前一站没算完,后面的卡只能等 |
| 按张量切 | 把一次计算内部的大矩阵切开,每张卡负责其中一块,算完再拼合结果 | 所有卡同时都在干活,没有流水线的等待 | 每一步算完都要互相通信对齐,卡间互联一慢整体跟着慢 |
| 两条混用 | 层数多、结构深的模型用按层切打底,单层过大的再在层内按张量细分 | 兼顾通信量与并行度,社区推荐配置多走这条路 | 切得越碎,协调开销越大,故障面也越宽 |
切分方案怎么选
两条路线可以混用:层数多、结构深的模型常用按层切打底,单层过大的再在层内按张量细分。选择时看三个约束:各卡的显存能不能装下分到的部分、卡间互联带宽够不够、期望的并发有多大。显存能装多少,先算权重、激活、缓存三本账,参考显存占用与KV 缓存;显存不够时也可以先用压缩换空间,见量化部署;切好之后请求怎么排队上卡,衔接批处理与调度器的机制。像 DeepSeek、通义千问这类开源大模型,社区通常直接给出推荐的多卡切分配置,照着起步能少走弯路。
切分之后还有一层容易被忽略的事:数据也要跟着分。训练好的权重按切分方案摆到各卡,加载时间明显拉长,生产环境通常会提前把权重分发到各卡本地盘,避免每次启动都走网络搬运。运行过程中,卡之间的通信走专用高速通道,普通网络扛不住这个量,这也是多卡服务器的互联方案要专门设计的原因——不是商家抬价,是通信需求实打实摆在那里。
验证切分是否合理有个简单指标:看各卡的负载是否均衡。某一张卡长期满载、其他卡轻松,说明切分比例歪了;所有卡节奏一致,才算切到了点子上。负载曲线怎么看,和单卡的利用率读数是同一套方法。
模型切分速查表
- 按层切:流水线式,通信少,工位有等待
- 按张量切:协作式,全员在岗,依赖卡间互联
- 选择约束:显存容量、互联带宽、并发目标
- 常见做法:两条路线混用,起步照抄社区推荐
带走一句:切分方案没有万能答案,卡的数量和互联水平决定了怎么切才不浪费。
切分粒度也不是越细越好:切得越碎,协调开销越大,故障面也越宽。经验法则是用尽量少的卡装下模型并留有余量,宁可靠大卡少张数,也别堆一堆小卡互相等待。配卡之前先定切分方案,顺序反了容易买错。
关于模型切分的三个常问问题
- 卡越多速度一定越快吗?:不一定,通信开销随卡数上升,切得太碎反而变慢,要按模型规模配卡。
- 切分后一张卡坏了怎么办?:整组任务会受影响,这也是生产环境要做健康检查和冗余的原因。
- 小模型也需要切分吗?:装得下就没必要,切分是为装不下或追求更高并发准备的手段。


