当前位置:   article > 正文

研究篇| 一款深入浅出的微调框架_llamafactory-cli

llamafactory-cli

之前利用MedicalGPT跑过了《微调实操一: 增量预训练(Pretraining)》、《微调实操二: 有监督微调(Supervised Finetuning)》、《微调实操三:人类反馈对语言模型进行强化学习(RLHF)》、《微调实操四:直接偏好优化方法-DPO》等微调大模型实战, 其中MedicalGPT代码相对还是比较乱, 今天介绍一款开源star20K+的微调框架, 它是中国人开发, 代码结构相对MedicalGPT可阅读性强, 并且可扩展性也相对好很多, 这款框架的名称是LLaMA Factory.

01 为什么要微调

从计算资源成本上看, 之前在《【小白入门篇6】常识|怎么计算模型需要的资源》中介绍了模型训练需要大量的计算资源,一般情况下,个人和企业是无法承担的成本,所以微调的方案就出来, 关于微调的方式也很多,大部分微调方式都是固定模型参数(freeze model), 可以降低计算梯度等内存空间, 从而实现小参数撬动大模型, 关于更多的微调方法可以查看《微调入门篇:大模型微调的理论学习》文章, 目前微调方法也是日新月异, 请大家保持积极学习的心态.

从应用视角看, 微调是将通用模型专门化,使其更适合特定任务。通过微调,模型能够处理更多数据并从中学习,提高准确性和一致性, 从而提高模型场景应用效率。微调还能减少模型的误差和幻觉,提供更专业的回答.

从程序员找工作看,微调是一个可以深入模型开发, 有一定技术门槛, 相对之前说过智能体、RAG应用来看, 在程序员转型大模型来说, 更有项目亮点, 更难拿到心仪的offer.

从实际使用场景来看, Rag方向虽然能够解决大模型在垂直领域知识的扩充,但是在召回知识量和准确性而言, 不一定让使用者满意,此时有些团队就想从微调方向来改进模型的表现

02 LLaMA Factory简介

LLaMA factory 框架是基于 LoRA 微调方法开发的, Lora微调是一种非常高效的微调方法,它不会改变预训练模型的原始权重参数。

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

image.png

除此之外, 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和魔塔方式下载模型和数据集,大大方便了很多开发者。

03 LLaMA Factory部署

3.1 基础依赖安装

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
pip install --no-deps xformers<0.0.26
pip install .[torch,bitsandbytes] # 根据实际需要, 具体可以看setup.py的extra_require变量,可选的额外依赖项:torch、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、quality
export USE_MODELSCOPE_HUB=1 #一般国内无法直接下载hugging face的模型,可以使用魔塔方式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.2 LLaMA Board 可视化微调

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

pip install --upgrade huggingface_hub
huggingface-cli login
GRADIO_SHARE=1 llamafactory-cli webui
  • 1
  • 2
  • 3

image.png
3.3 LLaMA CLI 微调

如果想要多卡训练,并且对微调参数比较熟悉的经验者,可以考虑这种方式, 修改模型配置更加灵活.

# 以sft训练为例
CUDA_VISIBLE_DEVICES=0,1 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml
  • 1
  • 2

04 LLaMA Factory实际场景

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 提示词的大型语言模型。[

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/667100
推荐阅读
相关标签