该文档是一篇关于LLAMAFACTORY的学术论文,这是一个用于高效微调大型语言模型(LLMs)的统一框架。这篇论文详细介绍了LLAMAFACTORY的设计、实现和评估,以及它在语言建模和文本生成任务中的应用。下面是对文档内容的详细解释:
摘要(Abstract)
背景:大型语言模型(LLMs)在多种应用中展现了卓越的推理能力,但需要有效的微调方法来适应下游任务。 问题:现有的高效微调方法缺乏一个系统化的框架,无法统一适应不同的LLMs,并提供友好的用户定制界面。 解决方案:LLAMAFACTORY提供了一个统一的框架,通过可扩展的模块整合了多种高效的微调方法,允许用户通过内置的Web UI(LLAMABOARD)灵活定制100多个LLMs的微调,无需编码。 验证:通过实验验证了框架在语言建模和文本生成任务中的效率和有效性。 开源:LLAMAFACTORY在GitHub上开源,并已获得超过13,000个星标和1,600个分支。引言(Introduction)
LLMs的重要性:介绍了LLMs在问答、机器翻译和信息提取等应用中的作用。 微调挑战:指出了在有限资源下对大量参数进行微调的主要挑战。 现有方法的局限性:社区贡献了多种高效微调方法,但缺乏一个统一的框架。LLAMAFACTORY框架(LLAMAFACTORY Framework)
模块组成:由Model Loader、Data Worker和Trainer三个主要模块组成。 功能:支持100多个预训练模型和50多个NLP数据集,提供了命令行和Web界面,用户可以轻松定制和微调LLMs。高效微调技术(Efficient Fine-Tuning Techniques)
优化技术:包括冻结部分参数的freeze-tuning方法,梯度低秩投影(GaLore),低秩适应(LoRA)等。 计算技术:包括混合精度训练、激活检查点、Flash Attention等。LLAMAFACTORY架构(LLAMAFACTORY Architecture)
Model Loader:准备各种架构进行微调,支持超过100个LLMs。 Data Worker:通过设计良好的管道处理不同任务的数据,支持50多个数据集。 Trainer:统一高效的微调方法,适应不同任务和数据集的模型。实验研究(Empirical Study)
训练效率:使用PubMed数据集,比较了不同微调方法在内存使用、吞吐量和困惑度方面的效率。 下游任务微调:在CNN/DM、XSum和AdGen等文本生成任务上评估了不同模型的性能。结论和未来工作(Conclusion and Future Work)
贡献:LLAMAFACTORY作为一个统一框架,通过模块化设计,最小化了模型、数据集和训练方法之间的依赖,提供了超过100个LLMs的多样化高效微调技术。 未来方向:将持续更新LLAMAFACTORY以保持与最先进的模型和微调技术的同步,并探索更先进的并行训练策略和多模态高效微调。更广泛的影响和负责任的使用(Broader Impact and Responsible Use)
社区贡献:LLAMAFACTORY吸引了许多对LLMs感兴趣的个人,促进了开源社区的成长。 许可证遵守:使用LLAMAFACTORY进行微调时,必须遵守模型许可证,以防止潜在的滥用。附录和表格
表格1:LLAMAFACTORY中支持的高效微调技术及其兼容性。 表格2:LLAMAFACTORY中的数据集结构。 表格3:使用LLAMAFACTORY不同微调方法的训练效率比较。 表格4:在特定任务上使用不同微调方法的性能比较。 表格5:LLAMAFACTORY与现有LLM微调框架的比较。 表格6:LLAMAFACTORY支持的模型列表。 表格7:LLAMAFACTORY中函数调用的提示示例。实验细节(Experiment Details)
训练效率实验:描述了实验设置,包括学习率、批次大小、优化器和硬件配置。 下游任务微调实验:简要描述了用于评估不同微调方法有效性的CNN/DM、XSum和AdGen数据集。这篇论文提供了LLAMAFACTORY框架的全面介绍,包括其设计理念、实现细节、实验验证以及与现有技术的比较。此外,它还讨论了框架的社会影响和负责任使用的重要性。
LlamaFactory:100+语言模型统一高效微调
Yaowei Zheng1, Richong Zhang1, Junhao Zhang1, Yanhan Ye1, Zheyan Luo1, Yongqiang Ma2
1School of Computer Science and Engineering, Beihang University, China
2School of Software and Microelectronics, Peking University, China
hiyouga@buaa.edu.cn, zhangrc@act.buaa.edu.cn, {zhang.jh,yeyanhan,akamya}@buaa.edu.cn, codingma@pku.edu.cn
Demonstration video: https://youtu.be/W29FgeZEpus
摘要
有效的微调对于使大语言模型适应下游任务至关重要。 然而,在不同的模型上实现这些方法需要付出很大的努力。 我们提出了LlamaFactory,一个集成了一套尖端高效训练方法的统一框架。 它允许用户通过内置的Web UI LlamaBoard灵活定制100+大语言模型的微调,而无需编码。 我们凭经验验证了我们的框架在语言建模和文本生成任务上的效率和有效性。 它已在 GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs 发布,并已获得超过 13,000 个 star 和 1,600 个分叉。
LlamaFactory:100+语言模型统一高效微调
Yaowei Zheng1, Richong Zhang1, Junhao Zhang1, Yanhan Ye1, Zheyan Luo1, Yongqiang Ma21School of Computer Science and Engineering, Beihang University, China2School of Software and Microelectronics, Peking University, Chinahiyouga@buaa.edu.cn, zhangrc@act.buaa.edu.cn, {zhang.jh,yeyanhan,akamya}@buaa.edu.cn, codingma@pku.edu.cnDemonstration video: https://youtu.be/W29FgeZEpus
1简介
大语言模型(大语言模型)(Zhao等人,2023)呈现出卓越的推理能力,并赋能广泛的应用,例如问答(Jiang等人,2023b) t1>、机器翻译(Wang 等人, 2023c; Jiao 等人, 2023a)、信息提取(Jiao 等人, 2023b)。 随后,大量的大语言模型被开发出来并通过开源社区访问。 例如,Hugging Face开放的大语言模型排行榜(Beeching等人,2023)拥有超过5000个模型,为寻求利用大语言模型力量的个人提供了便利。
用有限的资源微调极其大量的参数成为大语言模型适应下游任务的主要挑战。 一种流行的解决方案是高效的微调(Houlsby 等人,2019;Hu 等人,2022;Ben Zaken 等人,2022;Dettmers 等人,2023;Zhao 等人,2024),它可以减少大语言模型适应各种任务时的训练成本。 然而,社区提供了各种高效微调大语言模型的方法,缺乏一个系统框架来将这些方法适应和统一到不同的大语言模型,并为用户定制提供友好的界面。
为了解决上述问题,我们开发了LlamaFactory,一个使大语言模型微调民主化的框架。 它通过可扩展的模块统一了多种高效的微调方法,能够以最少的资源和高吞吐量实现数百个大语言模型的微调。 此外,它还简化了常用的训练方法,包括生成式预训练(Radford等人,2018)、监督微调(SFT)(Wei等人,2022)、基于人类反馈的强化学习 (RLHF) Ouyang 等人 (2022) 和直接偏好优化 (DPO) Rafailov 等人 (2023)。 用户可以利用命令行或 Web 界面来定制和配置他们的大语言模型,只需很少的编码工作或无需编码工作。
LlamaFactory由三个主要模块组成:Model Loader、Data Worker和Trainer。 我们最大限度地减少这些模块对特定模型和数据集的依赖,使框架能够灵活地扩展到数百个模型和数据集。 具体来说,我们首先建立一个模型注册表,模型加载器可以通过识别确切的层将适配器精确地附加到预训练的模型上。 然后我们开发一个数据描述规范,允许数据工作者通过对齐相应的列来收集数据集。 此外,我们提供了高效微调方法的即插即用实现,使训练器能够通过替换默认方法来激活。 我们的设计允许这些模块在不同的训练方法中重复使用,从而显着降低新方法的集成成本。
LlamaFactory 使用 PyTorch 实现(Paszke 等人, 2019) 并显着受益于 Transformers 等开源库(Wolf 等人, 2020) t2>、PEFT (Mangrulkar 等人,2022) 和 TRL (von Werra 等人,2020)。 在此基础上,我们提供了一个具有更高抽象级别的开箱即用的框架。 此外,我们还使用 Gradio (Abid 等人,2019) 构建了 LlamaBoard,无需编码即可微调大语言模型。
LlamaFactory 在 Apache-2.0 许可证下开源。 它已在 GitHub 上获得超过 13,000 颗星和 1,600 个分支1,并在 Hugging Face Hub2 上的 LlamaFactory 上构建了数百个开源模型。 例如,著名的 GemSUra-7B (Nguyen 等人,2024) 是基于 LlamaFactory 构建的,它首先揭示了 Gemma 的跨语言能力(梅斯纳德等人,2024)。 此外,还有数十项研究利用我们的框架探索大语言模型的新方法,例如Wang等人(2023a);于等人 (2023); Bhardwaj 等人 (2024)。
2高效的微调技术
高效的大语言模型微调技术可以分为两大类:针对优化的技术和针对计算的技术。 高效优化技术的主要目标是调整大语言模型的参数,同时将成本保持在最低限度。 另一方面,高效的计算方法寻求减少大语言模型中所需计算的时间或空间。 表1列出了LlamaFactory中包含的方法。 我们将在下面的章节中介绍这些有效的微调技术,并展示通过将它们合并到我们的框架中所实现的显着效率改进。
表格1:LlamaFactory 中的高效微调技术。 相互兼容的技术用✓标记,而不兼容的技术用✗标记。
Freeze-tuning GaLore LoRA DoRA Mixed precision ✓ ✓ ✓ ✓ Checkpointing ✓ ✓ ✓ ✓ Flash attention ✓ ✓ ✓ ✓ S2 attention ✓ ✓ ✓ ✓ Quantization ✗ ✗ ✓ ✓ Unsloth ✗ ✗ ✓ ✗2.1高效优化
首先,我们概述了 LlamaFactory 中使用的高效优化技术。 冻结调整方法(Houlsby等人,2019)涉及冻结大部分参数,同时微调一小部分解码器层中的剩余参数。 另一种称为梯度低秩投影(GaLore)(Zhao 等人,2024)的方法将梯度投影到低维空间,以节省内存的方式促进全参数学习。 相反,低秩适应(LoRA)(Hu等人,2022)方法冻结所有预训练的权重,并向指定层引入一对可训练的低秩矩阵。 当与量化相结合时,这种方法被称为 QLoRA (Dettmers 等人,2023),它还减少了内存使用量。 权重分解低秩自适应(DoRA)(Liu等人,2024)方法将预训练的权重分解为幅度和方向分量,仅将LoRA应用于方向分量以增强精细化大语言模型的调优。 LoRA+ (Hayou 等人, 2024) 的提出是为了克服 LoRA 的次优性。
2.2高效计算
在LlamaFactory中,我们集成了一系列高效的计算技术。 常用的技术包括混合精度训练(Micikevicius等人,2018)和激活检查点(Chen等人,2016)。 Flash Attention (Dao 等人,2022) 通过对注意力层输入输出(IO)开销的检查得出见解,引入了一种硬件友好的方法来增强注意力计算。 S2注意力(Chen 等人, 2024b)解决了块稀疏注意力中扩展上下文的挑战,从而减少了微调长上下文大语言模型的内存使用。 各种量化策略(Dettmers 等人,2022a;Frantar 等人,2023;Lin 等人,2023;Egiazarian 等人,2024)通过利用较低的-权重的精确表示。 然而,量化模型的微调仅限于基于适配器的技术,例如 LoRA (Hu 等人,2022)。 Unsloth (Han and Han, 2023) 结合了 Triton (Tillet 等人, 2019) 来实现 LoRA 的反向传播,减少梯度期间的浮点运算 (FLOP)下降并导致快速 LoRA 训练。
LlamaFactory有效地将这些技术组合成一个内聚的结构,大大提高了大语言模型微调的效率。 这导致混合精度(Micikevicius等人,2018)期间每个参数18个字节的内存占用减少或bfloat16训练(Le Scao等人,2022)每个参数8个字节的内存占用减少) 每个参数仅 0.6 个字节。 下一节将进一步阐述我们的框架。
3LlamaFactory框架
LlamaFactory 由三个主要模块组成:Model Loader、Data Worker 和 Trainer。 模型加载器准备了各种架构进行微调,支持超过100个大语言模型。 Data Worker 通过精心设计的管道处理来自不同任务的数据,该管道支持 50 多个数据集。 Trainer 统一了高效的微调方法,使这些模型适应不同的任务和数据集,它提供了四种训练方法。 LlamaBoard为上述模块提供了友好的可视化界面,使用户能够以无代码的方式配置和启动单个大语言模型微调过程,并实时监控状态。 我们在图1中说明了LlamaFactory的整体架构。
LlamaBoardArgument ConfiguratorTraining Status MonitorTrainerOptimizationApproachesLoRA+GaLoreOffloadPartitionPre-trainSFTRLHFDPOModel LoaderData WorkerInitializationPatchesQuantizationAdaptersAligningLoadingPreprocessMerging100+ Pre-Trained Models50+ NLP Datasets
图1:LlamaFactory的架构。
3.1模型加载器
本节首先介绍模型加载器中的四个组件:模型初始化、模型修补、模型量化和适配器附加,然后描述我们通过在精细时处理参数浮点精度来适应各种设备的方法。调整。
模型初始化
我们使用 Transformers (Wolf 等人, 2020) 的 AutoModel API 来加载模型和初始化参数。 为了使我们的框架兼容不同的模型架构,我们建立了一个模型注册表来存储每一层的类型,从而方便更直接地利用高效的微调技术。 如果标记器的词汇量大小超过嵌入层的容量,我们会调整层的大小并使用噪声均值初始化来初始化新参数。 为了确定 RoPE 缩放(Chen 等人,2023) 的缩放因子,我们将其计算为最大输入序列长度与模型上下文长度的比率。
模型修补
为了启用 flash 注意力和 S2 注意力,我们使用猴子补丁来代替模型的前向计算。 尽管如此,由于自 Transformers 4.34.0 起就支持 Flash Attention,因此我们使用 API 来启用 Flash Attention。 为了防止动态模块的过度划分,我们在 DeepSpeed ZeRO-3 (Rasley 等人, 2020) 下优化时将专家混合 (MoE) 块设置为叶模块。
模型量化
可以通过bitsandbytes库(Dettmers,2021)使用大语言模型.int8(Dettmers等人,2022a)将模型动态量化为8位或4位。 对于 4 位量化,我们利用双量化和 4 位普通浮点作为 QLoRA (Dettmers 等人,2023)。 我们还支持对训练后量化(PTQ)方法量化的模型进行微调,包括 GPTQ (Frantar 等人, 2023)、AWQ (Lin 等人, 2023) 和 AQLM (Egiazarian 等人,2024)。 请注意,我们不能直接计算量化权重;因此,量化模型仅与基于适配器的方法兼容。
适配器连接
我们使用模型注册表自动识别适当的层来附加适配器。 默认情况下,适配器附加到层的子集以节省内存,但将它们附加到所有线性层可能会产生更好的性能(Dettmers 等人,2023)。 PEFT (Mangrulkar 等人, 2022) 库提供了一种极其方便的方式来连接适配器,例如 LoRA (Hu 等人, 2022)、rsLoRA (Kalajdzievski, 2023),以及 DoRA (刘等人,2024)。 我们用 Unsloth (Han and Han, 2023) 的反向计算代替反向计算来加速 LoRA。 为了根据人类反馈(RLHF)执行强化学习,我们在模型上添加了一个值头,这是一个将每个词符的表示映射到标量的线性层。
精准适配
我们根据设备的功能处理预训练模型的浮点精度。 对于 NVIDIA GPU,如果计算能力为 8.0 或更高,我们使用 bfloat16 精度。 否则,采用float16。 我们对 Ascend NPU 和 AMD GPU 使用 float16,对非 CUDA 设备使用 float32。 请注意,以 float16 精度加载 bfloat16 模型可能会导致溢出问题。 在混合精度训练中,我们将所有可训练参数设置为 float32。 尽管如此,我们在 bfloat16 训练中保留了可训练参数 bfloat16 。
3.2数据工作者
我们开发了一个数据处理管道,包括数据集加载、数据集对齐、数据集合并和数据集预处理。 它将不同任务的数据集标准化为统一的格式,使我们能够对各种格式的数据集进行建模。
数据集加载
我们利用数据集(Lhoest 等人, 2021) 库来加载数据,它允许用户从 Hugging Face Hub 加载远程数据集或通过脚本或文件读取本地数据集。 数据集库显着减少了数据处理过程中的内存开销,并使用 Arrow (Apache,2016) 加速样本查询。 默认情况下,整个数据集下载到本地磁盘。 但是,如果数据集太大而无法存储,我们的框架会提供数据集流来迭代它而无需下载。
表2:LlamaFactory 中的数据集结构。
Plain text[{"text": "…"}, {"text": "…"}]
Alpaca-like data[{"instruction": "…", "input": "…", "output": "…"}]
ShareGPT-like data[{"conversations": [{"from": "human", "value": "…"}, {"from": "gpt", "value": "…"}]}]
Preference data[{"instruction": "…", "input": "…", "output": ["…", "…"]}]
Standardized data{"prompt": [{"role": "…", "content": "…"}],
"response": [{"role": "…", "content": "…"}],
"system": "…", "tools": "…"}
数据集对齐
为了统一数据集格式,我们设计了数据描述规范来表征数据集的结构。 例如,alpaca 数据集有三列:指令、输入和输出(Taori 等人, 2023)。 我们根据数据描述规范将数据集转换为兼容各种任务的标准结构。 表2中显示了数据集结构的一些示例。
数据集合并
统一的数据集结构提供了合并多个数据集的有效方法。 对于非流模式下的数据集,我们只需在数据集被打乱之前将它们连接起来即可。 然而,在流模式下,简单地连接数据集会阻碍数据洗牌。 因此,我们提供了从不同数据集中交替读取数据的方法。
数据集预处理
LlamaFactory 旨在微调文本生成模型,主要用于聊天补全。 聊天模板是这些模型中的关键组成部分,因为它与这些模型的指令跟踪能力高度相关。 因此,我们提供了数十种聊天模板,可以根据模型类型自动选择。 我们使用分词器应用聊天模板后对句子进行编码。 默认情况下,我们只计算完成时的损失,而忽略提示(Taori等人,2023)。 或者,我们可以利用序列打包 (Krell 等人, 2021) 来减少训练时间,该时间在执行生成预训练时自动启用。 附录C显示了我们模板设计的详细信息。
3.3培训师
高效训练
我们将最先进的高效微调方法,包括 LoRA+ (Hayou 等人, 2024) 和 GaLore (Zhao 等人, 2024) 集成到训练器中通过替换默认组件。 这些训练方法独立于训练者,使它们可以轻松应用于各种任务。 我们使用 Transformers (Wolf 等人, 2020) 的训练器进行预训练和 SFT,同时采用 TRL (von Werra 等人, 2020) 的训练器进行 RLHF和 DPO。 利用定制的数据整理器来区分不同训练方法的培训师。 为了匹配偏好数据的训练器输入格式,我们在一批中构建 2� 样本,其中第一个 � 样本是选择的样本,最后一个 � 样本都是被拒绝的例子。
模型共享 RLHF
允许在消费设备上进行 RLHF 训练对于大语言模型微调来说是一个有用的属性。 然而,这很困难,因为 RLHF 训练需要四种不同的模型。 为了解决这一问题,我们提出了模型共享 RLHF 训练,使整个 RLHF 只需要一个以上的预训练模型。 具体来说,我们首先训练一个适配器和一个具有奖励建模目标函数的值头,使模型能够计算奖励分数。 然后我们初始化另一个适配器和值头,并使用 PPO 算法(Ouyang 等人,2022)对它们进行训练。 训练过程中,通过 PEFT (Mangrulkar 等人, 2022) 的 set_adapter 和 disable_adapter API 动态切换适配器和值头,允许预配置-训练模型同时充当政策、价值、参考和奖励模型。 据我们所知,这是第一个在消费设备上支持 RLHF 训练的方法。
分布式训练
我们可以将上述训练器与 DeepSpeed (Rasley 等人, 2020) 结合起来进行分布式训练。 利用 DeepSpeed ZeRO 优化器,可以通过分区或卸载进一步减少内存消耗。
3.4实用程序
加速推理
在推理期间,我们重用数据工作者的聊天模板来构建模型输入。 我们支持使用 Transformers (Wolf 等人, 2020) 和 vLLM (Kwon 等人, 2023) 对模型输出进行采样,两者都支持流解码。 此外,我们实现了一个OpenAI风格的API,利用异步大语言模型引擎和vLLM的分页注意力来提供高吞吐量并发推理服务,方便将微调的大语言模型部署到各种应用程序中。
综合评价
我们提供了多个评估大语言模型的指标,包括多项选择任务,例如 MMLU (Hendrycks 等人, 2021)、CMMLU (Li 等人, 2023a) 和C-Eval (Huang 等人, 2023),以及计算文本相似度分数,如 BLEU-4 (Papineni 等人, 2002) 和 ROUGE (Lin ,2004)。
3.5LlamaBoard:LlamaFactory的统一接口
LlamaBoard是基于Gradio(Abid等人,2019)的统一用户界面,允许用户自定义大语言模型的微调,而无需编写任何代码。 它提供了简化的模型微调和推理服务,使用户能够在实践中轻松利用100多个大语言模型和50多个数据集。 LlamaBoard具有以下显着特点:
轻松配置 LlamaBoard 允许用户通过与 Web 界面交互来自定义微调参数。 我们为大多数用户推荐的许多参数提供了默认值,从而简化了配置过程。 此外,用户可以在 Web UI 上预览数据集以检查其自定义格式。
可监控的训练 训练过程中,训练日志和训练损失曲线可视化并实时更新,方便用户监控训练进度。 此功能为分析微调过程提供了宝贵的见解。
灵活评估 LlamaBoard 支持计算数据集上的文本相似度分数以自动评估模型或通过与模型聊天进行人工评估。
多语言支持 LlamaBoard 提供本地化文件,方便集成新语言来渲染界面。 目前我们支持英语、俄语、中文三种语言,可以让更广泛的用户使用 羊驼板 用于微调大语言模型。
4实证研究
表3:LlamaFactory中使用不同微调方法的训练效率比较。 每个模型的 GaLore、LoRA 和 QLoRA 中最好的结果以粗体显示。
Gemma-2B Llama2-7B Llama2-13B Method Memory Throughput PPL Memory Throughput PPL Memory Throughput PPL (GB) (Tokens/s) (GB) (Tokens/s) (GB) (Tokens/s) Baseline / / 11.83 / / 7.53 / / 6.66 Full-tuning 17.06 3090.42 10.34 38.72 1334.72 5.56 / / / Freeze-tuning 8.10 5608.49 11.33 15.69 2904.98 6.59 29.02 1841.46 6.56 GaLore 10.16 2483.05 10.38 15.43 1583.77 5.88 28.91 956.39 5.72 LoRA 7.91 3521.05 10.19 16.32 1954.07 5.81 30.09 1468.19 5.75 QLoRA 5.21 3158.59 10.46 7.52 1579.16 5.91 12.61 973.53 5.81表4:在 LlamaFactory 中使用不同微调方法在特定任务上的性能比较(以 ROUGE 计)。 每个模型的最佳结果是下划线,每个任务的最佳结果是粗体。
CNN / DM XSum AdGen Model Baseline FT GaLore LoRA QLoRA Baseline FT GaLore LoRA QLoRA Baseline FT GaLore LoRA QLoRA LLaMA2-7B 12.94 22.87 22.40 22.70 22.61 13.89 27.69 27.64 28.80 28.05 0.61 20.51 19.61 20.29 20.45 Mistral-7B 14.39 22.03 22.99 23.47 23.28 15.87 23.57 28.00 30.41 30.44 7.82 20.14 20.90 20.99 20.56 Gemma-7B 15.97 22.07 / 22.41 22.44 15.31 25.13 / 28.67 29.02 11.57 19.99 / 20.62 19.81 Qwen1.5-7B 15.40 22.46 21.76 22.71 22.52 19.27 26.68 26.64 27.77 27.60 14.49 20.42 21.08 21.31 21.34 Yi-6B 16.85 22.40 22.68 22.98 22.97 18.24 27.09 28.25 28.71 29.21 13.34 19.68 20.06 20.97 20.31 ChatGLM3-6B 18.51 22.00 22.16 21.68 21.70 16.14 26.25 26.34 26.50 26.78 14.53 19.91 20.57 20.47 20.49我们系统地评估LlamaFactory 从两个角度来看:1)内存使用、吞吐量和困惑度方面的训练效率。 2)下游任务适应的有效性。
4.1训练效率
实验装置
我们利用 PubMed Canese 和 Weis (2013) 数据集,其中包含超过 3600 万条生物医学文献记录。 我们从文献摘要中提取了大约 400,000 个标记来构建训练示例。 我们使用生成预训练目标来构建 Gemma-2B (Mesnard 等人, 2024)、Llama2-7B 和 Llama2-13B (Touvron 等人, 2023b) 模型具有各种有效的微调方法。 我们比较了全调优、冻结调优、GaLore、LoRA 和 4 位 QLoRA 的结果。 微调后,我们计算训练示例的困惑度来评估不同方法的效率。 我们还将预训练模型的困惑度作为基线。 更多实验细节可参见附录 D.1.
结果
训练效率结果见表3,其中内存是指训练期间消耗的峰值内存,吞吐量计算为每秒训练的 Token 数量,PPL 表示模型在训练示例上的困惑度。 由于完全调优 Llama2-13B 会导致内存溢出,因此不会记录结果。 我们观察到 QLoRA 始终具有最低的内存占用,因为预训练的权重以较低的精度表示。 LoRA 利用 Unsloth 对 LoRA 层的优化表现出更高的吞吐量。 GaLore 在大型模型上实现了较低的 PPL,而 LoRA 在小型模型上具有优势。
4.2下游任务的微调
实验装置
为了评估不同高效微调方法的有效性,我们比较了各种模型在下游任务上微调后的性能。 我们使用来自三个代表性文本生成任务的 2,000 个示例和 1,000 个示例构建训练集和测试集,包括 CNN/DM (Nallapati 等人, 2016)、XSum (Narayan 等人, 2018 ) 和 AdGen (Shao 等人, 2019)。 我们选择了几个指令调整模型,并使用不同的微调方法按照序列到序列任务对它们进行调节。 我们比较了全调优(FT)、GaLore、LoRA 和 4 位 QLoRA 的结果。 经过微调后,我们计算每个任务的测试集上的 ROUGE 分数(Lin,2004)。 我们还将原始指令调整模型的分数作为基线。 更多实验细节可参见附录 D.2.
结果
下游任务评估结果如表4. 我们报告每个大语言模型和每个数据集的 ROUGE-1、ROUGE-2 和 ROUGE-L 的平均分数。 Gemma-7B 的一些结果未包含在表中,因为 GaLore 方法不适用于该模型。 结果中一个有趣的发现是,LoRA 和 QLoRA 在大多数情况下都实现了最佳性能,除了 CNN/DM 和 AdGen 数据集上的 Llama2-7B 和 ChatGLM3-6B 模型。 这一现象凸显了这些有效的微调方法在使大语言模型模型适应特定任务方面的有效性。 此外,我们观察到 Mistral-7B 模型在英语数据集上表现更好,而 Qwen1.5-7B 模型在中文数据集上取得了更高的分数。 这些结果表明,微调模型的性能也与其在特定语言上的固有功能相关。
5结论和未来的工作
在本文中,我们演示了LlamaFactory,大语言模型高效微调的统一框架。 通过模块化设计,我们最大限度地减少了模型、数据集和训练方法之间的依赖性,并提供了超过 100 个大语言模型的集成方法以及各种高效的微调技术。 此外,我们还提供灵活的 Web UI 羊驼板,无需编码即可实现大语言模型的定制微调和评估。 我们凭经验验证了我们的框架在语言建模和文本生成任务上的效率和有效性。
未来,我们将一如既往地保留LlamaFactory 与最先进的模型和高效的微调技术同步。 我们也欢迎开源社区的贡献。 在未来的版本中,我们将探索更先进的大语言模型并行训练策略和多模态高效微调。
6更广泛的影响和负责任的使用
骆驼工厂 吸引了大量对大语言模型感兴趣的个人探索微调自己模型的可能性。 这对开源社区的发展做出了重大贡献。 它受到越来越多的关注,并出现在《Awesome Transformers》中3 作为大语言模型高效微调框架的代表。 我们期望实践者在我们的框架上建立他们的大语言模型,为社会带来好处。 使用时必须遵守模型许可证 骆驼工厂 用于微调大语言模型,从而防止任何潜在的误用。
参考
Abid et al. (2019)Abubakar Abid, Ali Abdalla, Ali Abid, Dawood Khan, Abdulrahman Alfozan, and James Zou. 2019.Gradio: Hassle-free sharing and testing of ml models in the wild.arXiv preprint arXiv:1906.02569. AI (2023)Lightning AI. 2023.Lit-GPT. Almazrouei et al. (2023)Ebtesam Almazrouei, Hamza Alobeidli, Abdulaziz Alshamsi, Alessandro Cappelli, Ruxandra Cojocaru, Mérouane Debbah, Étienne Goffinet, Daniel Hesslow, Julien Launay, Quentin Malartic, et al. 2023.The falcon series of open language models.arXiv preprint arXiv:2311.16867. Anand et al. (2023)Yuvanesh Anand, Zach Nussbaum, Brandon Duderstadt, Benjamin Schmidt, and Andriy Mulyar. 2023.GPT4All: Training an assistant-style chatbot with large scale data distillation from GPT-3.5-turbo. Apache (2016)Apache. 2016.Arrow. Bai et al. (2023)Jinze Bai, Shuai Bai, Yunfei Chu, Zeyu Cui, Kai Dang, Xiaodong Deng, Yang Fan, Wenbin Ge, Yu Han, Fei Huang, et al. 2023.Qwen technical report.arXiv preprint arXiv:2309.16609. Beeching et al. (2023)Edward Beeching, Clémentine Fourrier, Nathan Habib, Sheon Han, Nathan Lambert, Nazneen Rajani, Omar Sanseviero, Lewis Tunstall, and Thomas Wolf. 2023.Open LLM leaderboard. Ben Zaken et al. (2022)Elad Ben Zaken, Yoav Goldberg, and Shauli Ravfogel. 2022.BitFit: Simple parameter-efficient fine-tuning for transformer-based masked language-models.In Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers), pages 1–9, Dublin, Ireland. Association for Computational Linguistics. Bhardwaj et al. (2024)Rishabh Bhardwaj, Do Duc Anh, and Soujanya Poria. 2024.Language models are homer simpson! safety re-alignment of fine-tuned language models through task arithmetic.arXiv preprint arXiv:2402.11746. Bi et al. (2024)Xiao Bi, Deli Chen, Guanting Chen, Shanhuang Chen, Damai Dai, Chengqi Deng, Honghui Ding, Kai Dong, Qiushi Du, Zhe Fu, et al. 2024.DeepSeek LLM: Scaling open-source language models with longtermism.arXiv preprint arXiv:2401.02954. Canese and Weis (2013)Kathi Canese and Sarah Weis. 2013.PubMed: the bibliographic database.The NCBI handbook, 2(1). Chen et al. (2024a)Du Chen, Yi Huang, Xiaopu Li, Yongqiang Li, Yongqiang Liu, Haihui Pan, Leichao Xu, Dacheng Zhang, Zhipeng Zhang, and Kun Han. 2024a.Orion-14b: Open-source multilingual large language models.arXiv preprint arXiv:2401.12246. Chen et al. (2023)Shouyuan Chen, Sherman Wong, Liangjian Chen, and Yuandong Tian. 2023.Extending context window of large language models via positional interpolation.arXiv preprint arXiv:2306.15595. Chen et al. (2016)Tianqi Chen, Bing Xu, Chiyuan Zhang, and Carlos Guestrin. 2016.Training deep nets with sublinear memory cost.arXiv preprint arXiv:1604.06174. Chen et al. (2024b)Yukang Chen, Shengju Qian, Haotian Tang, Xin Lai, Zhijian Liu, Song Han, and Jiaya Jia. 2024b.LongLoRA: Efficient fine-tuning of long-context large language models.In International Conference on Learning Representations. Cui et al. (2023)Yiming Cui, Ziqing Yang, and Xin Yao. 2023.Efficient and effective text encoding for chinese llama and alpaca.arXiv preprint arXiv:2304.08177. Dai et al. (2024)Damai Dai, Chengqi Deng, Chenggang Zhao, RX Xu, Huazuo Gao, Deli Chen, Jiashi Li, Wangding Zeng, Xingkai Yu, Y Wu, et al. 2024.DeepSeekMoE: Towards ultimate expert specialization in mixture-of-experts language models.arXiv preprint arXiv:2401.06066. Dao et al. (2022)Tri Dao, Dan Fu, Stefano Ermon, Atri Rudra, and Christopher Ré. 2022.Flashattention: Fast and memory-efficient exact attention with io-awareness.Advances in Neural Information Processing Systems, 35:16344–16359. Dettmers (2021)Tim Dettmers. 2021.Bitsandbytes. Dettmers et al. (2022a)Tim Dettmers, Mike Lewis, Younes Belkada, and Luke Zettlemoyer. 2022a.GPT3.int8(): 8-bit matrix multiplication for transformers at scale.Advances in Neural Information Processing Systems, 35:30318–30332. Dettmers et al. (2022b)Tim Dettmers, Mike Lewis, Sam Shleifer, and Luke Zettlemoyer. 2022b.8-bit optimizers via block-wise quantization.In International Conference on Learning Representations. Dettmers et al. (2023)Tim Dettmers, Artidoro Pagnoni, Ari Holtzman, and Luke Zettlemoyer. 2023.QLoRA: Efficient finetuning of quantized llms.Advances in Neural Information Processing Systems, 36:10088–10115. Diao et al. (2023)Shizhe Diao, Rui Pan, Hanze Dong, Ka Shun Shum, Jipeng Zhang, Wei Xiong, and Tong Zhang. 2023.LMFlow: An extensible toolkit for finetuning and inference of large foundation models.arXiv preprint arXiv:2306.12420. Du et al. (2022)Zhengxiao Du, Yujie Qian, Xiao Liu, Ming Ding, Jiezhong Qiu, Zhilin Yang, and Jie Tang. 2022.GLM: General language model pretraining with autoregressive blank infilling.In Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 320–335, Dublin, Ireland. Association for Computational Linguistics. Egiazarian et al. (2024)Vage Egiazarian, Andrei Panferov, Denis Kuznedelev, Elias Frantar, Artem Babenko, and Dan Alistarh. 2024.Extreme compression of large language models via additive quantization.arXiv preprint arXiv:2401.06118. Frantar et al. (2023)Elias Frantar, Saleh Ashkboos, Torsten Hoefler, and Dan Alistarh. 2023.GPTQ: Accurate post-training quantization for generative pre-trained transformers.In International Conference on Learning Representations. Groeneveld et al. (2024)Dirk Groeneveld, Iz Beltagy, Pete Walsh, Akshita Bhagia, Rodney Kinney, Oyvind Tafjord, Ananya Harsh Jha, Hamish Ivison, Ian Magnusson, Yizhong Wang, et al. 2024.OLMo: Accelerating the science of language models.arXiv preprint arXiv:2402.00838. Guo et al. (2024)Daya Guo, Qihao Zhu, Dejian Yang, Zhenda Xie, Kai Dong, Wentao Zhang, Guanting Chen, Xiao Bi, Y Wu, YK Li, et al. 2024.DeepSeek-Coder: When the large language model meets programming – the rise of code intelligence.arXiv preprint arXiv:2401.14196. Han and Han (2023)Daniel Han and Michael Han. 2023.unsloth. Hayou et al. (2024)Soufiane Hayou, Nikhil Ghosh, and Bin Yu. 2024.LoRA+: Efficient low rank adaptation of large models.arXiv preprint arXiv:2402.12354. Hendrycks et al. (2021)Dan Hendrycks, Collin Burns, Steven Basart, Andy Zou, Mantas Mazeika, Dawn Song, and Jacob Steinhardt. 2021.Measuring massive multitask language understanding.In International Conference on Learning Representations. Houlsby et al. (2019)Neil Houlsby, Andrei Giurgiu, Stanislaw Jastrzebski, Bruna Morrone, Quentin De Laroussilhe, Andrea Gesmundo, Mona Attariyan, and Sylvain Gelly. 2019.Parameter-efficient transfer learning for nlp.In International conference on machine learning, pages 2790–2799. PMLR. Hu et al. (2022)Edward J Hu, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen, et al. 2022.LoRA: Low-rank adaptation of large language models.In International Conference on Learning Representations. Huang et al. (2023)Yuzhen Huang, Yuzhuo Bai, Zhihao Zhu, Junlei Zhang, Jinghan Zhang, Tangjun Su, Junteng Liu, Chuancheng Lv, Yikai Zhang, Yao Fu, et al. 2023.C-Eval: A multi-level multi-discipline chinese evaluation suite for foundation models.Advances in Neural Information Processing Systems, 36. Jiang et al. (2023a)Albert Q Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lucile Saulnier, et al. 2023a.Mistral 7b.arXiv preprint arXiv:2310.06825. Jiang et al. (2023b)Jinhao Jiang, Kun Zhou, Wayne Xin Zhao, Yaliang Li, and Ji-Rong Wen. 2023b.ReasoningLM: Enabling structural subgraph reasoning in pre-trained language models for question answering over knowledge graph.In Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing, pages 3721–3735, Singapore. Association for Computational Linguistics. Jiao et al. (2023a)Wenxiang Jiao, Jen-tse Huang, Wenxuan Wang, Zhiwei He, Tian Liang, Xing Wang, Shuming Shi, and Zhaopeng Tu. 2023a.ParroT: Translating during chat using large language models tuned with human translation and feedback.In Findings of the Association for Computational Linguistics: EMNLP 2023, pages 15009–15020, Singapore. Association for Computational Linguistics. Jiao et al. (2023b)Yizhu Jiao, Ming Zhong, Sha Li, Ruining Zhao, Siru Ouyang, Heng Ji, and Jiawei Han. 2023b.Instruct and extract: Instruction tuning for on-demand information extraction.In Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing, pages 10030–10051, Singapore. Association for Computational Linguistics. Kalajdzievski (2023)Damjan Kalajdzievski. 2023.A rank stabilization scaling factor for fine-tuning with LoRA.arXiv preprint arXiv:2312.03732. Kim et al. (2023)Dahyun Kim, Chanjun Park, Sanghoon Kim, Wonsung Lee, Wonho Song, Yunsu Kim, Hyeonwoo Kim, Yungi Kim, Hyeonju Lee, Jihoo Kim, et al. 2023.SOLAR 10.7B: Scaling large language models with simple yet effective depth up-scaling.arXiv preprint arXiv:2312.15166. Krell et al. (2021)Mario Michael Krell, Matej Kosec, Sergio P Perez, and Andrew Fitzgibbon. 2021.Efficient sequence packing without cross-contamination: Accelerating large language models without impacting performance.arXiv preprint arXiv:2107.02027. Kwon et al. (2023)Woosuk Kwon, Zhuohan Li, Siyuan Zhuang, Ying Sheng, Lianmin Zheng, Cody Hao Yu, Joseph Gonzalez, Hao Zhang, and Ion Stoica. 2023.Efficient memory management for large language model serving with PagedAttention.In Proceedings of the 29th Symposium on Operating Systems Principles, pages 611–626. Le Scao et al. (2022)Teven Le Scao, Angela Fan, Christopher Akiki, Ellie Pavlick, Suzana Ilić, Daniel Hesslow, Roman Castagné, Alexandra Sasha Luccioni, François Yvon, Matthias Gallé, et al. 2022.BLOOM: A 176b-parameter open-access multilingual language model.arXiv preprint arXiv:2211.05100. Lhoest et al. (2021)Quentin Lhoest, Albert Villanova del Moral, Yacine Jernite, Abhishek Thakur, Patrick von Platen, Suraj Patil, Julien Chaumond, Mariama Drame, Julien Plu, Lewis Tunstall, et al. 2021.Datasets: A community library for natural language processing.In Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pages 175–184. Li et al. (2023a)Haonan Li, Yixuan Zhang, Fajri Koto, Yifei Yang, Hai Zhao, Yeyun Gong, Nan Duan, and Timothy Baldwin. 2023a.CMMLU: Measuring massive multitask language understanding in chinese.arXiv preprint arXiv:2306.09212. Li et al. (2023b)Shenggui Li, Hongxin Liu, Zhengda Bian, Jiarui Fang, Haichen Huang, Yuliang Liu, Boxiang Wang, and Yang You. 2023b.Colossal-AI: A unified deep learning system for large-scale parallel training.In Proceedings of the 52nd International Conference on Parallel Processing, pages 766–775. Li et al. (2023c)Yuanzhi Li, Sébastien Bubeck, Ronen Eldan, Allie Del Giorno, Suriya Gunasekar, and Yin Tat Lee. 2023c.Textbooks are all you need ii: phi-1.5 technical report.arXiv preprint arXiv:2309.05463. Lin (2004)Chin-Yew Lin. 2004.ROUGE: A package for automatic evaluation of summaries.In Text Summarization Branches Out, pages 74–81, Barcelona, Spain. Association for Computational Linguistics. Lin et al. (2023)Ji Lin, Jiaming Tang, Haotian Tang, Shang Yang, Xingyu Dang, and Song Han. 2023.AWQ: Activation-aware weight quantization for llm compression and acceleration.arXiv preprint arXiv:2306.00978. Liu et al. (2024)Shih-Yang Liu, Chien-Yi Wang, Hongxu Yin, Pavlo Molchanov, Yu-Chiang Frank Wang, Kwang-Ting Cheng, and Min-Hung Chen. 2024.DoRA: Weight-decomposed low-rank adaptation.arXiv preprint arXiv:2402.09353. Lozhkov et al. (2024)Anton Lozhkov, Raymond Li, Loubna Ben Allal, Federico Cassano, Joel Lamy-Poirier, Nouamane Tazi, Ao Tang, Dmytro Pykhtar, Jiawei Liu, Yuxiang Wei, et al. 2024.StarCoder 2 and The Stack v2: The next generation.arXiv preprint arXiv:2402.19173. Mangrulkar et al. (2022)Sourab Mangrulkar, Sylvain Gugger, Lysandre Debut, Younes Belkada, Sayak Paul, and Benjamin Bossan. 2022.PEFT: State-of-the-art parameter-efficient fine-tuning methods. Mesnard et al. (2024)Thomas Mesnard, Cassidy Hardin, Robert Dadashi, Surya Bhupatiraju, Shreya Pathak, Laurent Sifre, Morgane Rivière, Mihir Sanjay Kale, Juliette Love, et al. 2024.Gemma: Open models based on gemini research and technology.arXiv preprint arXiv:2403.08295. Micikevicius et al. (2018)Paulius Micikevicius, Sharan Narang, Jonah Alben, Gregory Diamos, Erich Elsen, David Garcia, Boris Ginsburg, Michael Houston, Oleksii Kuchaiev, Ganesh Venkatesh, et al. 2018.Mixed precision training.In International Conference on Learning Representations. Nallapati et al. (2016)Ramesh Nallapati, Bowen Zhou, Cicero dos Santos, Caglar Gulcehre, and Bing Xiang. 2016.Abstractive text summarization using sequence-to-sequence rnns and beyond.In Proceedings of the 20th SIGNLL Conference on Computational Natural Language Learning, pages 280–290. Narayan et al. (2018)Shashi Narayan, Shay B. Cohen, and Mirella Lapata. 2018.Don’t give me the details, just the summary! topic-aware convolutional neural networks for extreme summarization.In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing, pages 1797–1807, Brussels, Belgium. Association for Computational Linguistics. Nguyen et al. (2024)Duc Q. Nguyen, Sang T. Truong, Toan D. V. Nguyen, Dong D. Le, Nhi N. Truong, Tho Quan, and Sanmi Koyejo. 2024.Crossing linguistic horizons: Finetuning and comprehensive evaluation of vietnamese large language models. Ouyang et al. (2022)Long Ouyang, Jeffrey Wu, Xu Jiang, Diogo Almeida, Carroll Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, et al. 2022.Training language models to follow instructions with human feedback.Advances in Neural Information Processing Systems, 35:27730–27744. Papineni et al. (2002)Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu. 2002.BLEU: a method for automatic evaluation of machine translation.In Proceedings of the 40th annual meeting of the Association for Computational Linguistics, pages 311–318. Paszke et al. (2019)Adam Paszke, Sam Gross, Francisco Massa, Adam Lerer, James Bradbury, Gregory Chanan, Trevor Killeen, Zeming Lin, Natalia Gimelshein, Luca Antiga, et al. 2019.PyTorch: An imperative style, high-performance deep learning library.Advances in neural information processing systems, 32. Radford et al. (2018)Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever, et al. 2018.Improving language understanding by generative pre-training.OpenAI blog. Rafailov et al. (2023)Rafael Rafailov, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D Manning, and Chelsea Finn. 2023.Direct preference optimization: Your language model is secretly a reward model.Advances in Neural Information Processing Systems, 37. Rasley et al. (2020)Jeff Rasley, Samyam Rajbhandari, Olatunji Ruwase, and Yuxiong He. 2020.DeepSpeed: System optimizations enable training deep learning models with over 100 billion parameters.In Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pages 3505–3506. Shao et al. (2019)Zhihong Shao, Minlie Huang, Jiangtao Wen, Wenfei Xu, and Xiaoyan Zhu. 2019.Long and diverse text generation with planning-based hierarchical variational model.In Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP), pages 3257–3268, Hong Kong, China. Association for Computational Linguistics. Shao et al. (2024)Zhihong Shao, Peiyi Wang, Qihao Zhu, Runxin Xu, Junxiao Song, Mingchuan Zhang, YK Li, Y Wu, and Daya Guo. 2024.DeepSeekMath: Pushing the limits of mathematical reasoning in open language models.arXiv preprint arXiv:2402.03300. Taori et al. (2023)Rohan Taori, Ishaan Gulrajani, Tianyi Zhang, Yann Dubois, Xuechen Li, Carlos Guestrin, Percy Liang, and Tatsunori B. Hashimoto. 2023.Stanford alpaca: An instruction-following llama model. Team (2023)InternLM Team. 2023.InternLM: A multilingual language model with progressively enhanced capabilities. Tillet et al. (2019)Philippe Tillet, Hsiang-Tsung Kung, and David Cox. 2019.Triton: an intermediate language and compiler for tiled neural network computations.In Proceedings of the 3rd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages, pages 10–19. Touvron et al. (2023a)Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, Eric Hambro, Faisal Azhar, et al. 2023a.LLaMA: Open and efficient foundation language models.arXiv preprint arXiv:2302.13971. Touvron et al. (2023b)Hugo Touvron, Louis Martin, Kevin Stone, Peter Albert, Amjad Almahairi, Yasmine Babaei, Nikolay Bashlykov, Soumya Batra, Prajjwal Bhargava, Shruti Bhosale, et al. 2023b.Llama 2: Open foundation and fine-tuned chat models.arXiv preprint arXiv:2307.09288. Tunstall et al. (2023)Lewis Tunstall, Edward Beeching, Nathan Lambert, Nazneen Rajani, Kashif Rasul, Younes Belkada, Shengyi Huang, Leandro von Werra, Clémentine Fourrier, Nathan Habib, et al. 2023.Zephyr: Direct distillation of LM alignment.arXiv preprint arXiv:2310.16944. von Werra et al. (2020)Leandro von Werra, Younes Belkada, Lewis Tunstall, Edward Beeching, Tristan Thrush, Nathan Lambert, and Shengyi Huang. 2020.TRL: Transformer reinforcement learning. Wang et al. (2023a)Chenglong Wang, Hang Zhou, Yimin Hu, Yifu Huo, Bei Li, Tongran Liu, Tong Xiao, and Jingbo Zhu. 2023a.Esrl: Efficient sampling-based reinforcement learning for sequence generation.arXiv preprint arXiv:2308.02223. Wang et al. (2023b)Guan Wang, Sijie Cheng, Xianyuan Zhan, Xiangang Li, Sen Song, and Yang Liu. 2023b.OpenChat: Advancing open-source language models with mixed-quality data.arXiv preprint arXiv:2309.11235. Wang et al. (2023c)Longyue Wang, Chenyang Lyu, Tianbo Ji, Zhirui Zhang, Dian Yu, Shuming Shi, and Zhaopeng Tu. 2023c.Document-level machine translation with large language models.In Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing, pages 16646–16661, Singapore. Association for Computational Linguistics. Wang et al. (2023d)Yizhong Wang, Hamish Ivison, Pradeep Dasigi, Jack Hessel, Tushar Khot, Khyathi Chandu, David Wadden, Kelsey MacMillan, Noah A Smith, Iz Beltagy, et al. 2023d.How far can camels go? exploring the state of instruction tuning on open resources.Advances in Neural Information Processing Systems, 36. Wei et al. (2022)Jason Wei, Maarten Bosma, Vincent Zhao, Kelvin Guu, Adams Wei Yu, Brian Lester, Nan Du, Andrew M Dai, and Quoc V Le. 2022.Finetuned language models are zero-shot learners.In International Conference on Learning Representations. Wei et al. (2023)Tianwen Wei, Liang Zhao, Lichang Zhang, Bo Zhu, Lijie Wang, Haihua Yang, Biye Li, Cheng Cheng, Weiwei Lü, Rui Hu, et al. 2023.Skywork: A more open bilingual foundation model.arXiv preprint arXiv:2310.19341. Wolf et al. (2020)Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pierric Cistac, Tim Rault, Rémi Louf, Morgan Funtowicz, Joe Davison, Sam Shleifer, Patrick von Platen, Clara Ma, Yacine Jernite, Julien Plu, Canwen Xu, Teven Le Scao, Sylvain Gugger, Mariama Drame, Quentin Lhoest, and Alexander Rush. 2020.Transformers: State-of-the-art natural language processing.In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pages 38–45, Online. Association for Computational Linguistics. Wu et al. (2023)Shaohua Wu, Xudong Zhao, Shenling Wang, Jiangang Luo, Lingjun Li, Xi Chen, Bing Zhao, Wei Wang, Tong Yu, Rongguo Zhang, et al. 2023.YUAN 2.0: A large language model with localized filtering-based attention.arXiv preprint arXiv:2311.15786. Yang et al. (2023)Aiyuan Yang, Bin Xiao, Bingning Wang, Borong Zhang, Ce Bian, Chao Yin, Chenxu Lv, Da Pan, Dian Wang, Dong Yan, et al. 2023.Baichuan 2: Open large-scale language models.arXiv preprint arXiv:2309.10305. Yao et al. (2023)Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik R Narasimhan, and Yuan Cao. 2023.ReAct: Synergizing reasoning and acting in language models.In International Conference on Learning Representations. Young et al. (2024)Alex Young, Bei Chen, Chao Li, Chengen Huang, Ge Zhang, Guanwei Zhang, Heng Li, Jiangcheng Zhu, Jianqun Chen, Jing Chang, et al. 2024.Yi: Open foundation models by 01.ai.arXiv preprint arXiv:2403.04652. Yu et al. (2023)Hao Yu, Zachary Yang, Kellin Pelrine, Jean Francois Godbout, and Reihaneh Rabbany. 2023.Open, closed, or small language models for text classification?arXiv preprint arXiv:2308.10092. Zhang et al. (2022)Renrui Zhang, Jiaming Han, Aojun Zhou, Xiangfei Hu, Shilin Yan, Pan Lu, Hongsheng Li, Peng Gao, and Yu Qiao. 2022.LLaMA-Adapter: Efficient fine-tuning of language models with zero-init attention.In International Conference on Learning Representations. Zhao et al. (2024)Jiawei Zhao, Zhenyu Zhang, Beidi Chen, Zhangyang Wang, Anima Anandkumar, and Yuandong Tian. 2024.GaLore: Memory-efficient llm training by gradient low-rank projection.arXiv preprint arXiv:2403.03507. Zhao et al. (2023)Wayne Xin Zhao, Kun Zhou, Junyi Li, Tianyi Tang, Xiaolei Wang, Yupeng Hou, Yingqian Min, Beichen Zhang, Junjie Zhang, Zican Dong, Yifan Du, Chen Yang, Yushuo Chen, Zhipeng Chen, Jinhao Jiang, Ruiyang Ren, Yifan Li, Xinyu Tang, Zikang Liu, Peiyu Liu, Jian-Yun Nie, and Ji-Rong Wen. 2023.A survey of large language models.arXiv preprint arXiv:2303.18223. Zheng et al. (2023)Lianmin Zheng, Wei-Lin Chiang, Ying Sheng, Siyuan Zhuang, Zhanghao Wu, Yonghao Zhuang, Zi Lin, Zhuohan Li, Dacheng Li, Eric Xing, et al. 2023.Judging LLM-as-a-judge with mt-bench and chatbot arena.Advances in Neural Information Processing Systems, 36.表5:LlamaFactory与现有大语言模型微调框架的功能比较。
Methods LlamaFactory FastChat LitGPT LMFlow Open Instruct LoRA ✓ ✓ ✓ ✓ ✓ QLoRA ✓ ✓ ✓ ✓ LoRA+ ✓ DoRA ✓ GaLore ✓ SFT ✓ ✓ ✓ ✓ ✓ RLHF ✓ ✓ DPO ✓ ✓ Flash attention ✓ ✓ ✓ ✓ ✓ Unsloth ✓ DeepSpeed ✓ ✓ ✓ ✓ ✓附录A相关工作
在本节中,我们列举了现有的用于微调大语言模型的框架,特别重点介绍了那些用于高效微调的框架。
LLaMA-Adapter (Zhang 等人, 2022) 使用零初始注意力有效地微调 Llama 模型 (Touvron 等人, 2023a) 的指令跟踪能力。 FastChat (Zheng 等人, 2023) 是一个专注于训练和评估用于聊天完成目的的大语言模型的框架。 LitGPT (AI, 2023) 提供生成模型的实现并支持各种训练方法。 Open-Instruct (Wang 等人, 2023d) 是一个支持高效微调的微调框架。 Colossal AI (Li 等人, 2023b) 采用先进的并行策略进行分布式训练。 LMFlow (Diao 等人, 2023) 是一个可扩展且高效的微调框架,支持仅解码器模型,同时支持全调优和适配器调优。 GPT4All (Anand 等人, 2023) 允许大语言模型在消费设备上运行,同时还提供微调功能。
与上面介绍的框架相比,LlamaFactory 支持更广泛的高效微调方法。 我们将我们的框架与表中的现有工作进行比较 5.
表6:支持的型号列表。
Model Variant Organization Llama (Touvron et al., 2023a) 7B/13B/33B/65B Meta AI Llama 2 (Touvron et al., 2023b) 7B/13B/70B Meta AI Baichuan Yang et al. (2023) 7B/13B Baichuan Inc Baichuan2 (Yang et al., 2023) 7B/13B Baichuan Inc BLOOM (Le Scao et al., 2022) 560M/3B/7.1B BigScience BLOOMZ (Le Scao et al., 2022) 560M/3B/7.1B BigScience ChatGLM2 (Du et al., 2022) 6B THUDM ChatGLM3 (Du et al., 2022) 6B THUDM ChineseLLaMA2 (Cui et al., 2023) 3B/7B/13B HFL DeepSeek-LLM (Bi et al., 2024) 7B/67B DeepSeek DeepSeek-Math (Shao et al., 2024) 7B DeepSeek DeepSeek-MoE (Dai et al., 2024) 16B DeepSeek DeepSeek-Coder (Guo et al., 2024) 6.7B/7B/33B DeepSeek Falcon (Almazrouei et al., 2023) 7B/40B/180B TII Gemma (Mesnard et al., 2024) 2B/7B Google InternLM (Team, 2023) 7B/20B Shanghai AI Lab InternLM2 (Team, 2023) 1.8B/7B/20B Shanghai AI Lab Mistral (Jiang et al., 2023a) 7B Mistral AI Mixtral (Jiang et al., 2023a) 8x7B Mistral AI OLMo (Groeneveld et al., 2024) 1B/7B Allen AI OpenChat (Wang et al., 2023b) 7B OpenChat Orion (Chen et al., 2024a) 14B OrionStar Phi-1.5 (Li et al., 2023c) 1.3B Microsoft Phi-2 (Li et al., 2023c) 2.7B Microsoft Qwen (Bai et al., 2023) 1.8B/7B/14B/72B Alibaba Cloud Qwen1.5 (Bai et al., 2023) 1.8B/7B/14B/72B Alibaba Cloud SOLAR (Kim et al., 2023) 10.7B Upstage AI Skywork (Wei et al., 2023) 13B Skywork StarCoder2 (Lozhkov et al., 2024) 3B/7B/15B BigCode Vicuna1.5 (Zheng et al., 2023) 7B/13B LMSYS Yi (Young et al., 2024) 6B/9B/34B 01.AI Yuan2 (Wu et al., 2023) 2B/51B/102B IEIT Zephyr (Tunstall et al., 2023) 7B Hugging Face H4附录BLlamaFactory 支持的模型
我们选择了LlamaFactory支持的流行预训练模型并在表中列出6,范围从密集模型到稀疏专家混合 (MoE) 模型。
表7:LlamaFactory中函数调用的提示。
You have access to the following tools:
> Tool Name: tool1
Tool Description: the usage of tool1
Tool Args:
- arg1 (dtype): the usage of arg1
Use the following format if using a tool:
```
Action: tool name (one of [tool1]).
Action Input: the input to the tool, in a JSON format representing the kwargs (e.g. ```{"input": "hello world", "num_beams": 5}```).
```
附录C聊天模板设计细节
尽管 Transformers 4.34.0 引入了聊天模板功能,但一些模型(例如 ChatGLM 和 Qwen)具有表现出特定行为的标记器,并且无法直接对特殊标记进行编码。 因此,我们设计了一个 格式化程序 类将文本输入稳健地转换为其嵌入 ID。 具体来说,我们提供 EmptyFormatter、StringFormatter、FunctionFormatter 和 工具格式化程序。此外,LlamaFactory 支持微调模型以获得函数调用能力。 虽然 ReAct 提示 Yao 等人 (2023) 是工具使用的流行选择,但对于嵌套工具参数来说,它是不够的。 我们优化了工具提示并在表格中提供 7.
附录D实验详情
D.1训练效率
我们采用学习率为10−5,词符批量大小为512 使用 bfloat16 精度的 8 位 AdamW 优化器(Dettmers 等人,2022b) 来调节这些模型,并通过激活检查点来减少内存占用。 在冻结调整中,我们只调节最后一个 3 模型的解码器层。 对于 GaLore,我们将排名和规模设置为 128 和 2.0, 分别。 对于 LoRA 和 QLoRA,我们将适配器附加到所有线性层并将等级和 alpha 设置为 128 和 256, 分别。 所有实验均在单个 NVIDIA A100 40GB GPU 上进行。 我们在所有实验中启用 Flash Attention,并在 LoRA 和 QLoRA 实验中启用 Unsloth。
D.2下游任务的微调
我们简要描述用于评估不同微调方法有效性的数据集。
•CNN/DM (Nallapati 等人, 2016) 该数据集用于摘要生成任务。 英文文章摘自 CNN 和《每日邮报》。 我们使用 1.0.0 版本,其中包含超过 30 万个样本。
•XSum (Narayan 等人, 2018) 该数据集用于抽象摘要生成任务,由英文文档和一句话摘要组成,总计超过 20 万个样本。
•AdGen (Shao 等人, 2019) 该数据集是一个中文数据集,需要模型根据给定的关键字生成广告文本,总共超过 10 万个样本。
在本实验中,我们采用学习率为10−5。我们将批量大小设置为4,而最大输入长度为2048. 我们使用 8 位 AdamW 优化器(Dettmers 等人,2022b) 以 bfloat16 精度对模型进行操作,并通过激活检查点来减少内存占用。 对于 GaLore,我们将排名和规模设置为 128 和 2.0, 分别。 对于 LoRA 和 QLoRA,我们将适配器附加到所有线性层并将等级和 alpha 设置为 128 和 256, 分别。 所有实验结果均在启用了 Flash Attention 的 NVIDIA A100 40GB GPU 上进行。