|
从计算资源成本上看, 之前在《【小白入门篇6】常识|怎么计算模型需要的资源》中介绍了模型训练需要大量的计算资源,一般情况下,个人和企业是无法承担的成本,所以微调的方案就出来, 关于微调的方式也很多,大部分微调方式都是固定模型参数(freeze model), 可以降低计算梯度等内存空间, 从而实现小参数撬动大模型, 关于更多的微调方法可以查看《微调入门篇:大模型微调的理论学习》文章, 目前微调方法也是日新月异, 请大家保持积极学习的心态.从应用视角看, 微调是将通用模型专门化,使其更适合特定任务。通过微调,模型能够处理更多数据并从中学习,提高准确性和一致性, 从而提高模型场景应用效率。微调还能减少模型的误差和幻觉,提供更专业的回答.从程序员找工作看,微调是一个可以深入模型开发, 有一定技术门槛, 相对之前说过智能体、RAG应用来看, 在程序员转型大模型来说, 更有项目亮点, 更难拿到心仪的offer.从实际使用场景来看, Rag方向虽然能够解决大模型在垂直领域知识的扩充,但是在召回知识量和准确性而言, 不一定让使用者满意,此时有些团队就想从微调方向来改进模型的表现LLaMA factory 框架是基于 LoRA 微调方法开发的, Lora微调是一种非常高效的微调方法,它不会改变预训练模型的原始权重参数。LoRA在需要微调的层上引入了一对小的可训练矩阵,称为低秩矩阵。在前向过程中,模型会对原始权重张量和LoRA低秩矩阵进行相乘运算,得到改变后的权重用于计算。而在反向传播时,只需要计算和更新这对小矩阵的梯度, 相比ChatGLM提供的P-Tuning方法,有 3.7 倍的加速比.结合量化技术(Qlora) 可以进一步完成GPU显存的消耗.  除此之外, LLamaFactory 项目还引入计算型技术进一步优化显存使用,比如低精度存储(FP16)、闪电注意力(Flash Attention)注意力层进行优化的新算法、Unsloth优化LoRA层反向传播机制,降低了梯度计算所需的浮点运算数,加速了LoRA训练过等, 总之LLama Factory为我们封装了很多微调算法以及优化技术, 用户无需关心技术细节,只需选择期望的内存占用和性能, 以下是LLama Factory项目的特色:多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。 集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练和 ORPO 训练。 多种精度:32 比特全参数微调、16 比特冻结微调、16 比特 LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8 的 2/4/8 比特 QLoRA 微调。 先进算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 Agent 微调。 实用技巧:FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。 极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。 无需魔法: 实现了hugging face和魔塔方式下载模型和数据集,大大方便了很多开发者。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);letter-spacing: 0.034em;">
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 LLaMA Factory已经有很多实际场景落地,经过群众实践检验:StarWhisper: 天文大模型 StarWhisper,基于 ChatGLM2-6B 和 Qwen-14B 在天文数据上微调而得。 DISC-LawLLM: 中文法律领域大模型 DISC-LawLLM,基于 Baichuan-13B 微调而得,具有法律推理和知识检索能力。 Sunsimiao: 孙思邈中文医疗大模型 Sumsimiao,基于 Baichuan-7B 和 ChatGLM-6B 在中文医疗数据上微调而得。 CareGPT: 医疗大模型项目 CareGPT,基于 LLaMA2-7B 和 Baichuan-13B 在中文医疗数据上微调而得。 MachineMindset:MBTI性格大模型项目,根据数据集与训练方式让任意 LLM 拥有 16 个不同的性格类型。 Luminia-13B-v3:一个用于生成 Stable Diffusion 提示词的大型语言模型。[?Demo] Chinese-LLaVA-Med:中文多模态医学大模型,基于 LLaVA-1.5-7B 在中文多模态医疗数据上微调而得 ......还有一些论文等 LLama项目结构还是相对我之前微调参考MedicalGPT的代码更加清楚,主要可以分为应用层(User Interface)、模型加载器(Model Loader)、数据处理器(Data Worker)、训练器(Trainer)和模型评估(eval)。应用层: web端、cli端、丰富参数配置以及完备的训练场景监控, 包括api方式保留,用户可以自定义前端 模型加载器:支持hugging face和魔塔下载, 支持量化、适配等操作 数据处理器: 支持hugging face和魔塔下载,支持对齐、补齐等操作 训练器: 主要支持lora方式微调, 支持 (增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练和 ORPO 训练方法。 在人工智能领域,大型语言模型(LLM)微调(Fine-Tuning)是当下最热门的话题之一。虽然LLaMA Factory不是唯一的微调框架, 比如还有star30+的DeepSpeed等, 目前LLaMA Factory也已经集成了这个框架, 同时它有完善中文文档,和中国生态,总体来说LLaMA Factory 是一个非常优质的工具,在LLM微调中帮助中国用户节省了大量的精力。LLaMA Factory是一款深入浅出的微调框架, 如果不想了解过多微调原理,可以方便快速上手, 如果想深入,可以看一下框架的实现代码,参考相关论文(注:下图来源于网络)

|