Qwen3 本地部署实操:单机跑通 8B 模型
【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5
Qwen3 是阿里云 Qwen 团队开源的大语言模型系列。本文覆盖用 Ollama 和 llama.cpp 两条路线在单机上部署 Qwen3-8B 的完整过程,完成后你会得到一个离线可用的私有推理服务,对话与 OpenAI 兼容 API 都能调用。
跑之前的 3 个硬条件
| 项目 | 要求 |
|---|---|
| CPU 架构 | x86_64(建议支持 AVX2)或 ARM64(Apple Silicon、骁龙) |
| 最低内存 | 8GB(Q4_K_M 量化);Q8_0 建议 16GB |
| 磁盘空间 | 至少 10GB 可用(模型文件 + KV 缓存) |
| 是否需要 GPU | 非必须,NVIDIA CUDA 或 Apple Metal 可加速 |
内存或显存不足时进程会被直接 OOM 杀掉,没有降级机制。
主路径:Ollama 部署
推荐首选。全程不涉及编译工具链,三步进入可交互对话。
第一步:安装并启动常驻服务
Linux 按官网页面给出一键安装脚本在终端执行即可,macOS 与 Windows 从官网下载对应安装包。装完后启动常驻服务:
# 确认版本(官方建议 0.9.0 及以上) ollama --version # 启动推理服务,此终端需保持运行 ollama serve预期:日志出现Listening on 127.0.0.1:11434,说明服务监听在11434端口,后续命令在新终端执行。
第二步:拉取 8B 模型
# 拉取 Qwen3-8B 默认量化版本(Q4_K_M,约 5GB,耗时取决于带宽) ollama pull qwen3:8b预期:进度条走完,结束时打印模型摘要值(digest)。
第三步:进入对话并调大上下文
# 启动交互式对话 ollama run qwen3:8b进入对话界面后先调整参数。Ollama 默认num_ctx只有 2048,对 Qwen3 明显偏小,长回答会中途截断:
# 在对话提示符下逐行执行,抬升上下文与生成长度 /set parameter num_ctx 40960 /set parameter num_predict 32768预期:每条命令回显parameter 'num_ctx' set to 40960之类的确认信息,之后输入中文即可问答。若只想要 API 服务而不要交互,此步可跳过。
备选路径:llama.cpp 编译路线
llama.cpp 是纯 C/C++ 推理实现,参数旋钮最完整,官方要求 b5401 及以上版本才完整支持 Qwen3。
第一步:获取 llama-cli 与 llama-server
包管理器安装预编译二进制,或下载官方 release 的预编译包解压。以 macOS Homebrew 为例:
# 安装 llama.cpp(含 llama-cli 与 llama-server) brew install llama.cpp # 验证安装 llama-cli --version预期:打印版本号与构建信息。注意预编译二进制未针对你的 CPU 做编译优化,且 Linux 的包管理器版本不带 GPU 支持,对性能敏感建议自行编译。
第二步:下载 GGUF 模型文件
# 安装下载工具 pip install huggingface_hub # 下载 Qwen3-8B 量化文件(Q8_0 约 8.5GB,Q4_K_M 约 4.7GB) huggingface-cli download Qwen/Qwen3-8B-GGUF qwen3-8b-q8_0.gguf --local-dir .预期:当前目录出现qwen3-8b-q8_0.gguf。
第三步:交互推理
# --jinja 使用 GGUF 内置聊天模板;--no-context-shift 关闭旋转上下文 ./llama-cli -m ./qwen3-8b-q8_0.gguf --jinja --color -ngl 99 -fa \ --temp 0.6 --top-k 20 --top-p 0.95 -c 40960 -n 32768 --no-context-shift无 GPU 的机器删掉-ngl 99 -fa两个参数。预期:模型加载后(约 10 秒)进入终端对话,Ctrl+C 退出。
第四步:启动 API 服务
# 默认监听 8080 端口,Web 前端与 OpenAI 兼容 API 同时可用 ./llama-server -m ./qwen3-8b-q8_0.gguf --jinja -ngl 99 -fa \ --temp 0.6 --top-k 20 --top-p 0.95 -c 40960 -n 32768 --no-context-shift --port 8080预期:日志出现server is listening on http://0.0.0.0:8080,浏览器访问http://localhost:8080有简单聊天前端,API 在http://localhost:8080/v1。有 NVIDIA GPU、需要对外提供多客户端服务、或要精细控制采样与显存分配时,值得切到这条路。
验证:30 秒确认它真的在工作
任选一条路线,发一个最小对话请求:
# 对 llama-server 发一条最小补全请求;Ollama 用户把地址换成 http://localhost:11434/v1 curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model": "Qwen3-8B", "messages": [{"role": "user", "content": "用一句话打个招呼"}]}'预期:几秒内返回 JSON,choices[0].message.content里是模型回复。浏览器打开http://localhost:8080也能直接对话,界面效果如下:
踩坑速查
- 回答中途截断或内容重复→ 默认上下文仅 2048 token → 在 Ollama 对话内执行
/set parameter num_ctx 40960,或给 llama.cpp 命令加-c 40960。 - 启动报 CUDA out of memory 或进程被杀→ 8B Q8_0 连 KV 缓存共需约 10GB 显存 → 换
qwen3-8b-q4_k_m.gguf,或调低-ngl把部分层放回 CPU。 - 模型自重复、生成停不下来→ 采样约束不足 → 追加
--presence-penalty 2.0后重启。
资源占用与调优参数
| 参数 | 所在路线 | 含义 | 推荐值 |
|---|---|---|---|
| 量化档位 | 模型文件 | Q8_0 权重约 8.5GB,Q4_K_M 约 4.7GB | 显存紧张选 Q4_K_M |
-ngl | llama.cpp | 卸载到 GPU 的层数,99 为全部 | 有 GPU 设 99,无 GPU 删除 |
-t | llama.cpp | CPU 线程数 | 物理核心数 |
-c/num_ctx | 两者 | 最大上下文长度,直接决定 KV 缓存占用 | 40960 |
-n/num_predict | 两者 | 单次最大生成长度 | 32768 |
-fa | llama.cpp | 启用 Flash Attention | GPU 推理开启 |
两条建议:内存紧张时优先降量化档位,其次压缩-c——上下文长度对内存的放大作用大于模型本身;速度瓶颈在多客户端并发时,单卡场景先确认-fa已开,多卡用-dev cuda0,cuda1 -sm row做按行切分。
以上流程以 Qwen3-8B 单机为边界,Ollama 适合个人对话,llama.cpp 适合需要 API 服务或 GPU 调优的场景。更大的 30B-A3B、235B 模型需要多卡或集群,部署方式见 docs/source/deployment/;各模型的速度与内存基线数据在 docs/source/getting_started/speed_benchmark.md,更细的参数说明见 docs/source/run_locally/。
【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考