行业资讯
LLaMA-Factory参数优化:学习率与batch size调优
LLaMA-Factory参数优化学习率与batch size调优【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory在LLM大语言模型微调过程中学习率Learning Rate和批大小Batch Size是影响模型性能和训练效率的两个关键超参数。学习率控制参数更新的步长批大小则决定每次迭代中模型处理的数据量。本文将以LLaMA-Factory框架为例详细介绍如何通过配置文件优化这两个参数帮助用户快速掌握实用调优技巧。参数配置基础LLaMA-Factory采用YAML配置文件统一管理训练参数用户可通过修改配置文件中的相关字段实现参数调优。所有训练相关参数定义在src/llamafactory/hparams/training_args.py中该文件继承自Hugging Face的Seq2SeqTrainingArguments并扩展了Ray分布式训练相关参数。核心参数说明参数名称配置字段含义常见范围学习率learning_rate每次参数更新的步长1e-5 ~ 1e-4批大小per_device_train_batch_size单设备训练批大小1 ~ 16梯度累积步数gradient_accumulation_steps梯度累积的迭代次数1 ~ 32学习率调度器lr_scheduler_type学习率衰减策略linear, cosine, constant学习率调优策略学习率的选择直接影响模型收敛速度和最终性能。过大会导致训练不稳定过小则收敛缓慢。LLaMA-Factory提供了灵活的学习率配置方式支持不同微调场景。不同微调方式的学习率推荐全参数微调Full Fine-tuning推荐学习率1e-5 ~ 2e-5适用场景模型结构调整、大规模数据训练配置示例examples/train_full/llama3_full_sft.yamllearning_rate: 1.0e-5 lr_scheduler_type: cosine num_train_epochs: 3LoRA微调Low-Rank Adaptation推荐学习率1e-4 ~ 3e-4适用场景资源有限、快速适配任务配置示例examples/train_lora/llama3_lora_sft.yamllearning_rate: 1.0e-4 lr_scheduler_type: linear num_train_epochs: 5学习率调度器选择LLaMA-Factory支持多种学习率调度策略可通过lr_scheduler_type字段配置线性衰减linear学习率从初始值线性降至0适用于大多数微调场景余弦衰减cosine学习率按余弦曲线衰减在全参数微调中表现更优常数学习率constant保持初始学习率不变适用于小数据集场景批大小优化方法批大小的设置需要平衡内存占用和训练稳定性。在GPU内存有限的情况下可以通过梯度累积Gradient Accumulation模拟大批次训练效果。实际批大小计算实际训练批大小 per_device_train_batch_size× 设备数 ×gradient_accumulation_steps例如使用2张GPU单设备批大小为2梯度累积步数为4则实际批大小为2 × 2 × 4 16配置示例基础配置单GPUper_device_train_batch_size: 4 gradient_accumulation_steps: 2 # 实际批大小 4 × 1 × 2 8分布式训练配置per_device_train_batch_size: 2 gradient_accumulation_steps: 8 ray_num_workers: 4 # 使用4个GPU工作节点 # 实际批大小 2 × 4 × 8 64批大小选择建议GPU内存充足增大per_device_train_batch_size减少梯度累积步数GPU内存受限减小per_device_train_batch_size增加gradient_accumulation_steps极端情况启用量化训练如4-bit/8-bit配置示例见examples/train_qlora/llama3_lora_sft_awq.yaml调优实战案例以下通过两个典型场景展示如何根据任务需求调整学习率和批大小参数。场景1Llama3-7B模型LoRA微调任务基于自定义对话数据集微调Llama3-7B模型单GPU24GB显存环境。配置文件examples/train_lora/llama3_lora_sft.yamlmodel_name_or_path: meta-llama/Llama-3-7b-hf adapter_name_or_path: lora task_type: TEXT_GENERATION # 训练参数 per_device_train_batch_size: 2 gradient_accumulation_steps: 8 learning_rate: 2.0e-4 lr_scheduler_type: cosine num_train_epochs: 3场景2Qwen2-7B模型全参数微调任务基于大规模文本数据全参数微调Qwen2-7B模型4GPU80GB显存环境。配置文件examples/train_full/qwen2_5vl_full_sft.yamlmodel_name_or_path: Qwen/Qwen2-7B task_type: TEXT_GENERATION # 训练参数 per_device_train_batch_size: 4 gradient_accumulation_steps: 2 learning_rate: 1.0e-5 lr_scheduler_type: linear num_train_epochs: 5常见问题解决训练不稳定Loss波动大可能原因学习率过高或批大小过小解决方案降低学习率如从1e-4调整为5e-5增加批大小或梯度累积步数启用梯度裁剪添加gradient_clipping: 1.0内存溢出CUDA Out Of Memory可能原因批大小设置过大解决方案减小per_device_train_batch_size启用量化训练配置quantization_bit: 4使用更小的模型或更长的梯度累积步数收敛速度慢Loss下降缓慢可能原因学习率过低或数据量不足解决方案适当提高学习率如从1e-5调整为3e-5增加训练轮次num_train_epochs调整学习率调度器如从constant改为cosine总结与最佳实践学习率和批大小的调优需要根据模型类型、数据规模和硬件条件综合考虑。以下是经过实践验证的最佳配置建议新任务快速验证LoRA微调 learning_rate: 1e-4per_device_train_batch_size: 2生产环境部署全参数微调 learning_rate: 1e-5 大批次32训练资源受限场景QLoRA微调 per_device_train_batch_size: 1 梯度累积8步通过合理配置学习率和批大小结合LLaMA-Factory提供的灵活参数系统用户可以在不同硬件条件下高效微调大语言模型获得更优的任务性能。更多高级调优技巧可参考官方示例配置文件所有示例均位于examples/目录下涵盖从基础微调到分布式训练的各种场景。掌握参数调优技巧后建议进一步探索学习率预热learning rate warmup、权重衰减weight decay等相关参数构建更全面的超参数优化策略。【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
郑州网站建设
网页设计
企业官网