“LLAMAFACTORY: Unified Efficient Fine-Tuning of 100+ Language Models”
在大模型发展如火如荼的今天,训练和微调一个大模型对于绝大部分普通工程师来说仍然是一个难题。为了降低大模型训练、微调门槛,北航发布了LLAMA FACTORY,一个旨在普及LLMs微调的框架。
LLAMA FACTORY通过可扩展的模块统一了多种高效微调方法,使得数百种语言模型能够在资源有限的情况下进行高吞吐量的微调。此外,该框架还简化了常用的训练方法,如生成式预训练、监督式微调、基于人类反馈的强化学习以及直接偏好优化等。用户可以通过命令行或Web界面,以最小或无需编码的方式自定义和微调他们的语言模型。
论文地址:https://arxiv.org/pdf/2403.13372.pdf
Github地址:https://github.com/hiyouga/LLaMA-Factory
摘要
本文提出LLAMA FACTORY,一个集成了一套高效训练方法的统一大型语言模型微调框架。它允许用户灵活定制100+ LLM的微调,而无需通过内置的web UI LLAMA板进行编码。实证验证了该框架在语言建模和文本生成任务上的效率和有效性。目前已在Github上开源,地址https://github.com/hiyouga/LLaMA-Factory。
简介
LLAMA FACTORY是一个可以让大众轻松微调LLM的框架。它通过可扩展的模块统一了各种高效的微调方法,使数百个LLM能够以最小的资源和高吞吐量进行微调。此外,它简化了常用的训练方法,包括生成式预训练、监督式微调(SFT)、从人工反馈中强化学习(RLHF)和直接偏好优化(DPO)。用户可以利用命令行或web界面自定义和微调他们的LLM,只需很少或不需要编码工作。
LLAMA FACTORY由三个主要模块组成:Model Loader,Data Worker和Trainer。最小化了这些模块对特定模型和数据集的依赖,使该框架可以灵活扩展到数百个模型和数据集。首先建立一个模型注册中心,模型加载器可以通过识别精确的层,将适配器精确地附加到预训练模型。然后,我们开发了一个数据描述规范,允许数据工作者通过对齐相应的列来收集数据集。提供了高效微调方法的即插即用实现,使训练器能够通过替换默认方法来激活。这些设计允许这些模块在不同的训练方法中重用,显著降低了新方法的集成成本。
LLAMA FACTORY基于PyTorch实现。在此基础上,我们提供了一个具有更高抽象级别的开箱即用框架。此外,我们构建了LLAM,一个Gradio的界面,实现了在不需要编码工作的情况下对llm进行微调。
LLAMA FACTORY遵循Apache-2.0许可证开源。它已经在GitHub上开源,获得了13000多个stars和1600个fork,并在Hugging Face Hub上的LLAMA FACTORY上构建了数百个开源模型。
高效的微调技术
高效的LLM微调技术可以分为两大类:专注于优化的和旨在计算的。高效优化技术的主要目标是在保持成本最低的同时调整LLM的参数。另一方面,有效的计算方法寻求减少LLM中所需的计算的时间或空间。
高效优化
LLAMA FACTORY使用了多种高效的优化技术,包括freeze-tuning方法、gradient low-rank projection方法、low-rank adaptation方法、weight-decomposed low-rank adaptation方法和LoRA+方法。这些方法可以提高模型的训练效率和内存使用效率。
高效计算
LLAMA FACTORY是一个整合了多种高效计算技术的框架,包括混合精度训练、激活检查点、闪存注意力、S2注意力、量化策略和适配器技术。通过这些技术的结合,LLAMA FACTORY能够显著提高LLM的效率,将内存占用从每个参数18字节或8字节降低到仅为0.6字节。
LLAMA FACTORY架构
LLAMA FACTORY是由三个主要模块组成:Model Loader、Data Worker和Trainer。Model Loader为微调准备了各种架构,支持100多个LLM。Data Worker通过一个精心设计的流水线处理来自不同任务的数据,支持50多个数据集。Trainer统一了高效的微调方法,以适应不同的任务和数据集,提供了四种训练方法。LLAMA BOARD为上述模块提供了友好的可视化界面,使用户能够以无代码的方式配置和启动单独的LLM微调过程,并实时监控训练状态。
Model Loader
Model Loader是一个用于加载和初始化模型参数的框架。它包括四个组件:模型初始化、模型修补、模型量化和适配器附加。模型初始化使用Transformers库的AutoModel API来加载和初始化模型参数。模型修补通过替换模型的前向计算来实现flash attention和S 2 attention。模型量化可以将模型动态量化为8位或4位,支持多种后训练量化方法。适配器附加根据模型注册表自动识别适配器应该附加的层,并使用PEFT库来附加适配器。精度适应根据设备的能力处理预训练模型的浮点精度,使用不同的精度来加载模型参数。
Data Worker
LLAMA FACTORY是一个数据处理管道,包括数据集加载、数据集对齐、数据集合并和数据集预处理。它将不同任务的数据集标准化为统一格式,使我们能够在各种格式的数据集上微调模型。我们使用datasets库加载数据集,设计数据描述规范来统一数据集格式,提供多个聊天模板和分层序列打包等预处理方法。
Trainer
高效训练。 将最先进的高效微调方法集成到Trainer中,包括LoRA+、GaLore。利用transformer的Trainer进行预训练和SFT,而采用TRL的Trainer进行RLHF和DPO。
模型共享RLHF。 提出模型共享RLHF,使整个RLHF训练不需要多于一个预训练模型。我们首先训练一个适配器和一个 value head,该 value head具有奖励建模的目标函数,允许模型计算奖励分数。然后我们初始化另一个适配器和 value head,并用PPO算法训练它们。在训练期间,通过PEFT的set_adapter和disable_adapter api动态切换适配器和 value head,使预训练模型同时作为策略、值、参考和奖励模型。据我们所知,这是第一个在消费设备上支持RLHF训练的方法。
分布式训练。 我们可以将上述Trainer与DeepSpeed 结合起来进行分布式训练。利用DeepSpeed ZeRO优化器,可以通过分区或卸载进一步减少内存消耗。
其他工具
推理加速。 在推理过程中,我们重用data worker中的聊天模板来构建模型输入。我们提供了使用transformer对模型输出进行采样的支持和vLLM,两者都支持流解码。实现了一个openai风格的API,利用vLLM的异步LLM引擎和分页注意力来提供高吞吐量的并发推理服务,便于将微调的LLM部署到各种应用程序中。
综合评价。 评估指标包括多项选择任务,如MMLU、CMMLU和C-Eval,以及计算文本相似度分数,如BLEU-4和ROUGE。
LLAMA BOARD:LLAMA FACTORY统一接口
LLAMA BOARD是一个基于Gradio的统一用户界面,允许用户在不编写任何代码的情况下自定义LLM的微调。它提供了简化的模型微调和推理服务,使用户可以轻松地利用100多个LLM和50多个数据集。LLAMA BOARD具有易于配置、可监控的训练、灵活的评估和多语言支持等特点。用户可以通过与Web界面交互来自定义微调参数,并可以实时监视训练进度。此外,LLAMA BOARD支持自动评估模型的文本相似度分数或通过与模型聊天进行人工评估。目前,LLAMA BOARD支持英语、俄语和中文三种语言。
实证研究
本文从两个角度对LLAMA FACTORY进行评估:1)训练效率,包括内存使用、吞吐量和困惑度;2)适应下游任务的效果。
训练效率
本文利用PubMed数据集进行实验,提取了约400,000个标记用于构建训练样本。通过fine-tune Gemma-2B、Llama2-7B和Llama2-13B模型,使用不同的fine-tuning方法进行比较。结果表明,QLoRA具有最低的内存占用,LoRA具有更高的吞吐量,GaLore在大型模型上具有更低的PPL,而LoRA在小型模型上具有优势。
下游任务微调
通过在下游任务上微调各种模型并比较它们的性能来进行评估。使用来自CNN/DM、XSum和AdGen三个代表性文本生成任务的2,000个示例和1,000个示例构建训练集和测试集。选择几个经过指令微调的模型,并使用不同的微调方法进行微调,包括全微调(FT)、GaLore、LoRA和4位QLoRA。微调后,计算每个任务的测试集上的ROUGE分数。将原始指令微调模型的分数作为基准。实验结果表明,LoRA和QLoRA在大多数情况下表现最佳,除了Llama2-7B和ChatGLM36B模型在CNN/DM和AdGen数据集上。这一现象突出了这些高效微调方法在适应特定任务中的有效性。此外,观察到Mistral-7B模型在英语数据集上表现更好,而Qwen1.5-7B模型在中文数据集上获得更高的分数。这些结果表明,微调模型的性能也与其在特定语言上的内在能力有关。
总结和未来工作
LLAMA FACTORY是一个统一的框架,可用于高效微调超过100个LLM模型。通过模块化设计,最小化模型、数据集和训练方法之间的依赖关系,并提供一种集成的方法来进行微调。此外,LLAMA BOARD提供了一个灵活的Web UI,可以在不需要编码的情况下进行自定义微调和评估LLM。该框架在语言建模和文本生成任务上得到了实证验证。未来,LLAMA FACTORY将与最先进的模型和高效微调技术保持同步,并探索更高级的并行训练策略和多模态高效微调LLM的可能性。
大模型岗位需求
大模型时代,企业对人才的需求变了,AIGC相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
掌握大模型技术你还能拥有更多可能性:
• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;
• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;
• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;
• 更优质的项目可以为未来创新创业提供基石。
可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。
-END-
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓