一般做网站宽度是多少,手机网站模板尺寸,wordpress 加音乐,禹城网站建设上文【04】LLaMA-Factory微调大模型——数据准备介绍了如何准备指令监督微调数据#xff0c;为后续的微调模型提供高质量、格式规范的数据支撑。本文将正式进入模型微调阶段#xff0c;构建法律垂直应用大模型。
一、硬件依赖
LLaMA-Factory框架对硬件和软件的依赖可见以下…上文【04】LLaMA-Factory微调大模型——数据准备介绍了如何准备指令监督微调数据为后续的微调模型提供高质量、格式规范的数据支撑。本文将正式进入模型微调阶段构建法律垂直应用大模型。
一、硬件依赖
LLaMA-Factory框架对硬件和软件的依赖可见以下链接的说明文档。
LLaMA-Factory/README_zh.md at main · hiyouga/LLaMA-Factory · GitHubhttps://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md可根据该表格中方法和模型参数体量对应的硬件需求来评估自身硬件能否满足。
方法精度7B13B30B70B110B8x7B8x22BFullAMP120GB240GB600GB1200GB2000GB900GB2400GBFull1660GB120GB300GB600GB900GB400GB1200GBFreeze1620GB40GB80GB200GB360GB160GB400GBLoRA/GaLore/BAdam1616GB32GB64GB160GB240GB120GB320GBQLoRA810GB20GB40GB80GB140GB60GB160GBQLoRA46GB12GB24GB48GB72GB30GB96GBQLoRA24GB8GB16GB24GB48GB18GB48GB 二、微调设置
训练方法方面LLaMA-Factory框架不仅支持预训练Pre-Training、指令监督微调训练Supervised Fine-Tuning还是支持奖励模型训练Reward Modeling、PPO、DPO、ORPO等强化学习训练可使用各种方法完成全参数训练、部分参数训练、LoRA以及QLoRA。
方法全参数训练部分参数训练LoRAQLoRAPre-Training✅✅✅✅Supervised Fine-Tuning✅✅✅✅Reward Modeling✅✅✅✅PPO Training✅✅✅✅DPO Training✅✅✅✅KTO Training✅✅✅✅ORPO Training✅✅✅✅SimPO Training✅✅✅✅
1首先进入虚拟环境启动LLaMA-Factory框架的web网页 选择训练阶段当前即 指令监督微调训练SFT载入数据集 可根据实际需求设置相应的学习率、训练轮数、验证集比例、日志间隔、保存间隔等信息。之后点击预览命令可查看对应配置的命令行命令可以本地保存此后以命令行方式运行也是可行的点击开始进行训练需选择基础模型。命令的具体说明如下LoRA示例
CUDA_VISIBLE_DEVICES1 llamafactory-cli train \--stage sft \ #指定sft微调训练可选rmdpo等--do_train True \ #训练是do_train预测是do_predict--model_name_or_path /hXXXXX \ #模型目录--finetuning_type lora \ #训练类型为lora也可以进行full和freeze训练--quantization_bit 4 \ #量化精度4bit可选8bit和none不量化--template XXXX \ #模版每个模型要选对应的模版对应关系见上文--flash_attn auto \ #flash attention闪光注意力机制一种加速注意力计算的方法--dataset_dir data \ #数据目录--dataset oaast_sft_zh \ #数据集可以通过更改dataset_info.json文件配置自己的数据集--cutoff_len 1024 \ #截断长度--learning_rate 5e-05 \ #学习率AdamW优化器的初始学习率--num_train_epochs 20.0 \ #训练轮数需要执行的训练总轮数--max_samples 100000 \ #最大样本数每个数据集的最大样本数--per_device_train_batch_size 1 \ #批处理大小每个GPU处理的样本数量推荐为1--gradient_accumulation_steps 1 \ #梯度累积梯度累积的步数,推荐为1--lr_scheduler_type cosine \ #学习率调节器,可选line,constant等多种--max_grad_norm 1.0 \ #最大梯度范数,用于梯度裁剪的范数--logging_steps 100 \ #日志间隔每两次日志输出间的更新步数--save_steps 5000 \ #保存间隔每两次断点保存间的更新步数。--warmup_steps 0.1 \ #预热步数学习率预热采用的步数。--optim adamw_torch \ #优化器使用的优化器adamw_torch、adamw_8bit 或 adafactor--packing False \ --report_to none \--output_dir savesXXXXXX \ #数据目录--fp16 True \ #计算类型可以fp16、bf16等--lora_rank 32 \ #LoRA秩LoRA矩阵的秩大小越大精度越高推荐32--lora_alpha 16 \ #LoRA 缩放系数--lora_dropout 0 \--lora_target W_pack \ #模型对应的模块具体对应关系见上文--val_size 0.1 \--evaluation_strategy steps \--eval_steps 5000 \--per_device_eval_batch_size 1 \--load_best_model_at_end True \--plot_loss True
该参数的分析说明参考以下这篇博文
AI智能体研发之路-模型篇一大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用-CSDN博客https://blog.csdn.net/weixin_48007632/article/details/138819599本文采用LoRA方法对模型进行微调。
LoRA的基本原理是利用模型参数的稀疏性通过学习模型参数的局部关系来高效地微调模型。具体来说LoRA通过随机选择一部分模型参数进行微调而不是对所有参数进行微调。这种方法可以大大减少模型的训练时间和计算资源同时提高模型的性能。在实现上LoRA可以分为两个阶段。在第一阶段LoRA随机选择一部分模型参数进行训练得到一个初步的微调模型。在第二阶段LoRA对初步微调模型进行优化进一步调整模型参数。这个过程可以重复多次以得到更好的性能。 LoRA的优点在于它能够有效地利用模型参数的稀疏性减少训练时间和计算资源。同时由于LoRA只对部分参数进行微调可以避免过拟合和泛化能力下降的问题。此外LoRA还可以扩展到大规模深度学习模型中具有广泛的应用前景。 在实际应用中LoRA已经被应用于各种深度学习模型和任务中取得了显著的效果。例如在自然语言处理领域中LoRA被用于文本分类、情感分析、机器翻译等任务中取得了优秀的性能表现。在计算机视觉领域中LoRA被用于图像分类、目标检测、人脸识别等任务中也取得了很好的效果。
LoRA中具体每一参数的含义可参考这篇博客。
PEFT LoraConfig参数详解_深度学习_新缸中之脑-GitCode 开源社区 (csdn.net)https://gitcode.csdn.net/662763f09c80ea0d2271339f.html?dp_tokeneyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NjUwMjE2LCJleHAiOjE3MjE4MDY0NjAsImlhdCI6MTcyMTIwMTY2MCwidXNlcm5hbWUiOiJINjY3Nzg4OTkifQ.GLkvRn5166k33ax3BiMR9H8KJLE8wV2JTOa4TGpZjbE
三、微调llama3-8b-chinese-chat模型
选择已经配置好路径的llama-9b-chinese模型 设置对应的输出目录和配置路径开启训练
整个指令微调过程耗时约8个小时需要耐心等待 检查显卡的运行情况
nvidia-smi 在训练的过程中也可随时保存参数中断训练 之后可选择相应的配置进行恢复 此后可接着中断点继续训练模型 模型训练完成后会显示训练情况 导出损失率和训练轮数的折线图 随着训练epoch的增加损失值总体呈下降趋势。这通常表明模型在学习和改进对数据的拟合逐渐变得更好。
四、微调Qwen-2模型
模型选择与训练开启的方法与llama3-8b-chinese-chat相同 训练开启后命令行如图所示 通过网页端可观察训练过程中损失率的变化以及进度 模型微调的耗时约为7个小时 训练结果如下 【注意】两个模型微调时不是一致的参数Qwen-2的训练在LoRA的秩为32日志间隔50保存间隔200。 小结
本文介绍了如何对模型进行微调。下文【06】LLaMA-Factory微调大模型——微调模型评估将对微调后的模型进行应用与评估欢迎您持续关注如果本文对您有所帮助感谢您一键三连多多支持。