Qwen2-57B-A14B-Instruct项目介绍
项目概述
Qwen2系列是最新的Qwen大语言模型系列。在Qwen2中,发布了一系列基础语言模型和经过指令微调的语言模型,其参数规模从0.5亿到72亿不等,其中还包括一个专家混合(Mixture-of-Experts)模型。这个库中包含了经过指令微调的57B-A14B专家混合Qwen2模型。
相较于其他最先进的开源语言模型,包括之前发布的Qwen1.5,Qwen2在多个基准测试中表现出色,无论是在语言理解、语言生成、多语言能力、编码、数学、推理等方面都显示出了竞争力。Qwen2-57B-A14B-Instruct支持长度最多达65,536个token的上下文处理,能处理庞大的输入。
模型详情
Qwen2是一个语言模型系列,涵盖了不同规模的解码器语言模型。对于每种规模,都会发布基础语言模型和对齐的对话模型。模型基于Transformer架构,具有SwiGLU激活、注意力QKV偏置、分组查询注意力等特性。此外,还蕴含了一种适应多种自然语言和代码的改进型分词器。
训练细节
这些模型经过大量数据的预训练,通过监督微调和直接偏好优化进行了后续训练,以确保模型性能。
系统要求
Qwen2MoE模型代码已包含在最新的Hugging Face transformers库中,建议安装transformers>=4.40.0
,以避免出现KeyError: 'qwen2_moe'
的错误。
快速启动
以下是使用apply_chat_template
加载分词器、模型并生成内容的代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2-57B-A14B-Instruct",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-57B-A14B-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个token的输入,我们利用了YARN技术以提高模型的长度扩展能力,确保在处理较长文本时性能最优。
部署时,我们推荐使用vLLM,通过以下步骤启用长上下文支持:
- 安装vLLM:确保从vLLM的主分支获取最新版本。
- 配置模型设置:下载模型权重后,修改
config.json
文件,添加如下片段:{ "architectures": [ "Qwen2MoeForCausalLM" ], // ... "vocab_size": 152064, // 添加以下片段 "rope_scaling": { "factor": 2.0, "original_max_position_embeddings": 32768, "type": "yarn" } }
- 模型部署:利用vLLM来部署模型。例如,可以使用如下命令设置一个类似OpenAI的服务器:
python -m vllm.entrypoints.openai.api_server --served-model-name Qwen2-57B-A14B-Instruct --model path/to/weights
评估
我们将Qwen2-57B-A14B-Instruct与类似规模的指令微调LLM进行了简单比较,结果如下:
数据集 | Mixtral-8x7B-Instruct-v0.1 | Yi-1.5-34B-Chat | Qwen1.5-32B-Chat | Qwen2-57B-A14B-Instruct |
---|---|---|---|---|
架构 | MoE | Dense | Dense | MoE |
激活参数 | 12B | 34B | 32B | 14B |
总参数量 | 47B | 34B | 32B | 57B |
英语 | ||||
MMLU | 71.4 | 76.8 | 74.8 | 75.4 |
MMLU-Pro | 43.3 | 52.3 | 46.4 | 52.8 |
GPQA | - | - | 30.8 | 34.3 |
TheroemQA | - | - | 30.9 | 33.1 |
MT-Bench | 8.30 | 8.50 | 8.30 | 8.55 |
编码 | ||||
HumanEval | 45.1 | 75.2 | 68.3 | 79.9 |
MBPP | 59.5 | 74.6 | 67.9 | 70.9 |
MultiPL-E | - | - | 50.7 | 66.4 |
EvalPlus | 48.5 | - | 63.6 | 71.6 |
LiveCodeBench | 12.3 | - | 15.2 | 25.5 |
数学 | ||||
GSM8K | 65.7 | 90.2 | 83.6 | 79.6 |
MATH | 30.7 | 50.1 | 42.4 | 49.1 |
汉语 | ||||
C-Eval | - | - | 76.7 | 80.5 |
AlignBench | 5.70 | 7.20 | 7.19 | 7.36 |
引用
如果您觉得我们的工作有帮助,请随时引用我们。
@article{qwen2,
title={Qwen2 Technical Report},
year={2024}
}