山东大学项目实训:基于LLaMA-Factory的大模型微调的初步实现_llamafactory分布式训练
LLaMA-Factory:
LLaMA-Factory 是一个开源工具包,专注于高效微调和管理各类大语言模型(如LLaMA系列),提供用户友好的界面和模块化设计,支持多种训练技术(如LoRA、QLoRA)和数据集格式。它简化了模型适配过程,适用于研究者和开发者快速优化模型性能,适用于对话、推理等任务,同时兼容多GPU分布式训练,是构建定制化AI模型的实用工具。
LLaMA-Factory 的核心优势在于其 高效性、灵活性和易用性:
- 高效微调:支持参数高效微调技术(如 LoRA、QLoRA),显著降低计算资源需求,即使单张消费级显卡也能微调大模型。
- 广泛兼容:适配多种主流开源大模型(如 LLaMA、BLOOM、ChatGLM 等),并支持多模态扩展,满足多样化需求。
- 模块化设计:提供从数据预处理、训练到推理的全流程工具,用户可灵活组合模块,快速实现定制化训练。
- 低门槛操作:提供命令行和可视化界面(如 WebUI),简化复杂流程,适合不同技术背景的用户。
- 分布式支持:优化多 GPU/TPU 训练,提升大规模模型训练的效率和稳定性。
适用于快速实验、业务场景适配及学术研究,平衡性能与成本。
一.下载与上传
首先通过github获取LLaMA-Factory的完整代码。LLaMA-Factory网址链接
这里我选择使用ModelScape(魔塔)来实现模型训练,注册后在左栏点击“我的Notebook”选项,打开实例并查看我的Notebook即可进入初始界面。然后通过左上角上传按钮把获得的代码完整上传即可。
二.环境的配置
点击Other中的Terminal进入root界面
1.安装依赖
在安装LLaMA-Factory之前,我们要确保安装所有必要的依赖。进入仓库目录,然后执行以下命令来安装依赖:
cd LLaMA-Factory-mainpip install -e \".[torch,metrics]\"
这个命令将安装LLaMA-Factory及其所有必需的附加组件。
2.LLaMA-Factory版本检测
安装完成后,可以通过运行以下命令来检查是否成功安装。
llamafactory-cli version
如果安装成功,则会有类似的如下输出:
如果失败,则大概率是组件版本不适配的问题,根据报错调整组件版本调整即可。
三.模型微调
1.启动Web UI
使用以下命令启动LLaMA-Factory的Web UI界面:
export USE_MODELSCOPE_HUB=1 && llamafactory-cli webui
初始界面如下:
2.模型路径的配置
推荐在Hugging Face上找到你选择使用的模型,将其下载并上传到Notebook中。如下所示:
然后将下图文件夹路径复制到文本Web UI左上角的模型路径之中,要加上默认前缀/mnt/workspace。
3.调整合适的参数并进行训练
启动训练的方式有两种:
- 直接通过Web UI的开始训练按钮实现。
- 通过命令行在root界面实现,示例如下:
llamafactory-cli train \\ --stage sft \\ --do_train True \\ --model_name_or_path /mnt/workspace/huggingface/hub/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-1.5B/snapshots/ad9f0ae0864d7fbcd1cd905e3c6c5b069cc8b562 \\ --preprocessing_num_workers 16 \\ --finetuning_type lora \\ --template deepseek3 \\ --flash_attn auto \\ --dataset_dir data \\ --dataset alpaca_zh_demo \\ --cutoff_len 2048 \\ --learning_rate 5e-05 \\ --num_train_epochs 1.0 \\ --max_samples 100000 \\ --per_device_train_batch_size 2 \\ --gradient_accumulation_steps 8 \\ --lr_scheduler_type cosine \\ --max_grad_norm 1.0 \\ --logging_steps 5 \\ --save_steps 100 \\ --warmup_steps 0 \\ --packing False \\ --report_to none \\ --output_dir saves/DeepSeek-R1-1.5B-Distill/lora/train_2025-04-13-18-27-32 \\ --bf16 True \\ --plot_loss True \\ --trust_remote_code True \\ --ddp_timeout 180000000 \\ --include_num_input_tokens_seen True \\ --optim adamw_torch \\ --lora_rank 8 \\ --lora_alpha 16 \\ --lora_dropout 0 \\ --lora_target all
这样就实现了基本的模型训练。