这一篇我们来聊点更实际的——怎么本地跑起来。
397B 参数的模型,哪怕只激活 17B,完整模型也有 807GB。听起来吓人,但实际上,得益于 Unsloth 的 Dynamic 2.0 量化技术,192GB 内存的 Mac 就能跑 3-bit 版本,256GB 的 Mac 就能跑 4-bit 版本。

Unsloth 其实是第一时间就发布了 Qwen3.5-397B-A17B 的 GGUF 格式文件(Qwen 给了 Unsloth day zero 访问权限),而且用的是他们家的 Dynamic 2.0 量化策略。
这个策略的核心和我上篇文章介绍的 AngelSlim 思路类似——不是所有层都用同一个精度。
关键层会自动提升到 8-bit 甚至 16-bit,不那么重要的层才用低精度。这样即使整体是 4-bit 量化,模型的推理能力也不会崩。
不同量化版本的资源需求:
量化版本 | 磁盘大小 | 最低内存 / 显存需求 | 适用场景 |
|---|---|---|---|
BF16 / FP16(原始) | ~807GB | 至少 800GB 显存 | 几乎不可能本地跑 |
8-bit | ~400GB | 512GB RAM / VRAM | 高端服务器 |
MXFP4 / UD-Q4_K_XL(4-bit) | ~214GB | 256GB Mac / RAM | 256GB M3 Ultra |
3-bit | ~150GB | 192GB RAM | 192GB Mac Studio |
UD-Q2_K_XL(2-bit) | ~100GB | 128GB RAM | 最低推荐配置 |
💡 Unsloth 官方推荐:至少用 2-bit Dynamic 量化(UD-Q2_K_XL),这是精度和体积的平衡点。
有几个关键信息:
llama.cpp 是目前跑 GGUF 模型最成熟的方案。Qwen3.5 本身就是混合架构(Gated Delta Networks + MoE),llama.cpp 已经做了支持。
# 安装依赖(Ubuntu/Debian)
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
# macOS 用户通常已有 Xcode Command Line Tools,直接 clone
git clone https://github.com/ggml-org/llama.cpp
# 编译(有 GPU 用 -DGGML_CUDA=ON,Mac 用 -DGGML_METAL=ON,纯 CPU 用 -DGGML_CUDA=OFF)
cmake llama.cpp -B llama.cpp/build \
-DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j \
--clean-first \
--target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
macOS M 系列芯片用户把
-DGGML_CUDA=ON换成-DGGML_METAL=ON即可利用 Metal GPU 加速。
# 先安装下载工具
pip install huggingface_hub hf_transfer
# 下载 4-bit 版本(约 214GB,适合 256GB Mac)
hf download unsloth/Qwen3.5-397B-A17B-GGUF \
--local-dir unsloth/Qwen3.5-397B-A17B-GGUF \
--include "*MXFP4_MOE*"
# 或者下载 2-bit 版本(约 100GB,适合 128GB Mac / 内存较小的机器)
hf download unsloth/Qwen3.5-397B-A17B-GGUF \
--local-dir unsloth/Qwen3.5-397B-A17B-GGUF \
--include "*UD-Q2_K_XL*"
Qwen3.5 支持两种模式:思考模式(Thinking) 和 快速模式(Non-Thinking),两者需要不同的采样参数。
思考模式(适合复杂推理、数学、编程):
export LLAMA_CACHE="unsloth/Qwen3.5-397B-A17B-GGUF"
./llama.cpp/llama-cli \
-hf unsloth/Qwen3.5-397B-A17B-GGUF:MXFP4_MOE \
--ctx-size 16384 \
--temp 0.6 \
--top-p 0.95 \
--top-k 20 \
--min-p 0.00
快速模式(适合日常对话、简单问答):
./llama.cpp/llama-cli \
-hf unsloth/Qwen3.5-397B-A17B-GGUF:MXFP4_MOE \
--ctx-size 16384 \
--temp 0.7 \
--top-p 0.8 \
--top-k 20 \
--min-p 0.00 \
--chat-template-kwargs "{\"enable_thinking\": false}"
📌 关键参数差异:思考模式用
temp=0.6, top_p=0.95,非思考模式用temp=0.7, top_p=0.8
其他常用参数调整:
--threads 32:CPU 线程数,根据你的 CPU 核心数调整--ctx-size 16384:上下文窗口,最大支持 262,144--n-gpu-layers 2:GPU 层卸载数,显卡内存不够就减小,纯 CPU 就移除如果你想把 Qwen3.5 部署成 OpenAI 兼容的 API 服务,用 llama-server 非常方便:
./llama.cpp/llama-server \
--model unsloth/Qwen3.5-397B-A17B-GGUF/MXFP4_MOE/Qwen3.5-397B-A17B-MXFP4_MOE-00001-of-00006.gguf \
--alias "unsloth/Qwen3.5-397B-A17B" \
--temp 0.6 \
--top-p 0.95 \
--ctx-size 16384 \
--top-k 20 \
--min-p 0.00 \
--port 8001
服务启动后,就可以用标准的 OpenAI Python 库调用:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8001/v1",
api_key="sk-no-key-required",
)
completion = client.chat.completions.create(
model="unsloth/Qwen3.5-397B-A17B",
messages=[
{"role": "user", "content": "用 Python 写一个快速排序"},
],
)
print(completion.choices[0].message.content)
这意味着你可以把 Qwen3.5 无缝接入所有支持 OpenAI API 格式的工具——Qwen Code、Claude Code、Cline、OpenClaw、OpenCode 等等。
如果你有靠谱的 GPU 集群,Hugging Face Transformers 提供了最简单的一行命令:
# 启动 OpenAI 兼容服务
transformers serve --model Qwen/Qwen3.5-397B-A17B --port 8000 --continuous-batching
# 或者直接命令行对话
transformers chat Qwen/Qwen3.5-397B-A17B
对于生产环境部署,SGLang 和 vLLM 是更专业的选择:
SGLang:
python -m sglang.launch_server \
--model-path Qwen/Qwen3.5-397B-A17B \
--port 8000 \
--tensor-parallel-size 8 \
--context-length 262144 \
--reasoning-parser qwen3
vLLM:
vllm serve Qwen/Qwen3.5-397B-A17B \
--port 8000 \
--tensor-parallel-size 8 \
--max-model-len 262144 \
--reasoning-parser qwen3
⚠️ 这两个方案都需要多卡(至少 8 块 A100 / H100),
--tensor-parallel-size 8就是 8 卡张量并行。
Mac 用户还有一个选择——MLX 框架:
# 纯文本推理
pip install mlx-lm
mlx_lm.chat --model Qwen/Qwen3.5-397B-A17B
# 视觉 + 文本推理(原生多模态)
pip install mlx-vlm
mlx_vlm.chat --model Qwen/Qwen3.5-397B-A17B
Qwen3.5 最大的亮点之一就是 Agent 能力。本地部署后,通过 llama-server 的 OpenAI 兼容 API 就可以直接使用工具调用:
import json
from openai import OpenAI
# 定义工具
tools = [
{
"type": "function",
"function": {
"name": "add_numbers",
"description": "Add two numbers together",
"parameters": {
"type": "object",
"properties": {
"a": {"type": "number", "description": "First number"},
"b": {"type": "number", "description": "Second number"},
},
"required": ["a", "b"],
},
},
},
]
# 工具函数映射
def add_numbers(a, b):
return a + b
MAP_FN = {"add_numbers": add_numbers}
# 调用
client = OpenAI(
base_url="http://127.0.0.1:8001/v1",
api_key="sk-no-key-required",
)
response = client.chat.completions.create(
model="unsloth/Qwen3.5-397B-A17B",
messages=[{"role": "user", "content": "123456 加上 789012 等于多少?"}],
tools=tools,
tool_choice="auto",
)
# 处理工具调用
for tool_call in response.choices[0].message.tool_calls:
fn_name = tool_call.function.name
args = json.loads(tool_call.function.arguments)
result = MAP_FN[fn_name](**args)
print(f"工具调用: {fn_name}({args}) = {result}")
参数 | 思考模式(Thinking) | 快速模式(Non-Thinking) |
|---|---|---|
temperature | 0.6 | 0.7 |
top_p | 0.95 | 0.8 |
top_k | 20 | 20 |
min_p | 0 | 0 |
repeat_penalty | 1.0(关闭) | 1.0(关闭) |
最大上下文 | 262,144 | 262,144 |
建议输出长度 | 32,768 tokens | 32,768 tokens |
场景 | 推荐方案 | 硬件要求 |
|---|---|---|
Mac 用户尝鲜 | llama.cpp + GGUF(2-bit 或 3-bit) | 128-192GB 统一内存 |
Mac 高配用户 | llama.cpp + MXFP4 | 256GB M3/M4 Ultra |
个人 GPU 服务器 | llama.cpp + llama-server | 1×24GB GPU + 256GB RAM |
生产环境 | SGLang / vLLM | 8×A100 / H100 |
纯 CPU | llama.cpp(去掉 GPU 参数) | 256GB+ RAM,速度较慢 |
能在 MacBook 上跑一个和 GPT-5.2 正面对抗的模型,放在两年前简直不敢想。虽然 397B 的模型跑起来还是需要不小的投入,但 Unsloth Dynamic 2.0 量化 + MoE 架构的稀疏激活,已经把门槛拉到了"一台高配 Mac"的水平。
对了,如果你之前跑过 Qwen3 的 GGUF,这次升级也很简单——下载新的 GGUF 文件,启动命令几乎不变,模板都是兼容的。
制作不易,如果这篇文章觉得对你有用,可否点个关注。给我个三连击:点赞、转发和在看。若可以再给我加个🌟,谢谢你看我的文章,我们下篇再见!