@深圳律师陈扬波 llama-server
-m Qwen3.6-35B-A3B-APEX-MTP-I-Compact.gguf
--mmproj mmproj-F16.gguf
-c 204800 \ # 200K上下文
--n-cpu-moe 32 \ # MoE专家权重CPU卸载(32线程)
--spec-type draft-mtp \ # MTP投机解码
--reasoning off \ # 禁用Think模式
--jinja \ # Jinja模板
-ngl 99 \ # GPU层全卸载
-ts 4,1 \ # 线程调度
-np 1 \ # 并行解码1
--port 8081
--host 0.0.0.0
lannykov
-
x99服务器配双3070-8g qwen3.6-35B-A3B 50tk/s-200k上下文-多模态 -
x99服务器配双3070-8g qwen3.6-35B-A3B 50tk/s-200k上下文-多模态有换两块3080 20g的冲动了,哈哈。
当时这个设备为了跑好两块3070还专门换了riser-3:Riser 3 Alternate (GPU版),从亚马逊专门买的,所以两块都是pcie 3.0-x16的满速。另外一块riser-2默认是pcie3.0-x16,不需要折腾。
机架式服务器原装货,风扇可调,噪声可以接受,还是有潜力挖一挖的。 -
x99服务器配双3070-8g qwen3.6-35B-A3B 50tk/s-200k上下文-多模态结果有些意外,没想到“废卡”还能派上用场。特别是生成速度、上下文窗口、多模态,以及低得吓人的功耗
-
x99服务器配双3070-8g qwen3.6-35B-A3B 50tk/s-200k上下文-多模态用二手3070和淘汰服务器跑35B大模型的实践记录
硬件配置:
- Dell R730(2017年),双路E5-2680v4,56核,512GB DDR4
- 2张二手RTX 3070 8GB
- 推理框架:llama.cpp,CPU MoE offload
- 模型:Qwen3.6-35B-A3B(APEX量化17.3GB + MTP投机解码)
性能实测:
日常对话:36-40 tok/s
代码生成:60 tok/s(MTP命中率85%)
数学推理:52 tok/s
长上下文200K:45-50 tok/s
多模态图片理解:40-50 tok/s上下文能力:
- 200K稳定运行,多模态+MTP全开
- 236K是多模态极限(128K到256K每12K逐档扫描确定)
- 256K纯文本可用,但多模态OOM
资源占用(最有价值的部分):
GPU SM利用率最高23%,双卡TDP 440W实际只用了137W。
CPU 56核用了13核(23%)。
内存512GB用了25GB(5%)。算力全部过剩。唯一不够的是带宽。
DDR4-2400八通道144GB/s(实测),PCIe 3.0 x16只有16GB/s。MoE每次推理要从内存搬专家权重到CPU算,再通过PCIe回传GPU。GPU和CPU大部分时间都在等数据。
结论:本地MoE推理的瓶颈是访存带宽,不是算力。选硬件时优先看DDR5、PCIe 4.0、大显存,而不是核心数和GPU算力。
调优过程(4个维度21种配置自动化测试):
MoE CPU线程数:32是唯一稳定值,16和56导致OOM,24和40/48直接崩溃。
批处理线程:28最佳,42无提升,56断崖下跌。
显存分配GPU0:GPU1=4:1,速度差距忽略不计,但余量差别巨大(1.5GB vs 126MB)。
NUMA绑定:效果不明显,不绑。最关键的一个参数是-np 1。llama.cpp默认n_parallel=4,预分配4份KV cache,16GB显存直接撑爆。改成1份才能跑到200K。