在入手学习大模型微调时,首先推荐功能层次封装层次较高的微调三剑客:unsloth、Llama-Factory和ms-SWIFT。除此之外,也可以借助更加底层的库,如peft、LoRA、transformer等实现高效微调。对于初学者来说,首先推荐unsloth、Llama-Factory和ms-SWIFT来进行微调,三种工具基本说明如下。
1. unsloth
unsloth GitHub主页:https://github.com/unslothai/unsloth
unsloth是一个专为大型语言模型(LLM)设计的微调框架,旨在提高微调效率并减少显存占用。它通过手动推导计算密集型数学步骤并手写GPU内核,实现了无需硬件更改即可显著加快训练速度。
unsloth与HuggingFace生态兼容,可以很容易地transformers、peft、trl等库结合,以实现模型的监督微调(SFT)和直接偏好优化(DPO),仅需模型的加载方式,无需对现有训练代码进行修改。
主要功能点:
- 高效微调:unsloth通过深度优化,使LLM的微调速度提高2-5倍,显存使用量减少约80%,且准确度无明显下降。
- 广泛的模型支持:目前支持的模型包括目前各类主流模型,用户可以根据需求适合的模型进行微调。
- 兼容性:unsloth与HuggingFace态系统兼容,用户可以轻松将其与traformers、peft、l等库结合,实现模型的监督微调(SFT)和直接偏好优化(DPO),仅需修改模型的加载方式,无需对现有训练代码进行过多修改。
- 内存优化:通过4位和16位的QLoRA/LoRA微调,unsloth显著了显存占用,使得在资源受限的环境中也能大的微调。
unsloth核心优势:
- 显著提升微调效率:相比传统方法,Unsloth能够在更短的时间内完成微调任务,节省时间成本。降低硬件要求:通过优化显存使用,用户可以在显存较小的GPU上进行大模型的微调,降低了硬件门槛。
- 开源免费:Unsloth提供开源版本,用户可以在Google Colab或Kaggle Notebooks上免费试用,方便上手体验。
总的来说,unsloth为大型语言模型的微调提供了高效、低成本的解决方案,适合希望在有限资源下进行模型微调的开发者和研究人员。
2. LLama-Factory
LLama-Factory GitHub主页:https://github.com/hiyouga/LLaMA-Factory
LLama-Factory是一个统一且高效的微调框架,旨在为超过100种大型语言模型(LLMs)和视觉语言模型(VLMs)提供便捷的微调支持。用户能够灵活地定制模型以适应各种下游任务。
主要功能和特点:
- 广型支持:LLaMA-Factory支持对100多LLMs和VLMs进行微调,包括最新的模型版本,如Llama 3、GLM-4、Mistral Small、PaliGemma2等。
- 高效的微调方法:框架集成了多nk Adaptation)、QRA(Quantized LoRA)等,以提高训练速度并减少显存占用。
- 多模态任务支持:除了传统的文本任务外,LLaMA-Factory还支频识别、音频理解等多种任务类型。
- 实验监控:提供了丰富的实验监控工具,如LlamaBoard、TensorBoard、Wandb、MLflow、练过程。
- 快速:框架提供了类似OpenAI风格的API、Gradio UI和命令行界面,并结合vLLM worker,实现了高效的推理能力。
3. ms-SWIFT
ms-SWIFT GitHub项目主页:https://github.com/modelscope/swift
ms-swift(Scalable lightWeight Infrastructure for Fine-Tuning)是由魔搭社区(ModelScope)开发的高效微调和部署框架,旨在为研究人员和开发者提供一站式的大模型与多模态大模型的训练、推理、评测、量化和部署解决方案。
主要功能和特点:
- 模型支持:ms-swift支持超过450种大型模型(LLMs)和150多种多模态大模型(MLLMs)的训练和部署,包括最新的模型版本,如Qwen2.5、InternLM3、GLM4、Llama3.3、Mistral、DeepSeek-R1、Yi1.5、Baichuan2、Gemma2等,以及多模态模型如Qwen2.5-VL、Qwen2-Audio、Llama3.2-Vision、Llava、InternVL2.5等。
- 多样化的训练技术:框架集oRA、Llama-Pro、LonoRA、GaLore、Q-GaLore、LoRA+、LISA、DoRA、FourierFt、ReFT、UnSloth和Liger等,满足不同的微调需求。
- 轻量级微调:支持多种轻量级微调方法,如LoRA、QLoRA、DoLLaMAPro、Adapt、GaLore、QGalore、LISA、UnSloth、Liger-Kernel等,降低显存和计算资源的消耗。
- 分布式训练:支持分布式数据并行(DDP)、DeepSpeed ZeRO2/ZeRO3、FSDP等技术,提升推理加速:提供BNBWQ、GPTQ、AQLM、HQQ、EETQ等量化方法,并支持使用vLLM和LMDeploy对推理、评测和部署支持图像、视频和语音等多种模态型训练,涵盖VQA、Caption、OCR、Grounding等任务。
- 用户友好的界面:提供基于Gradio的We和量化操作,简化了大模型的全链路流程。
对比项 | Unsloth | LLaMA-Factory | MS-Swift |
---|---|---|---|
核心优势 | 训练速度与显存优化,易用性,兼容性,长上下文支持,适用资源有限场景 | 模型覆盖广,灵活性,社区支持,序列并行,适用复杂任务场景 | 多模态支持,工业级工具链,可视化界面,部署友好,适用多模态任务场景 |
适用场景 | 资源有限、需要快速迭代实验、单GPU/Colab环境 | 处理复杂任务、多模型对比实验、企业级部署 | 多模态任务、企业级生产环境、端到端解决方案需要团队 |
综合建议
- 个人/新手:优先选Unsloth,显存要求低且易上手
- 研究/多模型实验:推荐LLaMA-Factory,社区资源丰富
- 工业级/多模态:选择MS-Swift,功能全面且支持部署优化
注一:若是强化学习训练,则推荐veRL和OpenRLHF等框架。
注二:其他更底层微调框架推荐表
框架 | 优势 | 适用场景 |
---|---|---|
HuggingFace | 高度兼容,易用,文档丰富 | 一般NLP任务,模型选择丰富 |
LoRA | 显存节省,减少微调计算量 | 显存有限的设备,微调大规模模型 |
PEFT | 高效微调,低计算开销 | 资源有限的环境,适合大规模预训练模型的微调 |
DeepSpeed | 大规模分布式训练,显存优化 | 超大规模训练,多卡分布式训练 |
AdapterHub | 低资源消耗,快速微调 | 多任务微调,资源有限的环境 |
Alpaca-LoRA | 生成任务优化,LoRA技术结合 | 对话生成、文本生成任务 |
FastChat | 对话系统微调,快速集成 | 对话生成任务,尤其是对ChatGPT等模型微调 |
FairScale | 大规模分布式训练优化,自动化优化 | 多卡分布式训练,大规模微调 |