cooelf / Auto-GUI

Official implementation for "You Only Look at Screens: Multimodal Chain-of-Action Agents" (Findings of ACL 2024)
https://arxiv.org/abs/2309.11436
Apache License 2.0
174 stars 15 forks source link

grad_norm=nan, loss=0.0 #16

Closed xukefaker closed 2 months ago

xukefaker commented 2 months ago

image

你好,我按照readme.md里给定的参数复现auto-gui,但是发现从第二个step开始grad_norm就变成了nan,然后loss变成了0。请问这个问题大概是由什么造成的?

xukefaker commented 2 months ago

已经解决了。在main.py的78行我加了一行代码:torch.set_float32_matmul_precision('high'),设置了一下AMP的精度,并且在Seq2SeqTrainingArguments里面设置bf16=True,成功解决了grad_norm为nan、loss为0.0的问题。个人猜测可能是huggingface trainer在反向传播的哪里默认启动了pytorch的AMP,而模型参数默认是fp32。在计算的时候将fp32强制转换为tf32、bf16等精度的数据可能造成INF、nan的问题。提前开启torch.set_float32_matmul_precision('high')似乎可以解决这个问题。