llama.cpp Qwen3.6 长上下文参数调优指南 (RTX 3090 24GB)

GPU: NVIDIA RTX 3090 24GB | 测试日期: 2026-06-07 | llama.cpp: turboquant 分支 | 本地编译

⚠️ 本教程基于 turboquant/llama.cpp 分支,非官方 upstream。turboquant 分支针对 Qwen 架构做了专项优化(MTP 推测解码支持、KV cache 量化扩展、mmproj CPU offload 等)。部分参数行为(如 --spec-type mtp、cache 量化类型支持列表)可能与官方版本存在差异,跨版本使用时需验证。

目录

  1. 模型总览与性能对比
  2. 关键启动参数详解
  3. MTP 推测解码:速度 vs 上下文权衡
  4. KV Cache 量化策略
  5. 显存预算与上下文计算
  6. 推荐启动配置
  7. 启动脚本使用说明

1. 模型总览与性能对比

以下 6 个 Qwen3.6 衍生模型在 RTX 3090 24GB 上的基准测试结果。

# 模型 模型大小 KV量化 上下文 生成速度 备注
[1] Qwopus3.6-27B IQ4_XS 15GB q4_0 131K / 256K 63 / 44 t/s MTP 二选一
[2] Qwopus3.6-27B Q4_K_M 16GB q4_0 131K / 256K 56 / 39 t/s MTP 二选一
[3] Qwopus3.6-27B Q5_K_S 18GB q4_0 131K / 256K 45 / 37 t/s MTP 二选一
[4] Unsloth-27B Q4_K_XL 17GB q4_0 131K / 256K 39 t/s noMTP
[5] Mudler-35B-A3B Compact 17GB q8_0 256K 138 t/s 纯文本 MoE
[6] Unsloth-35B-A3B IQ4_XS 18GB q8_0 256K 133 t/s 支持视觉

选择建议:

  • 速度+视觉 → [6] Unsloth 35B-A3B:138 t/s,q8_0 KV,mmproj 支持
  • 纯文本极速 → [5] Mudler 35B-A3B Compact:138 t/s,无视觉开销
  • 长上下文推理质量 → [1] IQ4_XS:15GB 最小模型,256K 44 t/s,显存余量最大
  • 平衡型 → [2] Q4_K_M:速度和上下文均居中

⚠️ 模型与 KV 量化对应关系: 27B 密集模型全部使用 q4_0 KV 量化(24GB 内唯一能支撑 256K 的选择);35B MoE 模型有效参数仅约 3B,可使用 q8_0


2. 关键启动参数详解

标注 🔴 的参数是必须根据你的硬件调整的项。

🔴 --ctx-size / -c

最大上下文长度(tokens)。决定显存消耗的核心参数之一。

调整指南: 12GB → 32768~65536;16GB → 65536~131072;24GB → 131072~262144。上限由模型大小和 KV 量化共同决定。每翻倍 ctx,KV cache 近似翻倍。

🔴 --cache-type-k / -ctk

K-cache 量化类型。可选:f32 f16 bf16 q8_0 q4_0 q4_1 iq4_nl q5_0 q5_1 turbo2 turbo3 turbo4

调整指南: f16 ≈ 128 bytes/token;q8_0 ≈ 64;q4_0 ≈ 32。24GB 用 q4_0 可达 256K;16GB 用 q4_0 达 131K。注意:q3_0/q2_K 不被 llama.cpp 支持。

🔴 --cache-type-v / -ctv

V-cache 量化类型。通常与 --cache-type-k 一致即可。

调整指南: 保持与 K-cache 相同。仅极端省显存场景单独降 V-cache。

🔴 -t / --threads

CPU 线程数,用于 prompt eval 并行计算。

调整指南: 设置为物理核心数(非超线程)。例:i9-13900K (8P+16E=24C) → -t 24。推荐 min(物理核心, 32)

--n-gpu-layers / -ngl

加载到 GPU 的层数。-1 = 全部 GPU(推荐)。

调整指南: 24GB → -1;12GB → 逐步减少。每层约 200~300MB。LLaMA 层数可用 llama-gguf-dump 查看 block_count。

--spec-type mtp

MTP 推测解码。热缓存提速 2144%,额外消耗约 1.5~2GB 显存。

调整指南: 显存余量 > 2GB 时开启;需最大上下文时关闭。实测 IQ4_XS:43→63 t/s (+44%)。

--spec-draft-n-max

MTP 最大 draft token 数。

调整指南: 保持默认 3。增大到 5~8 无稳定提升。

-np / --parallel

并行请求序列数。1 避免 KV cache 碎片化。

调整指南: 单用户保持 1。多用户每增 1 → KV 开销翻倍。

-ub / --ubatch-size

微批次大小。增大提升 prompt eval 速度但增加显存峰值。

调整指南: 24GB → 32;16GB → 16;8GB → 8

--no-warmup

跳过模型预热。无负面影响,始终开启。

--reasoning off

禁用推理模式。Qwen3.6 推理 token 占用上下文且延迟不可控。

调整指南: Agent 对话必须 off。仅复杂推理时开启。

--mmproj ... --no-mmproj-offload

视觉投影器加载在 CPU 上。对 GPU 显存和速度零影响(实测验证)。

--chat-template-file

自定义 Jinja 对话模板。Qwen 官方模板含 Python 特有逻辑,导致 Agent 框架异常。

调整指南: 使用 froggeric/Qwen-Fixed-Chat-Templates 修复版。

--host / --port

监听地址和端口。0.0.0.0:8080 允许局域网访问。

调整指南: 本机 → 127.0.0.1;局域网 → 0.0.0.0


3. MTP 推测解码:速度 vs 上下文权衡

3.1 显存代价

指标 MTP 关闭 MTP 开启 差值
draft 缓存 0 GB ~1.3 GB +1.3 GB
额外工作缓冲区 0 GB ~0.5 GB +0.5 GB
总显存增量 ~1.8 GB +1.8 GB
等价上下文损失 (q4_0) ~57K tokens −57K

⚠️ 核心权衡: MTP 开启 → +21%~44% 速度 → 损失 ~57K tokens 上下文(q4_0 下)。256K → 199K,131K → 74K。需 200K+ 上下文时,必须关闭 MTP。

3.2 速度收益(模型依赖性)

模型 MTP 关闭 MTP 开启 加速比 评估
Qwopus IQ4_XS 43 t/s 63 t/s +44% 显著有效
Qwopus Q4_K_M 39 t/s 56 t/s +44% 显著有效
Qwopus Q5_K_S 37 t/s 45 t/s +22% 有效但递减
Unsloth Q4_K_XL 39 t/s 39 t/s 0% 不支持
Mudler 35B-A3B 138 t/s 已足够快
Unsloth 35B-A3B IQ4_XS 133 t/s 同上

Flash Attention 在 Qwen 27B 上无显存节省也无速度收益,所有配置均关闭 FA。


4. KV Cache 量化策略

4.1 各量化级别内存占用

量化类型 每 token (K+V) 131K 占用 256K 占用 推荐场景
f16 ~128 B ~16.4 GB ~32 GB 不可用
q8_0 ~64 B ~8.2 GB ~16 GB 35B MoE 首选
q4_0 ~32 B ~4.1 GB ~8 GB 27B 密集唯一选择
iq4_nl ~32 B ~4.1 GB ~8 GB 与 q4_0 相当
q5_0 ~40 B ~5.1 GB ~10 GB 边际可用

经验法则: 27B 模型 + 24GB → q4_0 唯一能承载 256K。35B MoE 有效参数少,可用 q8_0


5. 显存预算与上下文计算

5.1 显存分配公式

总显存 = 模型权重 + KV Cache + MTP draft 缓存 + 工作缓冲区 + CUDA 上下文

KV Cache (GB) ≈ ctx_size × kv_bytes_per_token ÷ (1024³)

简化 (27B, q4_0):
  131072 ctx → ~4.1 GB
  262144 ctx → ~8.2 GB

5.2 显存分配示例 (Qwopus IQ4_XS, ctx=131072)

[模型 15.0GB 62%][KV 4.1GB 18%][空闲 4.9GB 20%]

5.3 显存分配示例 (Qwopus IQ4_XS, ctx=262144)

[模型 15.0GB 62%][KV 8.2GB 34%][空闲 0.8GB 4%]

🔴 注意: 256K 仅剩 0.8 GB。MTP 需要 1.8 GB → 256K 必须关闭 MTP。开 MTP + 256K 需要 27 GB+ 显卡 (RTX 4090/A6000)。

5.4 跨显卡显存指导

显卡 推荐模型 推荐 CTX KV MTP
RTX 3060 12GB IQ4_XS 65536 q4_0 可选
RTX 4070 12GB IQ4_XS 131072 q4_0 可选
RTX 4080 16GB Q4_K_M 131072 q4_0 推荐开启
RTX 3090 24GB 任意 262144 q4_0/q8_0 131K开/256K关
RTX 4090 24GB 任意 262144 q4_0/q8_0 131K开/256K关
RTX A6000 48GB Q5_K_S+ 262144 q8_0 始终开启

6. 推荐启动配置

6.1 速度优先(MTP 模式)

适合:日常 Agent 对话、短文档处理、延迟敏感

llama-server \
    -m Qwopus3.6-27B-v2-MTP-IQ4_XS.gguf \
    --mmproj mmproj-F32.gguf --no-mmproj-offload \
    --chat-template-file chat_template.jinja \
    --host 0.0.0.0 --port 8080 \
    --ctx-size 131072 \
    --cache-type-k q4_0 --cache-type-v q4_0 \
    --n-gpu-layers -1 -t 10 -ub 32 -np 1 \
    --no-warmup --reasoning off \
    --spec-type mtp --spec-draft-n-max 3

6.2 长上下文优先(noMTP 模式)

适合:长文档分析、代码库理解、全量 Agent 记忆

llama-server \
    -m Qwopus3.6-27B-v2-MTP-IQ4_XS.gguf \
    --mmproj mmproj-F32.gguf --no-mmproj-offload \
    --chat-template-file chat_template.jinja \
    --host 0.0.0.0 --port 8080 \
    --ctx-size 262144 \
    --cache-type-k q4_0 --cache-type-v q4_0 \
    --n-gpu-layers -1 -t 10 -ub 32 -np 1 \
    --no-warmup --reasoning off

🔴 用户必调参数清单:

  1. -t → 改为你的 CPU 物理核心数
  2. --ctx-size → 根据显存调整(见第 5 节)
  3. --cache-type-k/--cache-type-v → 12GB 用 q4_0,48GB+ 可 q8_0
  4. --n-gpu-layers → 12GB 需减少层数,24GB+ 保持 -1
  5. -ub → 显存紧张降至 16 或 8
  6. -m / --mmproj → 改为实际模型路径

7. 启动脚本使用说明

所有脚本位于 /mnt/models/llama-cpp-turboquant/,统一入口:

bash start-model.sh

二选一交互:5 秒内按 N → 长上下文模式 (256K, noMTP),否则默认速度模式 (131K, MTP)。

所有脚本已集成 --chat-template-file 使用 froggeric 修复版模板:froggeric/Qwen-Fixed-Chat-Templates


测试环境:Ubuntu 26.04 · RTX 3090 24GB · Driver 580.159.03 · CUDA 13.0 · turboquant/llama.cpp · 本地编译

构建时间:2026-06-07 | 对话模板:froggeric/Qwen-Fixed-Chat-Templates | llama.cpp: turboquant/llama.cpp

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐