在个人笔记本上运行 Qwen 大语言模型
在个人笔记本上运行 Qwen 大语言模型
本文记录如何在个人笔记本电脑上部署并运行 Qwen 系列大模型,实现本地 AI 对话服务。
本次部署使用 text-generation-webui 作为本地大模型运行框架,通过 GGUF 量化模型 在显存有限的设备上运行。
一、使用环境与工具
硬件环境
- 显卡:NVIDIA RTX 3060 Laptop GPU
- 显存:6GB VRAM
由于笔记本显存有限,因此选择经过量化的 GGUF 格式模型,以降低显存占用。
环境管理工具
使用 Miniconda 管理 Python 环境。
下载地址:
https://anaconda.com/api/installers/Miniconda3-latest-Windows-x86_64.exe
安装完成后建议勾选添加环境变量,或者使用 Miniconda Prompt 运行后续命令。
模型选择
本次使用模型:
Qwen2.5-7B-Instruct-Q5_K_M(GGUF)
模型下载地址:
https://huggingface.co/bartowski/Qwen2.5-7B-Instruct-GGUF/tree/main
选择该模型的原因:
- Qwen2.5-7B-Instruct 具有较好的中文理解和代码能力;
- Q5_K_M 量化版本相比 FP16 模型显著降低显存占用;
- GGUF 格式可以通过 llama.cpp 后端高效运行。
二、部署 text-generation-webui
1. 克隆项目
打开终端:
1 | git clone https://github.com/oobabooga/text-generation-webui |
2. 创建 Python 环境
安装 Miniconda 后,创建独立运行环境:
1 | conda create -n textgen python=3.11 |
3. 安装依赖
执行:
1 | pip install -r requirements/portable/requirements.txt --upgrade |
等待依赖安装完成。
三、配置启动脚本
在 text-generation-webui 根目录创建:
1 | start.bat |
内容如下:
1 | echo "Starting text-generation-webui" |
参数说明:
| 参数 | 作用 |
|---|---|
--api |
开启 OpenAI API 兼容接口 |
--api-key |
设置 API 密钥 |
--auto-launch |
启动后自动打开网页界面 |
--portable |
使用便携模式运行 |
其中:
1 | --api-key 123456 |
中的 123456 可以替换为自己的 API Key。
四、加载模型
下载完成后的模型文件:
例如:
1 | Qwen2.5-7B-Instruct-Q5_K_M.gguf |
移动到:
1 | text-generation-webui |
目录结构如下:
1 | text-generation-webui |
启动:
双击:
1 | start.bat |
等待程序启动。
浏览器打开:
1 | http://127.0.0.1:7860 |
进入 WebUI。
五、加载 Qwen 模型
进入左侧菜单:
1 | Model |
操作步骤:
- 点击刷新模型列表;
- 选择:
1 | Qwen2.5-7B-Instruct-Q5_K_M |
- 点击:
1 | Load |
等待模型加载完成。
加载成功后即可进行本地聊天。
六、调用 OpenAI API
启动 API 模式后,本地 OpenAI 兼容接口地址:
1 | http://127.0.0.1:5000/v1 |
请求格式与 OpenAI API 基本一致。
示例配置:
1 | from openai import OpenAI |
七、运行效果与性能说明
在 RTX 3060 Laptop 6GB 显存环境下:
Qwen2.5-7B Q5_K_M 可以正常运行;
显存占用约 5~6GB;
推理速度受 CPU、内存以及量化方式影响;
适合:
- 日常问答;
- 编程辅助;
- 文档总结;
- 学习实验。
如果显存不足,可以进一步选择:
- Q4_K_M 量化版本(更省显存);
- 3B/4B 级模型;
- 使用 CPU + 大内存运行。
总结
通过:
- Miniconda 管理环境;
- text-generation-webui 提供运行框架;
- GGUF 量化模型降低资源需求;
即可在普通游戏本(如 RTX 3060 Laptop 6GB)上部署属于自己的本地大语言模型,并通过 OpenAI API 接口被其他程序调用。
