我将一对非对称的Tesla V100 PCIe显卡(16 GB + 32 GB)改造成一个令人惊讶的强大本地LLM实验室——使用Qwen3.8 27B Q6和Q8模型,实现了1.38k提示token/s和40解码token/s的速度

Reddit r/LocalLLaMA 新闻

摘要

一位用户使用llama.cpp配合张量分割和其他优化,将一对不匹配的Tesla V100 GPU(16GB和32GB)配置成一个强大的本地LLM实验室,使用Qwen3.8 27B模型实现了高提示和解码速度。

简而言之:我在一个基于Proxmox/LXC的本地推理实验室中运行一对不匹配的Tesla V100-PCIE显卡——一张16 GB卡和一张32 GB卡,总共48 GB。目前实际表现最佳的是llama.cpp的最新CUDA构建版本,支持张量分割、Flash Attention、--numa distribute和大批量处理。使用Qwen3.8 27B Q6_K_M模型,我在2k上下文下测得1,376.9提示token/s,4k上下文下1,324.3提示token/s,16k上下文下1,221.5提示token/s,以及39.9解码token/s。我还在相同的两张卡上运行了Qwen3.8 Flash Next Q4 GGUF(一个177B总参数/6B活跃参数的MoE模型),实现了大约26 token/s解码速度和380 PP。这并不是声称旧款V100击败了现代GPU,而是报告它们在这个疯狂的“一个肾换一张GPU”市场中能做的事情!我的硬件配置:| 层级 | 硬件/配置 | | GPU 0 | NVIDIA Tesla V100-PCIE, 16,144 MiB VRAM, 计算能力 7.0 | | GPU1 | NVIDIA Tesla V100-PCIE, 32,494 MiB VRAM, 计算能力 7.0 | | 服务器拓扑 | NUMA感知主机;基准测试使用 `numactl --interleave=all` 或 `--numa distribute` | | 虚拟化 | Proxmox with LXC推理容器用于隔离运行时 | | CPU| 2 x Xeon E5-2696 v4 @ 2.20GHz| | RAM | 512 GB DDR4 2400 ECC RDIMM| | CUDA栈 | CUDA 12.8;NVIDIA驱动库在需要时挂载到vLLM LXC中 工作负载 运行时/模型 最佳结果 结果背后的配置 最佳27B预填充 主线llama.cpp, Qwen3.8 27B Q6_K_M 1,376.87 pp token/s 在2k 张量分割;主GPU = 32 GB V100;Flash Attention;Q8 KV;批量/微批量 2,048;20线程;NUMA distribute 最佳27B解码 主线llama.cpp, Qwen3.8 27B Q6_K_M 39.88 tg token/s 相同配置 27B在16k上下文 主线llama.cpp, Qwen3.8 27B Q6_K_M 1,221.49 pp token/s 相同配置 最佳Q8 27B预填充 主线llama.cpp, Qwen3.8 27B Q8_K_XL 1,059.67 pp token/s 在2k 张量分割;长上下文运行使用1:1.5分割 Q8 27B在64k 主线llama.cpp, Qwen3.8 27B Q8_K_XL 664.36 pp token/s 65,536 token提示;张量分割1:1.5 最佳ik_llama 27B结果 ik_llama.cpp, Qwen3.8 27B Q6_K_M 670.61 pp token/s 在2k;35.43 tg token/s 图分割;1:1分割;比主线胜者更小的批量设置 测试的最大模型 ik_llama.cpp, Qwen3.8 Flash Next Q4_K_XL 380.67 pp token/s 在4k;26.29 tg token/s 103.68 GiB GGUF;报告177B总参数/6B活跃参数MoE;图分割1:1.75 ninfer-v100 NInfer, Qwen3.8 27B NVFP4 927.54 pp token/s 在8,190 19.7 GiB权重;INT8 KV;MTP 调优结果 Qwen3.8 27B Q6_K_M, 主线llama.cpp pp2048 tg128 层分割, 79线程 981.79 22.88 张量分割, 20线程 1,371.57 38.79 张量分割, 主GPU = 32 GB V100 1,376.87 39.88 张量分割1:2 980.71 26.10 无分割 967.36 18.05 结论:在这个不均匀的V100配对上,张量分割——而非层分割——并使用32 GB V100作为主GPU是决定性因素。最佳日常驱动路径是主线llama.cpp + Qwen3.8 27B Q6 + 张量分割 + Flash Attention + Q8 KV + NUMA distribute。root@llama-cpp:~# numactl --interleave=all /opt/llama.cpp/build/bin/llama-bench -m /path/to/Qwen3.8-27B-UD-Q6_K_M.gguf -ngl 999 -sm tensor -mg 1 -fa on -b 2048 -ub 2048 -t 20 -p 512,2048,4096,16384 -n 128 -r 5 -lm none --numa distribute ggml_cuda_init: found 2 CUDA devices (Total VRAM: 48638 MiB): Device 0: Tesla V100-PCIE-16GB, compute capability 7.0, VMM: yes, VRAM: 16144 MiB Device 1: Tesla V100-PCIE-32GB, compute capability 7.0, VMM: yes, VRAM: 32494 MiB | model | size | params | backend | ngl | threads | n_ubatch | main_gpu | sm | fa | lm | test | t/s | | ------------------------------ | ---------: | ---------: | ---------- | --: | ------: | -------: | ---------: | -----: | --: | ---------: | --------------: | -------------------: | | qwen35 27B Q6_K | 21.49 GiB | 27.32 B | CUDA | 999 | 20 | 2048 | 1 | tensor | 1 | none | pp512 | 1156.94 ± 5.10 | | qwen35 27B Q6_K | 21.49 GiB | 27.32 B | CUDA | 999 | 20 | 2048 | 1 | tensor | 1 | none | pp2048 | 1376.87 ± 4.59 | | qwen35 27B Q6_K | 21.49 GiB | 27.32 B | CUDA | 999 | 20 | 2048 | 1 | tensor | 1 | none | pp4096 | 1324.34 ± 7.37 | | qwen35 27B Q6_K | 21.49 GiB | 27.32 B | CUDA | 999 | 20 | 2048 | 1 | tensor | 1 | none | pp16384 | 1221.49 ± 3.87 | | qwen35 27B Q6_K | 21.49 GiB | 27.32 B | CUDA | 999 | 20 | 2048 | 1 | tensor | 1 | none | tg128 | 39.88 ± 0.04 | build: b29c606 (1) root@llama-cpp:~# for MAIN in 0 1; do echo echo "===== MAIN GPU ${MAIN} =====" /usr/bin/numactl --interleave=all \ /opt/ik_llama.cpp/build/bin/llama-bench \ -m /path/to/models/Qwen3.8-Flash-Next-UD-Q4_K_XL-00001-of-00004.gguf -ngl 999 -sm graph -ts 1/1.75 -mg "$MAIN" --fit 1 --fit-margin 1024 -fa 1 -p 4096,8192 -n 128 -b 2048 -ub 1024 -r 10 -o md done 2>&1 | tee /root/bench-qwen38-main-gpu-final.md ===== MAIN GPU 0 ===== ggml_cuda_init: found 2 CUDA devices: Device 0: Tesla V100-PCIE-16GB, compute capability 7.0, VMM: yes, VRAM: 16144 MiB Device 1: Tesla V100-PCIE-32GB, compute capability 7.0, VMM: yes, VRAM: 32494 MiB | model | size | params | backend | ngl | n_ubatch | sm | ts | test | t/s | | ------------------------------ | ---------: | ---------: | ---------- | --: | -------: | ----: | ------------ | ------------: | ---------------: | | qwen4exp 125B.A6B Q4_K - Medium | 103.68 GiB | 176.94 B | CUDA | 999 | 1024 | graph | 1.00/1.75 | pp4096 | 356.20 ± 7.68 | | qwen4exp 125B.A6B Q4_K - Medium | 103.68 GiB | 176.94 B | CUDA | 999 | 1024 | graph | 1.00/1.75 | pp8192 | 361.00 ± 4.72 | | qwen4exp 125B.A6B Q4_K - Medium | 103.68 GiB | 176.94 B | CUDA | 999 | 1024 | graph | 1.00/1.75 | tg128 | 26.44 ± 0.11 ===== MAIN GPU 1 ===== ggml_cuda_init: found 2 CUDA devices: Device 0: Tesla V100-PCIE-16GB, compute capability 7.0, VMM: yes, VRAM: 16144 MiB Device 1: Tesla V100-PCIE-32GB, compute capability 7.0, VMM: yes, VRAM: 32494 MiB | model | size | params | backend | ngl | n_ubatch | main_gpu | sm | ts | test | t/s | | ------------------------------ | ---------: | ---------: | ---------- | --: | -------: | ---------: | ----: | ------------ | ------------: | ---------------: | | qwen4exp 125B.A6B Q4_K - Medium | 103.68 GiB | 176.94 B | CUDA | 999 | 1024 | 1 | graph | 1.00/1.75 | pp4096 | 380.67 ± 6.25 | | qwen4exp 125B.A6B Q4_K - Medium | 103.68 GiB | 176.94 B | CUDA | 999 | 1024 | 1 | graph | 1.00/1.75 | pp8192 | 360.75 ± 5.05 | | qwen4exp 125B.A6B Q4_K - Medium | 103.68 GiB | 176.94 B | CUDA | 999 | 1024 | 1 | graph | 1.00/1.75 | tg128 | 26.29 ± 0.08 | build: 1a2a8604 (4878) 我想了解更多关于这些标志的信息,因为我在这方面是个新手...感谢您的关注。
查看原文

相似文章