返回首页
🤖 本地 AI · 完全指南

本地 LLM 从原理到实战

量化机制 · GPU分层 · KV缓存 · 运行框架全对比 · IDE集成 · RAG配置——以 Qwen3.6-27B 为例,手把手演示从零到生产可用的全过程。

更新 2026年4月
模型 Qwen3.6-27B
适合 8GB+ 显存 · 32GB 内存
系统 Linux · Windows · macOS
Section 01 · Frameworks
运行框架全对比
这些是"播放器"——模型是文件,框架决定如何加载、推理、提供接口。选型直接决定体验上限。
框架 定位 界面 GPU分层 API服务 多模态 推荐场景
Ollama 一键本地推理引擎 CLI ✓ 自动 ✓ 内置 部分 首选脚本/开发
LM Studio 桌面 GUI + 模型商店 ✓ GUI ✓ 自动 ✓ 内置 日常对话探索模型
Open WebUI Web 版 ChatGPT 替代 ✓ Web 依赖Ollama 团队共享RAG
llama.cpp 底层 C++ 推理引擎 CLI 手动 -ngl 需自建 llava 极致优化嵌入式
vLLM 高并发推理服务框架 CLI 需全量VRAM ✓ 高性能 生产部署多用户
Jan 本地 ChatGPT 客户端 ✓ GUI ✓ 自动 部分 部分 入门用户对话
Continue.dev IDE 编程助手插件 ✓ IDE侧边栏 依赖Ollama 部分 代码补全Cursor替代
Ollama
ollama.com · 开源 · Apache 2.0
Terminal — zsh
$ ollama run qwen3.6:27b
pulling manifest ████████████ 100%
9e58b26a...
16.8 GB
✓ model loaded · 8GB GPU + 10GB RAM
>>> 解释一下 MoE 架构
MoE(混合专家)是一种稀疏激活架构...
Open WebUI
openwebui.com · 开源 · Docker部署
localhost:3000 ● 连接正常
💬
📂
🔧
👤
Qwen3.6-27B ▾
新建对话 +
你好!我是 Qwen3.6-27B,有什么可以帮你的吗?
帮我写一个快速排序的 Python 实现
好的,这是快速排序的实现:def quicksort...
输入消息... (支持 # 上传文档)
LM Studio
lmstudio.ai · 免费 · Win/Mac/Linux
LM Studio 3.x
已加载
Qwen3.6-27B
本地模型
Qwen3-8B
Llama-3.3-70B
设置
系统提示词
你是一个专业的 AI 编程助手...
请问有什么需要帮助?
帮我优化这段代码
Temperature: 0.7 Context: 8192
Continue.dev
continue.dev · VS Code / JetBrains 插件
VS Code — main.py
def binary_search(arr, target):
# TODO: implement
lo, hi = 0, len(arr) - 1
while lo <= hi:
mid = (lo + hi) // 2
...
Continue · Qwen3.6
检测到 binary_search 函数,帮你补全逻辑
/@binary_search 优化边界
已更新:lo=0, hi=len-1,mid溢出保护...
Cmd+L 选中代码对话...
Section 02 · Internals
底层原理解析
搞懂这五个概念,你就能预测性能瓶颈、合理配置参数,而不是碰运气。
🗂️
GGUF 文件格式
GGUF(GGML Unified Format)是 llama.cpp 定义的二进制格式,2023年替代旧版 GGML,解决了向后兼容和元数据问题。

文件结构:GGUF(4字节魔数)→ 版本号 → 张量数量 → 键值元数据(模型名/架构/超参数)→ 张量索引 → 量化后权重数据。

关键优势:单文件包含所有信息,无需外部配置;支持 mmap 内存映射,按需加载,不用全部读入内存;量化信息嵌入文件,框架自动识别精度。
🔢
量化原理(Quantization)
模型权重本质是浮点数矩阵。FP32(32位)→ FP16(16位)→ INT8(8位)→ INT4(4位),每次减半存储空间。

Q4_K_M 的含义:Q=量化,4=4位,K=K-quants(分组量化,同组共享缩放因子),M=Medium(平衡质量与大小)。

4位量化示意(1个权重 = 4bit):
1
0
1
1
= 1个权重值
S
S
S
S
S
S
S
S
= 缩放因子(FP16)
质量损失:Q4 ≈ 原始模型95-97%性能,体积缩小75%。
🎛️
GPU 分层机制(Layer Offloading)
Transformer 模型由 N 个相同的 Decoder 层堆叠而成。llama.cpp 可以把任意数量的层放到 GPU 显存,剩余层放 CPU 内存。

Qwen3.6-27B 共 64层,每层 Q4_K_M 约 262MB:
8GB 显存
≈ 28层 GPU
剩余RAM
36层 CPU
瓶颈在哪? GPU层走显存带宽(RTX 4070 ≈ 504 GB/s),CPU层走内存带宽(DDR5 ≈ 60-80 GB/s),所以越多层在GPU越快。
💾
KV Cache 与上下文窗口
每生成一个新 token,模型需要"看"所有之前的 token(Attention 机制)。KV Cache 把每个 token 的 Key/Value 矩阵缓存起来,避免重复计算。

缓存示意(绿=已缓存,橙=新 token):
MoE
KV Cache 大小 ≈ 2 × layers × heads × head_dim × context_len × fp16
Qwen3.6-27B 每 token 约 256 KB(FP16)。KV Cache 和模型权重分开占用显存,随上下文线性增长。

⚠️ Ollama 默认只给 2048 tokens——而 Qwen3.6-27B 训练支持 262K,差了 128 倍。默认 2048 只约 3,000 中文字 / 60 行代码,粘贴一篇新闻就溢出。Ollama 静默截断不报错,模型基于不完整信息回答而你不知道。解决:Modelfile 加 PARAMETER num_ctx 32768(见 §6 教程)。
KV Cache 显存开销(Qwen3.6-27B Q4_K_M 实测):
上下文 KV Cache 总 VRAM 24GB? ≈ 中文 ≈ 代码
2K (Ollama默认)~0.1 GB16.2 GB~3,000 字~60 行
8K~0.5 GB16.6 GB~12,000 字~240 行
32K1.96 GB18.1 GB~48,000 字~960 行
64K3.96 GB20.1 GB✅ 刚好~96,000 字 ≈1本短篇~1,900 行
131K7.9 GB24.0 GB⚠️ 打满~196,000 字 ≈1本长篇~3,900 行
262K16.9 GB33.0 GB❌ 超出~393,000 字 ≈2-3本书~7,800 行
换算:1 token ≈ 1.5 中文字 ≈ 0.75 英文单词 ≈ 3-4 代码字符(Qwen 分词器对中文高效)
各设备推荐上下文上限(Qwen3.6-27B Q4_K_M):
设备 可用显存 推荐 num_ctx 首字延迟 生成速度
8GB GPU (RTX 3060/4070 Laptop)~7 GB4K-8K ⚠️<1s~30 tok/s
RTX 5090 D v2 24GB~23 GB131K ✅~2 min~44 tok/s
RTX 5090 D v2(日常推荐)~23 GB32K ✅~14s~54 tok/s
RX 7900 XTX 24GB~23 GB~86K~2.4 min~28 tok/s
Y9000P RTX5090 移动~22 GB~65K~1.6 min~29 tok/s
MacBook Pro M5 Max 128GB~120 GB262K+~7+ min~38 tok/s
Mac Studio M3 Ultra 256GB~240 GB262K 随便用~5 min~51 tok/s
DGX Spark 128GB~120 GB262K(但很慢)~24+ min~17 tok/s
💡 KV Cache 量化省钱大招:把 KV Cache 从 FP16 量化到 8-bit(llama.cpp:--cache-type-k q8_0 --cache-type-v q8_0),显存占用直接砍半。32K 从 1.96 GB → 0.98 GB,131K 从 7.9 GB → 3.95 GB。Qwen 3.6 系列对 KV 量化容忍度很高,Q8_0 几乎无感,推荐所有用户开启。
上下文溢出后果:
场景 溢出行为 你感知到什么
Ollama 超 num_ctx静默截断,最早 token 被丢模型"忘记"开头,没有任何报错
llama.cpp 显存不够OOM 崩溃 / offload CPU闪退,或速度暴跌 10-50×
显存刚好打满勉强运行,显存竞争随机卡顿、黑屏、系统卡死
超过模型训练上下文能运行但质量退化幻觉、重复、遗忘中间内容
多轮对话越聊越慢KV Cache 累积首字延迟从 1s 涨到几十秒
实用建议:日常聊天设 8K-16K;代码辅助设 32K;长文档分析设 64K-131K;RAG/Agent 设 64K+。绝对不要在 24GB 显卡上对 27B 模型设 262K——必崩。
⚙️
Token 生成的两个阶段
Prefill(预填充阶段)
处理你输入的所有提示词,并行计算所有 token 的 KV Cache。这个阶段 GPU 利用率接近100%,第一个输出 token 之前的延迟就在这里。

输入越长 → Prefill 越慢。对于"系统提示词很长"的场景,可以用 prompt caching 优化。
输入Tokens
并行Attention
写入KV Cache
第1个Token
Decode(解码阶段)
逐个生成输出 token,每次只处理1个 token,但需要读取全部 KV Cache。这个阶段受内存带宽限制,而非算力。

所以 RTX 4070(504 GB/s)比同算力的老显卡快很多——它们内存带宽更宽。显存不足时,CPU 层的低带宽(60 GB/s)拖累解码速度。
上一Token
读KV Cache
Softmax采样
新Token
Section 03 · Formats
模型文件格式对比
格式决定谁能读、怎么量化、显存如何分配——选错格式白下载。
格式 读取工具 量化 CPU+GPU混跑 Qwen3.6-27B大小 适合场景
.gguf Ollama · LM Studio · llama.cpp · Jan Q2~Q8全系列 ✓ 原生支持 16.8 GB(Q4_K_M) 本地个人部署 推荐
.safetensors transformers · vLLM · SGLang BF16/FP16原始 ✗ 需全量VRAM 55.6 GB(BF16) 多卡服务端 · 微调训练
GPTQ/AWQ AutoGPTQ · vLLM · AutoAWQ INT4/INT8 ✗ 仅GPU ~14 GB(INT4 GPTQ) 单卡高速GPU推理
.gguf(EXL2) ExLlamaV2 · TabbyAPI 2~8 bit混合 ✗ 仅GPU ~12 GB(4bpw) 单卡极致速度
.mlx MLX(Apple Silicon专属) 4/8 bit ✓ 统一内存 ~17 GB(4bit) Mac M 系列芯片
💡
GGUF 是本地部署的默认选择。它是唯一能在 8GB 显存 + 32GB 内存混跑 27B 模型的格式。safetensors 需要 56GB 显存才能装下同尺寸模型。
Section 04 · Quantization
量化精度选择指南
Qwen3.6-27B 各精度版本对比——质量 vs 文件大小 vs 所需硬件。
量化名称 位宽 文件大小 输出质量 最低所需总内存 推荐场景
Q2_K ~2.5 bit ~9.5 GB
12 GB RAM 极度内存受限,质量明显下降
Q4_K_S 4 bit ~15.6 GB
20 GB 内存偏紧时的Q4
Q4_K_M ★ 4 bit 16.8 GB
20 GB 最推荐:最佳质量/大小比
Q5_K_M 5 bit 19.5 GB
24 GB 内存充裕时比Q4质量明显更好
Q6_K 6 bit 22.5 GB
28 GB 接近 Q8 质量,体积小很多
Q8_0 8 bit 28.6 GB
34 GB 几乎无损,需要 32GB+ 内存
⚠️
RTX 4070 8GB + 32GB 内存用户:Q4_K_M(16.8GB),Ollama 自动分配约 28 层到 GPU,其余层放内存。预期速度 5-10 tok/s。Q5 以上超过内存+显存总分配限制会慢很多。
Section 05 · Flowchart
从零到运行——决策流程图
按图索骥,三分钟找到你的最优路径。
① 明确目标用途 对话 / 编程 / RAG / 服务端 / 实验 ② 检查显存大小 nvidia-smi 或 任务管理器 <16 GB ≥ 24 GB GGUF Q4_K_M GPU+CPU 混合推理 GGUF Q6~Q8 全GPU装载 ③ 选择运行框架 按用途选 Ollama / LM Studio / vLLM Ollama 开发/脚本 LM Studio 日常对话 vLLM 多用户服务 ④ 下载模型运行 ollama run qwen3.6:27b 🎉 本地推理启动 数据不出机器 · 无需联网 · 完全私有 速度参考 全 GPU:20+ tok/s 混合推理:5-10 t/s 纯 CPU:0.5-2 t/s 大小参考 Q2_K:9.5 GB Q4_K_M:16.8 GB Q6_K:22.5 GB
Section 06 · Tutorial
快速上手:Qwen3.6-27B + Ollama
RTX 4070 8G + 32G 内存配置,从安装到对话约 15 分钟(不含下载时间)。
1
安装 Ollama
支持 Linux / macOS / Windows,一条命令搞定。Windows 可直接下载安装包。
Linux / macOS
$ curl -fsSL https://ollama.com/install.sh | sh # Windows: winget install Ollama.Ollama # 安装后自动以服务形式运行,监听 localhost:11434
验证安装
$ ollama --version ollama version 0.6.x $ curl http://localhost:11434 Ollama is running
2
下载并运行 Qwen3.6-27B
首次运行自动拉取 Q4_K_M 版本(~16.8 GB),需网络畅通或代理。
Terminal
# 直接运行(自动下载) $ ollama run qwen3.6:27b # 或先拉取,稍后再运行 $ ollama pull qwen3.6:27b pulling 9e58b26a... ████████████ 100% 16.8 GB success # 查看所有已下载模型 $ ollama list NAME SIZE MODIFIED qwen3.6:27b 16.8GB 1 minute ago
3
验证 GPU 分层(8GB 显存必看)
查看推理状态
$ ollama ps NAME ID SIZE PROCESSOR UNTIL qwen3.6:27b a1b2c3 16.8GB 44%/56% GPU forever # 44% GPU = ~7.4 GB显存 56% CPU = ~9.4 GB内存 # 监控 GPU 实时占用 $ watch -n 1 nvidia-smi | GPU Temp Perf Pwr:Usage | Memory-Usage | | 0 58C P0 85W | 7480MiB / 8192MiB |
⚠️
如果 PROCESSOR 显示 100% CPU,说明 GPU 未被识别。Linux 需确认 nvidia-smi 正常;Windows 更新 NVIDIA 驱动。Ollama 日志在 journalctl -u ollama -f(Linux)。
4
自定义 Modelfile(进阶配置)
Modelfile 是 Ollama 的模型配置文件,可以设置系统提示词、温度、上下文长度等。
~/Modelfile
FROM qwen3.6:27b # 设置系统提示词 SYSTEM """ 你是一个专业的 Python 编程助手。 回答简洁,优先给出可运行代码。 遇到不确定的问题直接说不知道。 """ # 调整参数 PARAMETER temperature 0.3 # 更确定性(0=确定 1=创意) PARAMETER num_ctx 8192 # 上下文长度(影响显存) PARAMETER repeat_penalty 1.1 # 减少重复输出
创建自定义模型
$ ollama create my-coder -f ./Modelfile transferring model data ✓ $ ollama run my-coder >>> 写一个二分查找
5
作为 API 调用(OpenAI 兼容)
Ollama 内置 OpenAI 兼容 API,所有支持 OpenAI 的工具(Cursor、Continue、LangChain)都可以直接接入。
Python — openai SDK
from openai import OpenAI client = OpenAI( base_url="http://localhost:11434/v1", api_key="ollama" # 任意字符串 ) stream = client.chat.completions.create( model="qwen3.6:27b", messages=[{"role":"user","content":"解释 KV Cache"}], stream=True ) for chunk in stream: print(chunk.choices[0].delta.content, end="", flush=True)
Section 07 · Applications
具体应用场景
四个高频使用场景,每个附完整配置命令。
💻
IDE 编程助手(Continue.dev)
VS Code · JetBrains · 替代 GitHub Copilot
Continue 是开源 AI 代码助手插件,配置 Ollama 后端后,支持代码补全、对话、代码解释、重构——完全本地,零费用。
// ~/.continue/config.json { "models": [{ "title": "Qwen3.6-27B", "provider": "ollama", "model": "qwen3.6:27b" }], "tabAutocompleteModel": { "title": "Qwen3.6 Autocomplete", "provider": "ollama", "model": "qwen3.6:27b" } }
💡
Tab 补全建议用轻量模型如 qwen3:8b,对话用 27B,配合 contextLength: 4096 减少显存占用。
📚
本地 RAG(文档问答)
Open WebUI · LangChain · 完全离线
把 PDF、Word、代码库"喂"给模型,让它基于你的私有文档回答问题。Open WebUI 内置 RAG,上传文档即用。
# 方案A: Open WebUI 内置 RAG(推荐) $ docker run -d --network=host \ -v open-webui:/app/backend/data \ ghcr.io/open-webui/open-webui:main # 访问 localhost:3000 → 上传 PDF → 对话 # 方案B: Python LangChain $ pip install langchain-ollama chromadb pypdf from langchain_ollama import OllamaEmbeddings, ChatOllama from langchain.vectorstores import Chroma from langchain.document_loaders import PyPDFLoader loader = PyPDFLoader("doc.pdf") docs = loader.load_and_split() db = Chroma.from_documents(docs, OllamaEmbeddings( model="qwen3.6:27b"))
📊
性能基准测试
测量你的真实 tok/s 和延迟
不要相信别人的速度测试——硬件不同、量化不同、上下文长度不同,结果差几倍很正常。用以下命令测你自己的配置。
# Ollama 内置 benchmark $ ollama run qwen3.6:27b \ --verbose \ "写一首关于量子力学的五言律诗" ## 输出底部会显示: prompt eval rate: 287 tokens/s ← prefill速度 eval rate: 7.3 tokens/s ← decode速度 # llama-bench 更专业的基准 $ ./llama-bench -m qwen3.6-27b-q4.gguf \ --n-gpu-layers 30 \ -p 512 -n 128 # 512 prefill, 128 decode tokens
💡
Prefill 速度(prompt eval rate)通常比 decode 快10倍以上。你体验到的"打字速度"是 decode rate,即 eval rate
🗂️
多模型管理与切换
Ollama 命令速查
本地跑多个模型时,Ollama 可以同时保留多个模型在内存中(显存允许),快速切换无需重新加载。
# 常用管理命令 $ ollama list # 查看所有本地模型 $ ollama ps # 查看运行中的模型 $ ollama rm qwen3.6:27b # 删除模型释放空间 $ ollama show qwen3.6:27b # 查看模型详细信息 # 设置显存并发(同时加载多个模型) OLLAMA_MAX_LOADED_MODELS=2 ollama serve # 设置保持在内存时间(默认 5min) OLLAMA_KEEP_ALIVE=30m ollama serve # 下载特定量化版本 $ ollama pull qwen3.6:27b-q5_K_M
🎯
LoRA 微调基础
Unsloth · 消费级 GPU 可跑
不满足于预训练模型?用 LoRA 在你的数据集上微调,只更新少量参数(<1%),8GB 显存也能微调 7B 模型。
$ pip install unsloth from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name = "Qwen/Qwen3-8B", # 用8B微调更实际 max_seq_length = 2048, load_in_4bit = True, # 4bit量化省显存 ) # 添加 LoRA 层 model = FastLanguageModel.get_peft_model( model, r = 16, # LoRA 秩,越大越强 lora_alpha = 16, target_modules = ["q_proj", "v_proj"] )
💡
微调后导出 GGUF:model.save_pretrained_gguf("model", tokenizer, quantization_method="q4_k_m"),直接用 Ollama 加载。
🚀
生产部署(vLLM)
多用户 · 高并发 · OpenAI 兼容
有多张显卡或需要服务多个用户时,vLLM 的 PagedAttention 技术让吞吐量比 Ollama 高 5-10 倍。需要把模型全装进显存。
$ pip install vllm $ vllm serve Qwen/Qwen3.6-27B \ --tensor-parallel-size 2 \ # 2张显卡并行 --max-model-len 32768 \ --port 8000 \ --api-key "your-secret" # 调用(与 OpenAI 完全兼容) $ curl http://localhost:8000/v1/chat/completions \ -H "Authorization: Bearer your-secret" \ -d '{"model":"Qwen/Qwen3.6-27B","messages":[...]}'
⚠️
vLLM 需要完整 VRAM 装载,2×24GB = 48GB 显存才能跑 Qwen3.6-27B BF16。单 8GB 显卡无法使用 vLLM 跑 27B 模型。
Section 08 · Hardware
显存 → 推荐配置速查
按显卡型号找到你的最优模型和量化组合。
GPU 显存 推荐模型+量化 框架 预期速度 推荐 num_ctx
RTX 3050 / 4060 4 GB Qwen3 4B Q8 · Qwen3 8B Q4(混跑 16G内存) Ollama 15-25 tok/s 4096
RTX 4070 / 3070 8 GB Qwen3.6-27B Q4_K_M(8G显存+12G内存) Ollama 5-10 tok/s 8192 ⚠️
RTX 4070 Ti / 3090 12-16 GB Qwen3.6-27B Q6_K · Qwen3.6-35B Q4(混跑) Ollama / LM Studio 10-18 tok/s 16384
RTX 4090 24 GB Qwen3.6-27B Q8(全装)· Qwen3 32B Q4 Ollama / vLLM 25-40 tok/s 32768 ✅
2× RTX 4090 / A100 48+ GB Qwen3.6-397B Q4 · Qwen3.6-27B BF16 vLLM(tensor parallel) 60-120 tok/s 32768 ✅
Apple M3/M4 Max 统一内存 36-128G Qwen3.6-27B Q6_K · 任意 Q8(Metal加速) Ollama / MLX 15-30 tok/s 32768 ✅
💡
纯 CPU 能跑吗?可以,但速度约 0.5-2 tok/s(DDR5 内存带宽 ~60 GB/s vs RTX 4070 的 504 GB/s)。32B Q4 模型需要 20+ GB 内存。Ollama 会自动 fallback 到 CPU,无需特别配置。