先把当时的情况摆出来。在两张卡上启动 70B 模型,设置 –tensor-parallel-size 2,报错提示 hidden size 不能被张量并行数整除,或注意力头数无法均分。
排查方向其实有限,先把可能性排一排。模型的注意力头数不能被并行数整除。也可能是并行数超过了可见显卡数量。
另外,部分卡被其他进程占用,实际可用数不足。少数情况下是量化模型的分组大小与并行数冲突。
上来先确认可见显卡数量与型号
nvidia-smi -L
接着把并行数改成能整除头数的值
vllm serve Qwen/Qwen2.5-72B-Instruct --tensor-parallel-size 4
显式限定可见设备,排除占用
CUDA_VISIBLE_DEVICES=0,1,2,3 vllm serve Qwen/Qwen2.5-72B-Instruct --tensor-parallel-size 4
剩下的就是启动后确认每张卡都分到了权重
nvidia-smi --query-gpu=index,memory.used --format=csv
怎么算真的好了,看的是同一批现象。服务正常启动,日志里显示各 rank 初始化完成,多卡显存都被占用且能正常出结果。
这里还有个坑。并行数不是越多越快,卡间通信有开销,两张卡跑小模型往往不如单卡,先测吞吐再决定要不要加卡。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。