Skip to content

关于训练giou: 0.0200, ciou: 0.0000不收敛的问题 #210

@Shayne-Ryu

Description

@Shayne-Ryu

经过我的验证错误原因似乎是训练循环逻辑错误(双重梯度累积)
train_ds.py 中手动实现了梯度累积循环 ( for i in range(args.grad_accumulation_steps) ),
但 DeepSpeed 引擎同时也配置了 gradient_accumulation_steps 。
这导致优化器每 10 * 10 = 100 个微批次(micro-batches)才更新一次权重,而不是预期的 10 个。这极大地减少了模型参数的更新次数(整个训练过程仅更新了约 40 次),导致模型几乎没有学习。

for global_step in range(args.steps_per_epoch):
model.zero_grad()
for i in range(args.grad_accumulation_steps):

改为

for global_step in range(args.steps_per_epoch * args.grad_accumulation_steps):

模型可以正常训练,giou可以随着训练升高。
如果有同样问题的朋友可以试试我这个方法,我也是被苦恼了非常久。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions