整合主流的各种高效训练微调技术,适配市场主流开源模型,形成一个功能丰富,适配性好的训练框架 微调大模型可以像这样轻松…
项目提供了多个高层次抽象的调用接口,包含多阶段训练,推理测试,benchmark评测,API Server等,使开发者开箱即用。同时借鉴 Stable Diffsion WebUI相关,本项目提供了基于gradio的网页版工作台,方便初学者可以迅速上手操作,开发出自己的第一个模型。
本教程目标以Meta-Llama-3-8B-Instruct 模型 和 Linux + RTX 4090 24GB环境,LoRA+sft训练阶段为例子,帮助开发者迅速浏览和实践本项目会涉及到的常见若干个功能,包括- 原始模型直接推理
- 自定义数据集构建
- 基于LoRA的sft指令微调
- 动态合并LoRA的推理
- 批量预测和训练效果评估
- LoRA模型合并导出
- 一站式webui board的使用
- API Server的启动与调用
- 大模型主流评测 benchmark
- 导出GGUF格式,使用Ollama推理
项目特色- 多种模型: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、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。
- 实用技巧:FlashAttention-2、Unsloth、Liger Kernel、RoPE scaling、NEFTune 和 rsLoRA。
- 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
- 极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。
模型[td]模型名 | 模型大小 | Template | Baichuan 2 | 7B/13B | baichuan2 | BLOOM/BLOOMZ | 560M/1.1B/1.7B/3B/7.1B/176B | - | ChatGLM3 | 6B | chatglm3 | Command R | 35B/104B | cohere | DeepSeek (Code/MoE) | 7B/16B/67B/236B | deepseek | Falcon | 7B/11B/40B/180B | falcon | Gemma/Gemma 2/CodeGemma | 2B/7B/9B/27B | gemma | GLM-4 | 9B | glm4 | InternLM2/InternLM2.5 | 7B/20B | intern2 | Llama | 7B/13B/33B/65B | - | Llama 2 | 7B/13B/70B | llama2 | Llama 3/Llama 3.1 | 8B/70B | llama3 | LLaVA-1.5 | 7B/13B | vicuna | MiniCPM | 1B/2B | cpm | Mistral/Mixtral | 7B/8x7B/8x22B | mistral | OLMo | 1B/7B | - | PaliGemma | 3B | gemma | Phi-1.5/Phi-2 | 1.3B/2.7B | - | Phi-3 | 4B/7B/14B | phi | Qwen/Qwen1.5/Qwen2 (Code/Math/MoE) | 0.5B/1.5B/4B/7B/14B/32B/72B/110B | qwen | StarCoder 2 | 3B/7B/15B | - | XVERSE | 7B/13B/65B | xverse | Yi/Yi-1.5 | 6B/9B/34B | yi | Yi-VL | 6B/34B | yi_vl | Yuan 2 | 2B/51B/102B | yuan |
[!NOTE] 对于所有“基座”(Base)模型,template 参数可以是 default, alpaca, vicuna 等任意值。但“对话”(Instruct/Chat)模型请务必使用对应的模板。 请务必在训练和推理时采用完全一致的模板。
训练方法[td]方法 | 全参数训练 | 部分参数训练 | LoRA | QLoRA | 预训练 | | | | | 指令监督微调 | | | | | 奖励模型训练 | | | | | PPO 训练 | | | | | DPO 训练 | | | | | KTO 训练 | | | | | ORPO 训练 | | | | | SimPO 训练 | | | | |
软硬件依赖[td]必需项 | 至少 | 推荐 | python | 3.8 | 3.11 | torch | 1.13.1 | 2.4.0 | transformers | 4.41.2 | 4.43.4 | datasets | 2.16.0 | 2.20.0 | accelerate | 0.30.1 | 0.32.0 | peft | 0.11.1 | 0.12.0 | trl | 0.8.6 | 0.9.6 | [td]可选项 | 至少 | 推荐 | CUDA | 11.6 | 12.2 | deepspeed | 0.10.0 | 0.14.0 | bitsandbytes | 0.39.0 | 0.43.1 | vllm | 0.4.3 | 0.5.0 | flash-attn | 2.3.0 | 2.6.3 | 硬件依赖* 估算值 [td]方法 | 精度 | 7B | 13B | 30B | 70B | 110B | 8x7B | 8x22B | Full | AMP | 120GB | 240GB | 600GB | 1200GB | 2000GB | 900GB | 2400GB | Full | 16 | 60GB | 120GB | 300GB | 600GB | 900GB | 400GB | 1200GB | Freeze | 16 | 20GB | 40GB | 80GB | 200GB | 360GB | 160GB | 400GB | LoRA/GaLore/BAdam | 16 | 16GB | 32GB | 64GB | 160GB | 240GB | 120GB | 320GB | QLoRA | 8 | 10GB | 20GB | 40GB | 80GB | 140GB | 60GB | 160GB | QLoRA | 4 | 6GB | 12GB | 24GB | 48GB | 72GB | 30GB | 96GB | QLoRA | 2 | 4GB | 8GB | 16GB | 24GB | 48GB | 18GB | 48GB |

链接:https://pan.quark.cn/s/a1000e7005d6
提取码下载:
|