Qwen 通义千问 笔记¶
Qwen 通义千问
关于阿里云通义千问 (Qwen) 系列模型的介绍与实践笔记。
通义千问 (Qwen) 是阿里云推出的大型语言模型 (LLM) 系列,基于 Transformer 架构。 该模型在多个任务上表现出色,包括文本生成、文本分类、问答等。
Qwen 通义千问 模型¶
千问的模型特别多,从极简的0.6b到强大的13b,再到最新的32b,每个模型都有其特定的应用场景。
Qwen 通义千问 模型 0.6b¶
0.6b 模型是通义千问系列中最小的模型,参数数量为 600 亿。 该模型在文本生成任务上表现出色,能够生成流畅的文本。 所以我想着能不能在开发中应用它,来实现一些简单的文本生成任务。后来发现是在是太简单了,对我个人来说不够用。
在 Ubuntu 下安装 Qwen 通义千问 (Python 开发者模式)¶
使用 Python 和 Hugging Face Transformers 库来部署和调用 Qwen 模型。这种方式最灵活,适合集成到应用程序中。
1. 环境准备 (安装依赖)¶
首先,安装 Python 3.8+。使用 conda 创建隔离环境,避免依赖冲突。
# 1. 创建并激活虚拟环境
conda create -n qwen python=3.10 -y
conda activate qwen
# 2. 安装 PyTorch
# 请访问 pytorch.org 查看适合你 CUDA 版本的安装命令。
# 这里以 CUDA 12.1 为例:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 3. 安装 Transformers 和 ModelScope 等必要依赖
# accelerate: 用于模型并行和加速
# modelscope: 阿里魔搭社区 SDK,下载模型速度快
pip install transformers accelerate ticktoken einops modelscope protobuf
2. 安装与运行 Qwen¶
使用 modelscope (魔搭社区) 下载模型,这对国内网络环境非常友好。 以 Qwen2.5-7B-Instruct 为例。如果显存较小 (<12GB),建议使用 Qwen2.5-1.5B-Instruct。
创建一个 Python 脚本 run_qwen.py:
from modelscope import snapshot_download
from transformers import AutoModelForCausalLM, AutoTokenizer
# 1. 下载模型 (如果已下载,会自动加载缓存)
# 这里的 model_id 可以换成 'qwen/Qwen2.5-1.5B-Instruct' 等
print("正在下载/加载模型...")
model_dir = snapshot_download('qwen/Qwen2.5-7B-Instruct')
# 2. 加载 Tokenizer 和 模型
# device_map="auto" 会自动将模型加载到 GPU
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_dir,
device_map="auto",
trust_remote_code=True
)
# 3. 准备输入
prompt = "你好,请介绍一下你自己。"
messages = [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# 4. 生成回复
print("正在生成回复...")
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print("-" * 20)
print(f"Qwen: {response}")
print("-" * 20)
3. 测试 Qwen 通义千问¶
在终端中运行刚才创建的脚本:
python run_qwen.py
如果一切正常,应该能看到模型加载进度的日志,随后输出它的自我介绍。
备选方案:使用 Ollama 快速部署 (推荐)¶
如果不需要编写 Python 代码,只是想快速体验或作为本地 API 服务使用,Ollama 是最佳选择。
-
安装 Ollama:
curl -fsSL https://ollama.com/install.sh | sh -
运行 Qwen: Ollama 会自动下载并运行模型。
# 运行 7B 版本 ollama run qwen2.5:7b # 或者运行更小的 1.5B 版本 (速度极快) ollama run qwen2.5:1.5b