基于通义千问 LLM 实现本地简单多轮对话
Qwen(通义千问)是基于 Transformer 架构的纯解码器语言模型系列。其中 Qwen1.5-0.5B-Chat 是该系列中参数量最小的版本之一,非常适合在本地资源受限的环境下进行部署和测试。本文将详细介绍如何在本地环境加载该模型,并实现支持上下文记忆的多轮对话功能。
环境准备
在开始之前,请确保您的开发环境满足以下要求:
- Python 版本:建议大于 3.8 版本。
python --version - PyTorch:安装 PyTorch 及其可视化工具包。
pip install torch torchvision - Transformers 库:安装 Hugging Face 的 Transformers 库。
pip install transformers
镜像加速配置
由于模型文件较大,下载速度可能较慢。建议配置国内镜像源以提升效率,例如使用阿里云镜像:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com
此外,推荐使用 ModelScope(魔搭社区)作为模型托管平台,它提供了更便捷的模型加载接口:
pip install modelscope
加载模型与分词器
我们需要从 ModelScope 或 HuggingFace 加载预训练模型。为了减少重复下载,可以将模型缓存到本地目录。
from modelscope import AutoTokenizer, AutoModelForCausalLM
import torch
# 设置本地缓存路径
local_model = "./my_local_models/Qwen1.5-0.5B-Chat"
# 初始化分词器
# torch_dtype="auto":自动检测适合的数据类型(如 float16),节省显存
# device_map="auto":自动将模型层分配到可用设备(CPU/GPU)
tokenizer = AutoTokenizer.from_pretrained(
"Qwen/Qwen1.5-0.5B-Chat",
torch_dtype="auto",
device_map="auto",
cache_dir=local_model,
)
# 保存分词器到本地,避免下次重新下载
tokenizer.save_pretrained(local_model)
# 初始化模型
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen1.5-0.5B-Chat",
cache_dir=local_model,
trust_remote_code=True # Qwen 模型通常需要开启此选项以加载自定义代码
)
model.save_pretrained(local_model)


