赞
踩
A WebUI for Efficient Fine-Tuning of 100+ LLMs
Demo 视频
其他打开方式
与 ChatGLM 官方的 P-Tuning 微调相比,LLaMA Factory 的 LoRA 微调提供了 3.7 倍的加速比,同时在广告文案生成任务上取得了更高的 Rouge 分数。结合 4 比特量化技术,LLaMA Factory 的 QLoRA 微调进一步降低了 GPU 显存消耗。
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
可选的额外依赖项:torch、torch-npu、metrics、deepspeed、bitsandbytes、hqq、eetq、gptq、awq、aqlm、vllm、galore、badam、qwen、modelscope、quality
Tip : 遇到包冲突时,可使用 pip install --no-deps -e .
解决。
Windows 和 昇腾 NPU 用户指南 详见:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md
关于数据集文件的格式,请参考 data/README_zh.md 的内容。你可以使用 HuggingFace / ModelScope 上的数据集或加载本地数据集。
Note:使用自定义数据集时,请更新 data/dataset_info.json
文件。
下面三行命令分别对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并。
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
高级用法请参考 examples/README_zh.md(包括多 GPU 微调)。
Tip: 使用 llamafactory-cli help
显示帮助信息。
由 Gradio 驱动
llamafactory-cli webui
cd docker/docker-cuda/
docker-compose up -d
docker-compose exec llamafactory bash
cd docker/docker-npu/
docker-compose up -d
docker-compose exec llamafactory bash
docker build -f ./docker/docker-cuda/Dockerfile \
--build-arg INSTALL_BNB=false \
--build-arg INSTALL_VLLM=false \
--build-arg INSTALL_DEEPSPEED=false \
--build-arg INSTALL_FLASHATTN=false \
--build-arg PIP_INDEX=https://pypi.org/simple \
-t llamafactory:latest .
docker run -dit --gpus=all \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./data:/app/data \
-v ./output:/app/output \
-p 7860:7860 \
-p 8000:8000 \
--shm-size 16G \
--name llamafactory \
llamafactory:latest
docker exec -it llamafactory bash
# 根据您的环境选择镜像
docker build -f ./docker/docker-npu/Dockerfile \
--build-arg INSTALL_DEEPSPEED=false \
--build-arg PIP_INDEX=https://pypi.org/simple \
-t llamafactory:latest .
# 根据您的资源更改 `device`
docker run -dit \
-v ./hf_cache:/root/.cache/huggingface \
-v ./ms_cache:/root/.cache/modelscope \
-v ./data:/app/data \
-v ./output:/app/output \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-p 7860:7860 \
-p 8000:8000 \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
--shm-size 16G \
--name llamafactory \
llamafactory:latest
docker exec -it llamafactory bash
API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml
Tip : API 文档请查阅 https://platform.openai.com/docs/api-reference/chat/create。
如果您在 Hugging Face 模型和数据集的下载中遇到了问题,可以通过下述方法使用魔搭社区。
export USE_MODELSCOPE_HUB=1 # Windows 使用 `set USE_MODELSCOPE_HUB=1`
将 model_name_or_path
设置为模型 ID 来加载对应的模型。在魔搭社区查看所有可用的模型,例如 LLM-Research/Meta-Llama-3-8B-Instruct
。
若要使用 Weights & Biases 记录实验数据,请在 yaml 文件中添加下面的参数。
report_to: wandb
run_name: test_run # 可选
在启动训练任务时,将 WANDB_API_KEY
设置为密钥来登录 W&B 账户。
模型名 | 模型大小 | 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 | 7B/20B | intern2 |
Llama | 7B/13B/33B/65B | - |
Llama 2 | 7B/13B/70B | llama2 |
Llama 3 | 8B/70B | llama3 |
LLaVA-1.5 | 7B/13B | vicuna |
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/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)模型请务必使用对应的模板。
请务必在训练和推理时采用完全一致的模板。
项目所支持模型的完整列表请参阅 constants.py。
您也可以在 template.py 中添加自己的对话模板。
方法 | 全参数训练 | 部分参数训练 | LoRA | QLoRA |
---|---|---|---|---|
预训练 | ✅ | ✅ | ✅ | ✅ |
指令监督微调 | ✅ | ✅ | ✅ | ✅ |
奖励模型训练 | ✅ | ✅ | ✅ | ✅ |
PPO 训练 | ✅ | ✅ | ✅ | ✅ |
DPO 训练 | ✅ | ✅ | ✅ | ✅ |
KTO 训练 | ✅ | ✅ | ✅ | ✅ |
ORPO 训练 | ✅ | ✅ | ✅ | ✅ |
SimPO 训练 | ✅ | ✅ | ✅ | ✅ |
部分数据集的使用需要确认,我们推荐使用下述命令登录您的 Hugging Face 账户。
pip install --upgrade huggingface_hub
huggingface-cli login
必需项 | 至少 | 推荐 |
---|---|---|
python | 3.8 | 3.11 |
torch | 1.13.1 | 2.3.0 |
transformers | 4.41.2 | 4.41.2 |
datasets | 2.16.0 | 2.19.2 |
accelerate | 0.30.1 | 0.30.1 |
peft | 0.11.1 | 0.11.1 |
trl | 0.8.6 | 0.9.4 |
可选项 | 至少 | 推荐 |
---|---|---|
CUDA | 11.6 | 12.2 |
deepspeed | 0.10.0 | 0.14.0 |
bitsandbytes | 0.39.0 | 0.43.1 |
vllm | 0.4.3 | 0.4.3 |
flash-attn | 2.3.0 | 2.5.9 |
* 估算值
方法 | 精度 | 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 |
2024-07-17(三)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。