周志洋

个人站

持续学习 才能不被淘汰


两张A100跑70B:tensor parallel 与 shm/NCCL 翻车记录

场景

要把约 70B 的指令/蒸馏模型以较高精度拉起来,单卡 80G 不够(BF16 量级大约要翻倍显存)。两张 A100,tensor-parallel-size 2,NVLink 同岛的一对。

问题

容器默认 --shm-size 太小(常见 64MB)。多卡 NCCL 通信一上来就异常退出,日志不一定直说「shm」,有时包装成 worker 挂了、引擎重启循环。

修法很具体:

docker run --gpus '"device=0,1"' --shm-size=16g \
  -v /data/models:/models \
  -p 127.0.0.1:8000:8000 \
  vllm/vllm-openai:your-tag \
  --model /models/xxx-70b \
  --tensor-parallel-size 2 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.90

16g 不是玄学数字,太小必炸;再大也要看宿主机内存。K8s 里对应调 emptyDir.medium: Memory 的 sizeLimit。

还有两个容易误判的点

加载完成前就接流量。 70B TP 冷启动能到分钟级。就绪探针如果只查进程端口,会把「还在加载」的实例加进负载均衡,用户一波超时。探针改成打真实 /v1/models 或自定义 ready,并且 initialDelaySeconds 给够。

OOM 不一定是权重。 max-model-len 过大时,KV 在两卡上同样膨胀。先降上下文,再升并发。

量化档的取舍

同系列 AWQ/FP8 单卡或更少卡也能跑时,先确认业务:工具调用、长推理是否可接受轻微质量波动。能接受就少占卡;不能接受再上 TP=2 高精度。卡是公共资源,70B 全精度常驻两张 A100,意味着少两个 14B 高并发实例——这笔账要讲清楚。

多卡不是加一个参数的事:shm、拓扑、就绪、上下文,四件事任一没做,都会表现成「vLLM 不稳」。


转载请注明:周志洋的博客 » 两张A100跑70B:tensor parallel 与 shm/NCCL 翻车记录

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦