人工智能咨询培训老师叶梓 转载标明出处
01.AI公司提出了Yi模型家族,这一系列语言和多模态模型展示了强大的多维能力,旨在成为下一代计算平台,通过大规模数据和精心设计的训练过程,实现接近人类智能的模型。Yi模型家族基于6B和34B的预训练语言模型,并将其扩展到聊天模型、长文本模型、深度扩展模型和视觉-语言模型。这些模型在MMLU等广泛基准测试上取得了优异的性能,并且在AlpacaEval和Chatbot Arena等主要评估平台上的聊天模型也展现出了较高的人类偏好率。
想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory ------ 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。
加下方微信或评论留言,即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory。关注享粉丝福利,限时免费录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。
方法和观点
预训练
在预训练阶段,Yi模型家族的训练方法着重于使用高质的大规模语料库来训练一个标准的密集型Transformer架构。01.AI公司认为,当模型在足够高质量的大规模数据上进行训练时,即使是标准架构也能展现出先进的能力。因此,他们并没有对架构进行大量修改,尽管在预训练之前确实进行了大量的初步架构实验。
数据预处理是Yi模型家族预训练中的重要环节。如图 2 所示,Yi的数据混合包含了3.1万亿高质量的中英双语词汇,这些数据来自多个不同的来源。与现有的LLaMA和Falcon等模型相比,Yi模型家族的数据不仅双语,而且由于采用了更为严格的清洗流程,其质量更高。
图1展示了Yi模型预训练阶段的数据清洗流程,用于确保训练数据的高质量和多样性。流程包括从大规模数据源筛选内容、进行语言识别、去除重复项、应用质量过滤规则、执行安全检查以及可能的数据增强,最终形成适合训练的优质数据集。
在数据清洗过程中,启发式规则过滤器用于移除质量较低的文本。这包括基于URL、域名、单词黑名单和乱码文本的过滤;文档长度、特殊符号比例以及短、连续或不完整的行的比例;重复的单词、n-gram或段落。这些过滤阈值是基于对大量文档样本的统计分析得出的。另外还识别并匿名化了个人身份信息(PII),如电子邮件地址和电话号码。
为了处理标准启发式规则无法覆盖的细微情况,01.AI公司集成了一系列学习型评分器进行过滤,包括困惑度评分器、质量评分器、安全评分器和文档连贯性评分器。这些评分器能够识别并过滤掉包含不适当内容如色情、赌博等的中文网页。
通过无监督语义聚类,将网络文档分组,这使得具有相似语义特征的文档能够被有效识别和分析。聚类后的数据会被标注质量标签,为优化Yi的数据混合策略提供重要参考。通过自动和手动验证识别出的低质量文档将从数据集中排除。
在过滤之后,实施了一个全面的去重流程,包括文档级别的MinHash去重和子文档级别的精确匹配去重,有效识别并移除文档内外的重复内容。此外,还使用主题模型对网络文档进行分类,预测新闻、广告和基于知识的内容等标签。在最终的预训练数据集中,对不太有帮助的内容(主要是广告)进行降采样,以确保信息密度。
Yi模型使用SentencePiece框架实现的字节对编码(BPE)来标记化预训练数据。Yi的词汇量设置为64,000,以平衡计算效率和词汇理解。特别地将数字拆分为单个数字,以便于更好地理解数值数据。允许罕见字符回退到unicode字节编码,以确保容错性。使用identity tokenizer避免将所有标点转移到半宽格式。
Yi模型采用了经典的仅解码器Transformer架构的修改版本,基于LLaMA的实现。模型的主要参数设置如表 1 所示。与LLaMA相比,Yi在注意力机制上进行了改进,即使用分组查询注意力(GQA),这在训练和推理成本上相比原始多头注意力(MHA)有显著降低。Yi模型还使用了SwiGLU激活函数,并调整了旋转位置编码(RoPE)的基频,以支持长达200K的上下文窗口。
微调
在微调阶段强调数据质量而非数量。微调数据集由少于10K的多轮指令-响应对话对组成,每个条目都经过多次迭代和用户反馈的精心构建和优化。
检查并确保响应中的知识不包含在模型内部,并消除可能导致记忆的响应。同时,重写响应中通常存在但可能被忽视的重复轮次。
为了确保不同能力的覆盖,包含了广泛的开源提示,涵盖问答、创意写作、对话、推理、数学、编码、安全和双语能力等领域。
采用ChatML风格的格式,使模型能够区分不同类型的信息,如系统配置、用户输入和助手响应。
使用下一个词预测损失进行微调,仅在响应上计算损失,而不在系统和用户指令上。使用AdamW优化器,设置β1为0.9,β2为0.999,ϵ为10^-8。序列长度为4096,批量大小为64。设置训练步数为300,恒定的学习率为1×10^-5,权重衰减为0.1,梯度裁剪的最大阈值为1.0,并使用NEFTune进行训练。
基础设施
为了高效调度大规模语言模型开发,尤其是可能需要在数千个GPU上运行数月的预训练阶段,01.AI公司构建了一个高效的多云任务调度算法来管理不同优先级的预训练、SFT(Supervised Fine-Tuning)和RLHF(Reinforcement Learning from Human Feedback)任务。他们还构建了一个高性能的内部训练框架,允许根据GPU的可用性自动弹性地调整预训练作业到不同节点大小。重要的是,所有与训练相关的超参数也会同时无缝调整。
在大规模模型训练阶段,内存和通信限制是两个主要的技术挑战,需要超越增加更多GPU的集成解决方案。01.AI公司采用了以下技术来应对内存和通信限制:
- ZeRO-1:通过在数据并行过程中划分优化器状态来减少内存消耗。
- 张量并行和流水线并行:在每个计算节点内部使用张量并行结合流水线并行,以避免节点间通信瓶颈。
- 内核融合技术:如Flash Attention和JIT内核,减少冗余的全局内存访问和消耗。
- 拓扑感知资源分配(排名策略):最小化不同交换机层之间的通信,这是典型胖树拓扑的限制。
与预训练不同,微调大型语言模型可能需要多个模型的协调,如DPO(Direct Preference Optimization)和PPO(Proximal Policy Optimization)的实践。在这样的训练作业中,一个典型的过程是使用参考/奖励模型来预测一批数据,然后让目标模型使用这些数据来计算损失并更新参数。为此,01.AI公司构建了一个多模型调度框架,以支持单个作业中不同LLMs的多个后端。
为了提高解码速度和内存使用效率,主要使用量化、动态批处理和分页注意力。通过4位模型量化和8位KV缓存量化,能够在几乎不降低性能(例如,在MMLU/CMMLU基准测试中的准确率下降不到1%)的情况下,实现显著的GPU内存节省。使用动态批处理来最小化响应时间并提高批处理效率。使用分页注意力来提高内存利用率并改善解码。
01.AI公司实现并改进了计算-通信重叠、序列并行性和通信压缩,以支持长达200K的上下文长度继续预训练和微调。他们将上下文长度扩展到200K的方法完全基于工程,就是说,他们没有修改模型架构,如稀疏、局部或滑动窗口注意力------即使输入长度为200K,模型仍然使用全注意力。
为了增强模型的可信度和安全性,01.AI公司开发了一个全栈的负责任的人工智能安全引擎(RAISE)。RAISE确保了安全的预训练、对齐和部署。在预训练阶段,他们构建了一套基于启发式规则、关键词匹配和学习分类器的过滤器,以删除包含个人标识符和私有数据的文本,并减少性、暴力和极端主义内容。在对齐阶段,他们首先构建了一个全面安全分类法,涵盖了从环境不和谐、迷信、宗教敏感性、歧视性做法、药物滥用、暴力行为、非法活动、仇恨言论、道德违规、隐私侵犯、自我伤害、色情内容、心理健康问题和网络安全威胁等广泛潜在问题。他们为这些类别策划了数据集,以实现强大的对齐,并将它们与他们的对话SFT数据混合。他们还在对齐阶段包含了一组模拟攻击场景的目标提示,有效地提高了模型对恶意使用的抵抗力。
评估
在基准测试开源模型时,01.AI公司生成的结果与公开来源报告的结果存在差异。这种差异主要是由于不同的模型使用了不同的提示(prompts)、后处理策略和采样技术。为了确保公平和无偏见,他们使用与原始基准测试默认设置一致的提示和后处理策略,并使用贪婪解码而不进行任何后处理。
表格 2 展示了Yi模型与其他大型语言模型(LLMs)在不同基准测试中的总体性能比较。这些测试包括常识推理、阅读理解、数学和编码等任务。尽管Yi模型在预训练时使用了比以往工作(通常 ≤ 2T)更多的tokens(3.1T),但在数学和编码相关任务上与现有的开源和闭源模型相比仍有明显差距。01.AI公司计划在未来发布增强数学和编码能力的模型。
尽管使用了相同的预训练语料,Yi-34B的性能显著优于Yi-6B,这表明更大的模型规模在代码和数学基准测试中的性能提升更为显著。与Falcon-180B等较大规模但可能数据质量较低的模型相比,Yi-34B或Qwen-14B等较小规模但数据质量更高的模型通常表现出更好的性能。
01.AI公司通过推断加权和的线性系数评估了模型的上下文学习能力,即在少量输入-输出示例的基础上推断潜在函数的能力。实验结果表明,当线性系数设置为[1, -1]时,Yi-34B和LLaMA-2 70B在答案完全匹配方面表现最佳。当线性系数增加到[1, 1, 1, 1, 1]时,只有足够大的模型(如LLaMA-2 70B和Mixtral)才能在完全匹配方面获得有意义的成绩,这表明通过上下文学习复杂函数是一种新兴能力。
在聊天模型性能的自动评估部分,01.AI公司使用了与基础模型相同的基准测试,并采用零样本和少样本方法。他们强调了4位量化结果,因为4位量化显著降低了内存需求,而模型性能几乎没有下降,这为在消费级设备上部署模型提供了基础。
在聊天模型性能的人类评估部分,01.AI公司进行了模型对话能力的评估,以确保其有效性和安全性。他们使用了社区提供的开源评估数据集,如alpaca-eval、Belle-eval和MT-bench,以及自己建立的有用和无害评估数据集。他们展示了Yi-34B-Chat在三个第三方评估中的性能结果,并指出尽管与GPT-4相比仍有差距,但Yi模型展现了熟练的双语(中文和英文)对话能力,并与用户偏好相符。
表格 4 展示了Yi聊天模型在自动基准测试中的总体性能,并与开源聊天模型进行了比较。特别强调4位量化结果的重要性。图 4 展示了Yi模型在匈牙利数学考试中的结果,显示了模型在数学计算能力方面的通用性。
表格 5 展示了Yi-34B-Chat与其他开源聊天模型在人类评估中的比较结果。图 5 展示了SFT数据扩展曲线,与UltraChat及其清洁版本UltraChat 200K相比,Yi数据在数据规模扩展时表现出明显的性能提升优势。
扩展Yi基础模型的能力
01.AI公司的长文本解决方案包括持续的预训练阶段和微调阶段,这两个阶段都是轻量级的。他们的基本假设是,利用200K输入上下文中的任何信息的潜力已经存在于基础模型中。持续的预训练阶段"解锁"了这种能力,这一点通过在"Needle-in-a-Haystack"测试中的强性能得到了证明。然后,微调阶段进一步调整响应的风格,以遵循人类的指令和偏好。
他们使用序列并行和分布式注意力继续预训练全注意力模型。他们没有使用任何稀疏或线性注意力,而是采用了全注意力的直接实现。他们继续在5B个token上预训练Yi 6B/34B基础模型,使用4M的批量大小,相当于100个优化步骤。这种轻量级的持续预训练已经能够使模型在"Needle-in-a-Haystack"测试中展现出强大的性能。
他们将短文本SFT数据与长文本文档问答数据混合。使用模型辅助的自动化方法(即合成数据)构建文档QA。在给出答案之前,他们要求模型复述或改写原始段落。这种数据格式鼓励模型的检索行为,并因此抑制了幻觉行为。
图 6 展示了Yi-34B-200K的"Needle-in-a-Haystack"测试性能。X轴表示文档的长度,Y轴表示文档中"needle"句子的深度。他们继续在5B个token的长文本数据混合上预训练模型,并展示了近乎全绿的性能。表格 6 显示了在200K适应后MMLU上的性能。将上下文长度扩展到200K并没有显著改变短文本的能力。
将图像理解能力整合到大模型中变得越来越可行。这里介绍了基于Yi-6B-Chat和Yi-34B-Chat语言模型的Yi视觉语言(Yi-VL)模型,即Yi-VL-6B和Yi-VL-34B。Yi-VL模型的架构包括三个主要模块:用于图像编码的视觉转换器(ViT),初始化为CLIP ViT-H/14模型;设计用于将图像特征与文本特征空间对齐的投影模块,由两层多层感知器(MLP)组成,具有层归一化;最后是大型语言模型,初始化为Yi-Chat模型,展现出在理解和生成中英文方面的特殊能力。
图 7 展示了Yi-VL模型的架构。在三个训练阶段中,不同的模块被标记为可训练(火图标)或冻结(雪花图标)。每个阶段中ViT使用的图像分辨率(224^2或448^2)也被标记。
Yi-VL模型经历了一个三阶段的训练过程:
在第一阶段,他们使用224^2的图像分辨率训练ViT和投影模块的参数。
在第二阶段,他们将ViT的图像分辨率扩展到448^2,以进一步提高模型识别复杂视觉细节的能力。
在第三阶段,训练整个模型的参数,主要目标是提高模型在多模态聊天交互中的熟练程度,从而使其能够无缝整合和解释视觉和语言输入。
表格 7 显示了Yi-VL发布时的MMMU测试集排行榜。
随着计算预算、模型大小和数据大小的增加,模型性能会提高。然而,在扩大计算预算时,如何在模型和数据大小之间分配资源仍然是一个巨大的挑战。01.AI公司提出了一种新的方法,通过一系列阶段性训练过程动态调整数据和模型大小之间的资源分配。这种策略根据扩展法则,迭代地微调数据特性和模型大小之间的平衡,提高模型训练效率和性能。
目标是将具有32层的Yi-6B基础模型扩展为一个具有48层的9B模型,名为Yi-9B基础模型,通过复制原始的16个中间层12-28。深度扩展涉及扩展基础模型的深度,然后继续对增强模型进行预训练阶段。
复制哪些层的决定可以通过评估每层输入和输出之间的余弦相似度分数来通知。这种方法允许在不需要额外预训练的情况下进行有针对性的模型扩展,只会导致最小的性能影响。这种对性能的最小影响归因于复制层的输入和输出之间的高余弦相似度,接近一,如图 8所示。
数据集由两个阶段的大约8000亿个token组成,其中约70%是最近收集和精心挑选的。01.AI公司在最后阶段增强了代码覆盖率,以提高代码性能。
为了优化训练过程,他们保持恒定的学习率3e-5,并采取战略性的方法,在模型损失稳定时逐渐增加批量大小,从4M个token开始。这种批量大小的增量调整,加上保持所有其他参数与既定的Yi-6B基础模型配置一致,对于应对大规模训练的挑战至关重要。
表格 8 详细说明了Yi-9B基础模型在各种基准测试中的性能,包括常识、推理、知识、编码和数学。它强调了Yi-9B基础模型在特定领域中的竞争优势,展示了他们的方法通过优化数据特性和模型大小之间的相互作用来提高模型性能的有效性。
Yi模型家族的代码和模型可以通过以下链接访问: