必看!阿里通义千问完整技术报告

摘要

大型语言模型(LLMs)已经彻底改变了人工智能领域,使得以前被认为是人类专属的自然语言处理任务成为实现可能。在这项工作中,我们介绍了QWEN,我们大型语言模型系列的第一个版本。QWEN是一个全面的语言模型系列,包括参数数量不同的不同模型。它包括QWEN,基础预训练语言模型,以及QWEN-CHAT,使用人类对齐技术微调的聊天模型。基础语言模型在多种下游任务中始终表现出优异的性能,而聊天模型,特别是那些使用人类反馈强化学习(RLHF)训练的模型,具有很高的竞争力。聊天模型具有先进的工具使用和规划能力,可用于创建代理应用程序,在处理复杂任务如使用代码解释器时,即使与更大的模型相比也展现出令人印象深刻的性能。此外,我们还开发了专门用于编码的模型,CODE-QWEN和CODE-QWEN-CHAT,以及专注于数学的模型,MATH-QWEN-CHAT,这些模型是基于基础语言模型构建的。这些模型在与开源模型相比表现出显着提高的性能,并略逊于专有模型。

1 介绍

大型语言模型(LLMs)已经通过为复杂的推理和问题解决任务提供强大基础而彻底改变了人工智能(AI)领域(Radford等,2018年;Devlin等,2018年;Raffel等,2020年;Brown等,2020年;OpenAI,2023年;Chowdhery等,2022年;Anil等,2023年;Thoppilan等,2022年;Touvron等,2023年a;b)。这些模型能够将广泛的知识压缩到神经网络中,使它们成为非常多才多艺的Agent。通过聊天界面,LLMs可以执行以前被认为是人类专属领域的任务,特别是涉及创造力和专业知识的任务(OpenAI,2022年;Ouyang等,2022年;Anil等,2023年;Google,2023年;Anthropic,2023年a;b)。它们可以与人类进行自然语言对话,回答问题,提供信息,甚至生成创造性的内容,如故事、诗歌和音乐。这导致了各种各样应用的发展,从聊天机器人和虚拟助手到语言翻译和摘要工具。

LLMs不仅仅局限于语言任务。它们还可以充当通用Agent(Reed等,2022年;Bai等,2022年a;Wang等,2023年a;AutoGPT,2023年;Hong等,2023年),与外部系统、工具和模型合作,实现人类设定的目标。例如,LLMs可以理解多模态指令(OpenAI,2023年;Bai等,2023年;Liu等,2023年a;Ye等,2023年;Dai等,2023年;Peng等,2023年b),执行代码(Chen等,2021年;Zheng等,2023年;Li等,2023年d),使用工具(Schick等,2023年;LangChain,Inc.,2023年;AutoGPT,2023年)等。这为AI应用开辟了全新的可能性,从自动驾驶车辆和机器人到医疗保健和金融领域。随着这些模型的不断演进和改进,我们可以预期未来将会看到更多创新和令人兴奋的应用。无论是帮助我们解决复杂问题,创造新形式的娱乐,还是改变我们的生活和工作方式,LLMs都将在塑造AI未来方面发挥核心作用。

在这里插入图片描述

注:最开始蓝色的 Qwen 应该是 Base 模型,其他的模型普遍应该都是在此基础上使用 sft+RLHF 微调出来的

尽管LLMs具有令人印象深刻的能力,但它们经常因缺乏可重现性、可操纵性和对服务提供者的可访问性而受到批评。在这项工作中,我们很高兴地介绍并发布了我们LLM系列的初始版本,QWEN。QWEN是一个名称,源自中国短语“千问”,意为“千百个问题”,传达了包容广泛查询的概念。QWEN是一个全面的语言模型系列,包括参数数量不同的不同模型。该模型系列包括基础预训练语言模型,使用人类对齐技术微调的聊天模型,即有监督微调(SFT)、使用人类反馈强化学习(RLHF)等,以及专门的编码和数学模型。具体细节如下:

  1. 基础语言模型,即QWEN,经过广泛的训练,使用了多达3万亿个各种文本和代码的标记,涵盖了广泛的领域。这些模型在多种下游任务中始终表现出优异的性能,即使与它们更大的同类模型相比也是如此。

  2. QWEN-CHAT模型经过精心微调,使用了与任务执行、聊天、工具使用、代理、安全等相关的精心策划的数据集。基准评估表明,有监督微调模型可以实现更优异的性能。此外,我们训练了奖励模型来模仿人类偏好,并将其应用于RLHF,用于生成人类偏好的聊天模型响应。通过对具有挑战性的测试进行人类评估,我们发现使用RLHF训练的QWEN-CHAT模型具有很高的竞争力,但在我们的基准测试中仍然落后于GPT-4。

  3. 此外,我们提出了名为CODE-QWEN的专门模型,其中包括CODE-QWEN-7B和CODE-QWEN-14B,以及它们的聊天模型CODE-QWEN-14B-CHAT和CODE-QWEN-7B-CHAT。具体来说,CODE-QWEN已经在大量代码数据集上进行了预训练,并进一步微调以处理与代码生成、调试和解释相关的对话。在基准数据集上进行的实验结果,如HumanEval(Chen等,2021年)、MBPP(Austin等,2021年)和HumanEvalPack(Muennighoff等,2023年),表明了CODE-QWEN在代码理解和生成方面的高水平熟练度。

  4. 本研究还介绍了专门设计用于解决数学问题的MATH-QWEN-CHAT。我们的结果显示,无论是MATH-QWEN-7B-CHAT还是MATH-QWEN-14B-CHAT都优于相同规模的开源模型,并且正在接近与GPT-3.5在数学相关基准数据集(如GSM8K(Cobbe等,2021年)和MATH(Hendrycks等,2021年))上的性能。

  5. 此外,我们开源了QWEN-VL和QWEN-VL-CHAT,它们具有理解视觉和语言指令的多功能能力。这些模型在各种评估基准上优于当前的开源视觉-语言模型,并支持中文和英文的文本识别和视觉定位。此外,这些模型还支持多图像对话和叙述。更多细节可参见Bai等(2023年)。

现在,我们正式开源14B参数和7B参数的基础预训练模型QWEN以及对齐的聊天模型QWEN-CHAT。此次发布旨在提供更全面、更强大的LLMs,以便开发者或应用程序可以更友好地使用。

本报告的结构如下:第2节描述了我们的预训练方法和QWEN的结果。第3节涵盖了我们的对齐方法,并报告了自动评估和人工评估的结果。此外,该部分还描述了我们在构建具有工具使用、代码解释器和代理功能的聊天模型方面的努力的细节。在第4节和第5节中,我们深入探讨了编码和数学的专门模型及其性能。第6节提供了相关的相关工作概述,第7节总结了本文并指出了我们未来的工作方向。

2 预训练

预训练阶段涉及学习大量数据,以获得对世界及其各种复杂性的全面理解。这不仅包括基本的语言能力,还包括高级技能,如算术、编码和逻辑推理。在本节中,我们介绍数据、模型设计和扩展,以及在基准数据集上的全面评估结果。

2.1 数据

数据规模在开发稳健的大型语言模型中被证明是一个关键因素,正如之前的研究所强调的(Hoffmann等,2022年;Touvron等,2023b年)。为了创建一个有效的预训练数据集,确保数据的多样性并涵盖各种类型、领域和任务是至关重要的。我们的数据集旨在满足这些要求,并包括公共网络文档、百科全书、书籍、代码等。此外,我们的数据集是多语言的,其中相当一部分数据是英文和中文。

为了确保我们预训练数据的质量,我们制定了全面的数据预处理程序。对于公共网络数据,我们从HTML中提取文本,并使用语言识别工具确定语言。为了增加我们数据的多样性,我们采用去重技术,包括规范化后的精确匹配去重和使用MinHash和LSH算法进行模糊去重。为了过滤掉低质量的数据,我们采用了基于规则和基于机器学习的方法相结合的方法。具体来说,我们使用多个模型对内容进行评分,包括语言模型、文本质量评分模型和用于识别潜在冒犯或不适当内容的模型。我们还从各种来源手动抽样文本并对其进行审核,以确保其质量。为了进一步提高我们数据的质量,我们有选择地从某些来源对数据进行上采样,以确保我们的模型是在多样化的高质量内容上进行训练的。在最近的研究中(Zeng等,2022年;Aribandi等,2021年;Raffel等,2020年),已经证明使用多任务指令对预训练语言模型进行预训练可以提高其Zero-shot和Few-shot性能。为了进一步提高我们模型的性能,我们已将高质量指令数据纳入我们的预训练过程中。为了确保我们基准评估的完整性,我们采用了与Brown等人(2020年)类似的方法,并严格消除了任何指导性样本与我们评估中使用的测试集中的任何数据存在13个词组的重叠。鉴于大量的下游任务,不可能对所有任务重复此过滤过程。相反,我们确保了所报告任务的指导数据已经经过我们的过滤过程,以确保其准确性和可靠性。最后,我们建立了一个包含多达3万亿个标记的数据集。

下图为指令数据样例

在这里插入图片描述

2.2 TOKENIZATION

词汇表的设计显著影响训练效率和下游任务的性能。在本研究中,我们采用字节对编码( byte pair encoding,BPE)作为我们的tokenization方法,遵循GPT-3.5和GPT-4。我们从开源的快速BPE tokenizer tiktoken(Jain,2022年)开始,并选择词汇表cl100k base作为我们的起点。为了增强我们模型在多语言下游任务中的性能,特别是在中文方面,我们增加了常用的中文字符和词汇,以及其他语言中的词汇。此外,按照Touvron等人(2023a;b)的做法,我们将数字拆分为单个数字。最终的词汇表大小约为152K。

Tokenzation 在任何位置都不进行翻译,用任何的中文都无法很好表述其含义,请自行理解。

图3:不同模型的编码压缩率。我们随机选择了每种语言的100万个文档语料库来测试和比较不同模型的编码压缩率(以支持100种语言的XLM-R(Conneau等人,2019年)作为基准值1,未在图中显示)。可以看到,QWEN在确保中文、英文和代码高效解码的同时,也实现了许多其他语言(如th、he、ar、ko、vi、ja、tr、id、pl、ru、nl、pt、it、de、es、fr等)的高压缩率,为模型提供了强大的可扩展性以及在这些语言中的高训练和推理效率。

图3展示了QWEN标记器在压缩方面的性能。在这项比较中,我们评估了QWEN与其他几种标记器,包括XLM-R(Conneau等,2019年)、LLaMA(Touvron等,2023a)、Baichuan(Inc.,2023a)和InternLM(InternLM团队,2023年)。我们的发现表明,在大多数语言中,QWEN的压缩效率高于其竞争对手。这意味着服务成本可以显著降低,因为相比于竞争对手,QWEN的较少token可以传达更多信息。此外,我们进行了初步实验,以确保扩大QWEN词汇表大小不会对预训练模型的下游性能产生负面影响。尽管词汇表大小增加了,但我们的实验表明,QWEN在下游评估中保持了其性能水平。

表1:模型大小、架构和优化超参数。

2.3 架构

QWEN采用了一种修改过的Transformer架构。具体来说,我们采用了最近的开源方法,即训练大型语言模型LLaMA(Touvron等人,2023a年),这被广泛认为是顶级的开源LLM。我们对架构的修改包括:

  • 嵌入和输出投影 基于初步的实验结果,我们选择了非绑定的嵌入方法,而不是将输入嵌入和输出投影的权重捆绑在一起。这个决定是为了在内存成本的代价下实现更好的性能。

  • 位置编码 我们选择RoPE(Rotary Positional Embedding)(Su等,2021年)作为将位置信息融入模型的首选方法。RoPE已被广泛采用,并在当代大型语言模型中取得了成功,特别是PaLM(Chowdhery等,2022年;Anil等,2023年)和LLaMA(Touvron等,2023a;b)。特别是,我们选择使用FP32精度来表示逆频率矩阵,而不是BF16或FP16,以优先考虑模型性能并实现更高的精度。

  • 偏置对于大多数层,我们移除了偏置,遵循Chowdhery等人(2022年)的方法,但我们在注意力的QKV层中添加了偏置,以增强模型的外推能力(Su,2023b)。

  • 预-范式和RMSNorm 在现代Transformer模型中,pre-normalization 是最常用的方法,已经证明与post-normalization 相比可以提高训练稳定性。最近的研究提出了更好的训练稳定性的替代方法,我们计划在模型的未来版本中探索这些方法。此外,我们将传统的层标准化技术(Ba等人,2016年)替换为RMSNorm(Jiang等人,2023年)。这一改变在提高效率的同时也实现了等效的性能。

  • 激活函数我们选择SwiGLU(Shazeer,2020年)作为我们的激活函数,它是Swish(Ramachandran等人,2017年)和门控线性单元(Dauphin等人,2017年)的组合。我们的初步实验表明,基于GLU的激活函数通常优于其他基线选项,如GeLU(Hendrycks&Gimpel,2016年)。与以前的研究中的常见做法一样,我们将前馈网络(feed-forward network,FFN)的维度从隐藏大小的4倍减少到隐藏大小的三分之八。

2.4 训练

为了训练QWEN,我们遵循Radford等人(2018年)描述的自回归语言建模的标准方法。这涉及训练模型根据前面的标记提供的上下文来预测下一个标记。我们训练具有2048个上下文长度的模型。为了创建数据批次,我们对文档进行了随机排列和合并,然后将它们截断到指定的上下文长度。为了提高计算效率和减少内存使用,我们在注意力模块中采用了Flash Attention(Dao等人,2022年)。我们采用标准的优化器AdamW(Kingma&Ba,2014年;Loshchilov&Hutter,2017年)进行预训练优化。我们设置了超

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值