项目介绍:Qwen2.5-14B-Instruct-GPTQ-Int4
项目背景
Qwen2.5是最新推出的一系列大型语言模型,其中包含一系列基础语言模型和经过指令调整的语言模型,参数规模从0.5亿到72亿不等。Qwen2.5相比之前的版本Qwen2,带来了多个方面的显著改进:
- 知识储备更为丰富,尤其擅长编程和数学领域的问题,得益于在这些领域中的专门专家模型。
- 在指令执行、长文本生成(超过8000个标记)、结构化数据理解(如表格)、尤其在JSON格式的结构化输出生成方面表现显著提升。模型对于系统提示的多样性有更好的适应性,提升了角色扮演和条件设定能力。
- 支持长文本上下文,上下文长度支持到128,000个标记,生成文本的上限为8,000个标记。
- 支持超过29种语言的多语言处理,包括中文、英语、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语等。
项目特点
这个项目包含了一个经过GPTQ量化的4-bit指令调整模型,具有以下特点:
- 类型:因果语言生成模型
- 训练阶段:预训练及后期调整
- 架构:采用带有RoPE、SwiGLU、RMSNorm和Attention QKV偏置的transformers架构
- 参数数量:14.7亿,总参数中非嵌入参数为13.1亿
- 层数:48层
- 注意力头数(GQA):对于Q为40,对于KV为8
- 上下文长度:完整支持131,072个标记,生成支持8,192个标记
- 量化:GPTQ 4-bit
使用说明
Qwen2.5的代码已集成到最新版本的Hugging Face transformers
库中,建议使用最新版以避免错误。此外,用户可以查阅我们的GPTQ文档获取详细使用指南。
以下是一个快速开始的代码示例,展示了如何加载tokenizer和模型并生成内容:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-14B-Instruct-GPTQ-Int4"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Give me a short introduction to large language model."
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)
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技术,增强模型在长文本上的性能。
如果需要处理长文本,可以在config.json
中添加以下配置来启用YaRN:
{
...,
"rope_scaling": {
"factor": 4.0,
"original_max_position_embeddings": 32768,
"type": "yarn"
}
}
评价与性能
关于量化模型和原始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}
}