【实测】3070Ti 8G 显存跑 Qwen3.6-35B-A3B,并在另一台 Linux 上用 Hermes 调用(含踩坑全过程)
最近看到论坛里有人用 4060 8G 跑起了 Qwen3.6-35B-A3B 这个 MoE 模型,速度还挺能打,我手里正好有张 3070Ti(也是 8G 显存),就想着照葫芦画瓢搞一套——而且我的需求稍微复杂点:模型跑在我的 Windows 台式机上,但我想在另一台 Linux 机器上用 Hermes Agent 来调用它,两台在同一个局域网里。
折腾了一个晚上,端到端跑通了。中间踩了一个挺反直觉的坑,速度一度只有 6 t/s,差点以为这卡不行,最后定位到是个参数问题,救回到了 33~38 t/s。把全过程记一下,给同样 8G 卡入门的朋友省点时间。
先放结论:8G 显存完全能跑这个 35B 的 MoE 模型,3070Ti 短上下文生成稳定 33~38 t/s,和那位用 4060 的老哥水平一致。
我的配置
- 模型机:Windows 台式机,RTX 3070Ti(8G),32G 内存
- 客户机:另一台 Linux,同一局域网
- 模型:Qwen3.6-35B-A3B-APEX-MTP-I-Mini.gguf(约 13G)
- 推理框架:llama.cpp(Windows CUDA 预编译包)
- Agent:Hermes(装在 Linux 那台)
原理我也是现学的:这模型虽然标着 35B,但它是 MoE 架构,每个 token 只激活约 3B 参数。llama.cpp 可以把大部分用不上的"专家层"卸载到内存里,显存只留必要的部分,再开 MTP(多 token 预测)投机解码提速——这样 8G 小卡就能跑起来了。
第一步:装 llama.cpp
去官方 release 页面下载:https://github.com/ggml-org/llama.cpp/releases
我是 N 卡,所以下 CUDA 版本。这里有个点要注意——CUDA 版本要下两个文件:一个主程序包,一个 cudart 运行库包。我 nvidia-smi 显示 CUDA 13.1,就下了 CUDA 13.1 那组(如果你的显示是 12 点几,就下 CUDA 12.4 那组,兼容性更广)。
第一个坑(轻微):这俩 zip 必须解压到同一个文件夹,让里面的 cudart64_*.dll 和 llama-server.exe 待在一起,不然启动报缺 DLL。我一开始差点分开放了。
解压完先验证一下:
.\llama-server.exe --version
.\llama-server.exe --list-devices
--list-devices 能看到我的 3070Ti,说明 CUDA 链路通了,放心继续。
第二步:下模型
HuggingFace 仓库:mudler/Qwen3.6-35B-A3B-APEX-MTP-GGUF,进「Files and versions」标签。
里面一堆量化档,我对着 8G 显存选了 I-Mini(约 13G)。这里我手抖了一下,第一次下成了 I-Nano(更小、更省但质量略低),发现下错赶紧重下了 I-Mini。提醒大家认准文件名里是 Mini 不是 Nano/Compact/Balanced。
放到 C:\models\,下完用 dir 核对一下文件名和大小,别下到半截。
第三步:写 preset.ini
在 C:\models\ 建个 preset.ini。Windows 隐藏后缀,我直接用 PowerShell 生成,免得存成 .txt:
version = 1
[*]
parallel = 1
n-gpu-layers = 999
ctx-size = 65536
predict = 4096
flash-attn = on
cache-type-k = q8_0
cache-type-v = q8_0
threads = 8
threads-batch = 16
[qwen36-apex-mtp-mini]
model = C:\models\Qwen3.6-35B-A3B-APEX-MTP-I-Mini.gguf
load-on-startup = true
n-cpu-moe = 30
spec-type = draft-mtp
spec-draft-n-max = 3
cache-type-k-draft = q8_0
cache-type-v-draft = q8_0
(注意:这是我最初抄的参数,n-cpu-moe = 30——这个值后面就是我踩坑的元凶,往下看。)
第四步:起服务,本机自测
我先用 127.0.0.1 起,确认模型本身能跑,再考虑开局域网:
.\llama-server.exe --models-preset C:\models\preset.ini --host 127.0.0.1 --port 8888
等了几十秒加载完,日志出现 listening,浏览器开 http://127.0.0.1:8888 能聊天了。当时挺高兴,以为大功告成。
第五步:测速,傻眼了——只有 6 t/s
我顺手测了下速度,看 server 日志:
tg = 6.55 t/s
tg = 6.40 t/s
tg = 6.00 t/s
6 t/s?! 那位 4060 老哥都能跑 35~38,我 3070Ti 带宽比他高,怎么反而只有他六分之一?当时第一反应是"GPU 没用上、全在 CPU 上跑"。
跑了个 nvidia-smi 一看,结果跟我想的完全相反:
Memory-Usage: 7920MiB / 8192MiB
GPU-Util: 92%
GPU 不但在用,还满载 92%,显存也几乎占满了——7920/8192,只剩 200 多 MB。
这下我懂了:不是 GPU 没干活,是显存爆了。太多专家层挤进了 8G 显存,把它撑到接近满,于是系统疯狂在显存和内存之间倒腾数据,速度直接崩。
那位 4060 老哥的帖子里其实早就警告过这个:n-cpu-moe 调太低,让太多专家进 GPU,显存反而拉满、速度反而掉。我用的 n-cpu-moe = 30 对我这台就是太低了——因为我桌面上还开着一堆 Edge、Chrome、WPS,它们本身就偷占了显存,留给模型的空间更少,所以同样的参数我比他更容易爆。
第六步:调参,救回 38 t/s
解法很简单:把 n-cpu-moe 调大,把更多专家赶到内存里去(我有 32G 内存,扛得住)。
把 n-cpu-moe = 30 改成 38,重启服务,再测:
tg = 38.69 t/s
tg = 35.69 t/s
tg = 33.00 t/s
回来了! 33~38 t/s,跟 4060 老哥一个水平。再看显存:
Memory-Usage: 5547MiB / 8192MiB
从 7920 降到 5547,腾出 2.6G 余量,不再爆显存,速度自然就上来了。
这是整个过程最值得记的一条经验:
8G 卡上不是"塞进 GPU 的越多越快"。显存一旦逼近爆满,速度反而断崖式下跌。甜点是显存占到 6~7G、留 1G 以上余量。
- 显存爆/慢 → 调大
n-cpu-moe(更多专家去内存,省显存)- 显存还很空 → 调小
n-cpu-moe(多留专家在显存,更快)另外测速前把浏览器、WPS 那些吃显存的程序关掉,能多还给模型几百 MB~1G,可以把
n-cpu-moe调得更激进。
我这台桌面占用大,所以甜点比那位老哥的 30 高,落在 38 左右。每台机器不一样,大家按 nvidia-smi 自己微调。
第七步:对局域网开放
模型端搞定,接下来要让 Linux 那台连过来。
先把服务从 127.0.0.1 改成 0.0.0.0 重启(这俩的区别是:127.0.0.1 只有本机能连,0.0.0.0 才对局域网开放):
.\llama-server.exe --models-preset C:\models\preset.ini --host 0.0.0.0 --port 8888
然后 ipconfig 查台式机的局域网 IP(我的是 192.168.1.10)。这里插一句:ipconfig 里可能有好几个 IP,那个 198.18.x.x 是代理软件的虚拟网卡、172.x.x.x 是 WSL 的,都不是真实局域网 IP,别选错。认准「以太网/WLAN」那个 192.168.x.x。
最关键的一步——放行防火墙,这是跨机器连不上最常见的坑。管理员开 PowerShell:
New-NetFirewallRule -DisplayName "llama-server 8888" -Direction Inbound -Protocol TCP -LocalPort 8888 -Action Allow
顺便确认台式机的网络是「专用网络」不是「公用网络」,公用网络防火墙会更严。
第八步:Linux 上验证 + 装 Hermes
我没急着装 Hermes,先在 Linux 上 curl 戳一下,确认网络真通了(把网络问题和软件问题分开):
curl http://192.168.1.10:8888/v1/models
返回了一段 JSON,里面有模型名——通了!这一步过了,后面就是纯软件配置,不会再有网络玄学。
然后装 Hermes(Linux 上前置只要 Git,其余自动装,具体命令照官方 README 走),配模型:
hermes model
选自定义模型,填:
- Base URL:
http://192.168.1.10:8888/v1—— 注意填台式机的真实 IP,千万别填 127.0.0.1,在 Linux 上那指的是 Linux 自己,连不到台式机。 - API Key:
local(占位符,不能留空)
它自动拉出模型列表,选中,终端发句话——能正常回话了,端到端打通! 
一个小插曲:中途 Linux 突然连不上
中间我为了反复调 n-cpu-moe 测速,重启服务时图省事用了 127.0.0.1,结果 Linux 那台就连不上了。排查了一下发现就是这个原因——改回 0.0.0.0 就好了。所以大家记住:本机自测用 127.0.0.1,给别的机器用必须 0.0.0.0,重启别记错地址。
关于 Agent 速度的一点提醒
接进 Hermes 跑起来之后,会明显感觉比浏览器里慢,而且每轮回答开头要先等几秒。一开始我以为又出问题了,后来明白这是正常的:
Agent 每轮会把系统提示 + 工具定义 + 历史一起发过来,动辄上万 token。真正的瓶颈是处理这一大段输入(prompt processing),不是吐字速度。 8G 卡处理长输入本身就慢。这个目前我还在优化,思路是精简工具、控制上下文长度、必要时把 ctx-size 从 65536 降到 32768,等我调出更好的结果再来更新。
总结
整套下来其实不难,唯一的大坑就是 n-cpu-moe 那个反直觉的显存问题。给同样 8G 卡的朋友划重点:
- CUDA 包下两个(主程序 + cudart),解压到同一目录。
- 模型选 I-Mini(8G 显存合适)。
- 速度慢先看
nvidia-smi,显存爆了就调大n-cpu-moe,别一上来怀疑 GPU 没用上。 - 甜点 = 显存占 6~7G、留 1G 余量;测速前关掉吃显存的后台程序。
- 跨机器:服务用
0.0.0.0、放行防火墙、Linux 先curl验证再装 Hermes。 - Base URL 填模型机真实 IP,不是 127.0.0.1。
3070Ti 8G 跑 35B MoE,33~38 t/s,香。有问题欢迎楼下交流~