airllm · 层流式加载 · CPU offload
70B模型FP16要140GB显存,单卡24G根本装不下。airllm的解法:把模型放CPU内存(或磁盘),推理时一层一层搬到GPU。
Transformer是层叠结构:每层输入是上层的输出。airllm利用这点——第i层算完,输出留下,权重丢掉,传第i+1层上来。显存里同一时刻只有一层权重 + 当前激活 + KV缓存。70B有80层,单层约1.7GB,加上激活和KV,4GB就能跑。
代价赤裸裸:每生成一个token,要把80层全部从CPU传到GPU再传回一次。PCIe带宽(~32GB/s)远低于GPU显存带宽(~2TB/s),每层传输比计算慢得多。结果:70B在单卡airllm上每秒可能就出1~2个token,比A100满血慢几十倍。这是「能跑」的代价。
选模型大小,看常规加载 / 4bit量化 / airllm流式三种方案的显存需求和速度。airllm显存最低但最慢——选哪个看你卡多大、能不能等。
不该用的场景:线上服务(延迟受不了)、要吞吐的批处理(太慢)、追求性价比(量化+多卡通常更划算)。airllm是「兜底方案」不是「优选方案」——能用量化+多卡就别用airllm,速度差一个数量级。它的价值在「把不可能变可能」,不在「把可能变更好」。
显存装得下时最快,70B要2×A100(80G),单卡别想。
70B压到35GB,A100(80G)单卡或2×4090可跑,速度损失小。
70B只要4GB,单卡4090能跑,但慢10~50倍。
多卡分担,快但卡多,预算够首选。