GITHUB HUGGING FACE MODELSCOPE DEMO WeChat

简介

最近几个月,我们专注探索如何构建一个真正「卓越」的模型,并在此过程中不断提升开发者的使用体验。农历新年到来之际,我们推出通义千问开源模型1.5版本: Qwen1.5。我们开源了包括0.5B、1.8B、4B、7B、14B、32B、72B和110B共计8个不同规模的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
Gemma-2B2.0B42.3-17.711.822.029.235.2-
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微信 分享您的体验、评论或任何您喜欢的内容,向我们提出宝贵的意见和建议!

引用

@misc{qwen1.5,
    title = {Introducing Qwen1.5},
    url = {https://qwenlm.github.io/blog/qwen1.5/},
    author = {Qwen Team},
    month = {February},
    year = {2024}
}