大模型训练工具大盘点:小白也能轻松搞定!
创作时间:
作者:
@小白创作中心
大模型训练工具大盘点:小白也能轻松搞定!
引用
1
来源
1.
https://www.cnblogs.com/gzyatcnblogs/p/18684805
随着大模型技术的快速发展,越来越多的工具被开发出来以简化大模型的训练过程。本文将介绍7种主流的大模型训练工具,包括Axolotl、Llama-Factory、Firefly、Xtuner、Swift、Unsloth和transformers.Trainer。这些工具各有特点,能够满足不同场景下的训练需求。
Axolotl
Axolotl 是一款旨在简化各种人工智能模型微调的工具,支持多种配置和架构。
主要特点:
- 支持的常见开源大模型,多种训练方式,包括:全参微调、LoRA/QLoRA、xformers等。
- 可通过 yaml 或 CLI 自定义配置。
- 支持多种数据集格式以及自定义格式。
- 集成了 xformer、flash attention、liger kernel、rope 及 multipacking。
- 使用 Docker 在本地或云端轻松运行。
- 将结果和可选的检查点记录到 wandb 或 mlflow 中。
示例:
accelerate launch -m axolotl.cli.train examples/openllama-3b/lora.yml
Llama-Factory
使用零代码命令行与Web UI轻松训练百余种大模型,并提供高效的训练和评估工具。
主要特点:
- 多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
- 多种训练:预训练、(多模态)指令监督微调、奖励模型训练、PPO/DPO/KTO/ORPO 训练等等。
- 多种精度:16-bit全参微调、冻结微调、LoRA/QLoRA 微调。
- 先进算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。
- 实用技巧:FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。
- 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
- 极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。
示例:
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml
Firefly
Firefly支持对主流的大模型进行预训练、指令微调和 DPO。
主要特点:
- 支持预训练、SFT、DPO,支持全参数训练、LoRA/QLoRA 训练。
- 支持使用Unsloth加速训练,降低显存需求。
- 支持绝大部分主流的开源大模型,如 Llama3、Gemma、MiniCPM、Llama、InternLM、Baichuan、ChatGLM、Yi、Deepseek、Qwen、Orion、Ziya、Xverse、Mistral、Mixtral-8x7B、Zephyr、Vicuna、Bloom,训练时与各个官方的 chat 模型的 template 对齐。
- 整理并开源指令微调数据集:firefly-train-1.1M 、moss-003-sft-data、ultrachat、 WizardLM_evol_instruct_V2_143k、school_math_0.25M。
- 在 Open LLM Leaderboard 上验证了 QLoRA 训练流程的有效性,开源Firefly 系列指令微调模型权重。
示例:
deepspeed --num_gpus={num_gpus} train.py --train_args_file train_args/sft/full/bloom-1b1-sft-full.json
torchrun --nproc_per_node={num_gpus} train.py --train_args_file train_args/pretrain/qlora/yi-6b-pretrain-qlora.json
Xtuner
XTuner 由上海人工智能实验室发布,是一个高效、灵活、全能的轻量化大模型微调工具库。
主要特点:
- 高效
- 支持大语言模型 LLM、多模态图文模型 VLM 的预训练及轻量级微调。XTuner 支持在 8GB 显存下微调 7B 模型,同时也支持多节点跨设备微调更大尺度模型(70B+)。
- 自动分发高性能算子(如 FlashAttention、Triton kernels 等)加速训练吞吐。
- 灵活
- 支持多种大语言模型,包括但不限于InternLM、Mixtral-8x7B、Llama 2、ChatGLM、Qwen、Baichuan,及多模态图文模型 LLaVA 的预训练与微调。
- 兼容任意数据格式,开源数据或自定义数据皆可快速上手。
- 支持增量预训练、QLoRA、LoRA、指令微调、Agent微调、全量参数微调等多种训练方式。
- 全能
- 预定义众多开源对话模版,支持与开源或训练所得模型进行对话。
- 训练所得模型可无缝接入部署工具库LMDeploy、大规模评测工具库OpenCompass及VLMEvalKit。
示例:
xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2 # 单卡
# 多卡
(DIST) NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --launcher dist --deepspeed deepspeed_zero2
(SLURM) srun ${SRUN_ARGS} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --launcher slurm --deepspeed deepspeed_zero2
Swift
ms-swift是魔塔提供的大模型与多模态大模型微调部署框架,支持450+大模型与150+多模态大模型的训练、推理、评测、量化与部署。
主要特点:
- 模型类型:支持450+纯文本大模型、150+多模态大模型,All-to-All全模态模型的训练到部署全流程。
- 数据集类型:内置150+预训练、微调、人类对齐、多模态等各种类型的数据集,并支持自定义数据集。
- 多种训练:
- 轻量训练:支持LoRA/QLoRA/DoRA/LoRA+/RS-LoRA、ReFT、LLaMAPro、Adapter、GaLore/Q-Galore、LISA、UnSloth、Liger-Kernel等轻量微调方式。支持对BNB、AWQ、GPTQ、AQLM、HQQ、EETQ量化模型进行训练。
- RLHF训练:支持文本和多模态大模型的DPO、CPO、SimPO、ORPO、KTO、RM、PPO等RLHF训练。
- 多模态训练:支持对图像、视频和语音模态模型进行训练,支持VQA、Caption、OCR、Grounding任务的训练。
- 界面训练:以界面的方式提供训练、推理、评测、量化的能力,完成大模型的全链路。
- 插件化与拓展:支持对loss、metric、trainer、loss-scale、callback、optimizer等组件进行自定义。
- 模型评测:以EvalScope作为评测后端,支持100+评测数据集对纯文本和多模态模型进行评测。
示例:
CUDA_VISIBLE_DEVICES=0 swift sft --model Qwen/Qwen2.5-7B-Instruct \
--train_type lora \
--dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \
--lora_rank 8 --lora_alpha 32 \
--target_modules all-linear \
--warmup_ratio 0.05
Unsloth
Unsloth是一个开源的大模型训练加速项目,使用OpenAI的Triton对模型的计算过程进行重写,大幅提升模型的训练速度,降低训练中的显存占用。Unsloth能够保证重写后的模型计算的一致性,实现中不存在近似计算,模型训练的精度损失为零。
主要特点:
- 所有内核均使用OpenAI的Triton语言编写。采用手动反向传播引擎。
- 精度无损失——不采用近似方法——全部精确。
- 无需更改硬件。支持2018年及以后版本的NVIDIA GPU。最低CUDA Capability为7.0(V100、T4、Titan V、RTX 20/30/40、A100、H100、L40等)。GTX 1070、1080也可以使用,但速度较慢。
- 支持4bit和16bit GLorA/LoRA微调。
- 开源版本训练速度提高5倍,使用Unsloth Pro可获得高达30倍的训练加速!
示例:
from unsloth import FastLanguageModel
# ... 导入其他包
max_seq_length = 2048 # Supports RoPE Scaling interally, so choose any!
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/llama-3-8b-bnb-4bit",
max_seq_length = max_seq_length,
dtype = None,
load_in_4bit = True,
)
# 后续流程和使用 transformers.Trainer 类似
transformers.Trainer
最后不得不提下大名鼎鼎的transformers库的Trainer,上述的很多工具其实也是在其基础上构建的。
Trainer本身是一个高度封装的类,但相比刚刚提到的工具,居然还有点偏底层了😅。
主要特点:
- 通用性:Trainer是一个通用的训练接口,适用于各种NLP任务,如分类、回归、语言建模等。它提供了标准化的训练流程,使得用户无需从头开始编写训练代码。
- 灵活性:用户可以通过自定义训练循环、损失函数、优化器、学习率调度器等方式来调整训练过程。
- 高级功能:混合精度训练、分布式训练、断点续训等。
- 自定义回调函数:允许用户添加自定义回调函数,以便在训练过程的特定阶段执行自定义操作。
示例:
from transformers import Trainer
# 加载模型、数据
trainer = Trainer(
model,
training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["validation"],
data_collator=data_collator,
tokenizer=tokenizer,
)
trainer.train()
总结
工具名称 | 模型支持 | 训练方式 | 优化与加速 | 数据支持 | 工具与集成 | 其他特性 |
---|---|---|---|---|---|---|
Axolotl | 常见开源大模型 | 全参数微调、LoRA/QLoRA、xformers等 | xformer、Flash Attention、liger kernel、rope、multipacking | 多种数据集格式、支持自定义数据格式 | wandb、MLflow | 使用docker本地或云端运行 |
Llama-Factory | 常见开源大模型、多模态模型 | 预训练、指令监督微调、奖励模型训练、PPO/DPO/KTO/ORPO 等 | Flash Attention、Unsloth、NEFTune、rsLoRA等 | 支持多种数据格式 | LlamaBoard、TensorBoard、Wandb、MLflow 等监控工具 | 零代码命令行、支持Web UI、OpenAI 风格 API、RoPE scaling |
Firefly | 常见开源大模型、多模态模型 | 预训练、全参数微调、指令微调、DPO、LoRA/QLoRA | Unsloth | 整理并开源多个指令微调数据集、支持自定义数据格式 | 提供多种开源数据集、开源 Firefly 系列模型权重 | |
Xtuner | 常见开源大模型、多模态图文模型 | 增量预训练、QLoRA/LoRA、全量参数微调、指令微调、Agent 微调 | Flash Attention、Triton kernels、多节点跨设备支持 | 兼容任意数据格式、支持开源和自定义数据、预定义开源对话模板 | LMDeploy、OpenCompass、VLMEvalKit | 8GB 显存微调 7B 模型 |
Swift | 450+ 纯文本大模型、150+ 多模态大模型、All-to-All 全模态模型 | LoRA/QLoRA、DoRA、ReFT 等轻量微调、RLHF 训练(DPO、CPO 等)、多模态训练(VQA、Caption 任务等) | 支持 BNB、AWQ 等量化模型训练 | 内置 150+ 数据集、支持自定义数据集 | EvalScope、支持插件化与拓展 | 以界面的方式提供训练、推理、评测、量化的能力,完成大模型的全链路 |
Unsloth | 常见开源大模型 | LoRA/QLoRA 微调等 | Triton 重写计算过程、支持 4bit 和 16bit 微调 | 支持自定义数据格式 | 支持 2018 年及以后版本的 NVIDIA GPU | 开源版本加速 5 倍、Pro 版本加速 30 倍、支持 RoPE Scaling |
Trainer | 常见开源大模型 | 通用训练接口自定义训练循环、损失函数、优化器等 | 混合精度训练 | 适用于各种 NLP 数据集、支持自定义数据格式 | 支持自定义回调函数 | 适用于多种 NLP 任务 |
图片版的总结:
热门推荐
探索中医奥秘,普陀萌娃直呼“神奇”
劳动合同续签,注意这5个坑
钢材类是否需要进行盐雾试验箱测试?
文艺复兴:文学三杰 但丁、薄伽丘和彼特拉克
我国学者通过孟德尔随机化分析揭示肺癌与脓毒症发生及28天死亡率显著关联
区块链技术的未来发展趋势:创新、应用与挑战
到不了的宣武,回不去的北京
制冷机组的选型与维护指南
我们可以如何学习C语言
整流、开关、肖特基二极管的区别详解
背包问题-分支限界法求解
手术室腔镜器械的管理
创业公司如何有效地进行竞争分析
全球先锋赛首日即是决赛演练?HLE对阵TES,369再战宙斯!
电饭煲小吊梨汤:秋冬润肺的暖心之选
睡前使用电子设备是否会影响睡眠质量?
20Cr2Ni4A钢材的热处理工艺及应用
足球比赛策略深度剖析:从基础规则到实战技巧
MySQL数据库连接池配置 如何提升数据库连接效率?
蜂王浆治疗糜烂性胃炎,糜烂性胃炎可以喝蜂王浆吗?是饭前喝还是饭后喝
人面鱼纹彩陶盆:六千年前的生死密码与艺术神迹
同济大学计算机考研全攻略:专业设置、报考信息及历年录取分数详解
颜炳罡:梁漱溟先生的责任意识与担当精神
NoSQL ❉ 文档数据库(Document Database)
5个月内,近20亿美元热钱涌入越南房地产行业
奇偶函数的加减乘除 四则运算是什么
“二手车销售统一发票”开具操作指南
抖音亲子综艺《跟着爸爸去露营2》:创新内容矩阵与互动模式
如何准确测量卧室面积?这种测量方法有哪些工具?
癌症康复与力量的营养贴士