项目介绍:Qwen2.5-7B-Instruct-GPTQ-Int8
项目简介
Qwen2.5是最新系列的Qwen大型语言模型。在Qwen2.5中,推出了多个基础语言模型和经过指令调优的语言模型,其参数规模从0.5亿到72亿不等。与第二代Qwen相比,Qwen2.5在以下几个方面有显著提升:
- 大幅度增加知识储备,在编程和数学计算能力上有极大提升,这得益于专门领域的专家模型。
- 在指令跟随、生成长篇文本(超过8K个标记)、理解结构化数据(如表格)以及生成结构化输出(尤其是JSON格式)上有显著提升。对系统提示的多样性拥有更强的抵抗力,从而改善聊天机器人的角色扮演和条件设定。
- 支持长文本上下文,最多可达128K个标记,能够生成多达8K个标记。
- 提供多语言支持,涵盖29种语言,包括中文、英语、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语等。
本项目提供了经过GPTQ量化的8位指令调优7B Qwen2.5模型,具有以下特征:
- 类型:自回归语言模型
- 训练阶段:包括预训练和后续训练
- 架构:采用transformers技术,结合RoPE、SwiGLU、RMSNorm和Attention QKV偏置
- 参数数量:总计7.61亿,非嵌入部分为6.53亿
- 层数:28层
- 注意力头数量(GQA):Q部分28个,KV部分4个
- 上下文长度:全长支持131,072个标记,生成支持8192个标记
- 量化:GPTQ 8位
使用要求
Qwen2.5的代码已集成在最新版本的Hugging Face transformers
库中,建议使用最新版本。如果使用transformers<4.37.0
,将会遇到如下错误:
KeyError: 'qwen2'
此外,建议用户查阅我们的GPTQ文档以获取更多使用指南。
快速开始
下面是一段代码示例,展示了如何使用apply_chat_template
加载分词器和模型并生成内容:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct-GPTQ-Int8"
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
文件设定上下文长度最高为32,768个标记。为了处理超过32,768个标记的长文本输入,我们采用了YaRN技术,这是一种增强模型长度推导能力的方法,以确保在处理长文本时达到最佳性能。
要在支持的框架中启用YaRN,可以在config.json
中添加如下配置:
{
...,
"rope_scaling": {
"factor": 4.0,
"original_max_position_embeddings": 32768,
"type": "yarn"
}
}
在部署时,建议使用vLLM。对于不熟悉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}
}