Closed iamsile closed 1 year ago
您好,请教您一个问题,我在deepspeed.initialize的时候发现,一旦initialize后模型的权重就自动为空了,这个符合预期吗?尤其在训练开始之前有个地方还要执行_generate_sequence。感觉非常疑惑
不符合预期,可能是模型加载出了问题,下面是观察到的参数:
actor_engine.module.model.layers[0].mlp.down_proj.weight
tensor([-0.0075, -0.0083, 0.0520, ..., 0.0169, -0.0247, -0.0186],
device='cuda:0', dtype=torch.float16, grad_fn=
@l294265421 您好,我在create_hf_model里debug,发现这里load完模型后,模型是有权重的,但是actorengine, * = deepspeed.initialize(model=actor_model, optimizer=optim, lr_scheduler=lr_scheduler, config=ds_config)执行完了后actor_engine里的weight突然就全部为空了。。。。请问这个有什么办法排查吗?
@l294265421 您好,我在create_hf_model里debug,发现这里load完模型后,模型是有权重的,但是actorengine, * = deepspeed.initialize(model=actor_model, optimizer=optim, lr_scheduler=lr_scheduler, config=ds_config)执行完了后actor_engine里的weight突然就全部为空了。。。。请问这个有什么办法排查吗?
可以先确认一下这里的权重是否真的空了,可以这样去看deepspeed.initialize前后的区别:actor_model.layers[0].mlp.down_proj.weight和actor_engine.module.model.layers[0].mlp.down_proj.weight;也可以用deepspeed.initialize前后的模型来生成试试
@l294265421 昨天排查了一下,发现确实是这样的,我发现zero3的时候就会有这种情况,即使在执行actorengine, * = deepspeed.initialize(model=actor_model, optimizer=optim, lr_scheduler=lr_scheduler, config=ds_config)之前,actor model已经有权重了,但是一执行deepspeed.initialize模型权重立刻全部为0了
@l294265421 昨天排查了一下,发现确实是这样的,我发现zero3的时候就会有这种情况,即使在执行actorengine, * = deepspeed.initialize(model=actor_model, optimizer=optim, lr_scheduler=lr_scheduler, config=ds_config)之前,actor model已经有权重了,但是一执行deepspeed.initialize模型权重立刻全部为0了
这个问题有解决吗?我运行过程中没有这个问题
没有解决哈,用zero2加载模型没有这个问题,用zero3加载这个问题一直绕不过去,问了别人,别人说zero3加载的模型必须是zero3模型训练并保存下来的,具体也不知道怎么解,我step2里的模型是用zero2训练得到的
这个问题后面解决了,关闭这个问题了
这个问题后面解决了,关闭这个问题了
你好,请问当时是怎么解决的
您好,请教您一个问题,我在deepspeed.initialize的时候发现,一旦initialize后模型的权重就自动为空了,这个符合预期吗?尤其在训练开始之前有个地方还要执行_generate_sequence。感觉非常疑惑