GITHUB HUGGING FACE MODELSCOPE DEMO WeChat

简介

最近几个月,我们专注探索如何构建一个真正「卓越」的模型,并在此过程中不断提升开发者的使用体验。农历新年到来之际,我们推出通义千问开源模型1.5版本: Qwen1.5。我们开源了包括0.5B、1.8B、4B、7B、14B和72B共计6个不同规模的Base和Chat模型,, 以及一个MoE模型(点击博客 了解详情),并同步放出了各尺寸模型对应的量化模型。

此次更新中,我们不仅像之前一样提供Int4和Int8的GPTQ模型,还提供了AWQ以及GGUF量化模型。为了提升开发者体验,我们将Qwen1.5的代码正式合并到HuggingFace transformers代码库中,所以现在可以直接使用 transformers>=4.37.0 原生代码,而无需指定 trust_remote_code 选项即可进行开发。

我们已经与vLLMSGLang(用于部署)、AutoAWQAutoGPTQ(用于量化)、AxolotlLLaMA-Factory(用于微调)以及llama.cpp(用于本地 LLM 推理)等框架合作,所有这些框架现在都支持 Qwen1.5。Qwen1.5 系列可在 OllamaLMStudio 等平台上使用。此外,API 服务不仅在 DashScope 上提供,还在 together.ai 上提供,全球都可访问。请访问here开始使用,我们建议您试用Qwen1.5-72B-chat

相较于以往版本,本次更新我们着重提升Chat模型与人类偏好的对齐程度,并且显著增强了模型的多语言处理能力。在序列长度方面,所有规模模型均已实现 32768 个 tokens 的上下文长度范围支持。同时,预训练 Base 模型的质量也有关键优化,有望在微调过程中为您带来更佳体验。这次迭代是我们朝向「卓越」模型目标所迈进一个坚实的步伐。

模型效果

为了全面洞悉 Qwen1.5 的效果表现,我们对 Base 和 Chat 模型在一系列基础及扩展能力上进行了详尽评估,包括如语言理解、代码、推理等在内的基础能力,多语言能力,人类偏好对齐能力,智能体能力,检索增强生成能力(RAG)等。

基础能力

关于模型基础能力的评测,我们在 MMLU(5-shot)、C-Eval、Humaneval、GS8K、BBH 等基准数据集上对 Qwen1.5 进行了评估。

ModelMMLUC-EvalGSM8KMATHHumanEvalMBPPBBHCMMLU
GPT-486.469.992.045.867.061.886.771.0
Llama2-7B46.832.516.73.312.820.838.231.8
Llama2-13B55.041.429.65.018.930.345.638.4
Llama2-34B62.6-42.26.222.633.044.1-
Llama2-70B69.850.154.410.623.737.758.453.6
Mistral-7B64.147.447.511.327.438.656.744.7
Mixtral-8x7B70.6-74.428.440.260.7--
Qwen1.5-7B61.074.162.520.336.037.440.273.1
Qwen1.5-14B67.678.770.129.237.844.053.777.6
Qwen1.5-32B73.483.577.436.137.249.466.882.3
Qwen1.5-72B77.584.179.534.141.553.465.583.5

在不同模型尺寸下,Qwen1.5 都在评估基准中表现出强劲的性能。特别是,Qwen1.5-72B 在所有基准测试中都远远超越了Llama2-70B,展示了其在语言理解、推理和数学方面的卓越能力。

最近小型模型的构建也成为了热点之一,我们将模型参数小于 70 亿的 Qwen1.5 模型与社区中最杰出的小型模型进行了比较。结果如下:

ModelNon-Emb ParamsMMLUC-EvalGSM8KMATHHumanEvalMBPPBBHCMMLU
Tinyllama-1.1B1.1B24.325.02.30.76.719.928.824.0
Gemini-Nano-3B---22.8--27.242.4-
StableLM-Zephyr-3B2.7B45.930.352.512.535.431.937.730.9
Phi-22.5B52.723.457.23.547.655.043.424.2
MiniCPM-2B2.4B53.551.153.810.250.047.336.951.1
Qwen1.5-0.5B0.3B39.250.522.03.112.26.818.346.6
Qwen1.5-1.8B1.2B46.859.738.410.120.118.024.257.8
Qwen1.5-4B3.1B56.167.657.010.025.629.232.566.7
Qwen1.5-MoE-A2.7B2.0B62.579.261.521.934.236.639.179.2

我们可以自信地说,参数规模低于 70 亿的 Qwen1.5 base 模型,与业界领先的小型模型相比具有很强的竞争力。未来,我们将继续提高小模型的整体效果,并探索如何将大模型的能力有效迁移到小模型之中。

人类偏好对齐

对齐的目的是增强语言的指令跟随能力,生成和人类偏好相近的回复。我们认识到将人类偏好融入学习过程的重要性,因此在对齐最新的 Qwen1.5 系列时有效地采用了直接策略优化(DPO)和近端策略优化(PPO)等技术。

但是,评估此类聊天模型的质量是一项重大挑战。虽然全面的人工评估是最佳方法,但它在可扩展性和可重复性方面面临着巨大挑战。因此我们借助更先进的大模型作为评委,在两个广泛使用的基准上对 Qwen1.5 进行了初步评估: MT-Bench 和 Alpaca-Eval。评估结果如下:

我们在评测MT-Bench榜单时发现在这个榜单上模型分数有较大的方差,因此我们进行了三轮评测并汇报平均分数和标准差。

ModelsMT-BenchAlpacaEval 2.0
Avg. ScoreWin RateLength
Qwen1.5-72B-Chat8.610.04 (8.67/8.61/8.56)27.181.301600
Qwen1.5-14B-Chat7.910.11 (7.99/7.99/7.77)19.71.121608
Qwen1.5-7B-Chat7.600.05 (7.58/7.55/7.66)13.201.431606

尽管落后于 GPT-4-Turbo,但最大的 Qwen1.5 模型 Qwen1.5-72B-Chat 在 MT-Bench 和 Alpaca-Eval v2 上都表现出不俗的效果,超过了 Claude-2.1、GPT-3.5-Turbo-0613、Mixtral-8x7b-instruct 和 TULU 2 DPO 70B,与 Mistral Medium 不相上下。

此外,虽然大模型裁判的评分似乎与回答的长度有关,但我们的观察结果表明 Qwen1.5 并没有产生过长的回答来操纵大模型裁判的偏差。AlpacaEval 2.0 上 Qwen1.5-Chat 的平均长度仅为 1618,与 GPT-4 的长度一致,比 GPT-4-Turbo 短。从通义千问网页端和APP的反馈看,用户更加喜爱新版本模型的回复。

多语言能力

我们挑选了来自欧洲、东亚和东南亚的12种不同语言,全面评估Base模型的多语言能力。从开源社区的公开数据集中,我们构建了如下表所示的评测集合,共涵盖四个不同的维度:考试、理解、翻译、数学。下表提供了每个测试集的详细信息,包括其评测配置、评价指标以及所涉及的具体语言种类。

DatasetCategoryMethod/MetricLanguages
MMLU-multiExams5-shot/Accar, es, fr, pt, de, it, ru, ja, ko, id
M3ExamsExams5-shot/Accpt, it, vi, th
BELEBELEUnderstanding5-shot/Accar, es, fr, pt, de, it, ru, ja, ko, vi, th, id
XWinogradUnderstanding5-shot/Accfr, pt, ru, ja
XCOPAUnderstanding5-shot/Accvi, id, th
PAWS-XUnderstanding5-shot/Acces, fr, de, ja, ko
XStoryClozeUnderstanding0-shot/Accar, es, ru, id
Flores(zh/en↔xx)Translation5-shot/BLEUar, es, fr, pt, de, it, ru, ja, ko, vi, th, id
MGSMMath8-shot/Acces, fr, ru, de, ja, th

详细的结果如下:

ModelsExamsUnderstandingMathTranslation
GPT-3.552.2471.8432.8031.85
GPT-471.6483.8280.1334.37
Llama2-7B34.0350.139.4022.19
Llama2-13B39.5557.2616.8025.89
Llama2-70B55.8873.1940.2031.56
Mistral-7B47.1263.3026.3323.33
Mixtral-8x7B56.0870.7045.0029.78
Qwen1.5-0.5B26.9844.083.139.17
Qwen1.5-1.8B33.5748.376.4716.19
Qwen1.5-4B41.4359.7621.3323.34
Qwen1.5-MoE-A2.7B44.5461.0830.2027.35
Qwen1.5-7B47.7067.6337.2728.36
Qwen1.5-14B55.7274.1049.9331.69
Qwen1.5-72B66.3578.1661.6735.57

上述结果表明,Qwen1.5 Base模型在12种不同语言的多语言能力方面表现出色,在考试、理解、翻译和数学等各个维度的评估中,均展现优异结果。不论阿拉伯语、西班牙语、法语、日语,还是韩语、泰语,Qwen1.5均展示了在不同语言环境中理解和生成高质量内容的能力。更进一步地,我们也评估了Chat模型的多语言能力,结果如下所示:

上述结果展示了Qwen1.5 Chat模型强大的多语言能力,可用于翻译、语言理解和多语言聊天等下游应用。我们相信多语言能力的提升,对于其整体通用能力也具有正向的作用。

长序列

随着长序列理解的需求不断增加,我们这次推出的 Qwen1.5 模型全系列支持 32K tokens 的上下文。我们在L-Eval 基准上评估了 Qwen1.5 模型的性能,该基准衡量了模型根据长输入生成答案的能力。结果如下:

ModelsCourseraGSMQuALITYTOEFLSFictionAvg.
GPT3.5-turbo-16k63.5184.0061.3878.4364.8470.43
Claude1.3-100k60.0388.0073.7683.6472.6575.62
GPT4-32k75.5896.0082.1784.3874.9982.62
Qwen-72B-Chat58.1376.0077.2286.2469.5373.42
Qwen1.5-0.5B-Chat30.816.0034.1640.5249.2232.14
Qwen1.5-1.8B-Chat39.2437.0042.0855.7644.5343.72
Qwen1.5-4B-Chat54.9447.0057.9269.1556.2557.05
Qwen1.5-7B-Chat59.7460.0064.3679.1862.5065.16
Qwen1.5-14B-Chat69.0479.0074.7583.6475.7876.44
Qwen1.5-72B-Chat71.9582.0077.7285.5073.4478.12

从结果来看,即使像 Qwen1.5-7B-Chat 这样的小规模模型,在上面大5个任务中的4个表现出与 GPT3.5-turbo-16k 类似的性能。而我们最好的模型 Qwen1.5-72B-Chat,仅略微落后于 GPT4-32k。尽管上述结果仅突显了我们在处理 32K tokens 长度时所展现的卓越性能,但这并不代表模型的最大支持长度仅限于 32K。您可以在 config.json 中,将 max_position_embeddingsliding_window 尝试修改为更大的值,观察模型在更长上下文理解场景下,是否可以达到您满意的效果。

链接外部系统

如今,通用语言模型的一大魅力在于其与外部系统对接的潜能。具体而言,RAG作为一种在社区中快速兴起并广受青睐的任务,有效应对了大语言模型面临的一些典型挑战,比如幻觉、无法获取实时更新或私有数据等问题。此外,语言模型在使用API和根据指令及示例编写代码方面,展现出强大的能力。这使得LLM能够作为代码解释器或AI智能体,发挥更广阔的价值。

我们首先对 Qwen1.5 系列 Chat 模型,在 RAG 任务上的端到端效果进行了评估。评测基于 RGB 测试集,是一个用于中英文 RAG 评估的集合:

RGB English Benchmark for Retrieval-Augmented Generation
ModelsNoise 0.8 (Acc.↑)Rejection 1.0 (Acc.↑)Integration 0.4 (Acc.↑)Counterfactual (Acc.↑)
GPT4-Turbo85.6747.3360.0090.00
GPT3.5-Turbo74.3327.6747.0021.00
Llama2-70B-Chat82.0031.0056.0015.00
Mistral-7B-Instruct-v0.282.0031.0056.0015.00
Mixtral-8x7B-Instruct-v0.182.6737.0067.008.00
Qwen1.5-7B-Chat77.6725.0052.009.00
Qwen1.5-14B-Chat80.6724.0060.008.00
Qwen1.5-72B-Chat81.6748.6761.0028.00
RGB Chinese Benchmark for Retrieval-Augmented Generation
ModelsNoise 0.8 (Acc.↑)Rejection 1.0 (Acc.↑)Integration 0.4 (Acc.↑)Counterfactual (Acc.↑)
GPT4-Turbo75.0038.6763.0090.00
GPT3.5-Turbo69.0013.0055.0025.00
Llama2-70B-Chat28.0017.0032.008.00
Mistral-7B-Instruct-v0.254.6728.6737.004.00
Mixtral-8x7B-Instruct-v0.127.334.0024.004.00
Qwen1.5-7B-Chat71.0010.3354.0020.00
Qwen1.5-14B-Chat75.0016.6755.0022.00
Qwen1.5-72B-Chat76.0051.0066.0044.00

然后,我们在T-Eval 基准测试中评估了 Qwen1.5 作为通用代理运行的能力。所有 Qwen1.5 模型都没有经过专门针对该基准的优化:

Agent Performance on T-Eval English
ModelsOverallInstructPlanReasonRetrieveUnderstandReview
GPT4-Turbo86.496.387.865.388.985.894.5
Llama-2-70B-Chat58.5977.8063.7539.0751.3550.3469.20
Mistral-7B-Instruct-v0.246.6863.5760.8832.5917.5838.0867.35
Mixtral-8x7B-Instruct-v0.162.1542.3946.4860.3576.6973.7073.31
Qwen1.5-7B-Chat59.6771.1262.9537.6061.1753.7571.46
Qwen1.5-14B-Chat71.7786.1673.0949.5172.0766.0383.78
Qwen1.5-72B-Chat76.6980.9683.1256.8980.1776.6882.34
Agent Performance on T-Eval Chinese
ModelsOverallInstructPlanReasonRetrieveUnderstandReview
GPT4-Turbo85.997.687.068.489.286.886.0
Llama-2-70B-Chat51.1553.7856.6534.2748.2450.4963.45
Mistral-7B-Instruct-v0.246.2649.6461.8236.1720.2647.2562.42
Mixtral-8x7B-Instruct-v0.162.7726.3860.7962.0276.6077.7473.10
Qwen1.5-7B-Chat53.1560.5662.3142.0755.2855.7642.92
Qwen1.5-14B-Chat64.8584.2564.7754.6872.3568.8844.15
Qwen1.5-72B-Chat72.8897.5080.8358.1176.1471.9452.77

为了测试工具调用能力,我们遵循之前做法,使用我们自己开源的 评估基准 ,测试模型正确选择、调用工具的能力,结果如下:

Tool-Use Benchmark
ModelsTool Selection (Acc.↑)Tool Input (Rouge-L↑)False Positive (Acc.↑)
GPT-498.095.376.1
GPT-3.574.580.719.4
Llama-2-70B-Chat88.5470.360.37
Mistral-7B-Instruct-v0.294.7982.816.34
Mixtral-8x7B-Instruct-v0.199.3194.4631.34
Qwen1.5-7B-Chat95.8389.4892.54
Qwen1.5-14B-Chat93.0688.7492.91
Qwen1.5-72B-Chat95.1491.1498.51

最后,由于 Python 代码解释器已成为高级 LLM 越来越强大的工具,我们还在之前开源的 评估基准 上评估了我们的模型利用这一工具的能力:

Code Interpreter Benchmark
ModelsAccuracy of Code Execution Results (%)Executable Rate of Code (%)
Math↑Visualization-Hard↑Visualization-Easy↑General↑
GPT-482.866.760.882.8
GPT-3.547.333.355.774.1
Mistral-7B-Instruct-v0.225.519.144.362.1
Mixtral-8x7B-Instruct-v0.147.833.354.460.3
Qwen1.5-7B-Chat54.035.736.765.5
Qwen1.5-14B-Chat62.146.448.170.6
Qwen1.5-72B-Chat73.152.350.687.9

较大的 Qwen1.5-Chat 模型通常优于较小的模型,接近 GPT-4 的工具使用性能。不过,在数学解题和可视化等代码解释器任务中,即使是最大的 Qwen1.5-72B-Chat 模型,也会因编码能力而明显落后于 GPT-4。我们的目标是在未来的版本中,在预训练和对齐过程中提高所有 Qwen 模型的编码能力。

使用Qwen1.5开发

Qwen1.5 最大的不同之处,在于 Qwen1.5 与 HuggingFace transformers 代码库的集成。从 4.37.0 版本开始,您可以直接使用 transformers 库原生代码,而不加载任何自定义代码(指定trust_remote_code选项)来使用 Qwen1.5,像下面这样加载模型:

from transformers import AutoModelForCausalLM
# This is what we previously used
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", device_map="auto", trust_remote_code=True)
# This is what you can use now
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen1.5-7B-Chat", device_map="auto")

与以前版本相比,使用 Qwen1.5-Chat 模型进行聊天的方式有所不同。您可以使用以下代码与 Qwen1.5 进行聊天:

from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # 加载模型的设备

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen1.5-14B-Chat-AWQ",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen1.5-14B-Chat-AWQ")

prompt = "给我介绍一下大型语言模型。"
messages = [
    {"role": "system", "content": "你是一个有用的助手。"},
    {"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]

对于Chat模型,我们不再使用额外的 model.chat() 方法,而是直接调用 model.generate()。具体来说,基于 tokenizer_config.json 中编写的聊天模板,您可使用tokenizer.apply_chat_template() 来拼接输入文本,继而分词并调用 model.generate() 执行生成。您可根据 eos_token 来控制何时终止生成。

我们还提供了AWQ和GPTQ量化模型(包括Int4和Int8模型)供您在低资源和部署场景中,使用Qwen1.5。由于Hugging Face transformers支持 AWQGPTQ,您可以直接像上面所示的方式加载模型并调用,只需更换相应的模型名称即可。

此外,我们已将我们的代码集成到常用的推理框架中,以便您可以轻松部署模型。目前 vLLM>=0.3.0SGLang>=0.1.11 已经正式支持 Qwen1.5。请查看他们的官方 github 仓库和文档,了解详细用法。以下示例展示如何使用vLLM,为模型构建一个与OpenAI-API兼容的接口:

python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen1.5-7B-Chat
curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
    "model": "Qwen/Qwen1.5-7B-Chat",
    "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Tell me something about large language models."}
    ]
    }'

对于希望本地运行 LLM 的用户,llama.cpp 也提供了对 Qwen1.5 的支持,我们在 huggingface 模型中心官方提供了GGUF格式的量化模型。您可以使用以下代码在 llama.cpp 中运行 Qwen1.5:

./main -m qwen1.5-7b-chat-q2_k.gguf -n 512 --color -i -cml -f prompts/chat-with-qwen.txt

此外,您也可以将GGUF模型与Ollama一起使用。基于 Ollama的支持,现在可以直接使用一行命令:

ollama run qwen

或者您可以将 GGUF 模型与 llamafile 一起使用,以单个文件运行我们的模型。

为了在本地启动网页版 demo,我们建议您使用 Text generation web UI,非常易用。

对于希望训练自己定制模型的高级开发者,目前 Qwen1.5 已经实现了 Hugging Face trainer 和 Peft 支持。目前,社区中也提供了易用的监督式微调(SFT)和人类反馈对齐(PPO、DPO等)训练框架,其中 LLaMA-FactoryAxolotl 已经支持了 Qwen1.5 的训练。我们建议您查看其官方 github 仓库和文档,了解更高级的用法。

如果您希望将Qwen1.5用于下游应用,如RAG、工具使用、智能体等,可以考虑如 LlamaIndexLangChainCrewAI 等社区常用框架,构建与OpenAI-API兼容的API或本地运行模型。

总之,我们始终将关注点放在优化您的开发体验上,不仅致力于为社区打造卓越的模型,还力求让一切操作更为简单易用。希望您在使用 Qwen1.5 的过程中能满意,也希望模型能在您的研究或应用项目中发挥作用。

小结

我们发布了 Qwen1.5 —— Qwen 系列的新一代版本。在这次发布中,我们开源了包括 0.5B、1.8B、4B、7B、14B 和 72B 在内的 6 种大小的 Base 和 Chat 模型,并且我们还提供了量化模型。我们已将 Qwen1.5 的代码合并到 Hugging Face transformers 中,您现在可以直接使用 transformers>=4.37.0 而无需指定 trust_remote_code。此外,我们支持了例如vLLM、SGLang、AutoGPTQ等框架支持Qwen1.5。从现在开始,我们的模型将会更加易用。我们相信这次发布虽然在模型质量上是一小步,但在开发者体验上却是一大步。欢迎加入我们的 Discord微信 分享您的体验、评论或任何您喜欢的内容,向我们提出宝贵的意见和建议!

Authors

Jinze Bai, Shuai Bai, Yunfei Chu, Zeyu Cui, Kai Dang, Xiaodong Deng, Yang Fan, Wenbin Ge, Fei Huang, Binyuan Hui, Mei Li, Junyang Lin, Runji Lin, Dayiheng Liu, Tianyu Liu, Keming Lu, Jianxin Ma, Rui Men, Na Ni, Xingzhang Ren, Xuancheng Ren, Zhou San, Sinan Tan, Jianhong Tu, Peng Wang, Shijie Wang, Jin Xu, An Yang, Jian Yang, Kexin Yang, Shusheng Yang, Yang Yao, Bowen Yu, Jianwei Zhang, Yichang Zhang, Zhenru Zhang, Bo Zheng, Chang Zhou, Jingren Zhou, Xiaohuan Zhou, Tianhang Zhu