qwen2技术报告
最近,七月十号,qwen团队发布了qwen2的技术报告论文。在论文中主要讲述了,使用的模型架构,包括密集型模型以及MOE架构。讲述了在训练前如何构造数据,如何解决长上下文的问题。如果在模型发布后,做后置的增强训练。最后是如何评估模型的能力。
至于qwen2的能力如何,前段时间已经被刷屏了。huggingface告诉我们,qwen现在是开源模型的天花板。
qwen团队自己发的关于qwen2的技术报告论文,值得好好读好好学。想学习如何自己训一个模型,不妨就从这篇论文开始着手。看看天花板是如何被训练出来的。
qwen2 主要内容概述
这篇论文是关于Qwen2系列的技术分析报告,由阿里巴巴集团的Qwen团队撰写。Qwen2是一系列大型语言模型和大型多模态模型的最新成员。以下是论文的主要内容概述:
-
引言:
- 介绍了大型语言模型(LLMs)的发展背景,特别是OpenAI的ChatGPT和Meta的Llama系列。
- Qwen2系列是在Qwen和Qwen1.5的基础上进一步发展的,包括基础语言模型和指令调优模型。
-
分词器与模型:
- 描述了Qwen2使用的分词器,基于字节级别的字节对编码。
- 介绍了Qwen2模型的架构,包括密集模型和专家混合模型(MoE)。
-
预训练:
- 讨论了Qwen2模型的预训练数据,强调了数据的质量和多样性。
- 介绍了长上下文训练的方法,包括扩展上下文长度和引入高质量的长文本数据。
-
后训练:
- 详细说明了后训练阶段,包括监督微调和基于人类反馈的强化学习。
- 讨论了后训练数据的构建,包括协作数据注释和自动化数据合成。
-
评估:
- 对Qwen2模型进行了全面评估,包括基础语言模型和指令调优模型。
- 评估了模型在语言理解、生成、多语言能力、编码、数学和推理等方面的性能。
- 特别强调了Qwen2-72B模型和Qwen2-72B-Instruct变体的性能。
-
结论:
- Qwen2系列展示了在多种基准测试中的竞争力,特别是在长上下文、多语言、编码和数学能力方面。
- 强调了Qwen2模型权重的公开可用性,以促进社区创新和可访问性。
-
附录:
- 提供了参考文献和相关链接,包括Hugging Face、ModelScope和GitHub。
论文还详细列出了Qwen2系列模型在不同任务和基准测试中的表现,包括MMLU、GPQA、HumanEval、GSM8K和BBH等。此外,论文还讨论了模型在多语言评估和安全性评估中的表现。
整体而言,这篇论文详细介绍了Qwen2系列模型的技术细节、预训练和后训练方法、评估结果以及其在多语言和多任务中的应用潜力。
读论文理解到内容
模型训练,数据质量的重要性 > 数据数量的重要性 。应该优先考虑提升数据质量,其次才是数据的数量。
词表大小
在Qwen2技术报告中,提到了所有模型(包括不同大小的模型)使用了一个共同的词汇表,该词汇表包含了151,643个常规标记(tokens)和3个控制标记(control tokens)。这意味着无论模型的大小如何,它们都能够理解和生成基于这个词汇表的语言。这种设计有助于保持不同模型之间的一致性,并允许它们有效地处理和生成多语言内容。
词表的大小对于语言模型的性能和多语言能力至关重要。一个较大的词表可以提供更丰富的词汇资源,有助于模型更好地理解和生成语言。然而,词表的大小也需要平衡,因为过大的词表可能会增加模型训练和推理的复杂性。Qwen2的设计者选择了一个合适的词表大小,以支持其多语言模型的性能和效率。
预训练都做了什么?
涉及以下几个主要步骤:
-
数据集开发:
- 创建一个新的、大规模的、高质量的多语言数据集,该数据集在规模、质量和多样性方面都有所提升。
-
质量增强:
- 通过额外的启发式和基于模型的方法过滤低质量数据,并使用Qwen模型来合成高质量的预训练数据。
-
数据扩展:
- 与Qwen1.5相比,收集了更多的高质量代码、数学和多语言数据,增强了模型在这些领域的能力。
-
分布改进:
- 通过在缩小规模的模型上进行实验,优化不同来源和领域数据的混合,确保模型学习到更接近人类学习的数据分布。
-
数据量扩展:
- 将预训练数据量从Qwen1.5的3万亿个标记扩展到7万亿个标记,并尝试进一步扩展到12万亿个标记,但发现数据量增加并不一定带来性能提升。
-
长上下文训练:
- 将上下文长度从4,096个标记扩展到32,768个标记,并引入大量高质量的长文本数据,以增强模型处理长文本的能力。
-
旋转位置嵌入(RoPE):
- 调整RoPE的基础频率,从10,000调整到1,000,000,以优化长上下文场景下的性能。
-
双块注意力机制(DCA):
- 实现DCA,将长序列分割成块,有效捕获块内及块间的相对位置信息,提高长上下文性能。
-
YARN机制:
- 采用YARN机制重新调整注意力权重,以实现更好的长度扩展。
-
多任务指令数据集成:
- 在预训练过程中集成高质量的多任务指令数据,以增强模型的上下文学习和指令遵循能力。
通过这些步骤,Qwen2模型在预训练阶段获得了广泛的知识和技能,为后续的微调和特定任务训练打下了坚实的基础。预训练不仅提高了模型的语言理解能力,还增强了其在编码、数学和多语言处理等方面的性能。
后训练做了什么?
后训练阶段是Qwen2模型开发的关键部分,主要目的是提高模型在各种领域的熟练度,确保生成的内容与人类价值观一致,并具备帮助性、诚实性和无害性。以下是Qwen2后训练阶段所采取的主要步骤和方法:
-
后训练数据的准备:
- 包括示范数据(D)和偏好数据(P),这些数据用于监督微调(SFT)和基于人类反馈的强化学习(RLHF)。
-
协作数据注释:
- 使用InsTag等工具从大规模指令语料库中提取数据本体,并通过人工细化确保本体的准确性。
- 根据标签多样性、语义丰富度、复杂性和意图完整性等标准选择代表性指令。
- 采用自进化策略增加指令集的复杂性,并通过人工注释获得满意的响应及其正负对应物。
-
自动化数据合成:
- 采用拒绝采样、执行反馈、数据再利用和宪法反馈等策略,自动化地合成大规模的标注数据。
- 这些策略特别适用于需要专业知识、经验或耐心的任务,以解决大规模注释的挑战。
-
监督微调(SFT):
- 使用超过50万个示例的指令数据集,涵盖指令跟随、编码、数学、逻辑推理、角色扮演、多语言和安全性等技能。
- 模型进行了两个时期的微调,序列长度为32,768个标记,并逐步降低学习率。
-
基于人类反馈的强化学习(RLHF):
- 包括离线和在线两个阶段。在离线阶段,使用预先编译的偏好数据集P,通过直接偏好优化(DPO)最大化正面和负面响应之间的差异。
- 在在线阶段,模型利用奖励模型进行实时迭代优化,采样多个响应并选择最受欢迎和最不受欢迎的响应,形成用于DPO的偏好对。
-
安全性和责任:
- 实施多语言安全评估,测试模型在不同语言中的表现,确保模型能够提供安全的回答。
通过这些后训练步骤,Qwen2模型在预训练的基础上进一步提升了性能,更好地适应了多样化的应用场景和研究需求。
长文能力是如何实现的?
Qwen2模型通过以下方法解决长上下文问题,以提高对长篇文本的处理能力:
-
长上下文训练(Long-context Training):
- 在预训练的最后阶段,Qwen2将上下文长度从4,096个标记扩展到32,768个标记,以增强模型处理长文本的能力。
-
高质量长文本数据(High-Quality Long Data):
- 引入了大量高质量的长文本数据,以训练和优化模型在长上下文场景下的性能。
-
旋转位置嵌入(Rotary Positional Embedding, RoPE):
- 修改了RoPE的基础频率,从10,000调整到1,000,000,以优化长上下文场景下的性能。
-
双块注意力机制(Dual Chunk Attention, DCA):
- 实现了DCA,将长序列分割成可管理的长度块,有效捕获块内及块间的相对位置信息,提高长上下文性能。
-
YARN机制(Yet Another Rescaling Method):
- 采用YARN机制重新调整注意力权重,以实现更好的长度扩展。
-
模型配置(Model Configuration):
- 对模型的配置进行了优化,例如减小每个标记的键值(KV)大小,减少内存占用,特别是在长上下文推理任务中。
-
Needle in a Haystack (NIAH) 测试:
- 通过NIAH测试评估模型在大量文本中准确检索信息的能力,使用不同深度和长度的文本进行评估。
-
NeedleBench和LV-Eval:
- 使用NeedleBench和LV-Eval等工具进一步测试和验证模型在处理长上下文数据时的能力。
-
集成YARN和DCA:
- 在某些测试中,Qwen2模型集成了YARN和DCA机制,以显著提高长上下文处理能力。
通过这些方法,Qwen2模型能够有效地处理和理解长文本数据,同时保持高性能和准确性。这对于需要深入分析和理解大量信息的任务至关重要,如文献综述、长篇技术文档阅读等。
如何准备SFT数据?
准备大量的监督微调(Supervised Fine-Tuning, SFT)数据涉及以下关键步骤:
-
数据本体提取(Data Ontology Extraction):
- 使用工具(如InsTag)从大规模指令数据集中提取数据本体,并通过人工细化来确保提取的准确性。
-
指令选择(Instruction Selection):
- 根据标签多样性、语义丰富度、复杂性和意图完整性等标准,从带标签的数据中选择代表性的指令。
-
指令演化(Instruction Evolution):
- 采用自进化策略,让Qwen模型为现有指令添加约束或要求,以增加其复杂性和难度的多样性。
-
人工注释(Human Annotation):
- 使用不同的生成策略和不同规模的Qwen模型获取指令的多种响应,然后由标注者根据偏好对这些响应进行排名,确保最佳响应满足既定标准。
-
自动化对齐策略(Automated Alignment Strategies):
- 为了在大规模上合成数据,开发了多种自动化策略,包括:
- 拒绝采样(Rejection Sampling):生成多个响应,保留那些模型认为合理且得出准确结论的路径。
- 执行反馈(Execution Feedback):生成解决方案和相关测试用例,通过编译和执行来评估解决方案的有效性。
- 数据再利用(Data Repurposing):利用公共领域的高质量文学作品,通过LLMs生成具有不同细节级别的指令。
- 宪法反馈(Constitutional Feedback):指导LLMs根据预定义的原则集生成响应,确保遵守特定的安全和价值准则。
- 为了在大规模上合成数据,开发了多种自动化策略,包括:
-
构建训练集(Construction of Training Data):
- 通过上述步骤,构建包含正面和负面示例的示范数据和偏好数据集,用于SFT。
-
优化和迭代(Optimization and Iteration):
- 对生成的数据进行质量控制,确保数据集的多样性和覆盖面,同时根据模型性能反馈进行迭代优化。
通过这些步骤,Qwen2团队能够准备大量的高质量SFT数据,这些数据不仅覆盖了广泛的任务和领域,而且具有足够的复杂性和多样性,以支持模型在特定任务上的微调。这种方法减少了对大规模人工标注的依赖,同时确保了数据的质量和可靠性。
如何评估模型
Qwen2模型的评估是通过一系列综合性的方法来进行的,这些方法检验了模型在多个方面的能力。以下是评估模型时所采用的主要步骤和方法:
-
基准测试(Benchmark Dataset Evaluation):
- 使用标准化的基准数据集来评估模型在自然语言理解、一般问题回答、编码、数学、科学知识、推理等方面的表现。
-
多语言评估(Multilingual Evaluation):
- 应用多语言数据集来评估模型对不同语言的支持能力,确保模型具备良好的跨语言性能。
-
核心能力评估(Core Capabilities Evaluation):
- 通过少量样本提示(few-shot prompting)或零样本提示(zero-shot prompting)来评估模型的基本能力。
-
指令调优模型评估(Instruction-tuned Model Evaluation):
- 除了基准测试外,还使用开放数据集和基准测试来评估模型遵循指令和人类偏好的能力。
-
开放基准评估(Open Benchmark Evaluation):
- 结合自动和人类评估来测试模型的能力和人类偏好,包括语言理解、编码、数学和推理等任务。
-
内部自动评估(In-house Automatic Evaluation):
- 使用内部创建的数据集来评估模型在知识理解、文本生成、编码等方面的不同能力。
-
长上下文能力评估(Long Context Capabilities Evaluation):
- 采用特定的测试,如Needle in a Haystack (NIAH)、NeedleBench和LV-Eval,来评估模型处理长文本的能力。
-
安全性和责任评估(Safety & Responsibility Evaluation):
- 测试模型在处理涉及非法行为、欺诈、色情和隐私等风险类别的提示时的安全性表现。
-
人类评估(Human Evaluation):
- 通过人类评估员对模型生成的响应进行评分,以评估模型的输出质量。
-
性能比较(Performance Comparison):
- 将Qwen2模型的性能与现有的最先进模型(SOTA)或前代模型进行比较,以确定其相对优势和潜在的改进领域。
-
后训练优化评估(Post-training Optimization Evaluation):
- 评估模型在经过监督微调和基于人类反馈的强化学习后的优化效果。
通过这些评估方法,研究人员可以全面了解Qwen2模型的性能,并确定其在特定任务和应用场景中的适用性。
原文地址:https://blog.csdn.net/star1210644725/article/details/140538841
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!