简介
LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调,框架特性包括:
- 模型种类: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 等等。
GitHub项目地址
GitHub文档仓库
不想通过GitHub跳转到文档,可以通过下面的链接直接访问LLama-Factory官方文档
文档地址
软硬件依赖
必需项 | 至少 | 推荐 |
---|---|---|
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 |
可选项 | 至少 | 推荐 |
---|---|---|
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 |
硬件依赖
* 估算值
方法 | 精度 | 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 |
安装
-
安装CUDA
下载链接
选择操作系统后进行下载
打开
cmd
输入nvcc -V
出现下图类似内容则表明安装成功
否则,需要配置系统变量
-
下载LLama-Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
-
配置python环境
我们使用conda配置,如果不知道conda怎么使用可以参考这篇博客:链接conda create --prefix D:\python_env\llama_factory python=3.11 # 创建虚拟环境 conda config --add envs_dirs D:\python_env # 给新建的虚拟环境添加名称 conda activate llama_factory # 激活环境
-
安装LLama-Factory
cd LLaMA-Factory pip install -e ".[torch,metrics]"
输入
llamafactory-cli version
出现下图内容表示安装成功
-
量化环境安装
一般情况,我们微调出来的模型会很大,这个时候需要量化。
量化方式有两种QLoRA
和FlashAttention-2
,我们使用第一种。
在 Windows 上启用量化 LoRA(QLoRA),请根据 CUDA 版本选择适当的 bitsandbytes 发行版本。
我安装的CUDA是12.2版本,所以我使用0.39.1+
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl
使用
-
数据处理
dataset_info.json 包含了所有经过预处理的 本地数据集以及在线数据集。如果您希望使用自定义数据集,请务必在 dataset_info.json 文件中添加对数据集及其内容的描述,并通过修改 dataset: 数据集名称 配置来使用数据集。
例如:指令监督微调数据集
指令监督微调(Instruct Tuning)通过让模型学习详细的指令以及对应的回答来优化模型在特定指令下的表现。
instruction
列对应的内容为人类指令,input
列对应的内容为人类输入,output
列对应的内容为模型回答。下面是一个例子"alpaca_zh_demo.json" { "instruction": "计算这些物品的总费用。 ", "input": "输入:汽车 - $3000,衣服 - $100,书 - $20。", "output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。" },
在进行指令监督微调时,
instruction
列对应的内容会与input
列对应的内容拼接后作为最终的人类输入,即人类输入为instruction\ninput
。而output
列对应的内容为模型回答。 在上面的例子中,人类的最终输入是:计算这些物品的总费用。 输入:汽车 - $3000,衣服 - $100,书 - $20。
模型的回答是:
汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。
更多数据格式参考数据处理
-
启用WebUI
cd LLaMA-Factory llamafactory-cli webui
- 下载模型
-
Hugging Face
Hugging Face
如果Hugging Face无法访问,可以尝试使用国内镜像网站Hugging Face国内镜像网站
安装git-lfs
git lfs install
git clone https://huggingface.co/shenzhi-wang/Llama3.1-8B-Chinese-Chat
- 开始训练
我的电脑显存有限,为了防止爆显存,这里选了一个1.8B的小模型。
OK,点击开始就可以开始训练了。训练过程中,后台会显示过程,左下角也会显示训练时间。我已经训练好了,这里可以看到训练完毕以及损失值。这里请记住模型输出目录,等一会测试时选择加载的模型。
本次训练loss虽然有收敛,但是值还是有点大。
看效果之前先看下训练使用的数据集,等一会同样的问题问下原模型和训练出来的模型,对比下效果:
加载原模型,提问识别并解释给定列表中的两个科学理论:细胞理论和日心说。
,原模型给出的回答是:
加载训练出来的模型,同样的问题,回答更接近训练集中的内容:
模型体验
实用小工具
Hugging Face Model Memory Calculator
FAQs
- 未检测到CUDA环境
问题:开始训练模型时出现警告信息“未检测到CUDA环境”
解决方法:
-
运行如下代码,发现安装的torch是CPU版本
import torch print(torch.cuda.is_available()) # 是否可以用gpu False不能,True可以 print(torch.cuda.device_count()) # gpu数量, 0就是没有,1就是检测到了 print(torch.__version__) #结果X.X.X+cpu不行
-
重新安装torch
PyTorch官网选择合适的安装方式:链接
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
也可以从这里找相应的torch版本torch -
重装后发现可以了
-
WebUI微调时没有任何信息
后台查看日志:
例如这个问题就是无法访问Hugging Face报的错误
-
开始微调后出现无法连接
https://huggingface.co
解决方法-1:使用魔搭社区
export USE_MODELSCOPE_HUB=1 # Windows 使用 set USE_MODELSCOPE_HUB=1
Windows设置
set MODELSCOPE_CACHE=D:\SoftWare\AI\MODELSCOPE
修改模型下载路径,否则默认下载在C:\Users\<user_name>\.cache
目录下注意:必须先执行此命令后执行
llamafactory-cli webui
启用WebUI或者直接设置环境变量,一劳永逸
解决方法-2:配置国内hugging face镜像源
huggingface-cli env
查看当前配置
添加环境变量
再次查看配置
- 训练时出现“CUDA out of memory”
问题:爆显存
解决方法:
- 将
batch size
调小一点 - 使用更小的模型进行训练
- 优化硬件,例如:增大显存
- 算力租赁,可参考这篇文章整理的内容【AI】人工智能、LLM学习资源汇总