🚀 Qwen2-72B-Instruct
Qwen2-72B-Instruct是通义千问系列的大语言模型,支持长达131,072个标记的上下文长度,能处理大量输入。该模型在语言理解、语言生成、多语言能力、编码、数学、推理等一系列基准测试中表现出色,超越了大多数开源模型,并展现出与专有模型竞争的实力。
📄 许可证
本模型使用的许可证为 tongyi-qianwen。
🚀 快速开始
以下是一个使用 apply_chat_template
的代码片段,展示了如何加载分词器和模型,以及如何生成内容。
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2-72B-Instruct",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-72B-Instruct")
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "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(device)
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]
处理长文本
为了处理超过32,768个标记的大量输入,我们采用了 YARN 技术来增强模型的长度外推能力,确保在长文本上的最佳性能。
部署步骤
- 安装vLLM:你可以通过运行以下命令来安装 vLLM。
pip install "vllm>=0.4.3"
或者你可以从 源码 安装 vLLM。
- 配置模型设置:下载模型权重后,通过在
config.json
文件中添加以下代码片段来修改该文件:
{
"architectures": [
"Qwen2ForCausalLM"
],
"vocab_size": 152064,
"rope_scaling": {
"factor": 4.0,
"original_max_position_embeddings": 32768,
"type": "yarn"
}
}
此代码片段使 YARN 能够支持更长的上下文。
- 模型部署:使用 vLLM 部署你的模型。例如,你可以使用以下命令设置一个类似 OpenAI 的服务器:
python -m vllm.entrypoints.openai.api_server --served-model-name Qwen2-72B-Instruct --model path/to/weights
然后你可以通过以下方式访问聊天 API:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen2-72B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Your Long Input Here."}
]
}'
有关 vLLM 的更多使用说明,请参考我们的 GitHub。
⚠️ 重要提示
目前,vLLM 仅支持静态 YARN,这意味着缩放因子无论输入长度如何都保持不变,可能会影响短文本的性能。我们建议仅在需要处理长上下文时添加 rope_scaling
配置。
✨ 主要特性
- 量化优化:采用非常激进的2bpw量化,使用 pixiv-novel 作为校准数据集,尽量减少模型在生成小说内容方面的困惑度,保持对应领域的性能。本模型可以在一块消费级的24G显卡上加载运行,配合 SillyTavern 使用效果更佳。
- 强大性能:与最先进的开源语言模型(包括之前发布的 Qwen1.5)相比,Qwen2 在语言理解、语言生成、多语言能力、编码、数学、推理等一系列基准测试中普遍超越了大多数开源模型,并展现出与专有模型竞争的实力。
- 长上下文支持:Qwen2-72B-Instruct 支持长达131,072个标记的上下文长度,能够处理大量输入。
📚 详细文档
模型详情
Qwen2 是一个语言模型系列,包括不同模型大小的解码器语言模型。对于每个大小,我们都发布了基础语言模型和对齐的聊天模型。它基于 Transformer 架构,采用 SwiGLU 激活函数、注意力 QKV 偏置、组查询注意力等。此外,我们还有一个适应多种自然语言和代码的改进分词器。
训练详情
我们使用大量数据对模型进行了预训练,并通过监督微调(supervised finetuning)和直接偏好优化(direct preference optimization)对模型进行了后训练。
依赖要求
Qwen2 的代码已经集成在最新的 Hugging Face transformers 中,我们建议你安装 transformers>=4.37.0
,否则你可能会遇到以下错误:
KeyError: 'qwen2'
🔧 技术细节
评估对比
我们简要比较了 Qwen2-72B-Instruct 与类似大小的指令调优大语言模型(LLMs),包括我们之前的 Qwen1.5-72B-Chat。结果如下:
数据集 |
Llama-3-70B-Instruct |
Qwen1.5-72B-Chat |
Qwen2-72B-Instruct |
英文 |
|
|
|
MMLU |
82.0 |
75.6 |
82.3 |
MMLU-Pro |
56.2 |
51.7 |
64.4 |
GPQA |
41.9 |
39.4 |
42.4 |
TheroemQA |
42.5 |
28.8 |
44.4 |
MT-Bench |
8.95 |
8.61 |
9.12 |
Arena-Hard |
41.1 |
36.1 |
48.1 |
IFEval (Prompt Strict-Acc.) |
77.3 |
55.8 |
77.6 |
编码 |
|
|
|
HumanEval |
81.7 |
71.3 |
86.0 |
MBPP |
82.3 |
71.9 |
80.2 |
MultiPL-E |
63.4 |
48.1 |
69.2 |
EvalPlus |
75.2 |
66.9 |
79.0 |
LiveCodeBench |
29.3 |
17.9 |
35.7 |
数学 |
|
|
|
GSM8K |
93.0 |
82.7 |
91.1 |
MATH |
50.4 |
42.5 |
59.7 |
中文 |
|
|
|
C-Eval |
61.6 |
76.1 |
83.8 |
AlignBench |
7.42 |
7.28 |
8.27 |
📦 安装指南
请确保安装 transformers>=4.37.0
,可以使用以下命令进行安装:
pip install transformers>=4.37.0
若要使用 vLLM 处理长文本,还需安装 vLLM>=0.4.3
:
pip install "vllm>=0.4.3"
📄 引用
如果你觉得我们的工作有帮助,请随意引用我们的工作。
@article{qwen2,
title={Qwen2 Technical Report},
year={2024}
}