链载Ai

标题: 研究篇| 一款深入浅出的微调框架 [打印本页]

作者: 链载Ai    时间: 昨天 09:57
标题: 研究篇| 一款深入浅出的微调框架


01为什么要微调

从计算资源成本上看, 之前在《【小白入门篇6】常识|怎么计算模型需要的资源》中介绍了模型训练需要大量的计算资源,一般情况下,个人和企业是无法承担的成本,所以微调的方案就出来, 关于微调的方式也很多,大部分微调方式都是固定模型参数(freeze model), 可以降低计算梯度等内存空间, 从而实现小参数撬动大模型, 关于更多的微调方法可以查看《微调入门篇:大模型微调的理论学习》文章, 目前微调方法也是日新月异, 请大家保持积极学习的心态.
从应用视角看, 微调是将通用模型专门化,使其更适合特定任务。通过微调,模型能够处理更多数据并从中学习,提高准确性和一致性, 从而提高模型场景应用效率。微调还能减少模型的误差和幻觉,提供更专业的回答.
从程序员找工作看,微调是一个可以深入模型开发, 有一定技术门槛, 相对之前说过智能体、RAG应用来看, 在程序员转型大模型来说, 更有项目亮点, 更难拿到心仪的offer.
从实际使用场景来看, Rag方向虽然能够解决大模型在垂直领域知识的扩充,但是在召回知识量和准确性而言, 不一定让使用者满意,此时有些团队就想从微调方向来改进模型的表现
.......

02 LLaMA Factory简介

LLaMA factory 框架是基于 LoRA 微调方法开发的, Lora微调是一种非常高效的微调方法,它不会改变预训练模型的原始权重参数。
LoRA在需要微调的层上引入了一对小的可训练矩阵,称为低秩矩阵。在前向过程中,模型会对原始权重张量和LoRA低秩矩阵进行相乘运算,得到改变后的权重用于计算。而在反向传播时,只需要计算和更新这对小矩阵的梯度, 相比ChatGLM提供的P-Tuning方法,有 3.7 倍的加速比.结合量化技术(Qlora) 可以进一步完成GPU显存的消耗.

除此之外, LLamaFactory 项目还引入计算型技术进一步优化显存使用,比如低精度存储(FP16)、闪电注意力(Flash Attention)注意力层进行优化的新算法、Unsloth优化LoRA层反向传播机制,降低了梯度计算所需的浮点运算数,加速了LoRA训练过等, 总之LLama Factory为我们封装了很多微调算法以及优化技术, 用户无需关心技术细节,只需选择期望的内存占用和性能, 以下是LLama Factory项目的特色:

03LLaMA Factory部署

3.1 基础依赖安装

gitclonehttps://github.com/hiyouga/LLaMA-Factory.gitcdLLaMA-Factorypipinstall"unsloth[colab-new]@git+https://github.com/unslothai/unsloth.git"pipinstall--no-depsxformers<0.0.26pipinstall.[torch,bitsandbytes]#根据实际需要,具体可以看setup.py的extra_require变量,可选的额外依赖项:torch、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、qualityexportUSE_MODELSCOPE_HUB=1#一般国内无法直接下载huggingface的模型,可以使用魔塔方式

3.2 LLaMA Board 可视化微调

LLama factory 为很多初学者提供webui 微调, 大大降低了使用门槛, 不过这种方式只能使用单GPU训练, 分布式训练还是必须用命令行, 这种方式对于初学者足够用了。
pipinstall--upgradehuggingface_hubhuggingface-cliloginGRADIO_SHARE=1llamafactory-cliwebui

3.3LLaMA CLI微调

如果想要多卡训练,并且对微调参数比较熟悉的经验者,可以考虑这种方式, 修改模型配置更加灵活.
#以sft训练为例CUDA_VISIBLE_DEVICES=0,1llamafactory-clitrainexamples/lora_single_gpu/llama3_lora_sft.yaml

04LLaMA Factory实际场景

LLaMA Factory已经有很多实际场景落地,经过群众实践检验:

05LLaMA Factory项目结构

LLama项目结构还是相对我之前微调参考MedicalGPT的代码更加清楚,主要可以分为应用层(User Interface)、模型加载器(Model Loader)、数据处理器(Data Worker)、训练器(Trainer)和模型评估(eval)。

06 总结

在人工智能领域,大型语言模型(LLM)微调(Fine-Tuning)是当下最热门的话题之一。虽然LLaMA Factory不是唯一的微调框架, 比如还有star30+的DeepSpeed等, 目前LLaMA Factory也已经集成了这个框架, 同时它有完善中文文档,和中国生态,总体来说LLaMA Factory 是一个非常优质的工具,在LLM微调中帮助中国用户节省了大量的精力。LLaMA Factory是一款深入浅出的微调框架, 如果不想了解过多微调原理,可以方便快速上手, 如果想深入,可以看一下框架的实现代码,参考相关论文(注:下图来源于网络)







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5