跳转至

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 是最佳选择。

  1. 安装 Ollama:

    curl -fsSL https://ollama.com/install.sh | sh
    
  2. 运行 Qwen: Ollama 会自动下载并运行模型。

    # 运行 7B 版本
    ollama run qwen2.5:7b
    
    # 或者运行更小的 1.5B 版本 (速度极快)
    ollama run qwen2.5:1.5b