用 4 张 V100 跑 Qwen3.8-Flash-Next
家里的 Local AI 服务器是一台 Supermicro 双路 AMD EPYC 7K62:96 核、512GB ECC 内存。这篇用到其中 4 张 V100 PCIe 32GB,卡间没有 NVLink;推理服务跑在分配了 48 vCPU、160GiB 内存的 LXC 容器里。最近它常驻运行 Qwen3.8-Flash-Next 的 Uncensored 版本,平时给我的 Agent 用。
怎么跑起来的
权重是我做的 AWQ int4(g32)量化版,推理引擎用的是针对 V100 补了算子的 1Cat-vLLM。四张卡做张量并行,QSA 的 KV 缓存再按两路切分;KV 存为 FP8 E4M3,解码开启 MTP4 投机解码,另留 32GB 主机内存给 KV 缓存卸载。
服务开了 262K 上下文和最多 4 路并发,GPU 上有约 104 万 token 的 KV 缓存。
用起来怎么样
我的测试里,8K 文本输入时,单路解码有 70 多 token/s,首字约 3.5 秒;四路一起跑,总吞吐约 160 token/s。长对话命中缓存后,首字大约半秒。大图、多图和 1080p 视频也都能正常处理。
踩过的坑
第一,PCIe 版 V100 在这套 CUDA Graph 配置下,需要设置 NCCL_GRAPH_REGISTER=0。之前 MTP4 与并发请求组合时会偶发非法访存,最后通过 GPU coredump 定位到 NCCL 图缓冲注册与 PyTorch expandable_segments 的冲突。
第二,显存不能只按模型加载后的空闲量来算。gpu_memory_utilization=0.96 遇到四路长文本和大图压力会 OOM;现在用 0.945,并在并发和多模态压力下做过验证。
第三,思考模式别强制用温度 0,我遇到过输出重复。现在按模型建议用 temperature=1.0、top_p=0.95、top_k=20。
折腾到现在,这套配置已经够我日常用了。