项目介绍:Qwen2.5-7B-Instruct-AWQ
简介
Qwen2.5-7B-Instruct-AWQ是Qwen最新系列大型语言模型中的一员。该系列的语言模型和指令调优模型的参数范围从0.5亿到72亿。与之前的Qwen2版本相比,Qwen2.5在以下几个方面有了显著的提升:
- 知识储备显著增加,尤其是在代码编写和数学领域有很大提升,这得益于这些领域的专门专家模型。
- 在指令跟随、生成长文本(超过8000个tokens)、理解和生成结构化数据(如表格和JSON格式)方面有显著进步。对多样化的系统提示具有更强的适应性,增强了角色扮演的实现和聊天机器人的条件设置能力。
- 长上下文支持,可处理长达128K tokens的上下文,并生成长达8K tokens的文本。
- 多语言支持:支持包括中文、英文、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语在内的29种语言。
这个库包含了Qwen2.5模型的AWQ量化4位指令调优的72B模型,具备以下特征:
- 类型:因果语言模型
- 训练阶段:预训练和后训练
- 架构:使用RoPE、SwiGLU、RMSNorm和Attention QKV偏差的transformers架构
- 参数数量:7.61亿
- 非嵌入参数数量:6.53亿
- 层数:28
- 注意力头(GQA)数量:Q有28个,KV有4个
- 上下文长度:可以完整处理131,072个tokens并生成8192个tokens
- 量化:AWQ 4-bit
系统需求
Qwen2.5的代码已经集成在最新版的Hugging Face的transformers
库中,建议使用最新版本的transformers
。若使用transformers
4.37.0以下版本,会遇到KeyError: 'qwen2'
的错误。
有关更多使用指南,请查阅我们的AWQ文档。
快速入门
下面是一个代码片段,使用apply_chat_template
展示如何加载标记器和模型,并生成内容。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct-AWQ"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "给我一个关于大型语言模型的简短介绍。"
messages = [
{"role": "system", "content": "你是由阿里云创建的Qwen,是一个乐于助人的助手。"},
{"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)
generated_ids = model.generate(
**model_inputs,
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]
处理长文本
当前config.json
的设置支持上下文长度最长32768个tokens。为了处理超过32768个tokens的长文本输入,我们使用YaRN技术提升模型的长度推导表现,确保对长文本的最佳性能。
对支持的框架,可以在config.json
中添加以下设置启用YaRN:
{
...,
"rope_scaling": {
"factor": 4.0,
"original_max_position_embeddings": 32768,
"type": "yarn"
}
}
建议使用vLLM进行部署。使用时请参考我们的文档。目前,vLLM仅支持静态YARN,这意味着无论输入长度如何,比例因子保持不变,可能会影响短文本的性能。建议仅在处理长上下文时添加rope_scaling
配置。
评估与性能
详细的评估结果发表在这篇📑 博客中。
对于量化模型,与原始bfloat16模型的基准测试结果可以在这里找到。
关于GPU内存需要和相应的吞吐量,请查看这里的结果。
引用
如果您发现我们的工作对您有帮助,请随意引用我们。
@misc{qwen2.5,
title = {Qwen2.5: A Party of Foundation Models},
url = {https://qwenlm.github.io/blog/qwen2.5/},
author = {Qwen Team},
month = {September},
year = {2024}
}
@article{qwen2,
title={Qwen2 Technical Report},
author={An Yang and Baosong Yang and Binyuan Hui and Bo Zheng and Bowen Yu and Chang Zhou and Chengpeng Li and Chengyuan Li and Dayiheng Liu and Fei Huang and Guanting Dong and Haoran Wei and Huan Lin and Jialong Tang and Jialin Wang and Jian Yang and Jianhong Tu and Jianwei Zhang and Jianxin Ma and Jin Xu and Jingren Zhou and Jinze Bai and Jinzheng He and Junyang Lin and Kai Dang and Keming Lu and Keqin Chen and Kexin Yang and Mei Li and Mingfeng Xue and Na Ni and Pei Zhang and Peng Wang and Ru Peng and Rui Men and Ruize Gao and Runji Lin and Shijie Wang and Shuai Bai and Sinan Tan and Tianhang Zhu and Tianhao Li and Tianyu Liu and Wenbin Ge and Xiaodong Deng and Xiaohuan Zhou and Xingzhang Ren and Xinyu Zhang and Xipin Wei and Xuancheng Ren and Yang Fan and Yang Yao and Yichang Zhang and Yu Wan and Yunfei Chu and Yuqiong Liu and Zeyu Cui and Zhenru Zhang and Zhihao Fan},
journal={arXiv preprint arXiv:2407.10671},
year={2024}
}