你的报错信息显示 torch.distributed.DistBackendError: NCCL error ... ncclUnhandledCudaError: Call to CUDA function failed. ... Failed to CUDA calloc ...,这是典型的 NCCL 通信或 CUDA 显存分配失败问题。常见原因包括:1)GPU 显存不足,2)/dev/shm 共享内存不足,3)NCCL 环境变量或驱动配置不当,4)多卡通信异常。
建议排查步骤如下:
- 检查每张卡的显存是否足够,Qwen3-32B 半精度单卡需约32GB,4卡并行每卡也需8GB+,但实际还需留出通信和缓存空间,建议每卡至少24GB。
- 如果用 Docker 或 K8s,需设置
--shm-size至至少16G,并挂载/dev/shm,否则 NCCL 无法分配共享内存,详见官方文档。 - 检查 NCCL 相关环境变量,如
NCCL_CUMEM_ENABLE=0,并确保所有进程环境一致,避免 NCCL 版本不兼容或参数冲突,详见常见 NCCL 问题说明。 - 若仍报错,可尝试减小 batch size、max_model_len 或 max_num_seqs,或用
enforce_eager=True关闭 CUDA graph,减少显存占用,详见内存优化建议。
需要更详细的排查步骤或配置建议吗?
Sources: