今日号外:🔥🔥🔥 DeepSeek团队正式启动为期五天的开源计划 Day3:DeepGEMM。DeepGEMM 是一个专为简洁高效的 FP8 通用矩阵乘法(GEMM)设计的库,具有细粒度缩放功能,如 DeepSeek-V3 中所提出。它支持普通和混合专家(MoE)分组的 GEMM。该库采用 CUDA 编写,在安装过程中无需编译,通过使用轻量级的即时编译(JIT)模块在运行时编译所有内核。其核心代码仅300行,但性能卓越,为V3/R1的训练和推理提供支持。其性能强劲,Hopper GPU上最高可达1350+ FP8 TFLOPS的计算性能。
代码仓库:https://github.com/deepseek-ai/DeepGEMM
❗️❗️❗️关于矩阵乘法优化方面的知识,大家可跳转了解下进展《矩阵乘法加速计算优化最新进展》。
正题:主流微调工具选择
在入手学习大模型微调时,首先推荐功能层次封装层次较高的微调三剑客:Unsloth、 Llama-Factory和ms-SWIFT。除此之外,也可以借助更加底层的库,如peft、 LoRA、 transformer等实现高效微调。对于初学者来说,首先推荐Unsloth、 Llama-Factory和ms-SWIFT来进行微调,三种工具基本说明如下。
LLaMA-Factory
- LLama-Factory GitHub主页:https://github.com/hiyouga/LLaMA-Factory
LLaMA-Factory 是一个统一且高效的微调框架,旨在为超过 100 种大型语言模型(LLMs)和视觉语言模型(VLMs)提供便捷的微调支持。 用户能够灵活地定制模型以适应各种下游任务。
主要功能和特点:
-
模型种类:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
-
训练算法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
-
运算精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
-
优化算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA。
-
加速算子:FlashAttention-2 和 Unsloth。
-
推理引擎:Transformers 和 vLLM。
-
实验面板:提供了丰富的实验监控工具,如 LlamaBoard、TensorBoard、Wandb、MLflow 等等。
-
快速上手: 框架提供了类似 OpenAI 风格的 API、 Gradio UI 和命令行界面,并结合 vLLM worker,实现了高效的推理能力。
❗️❗️❗️这里我们之前有一期就使用过LLama-Factory对智谱的ChatGLM3-6b进行过高效微调,详见《LLaMA-Factory大模型微调实践 - 从零开始》。
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、 trl 等库结合,
实现模型的监督微调(SFT)和直接偏好优化(DPO),仅需修改模型的加载方式,无需对现有训练代码进行过多修改。
-
内存优化: 通过 4 位和 16 位的 QLoRA/LoRA 微调, Unsloth 显著了显 存占用,使得在资源受限的环境中也能大的微调。
Unsloth核心优势:
-
显著提升微调效率: 相比传统方法, Unsloth 能够在更短的时间内完成微调任务,节省时间成本。
-
降低硬件要求: 通过优化显存使用,用户可以在显存较小的 GPU 上进行大模型的微调,降低了硬件门槛。
-
开源免费: Unsloth提供开源版本,用户可以在 Google Colab 或 Kaggle Notebooks 上免费试用,方便上手体验。
总的来说, Unsloth为大型语言模型的微调提供了高效、低成本的解决方案,适合希望在有限资源下进行模型微调的开发者和研究人员。
❗️❗️❗️后续我们将会使用Unsloth来对DeepSeek-R1蒸馏模型进行专业领域知识微调。
《初探Unsloth微调DeepSeek-R1蒸馏模型》
ms-SWIFT
-
ms-SWIFT GitHub项目主页: https://github.com/modelscope/swift
ms-swift( Scalable lightWeight Infrastructure for Fine-Tuning)是魔搭社区提供的大模型与多模态大模型微调部署框架,现已支持450+大模型与150+多模态大模型的训练(预训练、微调、人类对齐)、推理、评测、量化与部署。其中大模型包括:Qwen2.5、InternLM3、GLM4、Llama3.3、Mistral、DeepSeek-R1、Yi1.5、TeleChat2、Baichuan2、Gemma2等模型,多模态大模型包括:Qwen2.5-VL、Qwen2-Audio、Llama3.2-Vision、Llava、InternVL2.5、MiniCPM-V-2.6、GLM4v、Xcomposer2.5、Yi-VL、DeepSeek-VL2、Phi3.5-Vision、GOT-OCR2等模型。
除此之外,ms-swift汇集了最新的训练技术,包括LoRA、QLoRA、Llama-Pro、LongLoRA、GaLore、Q-GaLore、LoRA+、LISA、DoRA、FourierFt、ReFT、UnSloth、和Liger等轻量化训练技术,以及DPO、GRPO、RM、PPO、KTO、CPO、SimPO、ORPO等人类对齐训练方法。ms-swift支持使用vLLM和LMDeploy对推理、评测和部署模块进行加速,并支持使用GPTQ、AWQ、BNB等技术对大模型进行量化。ms-swift还提供了基于Gradio的Web-UI界面及丰富的最佳实践。
为什么选择ms-swift?
-
模型类型:支持450+纯文本大模型、150+多模态大模型以及All-to-All全模态模型、序列分类模型、Embedding模型训练到部署全流程。
-
数据集类型:内置150+预训练、微调、人类对齐、多模态等各种类型的数据集,并支持自定义数据集。
-
硬件支持:CPU、RTX系列、T4/V100、A10/A100/H100、Ascend NPU、MPS等。
-
轻量训练:支持了LoRA、QLoRA、DoRA、LoRA+、ReFT、RS-LoRA、LLaMAPro、Adapter、GaLore、Q-Galore、LISA、UnSloth、Liger-Kernel等轻量微调方式。
-
分布式训练:支持分布式数据并行(DDP)、device_map简易模型并行、DeepSpeed ZeRO2 ZeRO3、FSDP等分布式训练技术。
-
量化训练:支持对BNB、AWQ、GPTQ、AQLM、HQQ、EETQ量化模型进行训练。
-
RLHF训练:支持纯文本大模型和多模态大模型的DPO、GRPO、RM、PPO、KTO、CPO、SimPO、ORPO等人类对齐训练方法。
-
多模态训练:支持对图像、视频和语音不同模态模型进行训练,支持VQA、Caption、OCR、Grounding任务的训练。
-
界面训练:以界面的方式提供训练、推理、评测、量化的能力,简化了大模型的全链路流程。
-
插件化与拓展:支持自定义模型和数据集拓展,支持对loss、metric、trainer、loss-scale、callback、optimizer等组件进行自定义。
-
工具箱能力:不仅提供大模型和多模态大模型的训练支持,还涵盖其推理、评测、量化和部署全流程。
-
推理加速:支持PyTorch、vLLM、LmDeploy推理加速引擎,并提供OpenAI接口,为推理、部署和评测模块提供加速。
-
模型评测:以EvalScope作为评测后端,支持100+评测数据集对纯文本和多模态模型进行评测。
-
模型量化:支持AWQ、GPTQ和BNB的量化导出,导出的模型支持使用vLLM/LmDeploy推理加速,并支持继续训练。