硬件平台NVIDIA RTX 3080 Ti 12GB

涵盖模型Qwen3 系列 / Gemma 4 系列

1. 硬件环境与模型概览

1.1 硬件配置

本文档基于以下硬件环境进行测试和验证,所有性能数据均在此配置下测得。该配置属于中高端消费级平台,可作为本地部署大语言模型的参考基准。

表1 测试平台硬件配置
项目 规格 说明
GPU NVIDIA RTX 3080 Ti 12GB GDDR6X VRAM,适合中等规模模型全 GPU 推理
CPU Intel Core i9-12900K 24 线程,混合推理时 CPU 承担部分计算
RAM 32 GB DDR5 充足,可容纳 CPU 层及系统开销
llama.cpp 最新主线版本 ~/code/llama.cpp/build/bin/
模型目录 本地存储 ~/models/

1.2 模型文件目录

以下是当前部署的全部模型清单,涵盖通用对话、编程专用等不同场景的模型。模型采用 GGUF 格式,通过量化技术大幅减小体积以适配消费级硬件。

表2 已部署模型清单
模型 文件路径 大小 推理方式
Qwen3.5-9B Q8_0 ~/models/qwen3.5-9b/Qwen3.5-9B-Q8_0.gguf 8.9 GB 全 GPU
Gemma 4 E4B IT Q8_0 ~/models/gemma4-e4b-it/gemma-4-E4B-it-Q8_0.gguf 7.7 GB 全 GPU
Qwen3.6-35B-A3B Q4_K_M ~/models/qwen3.6-35b-a3b/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf 20.6 GB 混合推理
Qwen3-Coder-30B-A3B Q4_K_M ~/models/qwen3-coder-30b-a3b/Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf 17.3 GB 混合推理
Qwen3.6-27B Q4_K_M ~/models/qwen3.6-27b/Qwen3.6-27B-Q4_K_M.gguf 16.0 GB 混合推理

1.3 模型来源与下载

所有模型均从 HuggingFace 获取,使用 hf-mirror.com 国内镜像加速下载。以下列出各模型对应的 HuggingFace 仓库及下载命令示例。

表3 模型来源(GGUF 量化版)
模型 HuggingFace 仓库
Qwen3-Coder-30B-A3B Q4_K_M unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF
Qwen3.6-35B-A3B Q4_K_M unsloth/Qwen3.6-35B-A3B-GGUF
Qwen3.5-9B Q8_0 unsloth/Qwen3.5-9B-GGUF
Gemma 4 E4B IT Q8_0 unsloth/gemma-4-E4B-it-GGUF
Qwen3.6-27B Q4_K_M unsloth/Qwen3.6-27B-GGUF

下载命令示例:

# 小模型(全 GPU,可用 Q8_0 等高精度)
HF_ENDPOINT=https://hf-mirror.com hf download unsloth/Qwen3.5-9B-GGUF \
  Qwen3.5-9B-Q8_0.gguf --local-dir ~/models/qwen3.5-9b/

# 大模型(混合推理,需要量化)
wget -c https://hf-mirror.com/unsloth/Qwen3.6-35B-A3B-GGUF/resolve/main/\
  Qwen3.6-35B-A3B-UD-Q4_K_M.gguf \
  -O ~/models/qwen3.6-35b-a3b/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf

# 编码模型(混合推理)
HF_ENDPOINT=https://hf-mirror.com hf download \
  unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF \
  Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf \
  --local-dir ~/models/qwen3-coder-30b-a3b/

注意事项

hf-mirror.com 的 CDN 签名 1 小时过期,大文件下载中断后需重新运行 wget -c 获取新的重定向 URL。

2. 模型架构参数

理解模型的架构参数对于合理配置 llama.cpp 至关重要。以下表格对比了各模型的关键架构指标,这些参数直接影响显存占用和推理性能。

表4 模型架构参数对比
参数 Qwen3-Coder
30B-A3B
Qwen3.6
35B-A3B
Qwen3.5
9B
Gemma 4
E4B IT
Qwen3.6
27B
上下文窗口 256K 256K 256K 128K 256K
架构类型 MoE MoE Dense Dense Dense
活跃参数 ~3.3B ~3B ~9B ~4.5B ~27B
层数 48 40 32 42 64
注意力头数 32 16 16 8 24
KV 头数 4 2 4 2 4
词表大小 248,320 248,320 248,320 262,144 248,320
MoE 专家数 128 256 N/A N/A N/A

架构说明

  • Qwen3.5 全系列使用混合注意力:每 4 层中 1 层全注意力 + 3 层线性注意力,兼顾长上下文与推理效率。
  • Gemma 4 E4B IT:每 6 层中 1 层全注意力 + 5 层滑动注意力(窗口 512),KV 状态跨层共享节省显存。
  • 上下文窗口是模型训练支持的最大长度,实际使用受 VRAM 限制(详见第 4 章)。

3. 关键参数说明

3.1 核心运行参数

以下参数是运行 llama.cpp 时最常用的配置项,正确理解每个参数的含义是获得最佳性能的关键。

表5 llama.cpp 核心参数速查
参数 默认值 说明
-m <path> (必填) 模型文件路径
-ngl <N> 0(全 CPU) GPU 卸载层数:99 全部卸载,15 部分卸载
-c <N> 512 上下文长度(tokens),日常 4096-8192,长文档 16384+
--jinja off 使用 Jinja 模板自动识别聊天格式,推荐开启
-fa on off 启用 Flash Attention(新版需显式指定 on/off/auto)
-n <N> -1(无限) 生成的最大 token 数,交互模式一般不设
--temp 0.80 采样温度:0 确定性,0.6 推荐,1.5+ 很随机
--top-k 40 Top-K 采样:候选词数量,20 推荐
--top-p 0.95 Top-P 核采样:累计概率阈值
--min-p 0.05 最小概率阈值:过滤低概率词
--cache-type-k f16 KV cache 量化类型:q8_0 体积减半,q4_0 体积 1/4
--cache-type-v f16 KV cache value 量化类型
--host / --port 127.0.0.1:8080 llama-server 监听地址和端口

3.2 采样策略详解

模型生成每个 token 时,会计算所有候选词的概率分布,采样策略决定从哪些词中挑选。理解这些参数有助于精确控制输出质量。

  • 温度(--temp:控制整体随机性的"旋钮"。0 表示每次选概率最高的(确定性),越高越随机。
  • Top-K(--top-k:只保留概率最高的 K 个候选词,其余丢弃。40 表示从前 40 个中选。
  • Top-P(--top-p:按累计概率截断,从高到低累加,达到 P 时停止。0.95 表示覆盖 95% 概率质量。
  • Top-K 和 Top-P 同时生效:候选词 = Top-K 集合 ∩ Top-P 集合。

推荐参数组合:

表6 采样参数推荐配置
场景 温度 Top-K Top-P
稳定输出 / 编程 0.3 5 0.85
日常聊天(推荐) 0.6 20 0.95
创意写作 0.9 50 0.98

3.3 系统提示词

系统提示词不会增加推理负担,只是预填充到上下文中,占用 -c 的 token 额度。建议控制在 500 字以内,太长模型容易"遗忘"前面的指令。

llama-cli -m <model> -ngl 99 -c 65536 --jinja -fa on \
  --system-prompt "你是专业的编程助手。回答简洁,用中文,代码用 markdown 代码块。"

4. 显存管理与上下文设置

12GB VRAM 是消费级显卡的典型配置,合理分配模型权重、KV Cache 和开销三者的关系,是在有限显存内运行大模型的核心技能。

4.1 推荐上下文设置

-c 设置模型的上下文长度(tokens)。设置原则:不超过模型训练上下文,尽量用满 VRAM。超出训练上下文时 llama.cpp 会自动启用 RoPE 插值扩展,但质量会下降。

表7 RTX 3080 Ti 12GB 推荐配置
模型 训练上下文 推荐 -c 推荐 -ngl 显存占用
Qwen3-Coder-30B-A3B Q4_K_M 256K 24576 25(混合) ~11 GB
Qwen3.6-35B-A3B Q4_K_M 256K 24576 20(混合) ~11.2 GB
Qwen3.5-9B Q8_0 256K 65536 99(全GPU) ~10.8 GB
Gemma 4 E4B IT Q8_0 128K 32768 99(全GPU) ~6.0 GB
Qwen3.6-27B Q4_K_M 256K 24576(server) 40(混合) ~11.5 GB

4.2 显存平衡原理

12GB VRAM 里三者的关系:

显存分配公式

总 VRAM = 模型权重(GPU 层部分)+ KV Cache + 开销(~0.5GB)

三者互相挤压,任何一个变大,另外的就要缩小。以 Qwen3-Coder-30B-A3B Q4_K_M 为例(48 层,每层约 0.36 GB):

表8 KV Cache 随上下文增长示例(Qwen3-Coder-30B-A3B,25 层在 GPU)
上下文 GPU 侧 KV Cache 总 VRAM 需求 12GB 是否足够
4096 ~0.4 GB ~9.9 GB 绰绰有余
24576 ~2.3 GB ~11.8 GB 刚好(推荐值)
32768 ~3.1 GB ~12.6 GB 超出
131072(128K) ~20 GB ~27 GB 远远不够
262144(256K) ~40 GB ~47 GB 远远不够

为什么无法跑到 256K

模型的 256K 上下文是架构上限,实际能跑多大取决于显存。跑满 256K 至少需要 ~47GB 显存(如 A100 80GB)。混合推理时 CPU 层的 KV cache 走 RAM(32GB 充裕),瓶颈在 GPU 侧。

4.3 KV Cache 量化

如需更大上下文,可开启 KV Cache 量化(--cache-type-k q8_0 --cache-type-v q8_0),将 KV Cache 从 fp16(2 字节)压缩到 Q8_0(1 字节),体积减半,质量损失极小。

表9 -ngl 与 -c 的平衡示例(Qwen3-Coder-30B-A3B Q4_K_M)
-ngl -c 模型权重 KV Cache 总计 12GB 够吗
25 4096 9.0 GB 0.4 GB ~9.9 GB 绰绰有余
25 24576 9.0 GB 2.3 GB ~11.8 GB 刚好(推荐)
25 32768 9.0 GB 3.1 GB ~12.6 GB 超了
30 24576 10.8 GB 2.3 GB ~13.6 GB 超了
20 32768 7.2 GB 3.1 GB ~10.8 GB 够但慢

调优取舍原则:

  1. 先确定 -ngl(尽量多用 GPU,留给 KV Cache ~2-2.5 GB)
  2. 再调 -c(在剩余空间内最大化上下文)
  3. 如果上下文不够,开启 KV Cache 量化

5. 混合推理与 GPU 层数调优

-ngl 控制 GPU 卸载层数。对于超过 VRAM 的大模型,应逐步增大直到接近 VRAM 上限。

调优步骤:

  1. 从较小值开始(如 -ngl 15),启动后用 nvidia-smi 查看显存占用
  2. 逐步增大 -ngl(每次 +5 ~ +10),观察显存变化
  3. 如果出现 cudaMalloc failed: out of memory,退回上一个能跑的值
表10 实测 GPU 层数配置(RTX 3080 Ti 12GB)
模型 -ngl -c 显存占用 说明
Qwen3-Coder-30B-A3B 20 4096 ~7.6 GB 太保守
Qwen3-Coder-30B-A3B 25 24576 ~11.8 GB 推荐值
Qwen3-Coder-30B-A3B 30 4096 OOM -ngl 太大
Qwen3.6-35B-A3B 20 24576 ~11.2 GB 推荐值
Qwen3.6-35B-A3B 25 4096 OOM -ngl 太大
Qwen3.6-27B 40 24576 ~11.5 GB 推荐值

6. 运行模式与性能实测

6.1 运行模式对比

表11 llama.cpp 运行模式对比
模式 加载行为 适用场景
llama-cli 交互 启动时加载 1 次,常驻显存直到退出 服务器直接调试
llama-cli -p 单次 每次执行都重新加载,推理完释放 脚本/批量调用
llama-server API 启动时加载 1 次,常驻显存持续服务 日常使用首选

llama-server 是连续推理的最佳选择:模型常驻显存,所有 API 请求共享同一加载的模型,零加载开销。

6.2 实测性能数据

测试条件:统一提示词(鸡兔同笼数学题),-c 4096 -n 200 --temp 0.6 --top-k 20 --top-p 0.95

表12 推理性能实测(RTX 3080 Ti 12GB)
模型 量化 大小 GPU 层 Prompt t/s Gen t/s 推荐场景
Qwen3-Coder-30B-A3B Q4_K_M 17.3 GB 25(混合) 92.5 45.1 编码 Agent/补全
Qwen3.6-35B-A3B UD-Q4_K_M 20.6 GB 20(混合) 68.7 29.3 通用大模型
Qwen3.5-9B Q8_0 8.9 GB 99(全GPU) 1137.2 81.2 高质量推理/编码
Gemma 4 E4B IT Q8_0 7.7 GB 99(全GPU) 358.9 111.8 日常聊天
Qwen3.6-27B Q4_K_M 16.0 GB 40(混合) 28.6 7.7 最高质量(较慢)

性能解读

  • "全 GPU"表示模型完全装入 12GB VRAM(-ngl 99
  • "混合"表示部分层在 GPU、部分在 CPU+RAM
  • Gen t/s 是实际使用体验的关键指标:>80 流畅,20-25 可接受,<5 明显卡顿

7. 运行示例

7.1 交互式对话

# 小模型(全 GPU)
llama-cli \
  -m ~/models/qwen3.5-9b/Qwen3.5-9B-Q8_0.gguf \
  -ngl 99 -c 65536 --jinja -fa on \
  --temp 0.6 --top-k 20 --top-p 0.95

# 大模型(混合推理)
llama-cli \
  -m ~/models/qwen3.6-35b-a3b/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf \
  -ngl 20 -c 24576 --jinja -fa on \
  --temp 0.6 --top-k 20 --top-p 0.95

7.2 API 服务部署

本地服务(Qwen3.5-9B):

llama-server \
  -m ~/models/qwen3.5-9b/Qwen3.5-9B-Q8_0.gguf \
  -ngl 99 -c 65536 --jinja -fa on \
  --host 127.0.0.1 --port 8080

Tailscale 网络共享(推荐):

nohup llama-server \
  -m ~/models/qwen3.5-9b/Qwen3.5-9B-Q8_0.gguf \
  -ngl 99 -c 65536 --jinja -fa on \
  --host 100.123.73.94 --port 8080 \
  --path ~/code/llama.cpp/tools/server/public \
  > /tmp/llama-server.log 2>&1 &

大模型 API 服务(Qwen3.6-35B-A3B):

llama-server \
  -m ~/models/qwen3.6-35b-a3b/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf \
  -ngl 20 -c 24576 --jinja -fa on \
  --host 100.123.73.94 --port 8080 \
  --path ~/code/llama.cpp/tools/server/public

验证 API:

# 查看可用模型
curl http://100.123.73.94:8080/v1/models

# 测试对话
curl http://100.123.73.94:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"Qwen3.5-9B-Q8_0.gguf","messages":[{"role":"user","content":"你好"}]}'

8. 服务管理与客户端接入

llama-server 不保存对话历史,每次请求都是无状态的。网页 UI 的对话保存在浏览器的 localStorage 中。

表13 llama-server 常用管理命令
操作 命令
停止服务 kill $(pgrep llama-server)
查看进程 pgrep llama-server
查看显存 nvidia-smi
查看日志 tail -f /tmp/llama-server.log
测试 API curl http://localhost:8080/v1/models

兼容客户端列表:

表14 OpenAI 兼容客户端
客户端 平台 用途
Cherry Studio macOS 通用聊天
Open WebUI Web (Docker) 类 ChatGPT 界面
Continue.dev VS Code / JetBrains 编码助手
LobeChat Web 聊天界面
Cline VS Code 自主编程 Agent

9. 主流大模型长上下文内存估算

本章基于各模型公开的架构参数,对主流大模型在 128K 和 256K 上下文长度下的显存需求进行系统估算,为硬件选型提供参考。

9.1 KV Cache 计算原理

Transformer 推理时,KV Cache 用于存储已计算 token 的 Key 和 Value 向量,避免重复计算。其大小与模型架构和上下文长度成正比。

标准 GQA 架构 KV Cache 公式

KV Cache = 2 × L × Nkv × dh × S × bytes

其中 L = 层数,Nkv = KV 头数,dh = 头维度,S = 序列长度,bytes = 精度字节数(FP16=2)

DeepSeek MLA 架构 KV Cache 公式

KV Cache = L × (dc + dhR) × S × bytes

其中 dc = KV 压缩维度(512),dhR = RoPE 头维度(64),通过低秩压缩大幅减少缓存

各模型架构参数汇总:

表15 主流模型架构参数
模型 层数 L KV 头数 头维度 注意力类型 压缩维度 每 token KV
Llama 3.1 8B 32 8 128 GQA - 128 KB
Llama 3.1 70B 80 8 128 GQA - 320 KB
Llama 3.1 405B 126 8 128 GQA - 516 KB
Qwen3-32B 64 8 128 GQA - 256 KB
Qwen3-235B-A22B 64 8 128 GQA - 256 KB
Qwen2.5 72B 80 8 128 GQA - 327 KB
DeepSeek V3 61 128 128 MLA 512 70 KB
DeepSeek V3.2 61 128 128 MLA 512 70 KB

9.2 各模型 128K/256K 显存估算

以下估算基于单请求、FP16/BF16 精度。模型权重量化到 INT4/Q4_K_M 后的文件大小也一并列出。

表16 128K 上下文显存估算(单请求)
模型 量化权重 权重显存 KV Cache 总显存 最低 GPU 要求
Llama 3.1 8B (Q4) ~4.5 GB ~5.5 GB 16.4 GB ~22 GB RTX 4090 24GB
Llama 3.1 70B (Q4) ~38 GB ~46 GB 41.0 GB ~88 GB 2× A100 80GB
Llama 3.1 405B (Q4) ~230 GB ~270 GB 66.0 GB ~340 GB 8× A100 80GB
Qwen3-32B (Q4) ~18 GB ~22 GB 32.8 GB ~55 GB 1× A100 80GB
Qwen3-235B-A22B (Q4) ~130 GB ~155 GB 32.8 GB ~190 GB 4× A100 80GB
Qwen2.5 72B (Q4) ~40 GB ~48 GB 41.9 GB ~91 GB 2× A100 80GB
DeepSeek V3 (Q4) ~350 GB ~410 GB 8.9 GB ~420 GB 8× A100 80GB
DeepSeek V3.2 (FP8) ~640 GB ~700 GB 8.9 GB ~710 GB 8× H100 80GB
表17 256K 上下文显存估算(单请求)
模型 量化权重 权重显存 KV Cache 总显存 最低 GPU 要求
Llama 3.1 8B (Q4) ~4.5 GB ~5.5 GB 32.8 GB ~39 GB A100 40GB
Llama 3.1 70B (Q4) ~38 GB ~46 GB 82.0 GB ~130 GB 2× A100 80GB
Llama 3.1 405B (Q4) ~230 GB ~270 GB 132 GB ~405 GB 8× A100 80GB(紧张)
Qwen3-32B (Q4) ~18 GB ~22 GB 65.5 GB ~88 GB 2× A100 80GB
Qwen3-235B-A22B (Q4) ~130 GB ~155 GB 65.5 GB ~223 GB 4× A100 80GB
Qwen2.5 72B (Q4) ~40 GB ~48 GB 83.9 GB ~134 GB 2× A100 80GB
DeepSeek V3 (Q4) ~350 GB ~410 GB 17.8 GB ~430 GB 8× H100 80GB

关键发现

  • DeepSeek 系列(MLA 架构)在长上下文场景具有绝对优势:128K 时 KV Cache 仅 ~9GB,而 Llama 405B 需要 ~66GB,差距约 7 倍
  • 消费级显卡(12-24GB)跑 128K 上下文极其困难,即使是 8B 小模型也需要 ~22GB 显存。
  • KV Cache 量化(Q8_0)可将上述 KV Cache 数值减半,是扩展上下文的最有效手段。

9.3 部署建议

根据不同场景的显存预算,给出以下硬件配置建议:

表18 长上下文部署硬件建议
上下文需求 模型规模 推荐 GPU 配置 预算参考
128K 7B-9B 量化 RTX 4090 24GB / A6000 48GB 消费级
128K 30B-35B 量化 1× A100 80GB 入门级数据中心
128K 70B+ 量化 2× A100 80GB(NVLink) 企业级
256K 7B-9B 量化 A100 40GB / A6000 48GB 消费/入门级
256K 30B-35B 量化 2× A100 80GB 企业级
256K 70B+ 量化 4× A100 80GB 高端企业级

显存计算经验法则

  • FP16 权重:参数数量(B)× 2 = VRAM(GB)
  • INT4/Q4 量化权重:参数数量(B)× 0.5 = VRAM(GB)
  • KV Cache(GQA,FP16):每 1K tokens 约 0.25-0.5 MB(因模型而异)
  • KV Cache(MLA,FP16):每 1K tokens 约 0.07 MB(DeepSeek 系列)
  • 开销:额外预留 1-2GB 用于激活值和框架缓冲
Logo

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

更多推荐