开源大型语言模型Qwen2系列,包含多种基础和指令微调模型,性能领先,多语言及编程能力强大,适用于多种场景。此镜像提供GGUF格式量化模型,易用高效,助您轻松部署。
Qwen2-57B-A14B-Instruct-GGUF
引言
Qwen2是Qwen大型语言模型系列的最新成员。针对Qwen2,我们发布了多个基础语言模型和针对指令调整的语言模型,参数规模从0.5亿到720亿不等,包括混合专家模型(57B-A14B)。
相较于现有的开源语言模型,包括先前发布的Qwen1.5版本,Qwen2在多个基准测试中普遍超越了大多数开源模型,并在一系列针对语言理解、语言生成、多语言能力、编程、数学和推理等方面的基准测试中展现出了与专有模型相竞争的实力。
在此仓库中,我们提供了经过量化的模型,采用GGUF格式,包括q2_k、q3_k_m、q4_0、q4_k_m、q5_0、q5_k_m、q6_k和q8_0。
这是针对Qwen2-57B-A14B-Instruct的GGUF仓库,这是一个混合专家模型。
模型详情
Qwen2是一个语言模型系列,包含不同模型大小的解码器语言模型。对于每个尺寸,我们发布了基础语言模型以及与其对齐的聊天模型。它基于Transformer架构,拥有SwiGLU激活函数、注意力QKV偏置、组查询注意力等特性。另外,我们还改进了能适应多种自然语言和代码的分词器。
训练细节
我们使用大量数据对模型进行了预训练,并使用有监督的微调和直接偏好优化对模型进行了后训练。
环境要求
我们建议您克隆llama.cpp并在官方指南的指导下进行安装。我们遵循的是llama.cpp的最新版本。
在接下来的演示中,我们假设您在llama.cpp仓库下运行命令。
如何使用
克隆仓库可能会低效,因此您可以手动下载需要的GGUF文件,或使用huggingface-cli(pip install huggingface_hub)如以下示例所示:
huggingface-cli download Qwen/Qwen2-57B-A14B-Instruct-GGUF qwen2-57b-a14b-instruct-q4_0.gguf --local-dir . --local-dir-use-symlinks False
然而,对于大型文件,由于单个文件上传限制为50G,我们将其拆分为多个片段。
具体来说,拆分后的文件共享一个前缀,并带有后缀以指示其索引。例如,q8_0 GGUF 文件包括:
qwen2-57b-a14b-instruct-q8_0-00001-of-00002.gguf
qwen2-57b-a14b-instruct-q8_0-00002-of-00002.gguf
它们共享前缀 qwen2-57b-a14b-instruct-q5_k_m,但各自拥有用于索引的后缀,例如 -00001-of-00002。
要使用这些分割的 GGUF 文件,首先需要使用以下命令将它们合并:
llama-gguf-split
./llama-gguf-split --merge qwen2-57b-a14b-instruct-q8_0-00001-of-00002.gguf qwen2-57b-a14b-instruct-q8_0.gguf
随着llama.cpp的API升级,llama-gguf-split 现在与之前的 gguf-split 功能相当。
关于此命令的参数,第一个参数是第一个分割GGUF文件的路径,第二个参数是输出GGUF文件的路径。
要运行Qwen2,您可以使用 llama-cli(之前的 main)或 llama-server(之前的 server)。我们推荐使用 llama-server,因为它简单且兼容OpenAI API。例如:
./llama-server -m qwen2-57b-a14b-instruct-q5_0.gguf -ngl 28 -fa
然后,通过 OpenAI API 轻松访问已部署的服务:
import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1", # "http://<Your api-server IP>:port"
api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
model="qwen",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "tell me something about michael jordan"}
]
)
print(completion.choices[0].message.content)
如果你选择使用 llama-cli,请注意在 ChatML 模板中移除 -cml。取而代之的是,你应该使用 --in-prefix 和 --in-suffix 来解决这个问题。
./llama-cli -m qwen2-57b-a14b-instruct-q5_0.gguf \
-n 512 -co -i -if -f prompts/chat-with-qwen.txt \
--in-prefix "<|im_start|>user\n" \
--in-suffix "<|im_end|>\n<|im_start|>assistant\n" \
-ngl 28 -fa
评估
我们采用 wikitext 数据集进行困惑度(perplexity)评估,遵循 llama.cpp 的做法,使用 ./llama-perplexity(即之前的 ./perplexity)工具。
以下我们报告了不同规模和不同量化级别的 GGUF 模型的困惑度(PPL)结果。
| 规模 | fp16 | q8_0 | q6_k | q5_k_m | q5_0 | q4_k_m | q4_0 | q3_k_m | q2_k | iq1_m |
|---|---|---|---|---|---|---|---|---|---|---|
| 0.5B | 15.11 | 15.13 | 15.14 | 15.24 | 15.40 | 15.36 | 16.28 | 15.70 | 16.74 | - |
| 1.5B | 10.43 | 10.43 | 10.45 | 10.50 | 10.56 | 10.61 | 10.79 | 11.08 | 13.04 | - |
| 7B | 7.93 | 7.94 | 7.96 | 7.97 | 7.98 | 8.02 | 8.19 | 8.20 | 10.58 | - |
| 57B-A14B | 6.81 | 6.81 | 6.83 | 6.84 | 6.89 | 6.99 | 7.02 | 7.43 | - | - |
| 72B | 5.58 | 5.58 | 5.59 | 5.59 | 5.60 | 5.61 | 5.66 | 5.68 | 5.91 | 6.75 |
引用
如果您觉得我们的工作对您有帮助,欢迎引用我们的研究。
@article{qwen2,
title={Qwen2 Technical Report},
year={2024}
}
当然,我会按照您的要求进行翻译。不过,您似乎忘记提供需要翻译的文本。请提供原始文本,我将为您翻译成通俗、专业、优雅且流畅的中文内容。