########常见参数########
lr 2e-4 # 学习率
model_name_or_path model # 预训练模型路径
tokenizer_name_or_path tokenizer # 中文分词器路径
train_dir train_file # 训练数据集路径
validation_dir validation_file # 验证数据集路径
per_device_train_batch_size 1 # 每个设备上的训练批次大小
per_device_eval_batch_size 1 # 每个设备上的评估批次大小
num_train_epochs 10 # 训练周期数,迭代轮次
gradient_accumulation_steps 1 # 梯度累积步数,是一种训练技巧, 如果显存不足,可以通过梯度累积来解决。将多个小批量数据的梯度累积起来,从而实现大批量数据的训练。
output_dir output_dir # 输出目录路径
block_size 512 # 设置最大序列长度为512,超过这个长度的序列将被截断或填充
resume_from checkpoint-24000 # 从哪个检查点恢复训练
max_steps 25000 #训练最大步数
lr_scheduler_type cosine # 一个学习率调度器的类型,cosine说明使用余弦退火策略来调整学习率。这种策略会在训练过程中周期性地调整学习率。余弦退火调度器会在每个周期开始时设置一个较大的学习率,然后在该周期内逐渐降低学习率,直到接近0。然后,在下一个周期开始时,学习率又会被重新设置为一个较大的值。这种策略的优点是它可以帮助模型在训练初期快速收敛,同时在训练后期通过降低学习率来微调模型参数12。
learning_rate ${lr} \
weight_decay 0 # 一个正则化技术,最小化一个损失函数,该函数包括主要的损失函数和权重的L2范数的惩罚,weight_decay决定了惩罚的强度
do_train # 进行训练
do_eval # 进行评估
evaluation_strategy steps # 设置评估策略为"steps",即按步骤进行评估
eval_steps 800 # 每800步进行一次评估
warmup_ratio 0.03 # 预热步骤参数,预热步骤中使用的学习率非常低,然后在预热步骤之后,会使用“常规”学习率或学习率调度器。主要目的是为了防止训练初期由于学习率过大而导致的训练不稳定,通过在训练初期使用较小的学习率,可以使模型在参数空间中进行更稳定的探索,从而有助于找到更好的局部最优解。
warmup_steps 40 # 预热步骤数参数,设为40
logging_dir logs # 设置日志目录为输出模型目录下的"logs"子目录
logging_strategy steps # 设置日志策略为"steps",即按步骤记录日志
logging_steps 10 # 每10步记录一次日志
save_strategy steps # 保存策略为"steps",即按步数保存模型
save_steps 800 # 每800步保存一次模型
save_total_limit 2000 # 保存的总限制数为2000,超过这个数量后,将删除旧的检查点以释放空间
deepspeed ds_zero2_no_offload.json # 使用deepspeed进行训练,并使用"ds_zero2_no_offload.json"配置文件,该文件定义了训练的一些参数和策略
########lora微调参数########
lora_rank=64 # LoRA低秩矩阵的维数
lora_alpha=128 # LoRA低秩矩阵的缩放系数,调整alpha与调整学习率类似
lora_trainable="q_proj,v_proj,k_proj,o_proj,gate_proj,down_proj,up_proj" # 可训练的 LORA 模块
modules_to_save="embed_tokens,lm_head" # 需要保存的模块
lora_dropout=0.05 # LoRA 层的丢弃(dropout)率,取值范围为[0, 1)
########prompt tuning微调参数########
num_virtual_tokens 20 # 虚拟token的数量, 输入提示(prompt)
这些超参数都可以在代码中给出默认值
建议暴露给用户可调的以下参数,因为这些参数会影响模型训练时占用的资源和训练效果:
lr、 per_device_train_batch_size、 gradient_accumulation_steps、 num_train_epochs 、 block_size、 warmup_steps、 lora_rank、 lora_alpha、 lora_dropout、 num_virtual_tokens
Chinese LLama2的二次预训练、Lora微调 zhuanlan.zhihu.com/p/656020673
Chinese LLama2的全量微调、P tuning微调 zhuanlan.zhihu.com/p/655930799