l294265421 / alpaca-rlhf

Finetuning LLaMA with RLHF (Reinforcement Learning with Human Feedback) based on DeepSpeed Chat
https://88aeeb3aef5040507e.gradio.live/
MIT License
103 stars 13 forks source link

deepspeed.initialize的一些疑惑 #8

Closed iamsile closed 1 year ago

iamsile commented 1 year ago

您好,请教您一个问题,我在deepspeed.initialize的时候发现,一旦initialize后模型的权重就自动为空了,这个符合预期吗?尤其在训练开始之前有个地方还要执行_generate_sequence。感觉非常疑惑

l294265421 commented 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=)

iamsile commented 1 year ago

@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 commented 1 year ago

@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前后的模型来生成试试

iamsile commented 1 year ago

@l294265421 昨天排查了一下,发现确实是这样的,我发现zero3的时候就会有这种情况,即使在执行actorengine, * = deepspeed.initialize(model=actor_model, optimizer=optim, lr_scheduler=lr_scheduler, config=ds_config)之前,actor model已经有权重了,但是一执行deepspeed.initialize模型权重立刻全部为0了

l294265421 commented 1 year ago

@l294265421 昨天排查了一下,发现确实是这样的,我发现zero3的时候就会有这种情况,即使在执行actorengine, * = deepspeed.initialize(model=actor_model, optimizer=optim, lr_scheduler=lr_scheduler, config=ds_config)之前,actor model已经有权重了,但是一执行deepspeed.initialize模型权重立刻全部为0了

这个问题有解决吗?我运行过程中没有这个问题

iamsile commented 1 year ago

没有解决哈,用zero2加载模型没有这个问题,用zero3加载这个问题一直绕不过去,问了别人,别人说zero3加载的模型必须是zero3模型训练并保存下来的,具体也不知道怎么解,我step2里的模型是用zero2训练得到的

iamsile commented 1 year ago

这个问题后面解决了,关闭这个问题了

DLKKILL commented 2 months ago

这个问题后面解决了,关闭这个问题了

你好,请问当时是怎么解决的