Closed IconShan closed 1 year ago
你好,这个bug目前只在GLM类模型中出现,Pangu和ChatGLM可以正常运行。
出现原因是GLM类模型使用torch.nn.Parameter
来初始化word embedding的权重,具体见modeling_glm.py line 175。在使用deepspeed.initialize()
进行初始化之后,似乎torch.nn.Parameter()
的tensor就会丢失,造成word_embeddings.weight
的shape为0。
目前还没有开始解决这个问题,但解决思路有2个:
torch.nn.Embedding
替换torch.nn.Parameter
,具体见modeling_gptpangu.py weight=torch.Tensor(self.num_embeddings, self.embedding_dim); self.register_buffer('weight', weight)
,具体见modeling_chatglm.py已验证方案2可以解决该问题,具体可参见modeling_glm.py line 175-L176
把modeling_glm.py文件复制到模型目录行替换即可
感谢解答,已经跑通了,牛的牛的
用上述方法2确实解决了这个问题。但是开启zero3不用hybrid_engine,glm10b在make_experience的时候结果是乱的,想问下你们有遇到类似问题吗。
logits, hidden_layers = transformer_output
outputs = hidden_layers
去modeling_glm.py中打印logits.size() 和self.word_embeddings.weight.size()时发现后者的shape为:torch.size([0]), 其中SFT和Reward的模型我在step1,step2中已经do_pred测试通过了,请问这种mismatch的问题有没有解决方案?感谢感谢~~