2026年4月8日 2 分钟阅读

4060 Ti 16GB 跑 Qwen3.5 35B:128K 上下文,真能跑

tinyash 0 条评论
qwen 1

故事是这样的。

今天晚上,有个朋友在群里丢了一张图,说他在笔记本 2070 8GB 上跑起来了 Qwen3.5 35B,128K 上下文,prefill 250tps,decode 25tps。

我当时的反应是:???

35B 的模型,8GB 显存,这也能跑?

结果人家说用的是 llama.cpp 的 --fit 参数,配合 MoE 架构的特性,只把活跃参数塞进显存,剩下的扔内存里。

我寻思了一下,我那台 4060 Ti 16GB 的机器,岂不是更宽裕?

鬼使神差的,我下载了模型,试了一把。

还真跑起来了。


先说结论。

4060 Ti 16GB 跑 Qwen3.5 35B A3B IQ4_NL,128K 上下文,能跑,而且比 8GB 卡舒服太多。

下面是具体操作。


模型和工具

模型是 Qwen3.5-35B-A3B-UD-IQ4_NL.gguf,体积大概 17GB。

工具是 llama.cpp,Windows 预编译版本,带 CUDA 支持。

这里有个细节。

Qwen3.5 35B 是个 MoE 模型,意思是”混合专家”。总参数 35B,但每次推理只激活其中一小部分,大概 3B 左右。这就是为什么 8GB 显存也能跑的核心原因——真正需要放进显存的,只有那部分活跃参数。

IQ4_XS 和 IQ4_NL 都是 llama.cpp 的量化格式。

Q 代表 Quantization(量化),把模型从高精度压缩成低精度,减小体积。IQ 是 ImportIQ,一种改进型量化方案。

根据 llama.cpp 源码定义:

  • IQ4_XS:4.25 bpw(bits per weight),非线性量化
  • IQ4_NL:4.50 bpw,非线性量化,精度更好

bpw 越高,精度越好,文件也越大。

但实际下来,这俩文件大小差不多,都是 17GB 多。

那我肯定选 NL 啊,没理由牺牲精度。

128K 上下文照样跑,输出质量还更好。

鱼和熊掌,这次不用选。


启动命令

llama.cpp 有个 server 模式,启动后提供 API 接口,支持 OpenAI 格式和 Anthropic 格式。

命令是这样的:

.\llama-server.exe -m D:\gguf-model\Qwen3.5-35B-A3B-UD-IQ4_NL.gguf ^
  --fit on ^
  --no-mmproj-offload ^
  -c 131072 ^
  --flash-attn on ^
  -t 8 ^
  --host 0.0.0.0 ^
  --port 8080

几个关键参数:

--fit on 是核心。它会自动调整参数,让模型塞进你的显存。不用手动算该放多少层进 GPU,它自己决定。

--no-mmproj-offload 是 MoE 相关的,不让它把专家参数卸载到内存。

-c 131072 是上下文长度,128K。

--flash-attn on 开启 Flash Attention,加速注意力计算。

-t 8 是 CPU 线程数,按你 CPU 核心数调整。

--host 0.0.0.0 让服务监听所有网卡,局域网内其他设备也能访问。

启动之后,它会显示:

load_tensors: offloading output layer to GPU
load_tensors: offloading 39 repeating layers to GPU
load_tensors: offloaded 41/41 layers to GPU
load_tensors:   CPU_Mapped model buffer size = 16266.71 MiB
load_tensors:        CUDA0 model buffer size = 10560.19 MiB
llama start

图:llama.cpp server 启动成功

然后开始加载模型。

加载完之后,你就可以通过 http://localhost:8080 访问了。


对接 Claude Code

llama.cpp server 默认提供 Anthropic 格式的 API,和 Ollama 一样。

这意味着你可以直接用它替代 Claude 的 API,用 Claude Code 来调用本地模型。

有两种配置方式。

方式一:环境变量(临时)

启动 Claude Code 之前设置环境变量:

$env:ANTHROPIC_BASE_URL="http://localhost:8080"
$env:ANTHROPIC_API_KEY="sk-no-key"
claude

方式二:配置文件(永久)

~/.claude/settings.json 添加:

{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "1234",
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:8080",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "Qwen3.5-35B-A3B",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "Qwen3.5-35B-A3B",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "Qwen3.5-35B-A3B",
    "ANTHROPIC_MODEL": "Qwen3.5-35B-A3B",
    "ANTHROPIC_REASONING_MODEL": "Qwen3.5-35B-A3B"
  }
}

ANTHROPIC_AUTH_TOKEN 随便填,本地模型不需要真的验证。模型名称也随便填,反正都是走本地。

配置完成后,启动 Claude Code,它会自动走本地模型,而不是调用 Anthropic 的 API。

cc switch 配置

如果你安装了 cc switch 工具,也可以用 switch 配置:

cc switch llama

量化版本的选择

ModelScope 上这个模型有好几个量化版本:

  • IQ4_XS:4.25 bpw,17GB 多
  • IQ4_NL:4.50 bpw,17GB 多,推荐
  • Q4_K_M:约 4.58 bpw,更大一些
  • Q5_K_M:约 5.33 bpw,更大

IQ4_XS 和 IQ4_NL 都是 17GB 多,大小差不多。

那我肯定推荐 IQ4_NL 啊,没理由牺牲精度。

16GB 显存跑 128K 上下文,IQ4_NL 最稳,输出质量还好。

Q4_K_M 和 Q5_K_M 会更大一些,显存紧张的话慎重。

这就像你买房子。

想要大面积,就得接受远一点的位置。想要市中心,就得接受小一点。

没有完美的选择,只有适合你的选择。


实际体验

我试了一下,加载速度还行,推理速度也够用。

16GB 显存比 8GB 宽裕太多,8GB 卡得精打细算每一个 MB,16GB 可以稍微挥霍一点。

当然,也不能太挥霍。

--fit on 会自动调整,但你也可以手动调。如果爆显存,就把上下文砍到 64K,或者换更小的量化版本。

有个细节需要注意。

llama.cpp 的 --fit 参数是自动调整 unset 的参数,不是设置显存上限。所以它会根据你的显存大小,自动决定能放多少层进 GPU,剩下的放内存。

这就是为什么 8GB 卡也能跑 35B 模型。


输出质量怎么样?

光说能跑没用,得看写出来的东西能不能用。

我让它帮我写一个自动刷新功能的设计文档。

需求很简单:管理员页面有三个数据面板,想要一个开关,打开后每 30 秒自动刷新展开的面板。

它使用openspec技能写了设计文档,并且正确实现了功能:

claudecode qwen

这水平,够用了。

真的,够用了。


一点感想

三年前,你想跑一个 35B 的模型,需要什么?

至少一张 A100 40GB,或者多张 3090 做并行。

现在呢?

一张 4060 Ti 16GB,消费级显卡,跑起来了。

这背后是量化技术的进步,是 MoE 架构的普及,是开源社区的疯狂内卷。

我记得 2023 年初,那时候跑个 7B 模型都得 16GB 显存。现在 35B 都能塞进 16GB 了。

大时代啊,朋友们。

当然,本地跑模型不是银弹。

它有它的局限。速度比不上云端,精度有损失,调试麻烦。但它有一个云端永远给不了的东西:

隐私和可控。

你的数据不出本地,你的模型你想怎么用就怎么用,不用担心 API 涨价,不用担心服务关停。

这是一种自由。


最后

如果你也想试试,下面是快速开始:

  1. 下载 llama.cpp Windows CUDA 版本
  2. 下载 Qwen3.5-35B-A3B-UD-IQ4_NL.gguf
  3. 用上面的命令启动 server
  4. 配置环境变量或 settings.json
  5. 开始玩

有问题可以在评论区问,我看到会回。

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。