配景:
3分类使命,一个有分类表明(w-explain),一个没有分类表明(wo-explain),w-explain看起来没有收敛,两个训练配置完全一致:
- #!/bin/bash
- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128 \
- CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.run --nproc_per_node=2 src/train.py\
- --stage sft \
- --do_train True \
- --model_name_or_path {模型路径} \
- --preprocessing_num_workers 16 \
- --finetuning_type lora \
- --template llama3 \
- --flash_attn auto \
- --dataset_dir data \
- --dataset {数据集路径} \
- --cutoff_len 4096 \
- --learning_rate 5e-05 \
- --num_train_epochs 3.0 \
- --max_samples 100000 \
- --per_device_train_batch_size 1 \
- --gradient_accumulation_steps 8 \
- --gradient_checkpointing true \
- --lr_scheduler_type cosine \
- --max_grad_norm 1.0 \
- --logging_steps 5 \
- --save_steps 100 \
- --warmup_steps 0 \
- --packing False \
- --report_to all \
- --output_dir {输出路径} \
- --fp16 True \
- --plot_loss True \
- --ddp_timeout 180000000 \
- --optim adamw_torch \
- --lora_rank 8 \
- --lora_alpha 16 \
- --lora_dropout 0 \
- --lora_target all
复制代码 有表明w-explain
llama factory原图WandB的图 看左边的不仔细看差点受骗已往,看右边才知道没收敛
没有表明wo-explain
llama factory原图WandB的图 这个一看就收敛的很好,llamafactory原图害我不浅啊!
一般认为loss低于多少是拟合了
判断模型是否拟合,不能单单依靠于 loss 的绝对值,因为不同的使命和模型的 loss 范围可能差别很大。以下是一些判断模型拟合的思路和经验:
1. 结合使命类型和 Loss 界说
- 分类使命(如交叉熵丧失 Cross-Entropy Loss)
Loss 的范围通常在 [0, log(C)],其中 C 是类别数。假如 Loss 降到靠近 0.1~0.01 或更低,通常表明模型已经很好地拟合了。
- 回归使命(如均方误差 MSE Loss)
Loss 越靠近 0,拟合结果越好。这里的绝对值完全取决于目标值的数值范围。比方:
- 假如目标值范围在 [0, 1],Loss 低于 0.01 通常是很好的拟合。
- 假如目标值范围在 [0, 100],Loss 可能需要低于 1。
- 语言模型(如 GPT 或 BERT 的丧失)
常用 perplexity (狐疑度) 来权衡模型性能:
- Loss 和 Perplexity 的关系:
通常,训练后的语言模型 Loss 会在 1~3 范围内,Perplexity 在 2~20 是常见的拟合水平。
2. 相对变革趋势更重要
无论使命类型,以下趋势更值得关注:
- Loss 稳定收敛:假如训练过程中 Loss 持续降落并趋于稳定,表明模型已逐步拟合。
- 验证 Loss 和训练 Loss 相近:验证集 Loss 不明显高于训练集 Loss,表明模型未过拟合。
- 假如验证 Loss 和训练 Loss 差距较大,可能有过拟合风险。
- 假如验证 Loss 恒久不降落,可能有欠拟合问题。
3. 评估模型性能的其他指标
Loss 仅是训练优化的权衡指标,更重要的是现实使命中的性能指标:
- 分类使命:看正确率(Accuracy)、F1 分数等是否达到盼望值。
- 回归使命:看 RMSE 或 R² 是否达到预期。
- 语言模型:结合 Perplexity 和现实生成质量评估。
4. 一些经验值参考
以下是一些经验值,供不同使命参考:
使命类型Loss 范围(参考)说明二分类(CrossEntropy)0.01 ~ 0.1Loss 越靠近 0,分类边界越明确。多分类(CrossEntropy)0.1 ~ log(C)根据类别数 C 调整盼望值,比方 C=10 时 Loss ~ 1.回归使命(MSE)目标值范围的 1% ~ 5%Loss 的合理范围需根据目标值的现实范围计算。语言模型(CrossEntropy)1.0 ~ 3.0GPT/BERT 等语言模型的常见 Loss 范围。 总结
Loss 低于多少是拟合,取决于详细使命和 Loss 的界说。你需要结合以下两点:
- Loss 是否稳定收敛,且训练集和验证集 Loss 靠近。
- 性能指标是否达到预期(如正确率、F1、Perplexity 等)。
现实经验总结
- 6 分类 Loss 的经验范围:
- Loss < 0.4:通常认为模型已经很好地拟合。
- Loss 在 0.5~0.8:模型可能还未完全收敛,继续训练可能有用。
- Loss > 1.0:说明模型可能欠拟合,可能需要调整数据、模型或超参数。
2.3分类 Loss 的经验范围:
- 训练后 Loss 通常 < 0.5,收敛到 0.1~0.3 表现为非常好的拟合。
希望这能帮到你! |