大模子高效训练一体框架 LLaMA Factory

打印 上一主题 下一主题

主题 888|帖子 888|积分 2668

导读 本文将分享如何基于 LLaMA Factory 实现大模子高效训练。
主要内容包括以下几大部分:

  • 大模子低资源训练技术总览
  • LLaMA Factory 团体介绍
  • LLaMA Factory 快速入门
  • LLaMA Factory 性能调优
  • LLaMA Factory 应用案例
  • Q&A
01 大模子低资源训练技术总览

在资源有限的环境下,实现高效训练大语言模子变得极具挑战。

以 LLaMA-3 8B 为例,其接纳纯解码器结构,包罗 32 层 Decoder 单元,每层由 Attention 和 MLP 两个核心组件构成,本质上是深度神经网络,隐蔽层大小分别为 4096 维和 14336 维。因为维度较大,在前向传播和反向计算梯度时就需要较多的显存。GQA 查询注意力头数和键值注意力头数分别为 32 和 8。词表大小提升到了 128000,词表增大意味着可以编码更多 token,但随之也会增大显存的利用。以上 6 个数字就定义出了模子的显存结构。
别的,在训练时还会有别的两个数字,一个是批处置惩罚大小,假设值为 4,也就是每次喂给模子 4 个样本,并假设这些样本的序列长度为 8192。
通过以上数字就可以估算出模子训练时的显存占用。起首,可以计算出参数数目为 80 亿个。除了参数占用显存,还要存一些中间计算结果,也会占用显存,这部分又分为中间激活值、注意力分数和模子输出三类。如上图所示,这四类数字加起来已超过千亿,乃至可到达万亿级别,就需要上百 GB 的显存。

将以上数字变化为字节数,以 bfloat16 的精度存储模子权重,如许模子权重需占用显存约为 16GB。除此之外,模子参数、梯度和优化器状态一共会占用约 128GB 的显存,而激活值则需要 764GB。总共加起来需要近 1000GB 的显存,供 8B 模子训练。这一数目是不可接受的,因此需要一些优化策略来降低显存占用。

针对模子参数的优化有三种思路:


  • 量化:以更低的精度来表示模子参数。
  • 分块:将显存占用分摊到多个 GPU 上,可以利用 ZeRO3 或 FSDP 策略,或接纳张量并行的方式。
  • 卸载:放到 CPU 上存储,用的时间再拿到 GPU,如许可以将 GPU 显存占用降到很小,但可能会影响训练速度。

除了参数优化,还有梯度和优化器的优化。起首也可以做量化,利用 8-bit 优化器,可以将显存占用降低到原来的四分之一左右。最流行的方式是接纳 LoRA 方法,即降低梯度和优化器的显存,接纳矩阵分解的方式,利用低秩矩阵来模拟高秩矩阵,从而将显存占用降至原来的百分之一乃至更小,优化结果显着。类似的还有 Facebook 提出的 GaLore 方法。除此之外,还可以接纳 Sampling 的方式,每次只优化一部分参数,主要算法包括 LOMO、Spectrum 等,此中 Badam 结果也非常好。梯度和优化器也可以分块,分摊至多张显卡,可以利用 ZeRO2 或 FSDP 策略,也可以利用张量并行。

末了再来讲一下激活值的优化方式。起首,分块计算,利用 Flash Attention 组件,可以将注意力分数优化至接近于 0 的大小。还可以利用 Fused CE 来对概率分布进行优化。重计算的另一个算法是 Checkpointing,其核心思路是时间换空间。末了一个方法是将激活值卸载到 CPU 上,可以进一步将显存占用从 bsh(l+1)降低至 2bsh。

假设模子参数接纳量化策略,梯度/优化器接纳 LoRA 策略,激活值接纳上述所有方法,优化后总共仅用不到 10GB 的显存就可以完成 LLaMA-3 8B 模子的训练。可见上述方法的优化结果非常显着,然而要实现这些优化也并非易事,涉及复杂的编码和操纵。因此我们提出了 LLaMA-Factory 框架。
02 LLaMA-Factory 团体介绍

LLaMA-Factory 集成了众多优化方法,利用时不再需要繁琐的代码编写,仅需在网页上操纵即可实现算法调用。

框架结合了前面提到的 Flash Attention、GPTQ 作为核心算子,还集成了 LoRA 及其各种变体。基于这些算法,提供了大模子预训练、SFT、RLHF、DPO、SimPO 等优化策略,可以运行于 NVIDIA、Ascend、AMD 以及 Mac 等硬件之上。核心产品名为 LLaMA Board,通过可视化界面可实现零代码的模子微调。

LLaMA Board 提供了四种语言,支持 300 多种模子,包括单模态的 LLaMA、Qwen,以及多模态的 LLaVA、Qwen-VL 等。平台集训练、评估于一体,提供了训练、评估、对话以及导出四种模式。用户可以根据需要选择数据集,并可视化地设置参数。可一键启动或停息训练,启动后可及时观察训练损失曲线和训练进度。LLaMA Board 是完全开源的,可以从 GitHub 上下载,也可以看到源代码以便于进行定制开发。

在今年一年的时间中,LLaMA 不断升级,一共发布了 5 个大版本,加入了更多模子,适配了更多装备,并不断提升训练速度。

LLaMA-Factory 获得了社区非常的积极反馈,在 GitHub 已收获逾 35000 颗星标,成为微调框架中热门项目。并且被广泛应用于英伟达、亚马逊 AWS、腾讯云、阿里云等知名产品中,在业界受到了高度认可。已汇聚超 100 名贡献者,共同推进框架完善与功能丰富。
03 LLaMA-Factory 快速入门


各人通常会选择从指令模子开始,进行指令微调(SFT)。指令微调是初学者容易掌握的训练方法,适合那些刚开始接触大模子训练的新手。可以接纳开源数据集,如 OpenHermes、AlignAnything、InfinityInstruct,训练模子,使其可以或许遵从人类指令,进行多轮对话,或执行复杂任务,拓展原有模子的功能界限。
在此基础上,可以实验偏勤学习或增量预训练。

对于高阶用户,也可以不利用 Web UI,而是通过命令行来进行操纵。

开始训练之前需要关注数据构建,包括样本的收集、合成和增广。可以利用大模子去合成数据,比如将原来的非多轮对话数据改写为多轮对话。
根据任务难度选取模子,难度较小,比如只是做客服,就可以用 2B、7B 的模子,如果任务很难,就要选择较大的模子。别的,算法的选择要参考硬件资源环境,比如在硬件有限的环境下可以选择 LoRA 的方法,而硬件充足时则可以选择全量微调。
评估测试时,可以利用 LLaMA-Factory 自带的评估样例,也可以进行人工评测,来验证模子结果。
04 LLaMA-Factory 性能调优


在 LLaMA-Factory 的最新版本中,引入了高性能算子,来实现低显存上更高速度的训练。利用–enable_liger_kernel 以及–use_unsloth_gc 命令,就可以调用 Liger SwiGLU 和 Liger RMS Norm 算子。

从上图中可以看到,利用上述算子后,可以将样本最大长度从 4k 扩展到 32k,LoRA 微调样本乃至可以扩展到 64k。利用一张 40GB 的显卡就可以训练一个 8B 64k 的模子。

同时,还可以提升硬件利用率,从匀称的 33% 升至 60%,节省了一半的训练时间,优化显着。
05 LLaMA-Factory 应用案例

末了通过实际案例来阐明如何利用 LLaMA-Factory 框架。

比方,实现一个 AI 导游。起首数据构造阶段,从互联网中抓取了一些图文对,并通过模版构造出一些基础问答对。进一步需要做数据增强,基于最初构造出的几十条数据进行扩充,以便更好地训练模子。我们调用大模子合成风格化数据,让大模子饰演差别的角色,重写数据,如许得到了几百条数据。

我们利用这几百条数据去做 Qwen2-VL 2B 的全参微调。上图中可以看到,微调的损失函数是平缓下降的,可以拟合到一个非常低的水平。

上图中可以看到,原始模子给出的是一个错误答案,而微调后模子可以做出正确答复,并给出相干介绍。关于幻觉问题,建议在数据构建时混淆一些通用样本数据,有助于提升模子准确率。
以上就是本次分享的内容,谢谢各人。
06 Q&A

Q1 :可视化界面是否支持多卡训练?
A1:在 0.8 版本中已加入多卡训练功能,支持 GPU、NPU 及 AMD 装备,可在界面选择多卡训练。特别针对华为 920B3 完美适配,轻松安装无需额外设置即可利用。推荐利用提供的 Docker 镜像建立计算环境。
Q2 :如何构造 Agent 微调数据?
A2:Agent 微调数据应考虑多轮对话的差别角色,如 User Assistant、Function Call、Observation 等,可参照 Readme 文档中指定的格式构建。
Q3 :是否利用 Deep Speed 进行底层训练?
A3:当前主要接纳 Deep Speed 与 FSDP 方式,以确保更广泛的模子兼容性。模子并行通过 Deep Speed ZeRO3 实现多显卡分配,已完成对 Deep Speed ZeRO3 的精良适配。
Q4 :是否支持多节点训练?
A4:Web UI 方式支持多卡训练,但对于多节点训练更推荐利用命令行,更为稳定,但 Web UI 环境下设置好环境变量也可实现。
Q5 :样本合成与微调模子可否差别?
A5:完全可行,可选用较智能的 GPT 模子合成样本;微调时可以选择开源小型模子,降低成本的同时保持精良结果。
Q6 :数据集添加为何要求 JSON 格式?
A6:JSON 格式规范化数据结构,只管需额外步调,但确保数据一致性与模子训练的标准化。
零基础如何学习AI大模子

领取方式在文末
为什么要学习大模子?

学习大模子课程的重要性在于它可以或许极大地促进个人在人工智能领域的专业发展。大模子技术,如自然语言处置惩罚和图像辨认,正在推动着人工智能的新发展阶段。通过学习大模子课程,可以掌握设计和实现基于大模子的应用系统所需的基本原理和技术,从而提升自己在数据处置惩罚、分析和决策制定方面的本领。别的,大模子技术在多个行业中的应用日益增长,掌握这一技术将有助于提高就业竞争力,并为将来的创新创业提供坚固的基础。
大模子典型应用场景

AI+教导:智能教学助手和主动评分系统使个性化教导成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习结果。
AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并及时监控金融市场,辨认潜在风险。
AI+制造:智能制造和主动化工厂提高了生产服从和质量。通过AI技术,工厂可以实现装备预测性维护,减少停机时间。

这些案例表明,学习大模子课程不但可以或许提升个人技能,还能为企业带来实际效益,推动行业创新发展。
学习资料领取

如果你对大模子感兴趣,可以看看我整合并且整理成了一份AI大模子资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给各人发


部分资料展示

一、 AI大模子学习路线图

整个学习分为7个阶段


二、AI大模子实战案例

涵盖AI大模子的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模子感兴趣的爱好者,皆可用。



三、视频和册本PDF合集

从入门到进阶这里都有,跟着老师学习事半功倍。



四、LLM面试题



五、AI产品经理面试题


本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

刘俊凯

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