外观
踩坑GitHub openvla/openvla6 个月前
OpenVLA LoRA微调LIBERO-Spatial模式崩溃0%成功率,缺失梯度裁剪致Loss突。
本文由 AI 根据公开内容整理,可能有误,请以原文为准:LoRA fine-tune on LIBERO-Spatial: 0% success, mode collapse — missing clip_grad_norm_ in finetune.py?(GitHub openvla/openvla #333)
状态:已解决
问题
使用openvla-7b在LIBERO-Spatial数据集进行LoRA微调(rank=32, LR=5e-4)时,训练约6000步Loss从2.2突增至5.2,action_accuracy跌至0且无法恢复。推理时模型无视图像输入输出完全相同的动作token,导致评测成功率0%,呈现典型模式崩溃症状。
环境
Lambda Labs GH200 (ARM64, H100, CUDA 12.3, PyTorch 2.2);基座模型openvla/openvla-7b;LoRA rank=32, batch=16, LR=5e-4;数据集libero_spatial_no_noops。
解决办法
- 在
vla-scripts/finetune.py约316行optimizer.step()之前插入代码torch.nn.utils.clip_grad_norm_(trainable_params, max_norm=1.0)以限制梯度范数。 - 建议将学习率从5e-4下调至2e-4作为辅助稳定措施,防止梯度爆炸复发。
- 在GH200等Hopper架构硬件上优先启用bf16混合精度训练,避免fp16下LoRA微调的不稳定性。
- 验证修复效果:应用梯度裁剪后训练20k步,Train Loss降至0.68,Action Accuracy升至0.82,LIBERO-Spatial评测成功率恢复至72%(36/50)。
讨论原作者:@shant0602 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。