Open Chtholly1 opened 1 week ago
你这个应该是数值精度问题. 全量sft所有参数都被更新, 梯度范围会更大, 如果部分参数的梯度值过大, 容易导致训练不稳定, 可能表现为grad_norm为nan. LoRA仅更新低秩插入的权重参数, 梯度空间受限, 训练稳定. 可以先尝试单精度sft, 没问题再半精度并把梯度裁剪到更小的值, 比如1.0试试.
你这个应该是数值精度问题. 全量sft所有参数都被更新, 梯度范围会更大, 如果部分参数的梯度值过大, 容易导致训练不稳定, 可能表现为grad_norm为nan. LoRA仅更新低秩插入的权重参数, 梯度空间受限, 训练稳定. 可以先尝试单精度sft, 没问题再半精度并把梯度裁剪到更小的值, 比如1.0试试.
请问配置文件如何设置grad_norm值呢,说明文档里没找到
Reminder
System Info
llamafactory
version: 0.9.1.dev0Reproduction
''' NPROC_PER_NODE=4 NNODES=1 RANK=0 MASTER_ADDR=127.0.0.1 MASTER_PORT=29500
CUDA_VISIBLE_DEVICES=4,5,6,7 torchrun \ --nproc_per_node $NPROC_PER_NODE \ --nnodes $NNODES \ --node_rank $RANK \ --master_addr $MASTER_ADDR \ --master_port $MASTER_PORT \ src/train.py examples/train_full/qwen2_sft.yaml '''
Expected behavior
如图所示,一开始loss下降正常,但是会突然归零,我尝试了不同大小的学习率,目前已经改成1e-7了,模型还是会训崩。
奇怪的是我尝试了用lora方法进行sft,模型可以稳定训练,但是全量sft就会训崩。
Others
No response