【大模子微调】SWIFT:一种可扩展的轻量级底子设施用于微调 ...

打印 上一主题 下一主题

主题 688|帖子 688|积分 2064

SWIFT:一种可扩展的轻量级底子设施用于微调

https://arxiv.org/abs/2408.05517
Yuze Zhao, Jintao Huang, Jinghan Hu, Daoze Zhang, Zeyinzi Jiang, Zhikai Wu, Baole Ai, Ang Wang, Wenmeng Zhou 和 Yingda Chen
ModelScope团队,阿里巴巴团体
摘要

近来在大型语言模子(LLMs)和多模态大型语言模子(MLLMs)方面的发展,利用基于留意力的Transformer架构,实现了卓越的性能和泛化本领。它们已经涵盖了传统学习任务的许多范畴。例如,基于文本的任务,如文本分类和序列标注,以及从前利用不同模子办理的多模态任务,如视觉问答(VQA)和光学字符辨认(OCR),现在可以基于一个底子模子处置惩罚。因此,LLMs和MLLMs,尤其是基于Transformer架构的模子的训练和轻量级微调,变得尤为重要。鉴于这些急迫需求,我们开辟了SWIFT,这是一种可定制的一站式大型模子底子设施。在支持300多个LLMs和50多个MLLMs的底子上,SWIFT成为开放源代码框架,为微调大型模子提供了最全面的支持。尤其是,它是第一个为MLLMs提供系统支持的训练框架。除了微调的核心功能外,SWIFT还整合了推理、评估和模子量化等后训练过程,以便在各种应用场景中快速接纳大型模子。通过对各种训练技术的系统集成,SWIFT提供了有效的工具,如大型模子不同训练技术之间的基准比较。对于专门针对代理框架的微调模子,我们展示了通过在SWIFT上利用自界说数据集举行训练,可以在ToolBench排行榜上获得显著改善,在Act.EM指标上相较于各种基线模子进步了                                    5.2                         %                         −                         21.8                         %                              {5.2}\% - {21.8}\%                  5.2%−21.8% ,幻觉淘汰了                                    1.6                         %                         −                         14.1                         %                              {1.6}\% - {14.1}\%                  1.6%−14.1% ,均匀性能提升                                    8                         %                         −                         17                         %                              8\% - {17}\%                  8%−17% 。
1 弁言

在已往几年中,Transformer [50] 被广泛承以为大型模子的主导架构之一。在早期阶段,仅利用编码器的布局完成文本分类和序列标注等任务,以BERT[13]等模子作为典型例子。相反,编码器-解码器和仅解码器布局主要用于文本天生任务。相比之下,视觉模子通常接纳ResNet架构处置惩罚视觉问答(VQA)、目的检测和图像分割等任务。这些早期的深度学习任务方法特性为不同任务利用不同的模子布局。
盘算本领的丰富和布局化的训练数据使得基于Transformer的模子的潜力得以发挥,随着工业界开始超越为单一任务调优的模子。这一转变使得Transformer成为开放范畴应用的优选架构。最显著的例子包括OpenAI的GPT模子[3, 47],以及M6 [35]和OFA [51]模子。这种进展突显了利用单一模子办理多个闭域任务的可行性。因此,利用大规模底子模子举行天生任务的范式已成为办理包括文本分类和序列标注在内的多项任务的新标准。留意力机制在利用单一底子模子来处置惩罚不同多模态任务时也得到了广泛的关注。Qwen-VL [2]、GLM4-V [20]、InternVL [7]和DiT模子 [44] 的发布都满足了这一趋势。这些底子模子在开放域图像-文本和视频-文本问答以及图像天生中表现出强大的本领。它们还展示了辨认详细图像信息和实行边界框标注的潜力,取得了与之前闭域办理方案相当的效果。
在大型模子的发展过程中,开源社区发挥了关键作用。Hugging                                              Face                            1                                       {\text{Face}}^{1}                  Face1 和 ModelScope                                                       2                                       {}^{2}                  2 等平台是促进大型模子共享和发展的显著例子。Hugging Face于2017年推出,最初的任务是办理与BERT的PyTorch版本相关的问题。由此产生的Transformers库后来成为实施大型模子的究竟标准。同时,Hugging Face训练器还支持多节点和多GPU并行训练方法,例如DeepSpeed和FSDP,使其成为最广泛利用的训练器之一。对于对齐技术,                                                         T                               R                               L                                      3                                       {\mathrm{{TRL}}}^{3}                  TRL3 被引入以扩展Transformers的底子训练器类,并实现特定方法以支持直接偏好优化(DPO)[48]、优化奖励策略优化(ORPO)[24]和知识转移优化(KTO)[17]等技术。
由于大型模子参数众多且内存消耗高,其开箱即用的训练已成为AI普及的重大瓶颈。早期的办理方案,如前缀调优[33]、提示调优[31]和P-Tuning                                    [                                   39                            ,                            40                                  ]                              \left\lbrack {{39},{40}}\right\rbrack                  [39,40] 开启了资源高效训练的篇章,但它们大概面临“知识遗忘”——这一现象形貌的是微调后的LLMs大概失去其来自底子模子的一般本领。LoRA [25] 的引入显示了在训练过程中显著淘汰内存消耗的潜力,相比于全参数训练不丧失模子的一般性。这使得开辟者在利用更易于访问的硬件上开始在范畴数据上举行高效训练。
随后,类似的技术不断被引入,如增强算法rsLoRA [28]、DoRA [37]、PISSA [41]、OLoRA [4]、LoRA+ [23]和LLaMA-Pro [52]等,提供了一系列用于高效微调的新技术。鉴于这些不同技术之间的巨大差异,开始出现统一训练接口的努力。例如,Hugging Face引入了专注于网络和标准化高效微调算法接口的PEFT                                                       4                                       {}^{4}                  4 。
除了基于额外布局(如LoRA)的轻量级训练技术外,量化也成为降低训练过程中的内存消耗的另一个办理方案。通常,LLMs利用16位的半精度格式,如float16和bfloat16,举行推理和训练。通过将张量类型淘汰到8位或4位,类似模子可以以更少的内存加载。甚至可以以1位或1.5位的精度运行模子;这种方法统称为量化。例如,BitsAndBytes [11] 利用带有异常值阈值的分段量化,AutoGPTQ [18] 对参数矩阵实行泰勒级数分解并利用海森矩阵评估参数重要性,而AWQ [34] 则评估参数重要性并应用量化的缩放因子。由于量化技术的复杂性及其对不同模子适应性差,Hugging Face社区推出了Optimum库                                                       5                                       {}^{5}                  5 ,作为各种量化方法的统一实现。然而,对于大多数开辟者来说,LLM训练和微调的任务仍然是艰巨的,因为上述办理方案仅支持有限数量的模子和技术。尤其是现有办理方案通常缺乏对新模子和技术的支持。此外,为了确保训练模子能够有效摆设,推理和评估等后训练过程也是利用训练模子的步骤。为了办理这个问题,我们推出了SWIFT                                                       6                                       {}^{6}                  6 ,一个旨在促进大型模子轻量级训练的开源框架,它还包罗后训练过程的综合功能。SWIFT帮助开辟者以最少的学习开销实行训练和推理操作。通过统一方式整合各种技术组件,无论是外部获取的还是自我开辟的,SWIFT的任务是实现大型模子的高效训练和开辟流程。
具体来说,我们的贡献可以总结如下:


  • 我们引入了SWIFT,一个与Transformers库的通用模子标准兼容的训练框架。SWIFT集成了PEFT和Optimum等库,实现了LLM和MLLM模子的预训练、微调和人类对齐。此外,还支持量化训练(QLoRA [12])。目前,SWIFT支持300多种LLM模子和50多种MLLM模子,涵盖所有主要的开源模子。它还支持150多个纯文本和多模态数据集。
  • 除了标准的留意力布局外,SWIFT还支持Mamba [22]模子等布局的训练和推理。此外,支持与Megatron [49]布局模子的训练,使得可以在多个节点和GPU上举行大规模并行预训练。
  • SWIFT项目中实现或植入了几种SOTA调优器,以增强轻量级训练。这些调优器旨在独立于我们的SWIFT训练循环利用,以允许更灵活的应用。- SWIFT库集成了众多后训练操作,包括量化(BNB/GPTQ/AWQ等)、LoRA归并、评估(支持100多个纯文本和多模态评估集),以及推理和摆设本领。在摆设方面,我们支持基于vLLM [30] 的原生PyTorch摆设和推理加速,以及LMDeploy [8],这些集成共同支持对大多数文本和多模态大模子的推理。
总而言之,我们全面构建了围绕LLM训练的完整技术链,有效降低了理解和利用大模子的成本。特殊是在多模态模子的训练方面,据我们所知,我们是第一个建立全面多任务训练和完整端到端办理方案的开源框架,针对众多多模态大模子。
2 相关工作

LLaMA-Factory[59] 是一个多功能、一体化的大模子训练框架。该框架与Hugging Face模子生态系统完全兼容。此外,它支持基于Gradio的WEB-UI,进一步降低了利用成本。LLaMA-Factory支持凌驾100种文本LLM的预训练、微调和人类对齐。它还促进了LLaVA、PaliGemma和YI-VL等一些多模态模子的训练。在评估本领方面,它支持CEVAL、MMLU和CMMLU数据集的评估过程,并启用基于vLLM的推理和摆设工作流程。
Firefly                                                       7                                       {}^{7}                  7 利用变换器训练生态系统(Trainer/PEFT等)。值得留意的是,它探索训练数据集并创建了一些流行的NLP训练数据集,例如firefly-train-                                    1.1                         M                              {1.1}\mathrm{M}                  1.1M 、moss-003-sft-data,以及ultrachat。他们还利用这些数据集对各种模子举行轻量级训练,包括firefly-mixtral-8x7b,在多个排行榜上超越了Yi-34B-Chat。
FastChat[58] 是一个全面的训练和推理框架。该框架具备模子训练、推理、摆设和评估的本领。FastChat利用变换器和PEFT举行训练,并支持LLaMA、Vicuna和T5等模子。它支持利用LoRA、QLoRA和XFormers                                                       8                                       {}^{8}                  8 等技术举行轻量级微调。在摆设方面,FastChat支持像vLLM、                                              SGLang                            9                                       {\text{SGLang}}^{9}                  SGLang9 和LightLLM                                                       10                                       {}^{10}                  10 如许的推理加速框架。FastChat专注于模子推理和摆设,训练支持相对有限。

表1:训练辅助本领支持的比较                                              蜥蜴                            11                                       {\text{蜥蜴}}^{11}                  蜥蜴11 利用像 TRL、PEFT 和 Transformers 如许的训练组件库。这个框架扩展了训练本领,包括 mambassm                                                       12                                       {}^{12}                  12 库的封装,从而增强了在 transformers 生态系统中训练这些模子的本领。蜥蜴支持多个系列的 LoRA 和 QLoRA 训练,包括 LLaMA、Mistral、Qwen 和 Phi,而且还支持推理和归并 LoRA 操作。
LMFlow[14] 以管道式风格封装了模子训练过程。它支持 LLaMA、Gemma 和 Qwen 等 LLM 模子的 SFT 和 RLHF 训练,并允许自界说优化器和调优器,如 LoRA。此外,它还开辟了轻量级微调技术,如 LISA[43]。LMFlow 提供了评估 LLM 的本领,并支持纯文本和多模态模子的推理和推理加速。
我们已在表1中总结了所有这些框架的本领以供参考。
3 实施与框架

我们以为,统一多种模子架构以增强模子的全面本领,是大型模子发展中的一个重要趋势。例如,文本和多模态 LLM 之间的主要区别在于额外的视觉塔组件。来自这个视觉塔的隐藏状态,在颠末投影器处置惩罚后,融入 LLM 的嵌入中。此外,绝大多数多模态模子可以支持文本输入,并以文本-only 模子的方式举行推理。预训练一个仅文本的模子通常必要处置惩罚的数据量达到数十太字节的令牌,这几乎靠近耗尽所有有效文本语料库的极限。然而,从多模态的角度来看,文本、图像和视频数据的隐含状态可以在高维空间中交换。因此,通过多模态预训练训练的模子可以被以为具有几乎无限的数据,因此,它们在数据上将具有显著的上风,超越那些仅基于文本训练的模子。为此,我们相信,多模态模子将在未来的模子开辟中占主导地位。在我们的框架设计中,我们努力消除纯文本 LLM 和多模态 LLM 之间的差距,方法是建立统一的数据处置惩罚、模子模板和模子训练标准。
训练或微调并不是 LLM 应用的终点。一旦模子被训练,就常常必要便捷高效的评估过程来确定模子质量。这些评估过程甚至可以在训练阶段集成以举行交叉验证(例如,在训练期间加入 gsm8k 评估),或者在推理期间对特定数据集举行综合评估。此外,还可以对模子举行后训练量化,以利用量化模子举行服务,确保在保持理论性能的同时,内存利用最小化。
这种必要性同样实用于模子摆设。高效推理和摆设各种后训练检查点,包括原始模子、LoRA 模子、LLaMA-Pro 模子和量化模子,同样重要。因此,在框架内整合上卑鄙本领,以及训练本身至关重要。这种整合不仅将简化模子应用的整体过程,还将使得能够一起探索不同的本领。评估与摆设、评估与训练,以及量化与摆设之间的团结关系可在此找到。我们相信,为了真正降低模子利用的门槛,构建一个以训练本领及其卑鄙整合为中心的统一框架以支持文本和多模态 LLM 是至关重要的。

图 1:SWIFT 框架
3.1 训练架构设计

SWIFT 支持几类轻量级调优技术:


  • 淘汰可训练参数:这涉及部分训练原始模子的参数。淘汰可训练参数的数量可以有效降低梯度值的数量。例如,LISA 随机激活不同的层,可以显著降低内存利用,而不会显著降低训练精度。
  • 模子量化:量化是降低内存压力的关键方法。其主要头脑是将模子的低精度浮点值转换为8位或更低的定点值。SWIFT 当前支持六种类型的量化:BNB、HQQ、EETQ、AWQ、GPTQ 和 AQLM。一般来说,量化方法与额外的训练布局相结合,如QLoRA。
  • 淘汰梯度值的内存利用:如 GaLore 等技术对梯度值实行 SVD 分解,有效淘汰存储这些值所需的内存。
  • 冻结原始模子:此方法支持与附加布局一起训练。典型的实现包括 LoRA 和 AdaLoRA。
  • 分片或混合精度:例如 DeepSpeed Zero1/2/3、FSDP 和混合精度训练。
如图 1 所示,调优器可以利用并扩展 PEFT 库的功能。例如,调优器结合了 LoRA、AdaLoRA [55]、IA3 [36]、BOFT [38] 和 Vera [29] 等技术。这些调优器颠末调整,以确保与 MLLMs 在训练时的兼容性与无缝操作。此外,与 PEFT 相比,SWIFT 提供更广泛的调优器支持,包括 SCEdit [27] 和 ResTuning [26],以及 LLaMA-Pro、LongLoRA 和 LISA。这些调优器可以组合利用,类似于 PEFT 的 MixedPeftModel 功能,并支持将停用的调优器卸载到 CPU 或元设备。这种调优器的整合使其不仅实用于 SWIFT 支持的模子,也实用于外部模子。SWIFT 通过其 prepare_model 和 from_pretrained 方法无缝支持 PEFT 调优器和自界说调优器。
在模子功能模块中,SWIFT 提供一个根本的模子加载器,允许灵活定制模子设置。考虑到在训练过程中大概出现各种兼容性问题,例如 dtype 转换错误或张量当场更改错误,SWIFT 利用补丁模块在模子加载后办理这些问题,确保在不同场景下(包括单 GPU、多 GPU、全参数或 LoRA 训练)的顺利运行。
在数据集模块中,支持三种类型的数据源。第一种是从 ModelScope 加载数据集的 MsDataset。第二种是来自 Hugging Face 的 ‘datasets’ 模块,提供 Hugging Face 数据集的加载本领。最后,我们支持用户自界说的数据集,例如本地的 CSV 或 JSONL 文件。数据集模块的一个关键功能是预处置惩罚本领,主要有两个功能:转换不同的数据集为标准格式。具体格式细节可在附录部分 A 中找到。
模子模块的一个关键构成部分是模板。该组件确保 SWIFT 支持的各种模子能够根据模子训练的设计正确天生输入_ids、attention_masks、pixel_values 和 labels 等关键字段。此模块与上述标准数据集格式交互,并根据不同模子的要求将这些格式转换为不同的输入。具体来说,对于多模态定位任务,边界框(bbox)坐标在模板中转换。例如,bbox_type ‘real’ 表现现实像素值,‘norm_1000’ 表现千分之一的值,‘norm_1’ 表现归一化坐标值。模板将数据的现实坐标值转换为模子所需的坐标值。
在模子的训练组件中,一个重要部分是训练器,包括 SFT/PT 训练器和人类对齐训练器。前者直接继续自 Transformers 的训练器,用于预测和训练下一个令牌的交叉熵。后者继续自 TRL 的相应类,用于训练各种 RLHF 算法,如 DPO、ORPO 和 KTO。对于多模态模子的 RLHF 任务,我们举行了额外的修改和调整,以确保我们支持的所有多模态模子都可以利用任何合规的对齐数据集举行 RLHF 训练。
具体来说,在预训练方向上,SWIFT 支持 Megatron 架构模子。特殊是在 CPT 场景中,SWIFT 首先将变换器架构的检查点转换为 Megatron 架构的检查点,然后继续利用 Megatron 的各种并行方法对模子举行预训练。训练后,检查点可以转换回变换器支持的格式。SWIFT 利用 PAI-Megatron-Patch 框架                                                       13                                       {}^{13}                  13 支持 Megatron。检查点的转换过程通过 SWIFT 中的导出模块支持。
在训练组件中,新优化器如 GaLore 和 Q-GaLore 被集成,使其在训练过程中易于利用。为了进一步减轻训练压力,SWIFT 支持序列并行技术 [10],在 DDP 条件下将序列分布到不同的进程,从而淘汰长序列训练的内存消耗。
为了方便在现实生产环境中利用 LLM 的训练、推理和评估,我们已在 PYPI 上发布 SWIFT,并通过下令行支持各种功能。在训练过程中,可以通过下令行下令轻松调用 SWIFT,具体下令可以在附录部分 A 中找到。
SWIFT 为不同任务提供三条下令:‘pt’ 用于预训练,‘sft’ 用于微调,‘rlhf’ 用于 RLHF。这些下令对纯文本模子和多模态模子都是一致的。对于数据集选择,SWIFT 支持利用 ‘-dataset’ 选项直接利用纯文本和多模态数据集,同时也支持引用本地训练文件。
最高级的接口是网络 UI。对于认识图形界面的用户,利用网络 UI 更符合他们的习惯。网络 UI 以 Gradio 作为底子框架。网络 UI 启动后,用户可以直接在界面上选择不同的训练阶段并调整各种训练超参数。一旦训练开始,界面将显示训练日志和丧失/正确率图表。对于 RLHF 任务,图表将更换为与任务类型相关的边距和 logps 等指标。这一工作流程实用于纯文本模子和多模态模子。本质上,SWIFT 网络 UI 充当下令行汇编器。网络 UI 为单节点多 GPU 或多节点多 GPU 实行组装下令行字符串,并利用这些下令举行多进程后台实行。
为了轻量级训练,SWIFT 支持 QLoRA 训练方法。可用的量化方法包括 BNB、HQQ [1]、EETQ [21]、AWQ、GPTQ 和 AQLM [16]。在模子支持方面,我们为凌驾 300 个 NLP 模子和 50 多个多模态模子提供了训练流程。具体而言,为了有效微调代理,我们合作创建了 MS-Agent 数据集                                                       14                                       {}^{14}                  14 。该数据集是一个相对稀缺的高质量中文微调数据集,专为代理设计。随后,我们更新了 MSAgent-Pro 数据集                                                       15                                       {}^{15}                  15 ,该数据集接纳 ToolBench 格式。该数据集对于监督微调(SFT)以增强代理本领非常重要,而且它包括 Chain of Thought (CoT) 过程,显著进步了多轮代理调用的有效性。为了方便代理微调,SWIFT 支持数据集格式中的 ‘tools’ 字段,并允许利用不同的提示格式举行微调训练(例如,ToolBench [45] 格式、ReACT [54] 格式或模子模板界说的其他格式)。这一点可以在 SWIFT 标准数据集界说中看到。
SWIFT 支持 ‘loss-scale’ 技术 [32],该技术增加了重要标记的训练权重。这使得模子在学习过程中更容易记偏重要内容。我们利用此技术增加了代理训练中关键部分的权重,例如 Action 和 Action_Input 字段,导致性能显著进步,相较于不利用 ‘loss-scale’。
在多模态范畴,SWIFT 提供全面支持,各种开放范畴任务可以在 SWIFT 中运行,例如视觉问答(VQA)、光学字符辨认(OCR)、基于内容的字幕天生和指向底子的理解。
3.1.1 推理和摆设架构设计。推理和摆设本质上存在自然的相互依赖关系。推理的核心逻辑可以在摆设中应用,反之亦然,摆设可以视为推理的服务封装。SWIFT 的推理和摆设可以根据后端分为三种类型:PyTorch Native(PT)、vLLM 和 LMDeploy。这三种推理框架共享类似的参数,为未来轻松扩展其他推理加速框架奠定了底子。SWIFT 对 vLLM 和 LMDeploy 的推理封装的一个重要缘故原由是,在原始框架无法充实支持模子模板的情况下,SWIFT 可以利用本身的模板来掩盖框架之间的差异。
SWIFT 利用 FastAPI 将推理封装为服务,完全符合 OpenAI 通用接口界说                                                       16                                       {}^{16}                  16 。在代理本领的摆设方面,SWIFT 支持 OpenAI 标准字段,如 tools 和 tool,而且在数据格式方面也支持代理数据格式的推理和摆设,如 ToolBench 和 ReACT。我们已将代理提示的连接直采取入模板,这意味着我们可以轻松支持不同模子的特定代理格式。
SWIFT 支持官方和训练模子的推理和摆设,这些功能在 WEB-UI 中也得到同样的支持。这意味着用户可以将 SWIFT 同时用作摆设框架和 ChatBot。值得留意的是,我们已在 vLLM 和 PT 后端中集成了对多 LoRA 推理和摆设的支持。具体而言,用户可以通过在 OpenAI 接口中指定各自的 LoRA 名称,方便地在不同的 LoRA 设置之间切换,而无需归并 LoRA 模子。
3.1.2 评估架构设计。评估和推理摆设是相互依赖的。模子的评估,尤其是那些训练后的模子,依赖于模子是否能够启动推理或摆设。在许多评估框架中,例如 OpenCompass[9],直接将标准 OpenAI 接口作为依赖利用,这也是支持 SWIFT 中推理和摆设的缘故原由之一。在实践中,开辟者大概利用不同的推理后端,例如 vLLM 或 LMDeploy。因此,在评估期间,开辟者可以灵活选择不同的后端和摆设情势(例如,官方模子、训练后 LoRA 模子、训练后 LLaMA-Pro 模子、归并模子、量化模子)举行评估,使过程更加与着实际利用案例或消融研究场景对齐。
为了方便利用自界说数据集,SWIFT 支持用于两种任务类型的自界说评估数据集:


  • 目的问题评估类似于 CEval:开辟者可以将他们的数据集格式化为 CEval 风格的 CSV 文件,然后举行评估,得出明确的效果。
  • 关于 QA 的主观问题评估:该评估利用标准指标,如 ROUGE 和 BLEU。在将数据写入 CSV 文件后,开辟者可以实行评估。                                              ∙                                      \bullet                        ∙ 在评估本领方面,我们依赖于 ModelScope Community 的 EvalScope                                                                     17                                                 {}^{17}                        17 框架。该框架通过整合 OpenCompass(用于文本模子)和 VLMEvalKit[15](用于多模态模子)构建评估本领。通过整合 EvalScope,SWIFT 当前支持凌驾                                              100                               +                                      {100} +                        100+ 总数的纯文本评估集和多模态评估集,以及上述两种类型的自界说评估数据集及其评估流程。
3.1.3 量化和导出架构设计。导出模块主要用于归并调谐器、转换检查点格式和量化。目前,该模块支持以下类型的导出操作:


  • 归并调谐器:包括归并横向可调整的 LoRA、LongLoRA 和 LLaMA-Pro。
  • 转换检查点:涉及将检查点在 Transformer 格式和 Megatron 格式之间互相转换。
  • 量化:目前,我们支持三种量化方法:AWQ、GPTQ 和 BNB。

  • 导出到 Ollama:该过程包括模子模板设置的归并,利用户能够方便地利用 ‘ollama’ 下令运行模子。

表 2: 量化方法的支持
4 实行

除了算法框架外,我们还探索了模子的调优和底层技术。我们的目的是让 SWIFT 不仅作为一个框架,还作为验证技术本身的一种方式。为此,我们将对 LLM 训练的探索分为几个方向。
4.1 轻量级调优基准

我们利用 SWIFT 复制并验证不同轻量级调优算法对模子的影响。以 qwen-7b-chat 作为底子模子,我们在单个 A100-80G GPU 上举行了训练,比较了内存利用和丧失等指标。
超参数值batch_size1gradient_accumulation_steps16epoch1max_length2048learning_rate5e-5gradient_checkpointingtrueflash_attntrueweight_decay0.01warmup_ratio0.03lora_rank8galore_rank128llamapro_new_blocks4lisa_activated_layers2 表 3: 调谐器基准超参数设置
实行超参数显示在图表 3 中,实行效果总结在表 4 中。在基准测试中,“Full”表现利用全参数训练的对照组实行。可以观察到,LISA 实现了最低的内存消耗和最快的速度。在额外布局调节器中,LoRA+ 记载了最低的评估丧失。在梯度减小方法中,Q-GaLore 表现出最低的内存消耗。PEFT 库中未包罗这些调优方法。
4.2 代理训练

代理训练是模子 SFT 中的重要类别。代理训练的质量决定了模子是否能够在代理框架内应用,以办理现实的业务问题。通常,代理本领可分为三种类型:

  • 文档检索
  • 代码解释器
  • API 调用
狭义上,代理训练通常指的是 API 调用。该本领与模子的思维链(CoT)本领呈正相关;CoT 本领越强,模子对 API 的理解和反思错误的本领越好。
在本研究中,我们利用混合数据集,包括 Tool-Bench 数据集和 AgentFlan [6] 数据集,并举行了系列实行。我们利用 LLaMA3-8b-instruct 模子和 Qwen2-7b-instruct 模子举行训练,并比较训练前后的效果。超参数设置如表 5 所示。
超参数值batch_size1gradient_accumulation_steps32epoch1max_length4096learning_rate2e-5gradient_checkpointingtrueflash_attntruelora_target_modules所有线性lora_rank8 表 5:代理实行超参数设置
在某些实行中,我们接纳丧失缩放技术来增强某些重要标记的权重。
基于 LLaMA3-8b-instruct 模子的丧失缩放技术的消融研究如表 6 和 7 所示。
模子筹划 EM举措 EM幻觉率均匀 F1R-L原始74.2236.1715.6820.012.14w/o 丧失缩放84.2955.714.8549.4025.06w/ 丧失缩放85.158.151.5752.1026.02 表 6:LoRA(范畴内)丧失缩放的消融测试
模子筹划 EM举措 EM幻觉率均匀 F1R-L原始69.4734.2114.7220.2514.07w/o 丧失缩放85.1055.555.2648.5231.22w/ 丧失缩放85.7959.432.5652.1931.43 表 7:LoRA(范畴外)丧失缩放的消融测试
实行效果表明,引入丧失缩放显著进步了所有评估指标。
Qwen2-7b-instruct 的实行效果如表 8 和 9 所示。
模子筹划 EM举措 EM幻觉率均匀 F1R-L原始74.1154.744.1646.538.51GPT480.2855.525.9848.7428.69LoRA(我们的方法)77.0556.970.949.5319.81全量(我们的方法)83.3760.012.5854.4126.34 表 8:Qwen2-7b-instruct ToolBench(范畴内)效果
模子筹划.EM举措.EM幻觉率均匀.F1R-L原始73.1757.673.8448.5811.23GPT477.8055.265.1247.4530.61LoRA(我们的)78.0558.911.5351.2826.04全量(我们的)82.5760.141.7955.2531.34 表9:Qwen2-7b-instruct ToolBench(超出范畴)效果
可以观察到,与官方Qwen2模子相比,训练后的均匀指标进步了                                    8.25                         %                              {8.25}\%                  8.25% ,模子幻觉淘汰到个位数。此外,大多数指标凌驾了GPT-4的表现。
LLaMA3-8b-instruct的实行效果显示在表10和11中。
模子筹划.EM举措.EM幻觉率均匀.F1R-L原始74.2236.1715.6820.012.14LoRA(我们的)84.5844.7315.1138.9022.22 表10:Llama3-8b-instruct ToolBench(范畴内)效果
基于LoRA训练,LLaMA3的均匀指标进步了                                    17                         %                              {17}\%                  17% 。这表明开源模子和数据集对现实垂直场景的代理训练具有重要意义。我们对训练过程中利用的超参数和其他经验举行了总结,以便其他开辟者能够复现和应用。提到的数据集                                                       18                                       {}^{18}                  18 和模子                                                       1920                                       {}^{1920}                  1920 均可在ModelScope中找到。
模子筹划.EM举措.EM幻觉率均匀.F1R-L原始69.4734.2114.7220.2514.07LoRA(我们的)84.349.5613.1943.0924.85 表11:Llama3-8b-instruct ToolBench(超出范畴)效果
5 结论

在本文中,我们形貌了SWIFT,这是一个来自ModelScope的轻量级一站式大模子训练框架。我们希望这个框架能够消除不同模子、数据集和SOTA技术之间的不匹配,为开辟者提供一种标准化的办理方案,可以以闭环的方式办理整个问题。SWIFT支持凌驾300个LLM和50个MLLM,并提供基于下令行的易用WEB-UI。开辟者可以在WEB-UI上实行各种下令行操作,大大降低利用成本。然而,由于开辟时间有限和其他因素,SWIFT仍有更多功能筹划,例如:

  • 更好地支持Megatron大规模并行训练。目前,SWIFT对Megatron模子的支持并未完全覆盖主流的LLM和MLLM。我们希望SWIFT能够为底子模子开辟者提供更大的预训练便利。
  • 更深入的多模态研究。固然SWIFT已经支持大多数主流多模态模子的训练,但我们仍然缺乏对多模态数据集和模子的更深入工作,例如提供高质量的数据集以防止知识遗忘,或利用ModelScope自开辟的数据集训练新的多模态模子。此外,我们希望对多模态代理、多模态CoT和多模态对齐训练举行更深入的研究。
  • 支持RAG系统。我们希望SWIFT的训练技术能够更具SOTA和稳健性,更易于连接到各种AI系统,例如为RAG系统模子提供增强训练,帮助RAG系统进步召回率和答复正确性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

星球的眼睛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表