THUDM / GLM

GLM (General Language Model)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请发布一个小参数版本的ChatGLM,与ChatGLM-6B共享Tokenizer,让RLHF最后一步PPO能够最大可能提速

yynil opened this issue · comments

commented

这个请求的原因,是在训练RLHF最后一步的PPO时,训练进程需要同时保存四个模型,Actor/Initial Model/Critic/Reward Model。其中Actor和Initial Model是ChatGLM-6B经过SFT调优后的模型,Critic/Reward Model是第二步训练出来的打分价值模型。
第三步PPO的时候,Actor对新Prompts生成新的Ids,Initial Model对生产的序列生成log probs,这些新Ids作为对当前State做出的Actions被Critic和Reward计算value和reward,形成一条新的Experience,多条Experience组装成Mini Batch,用于更新Actor和Critic参数,让Actor生成的结果尽量打高分同时不过多偏离原有的Initial Model。
这个过程里面,由于Actor生成的Ids序列要传入Reward里面计算,因此Ids必须有同样的含义。在一个系列模型里面,一般都会发布大小两个参数版本,比如Bloom 7B和Bloom 560M,两个版本共享tokenizer,这样打模型生成的Ids传入小模型就可以保有原来含义进行计算。
但ChatGLM-6B没有这样的小模型兄弟,导致我用ChatGLM-6B来训练价值模型。这样在PPO阶段,进程里面我同时维护了4个ChatGLM-6B大小的模型。为了能让训练继续,不得不做切换,同一时间仅保留一个模型(这是我在ColossalAI上做的PR:(hpcaitech/ColossalAI#3567) )。虽然能跑起来,但是速度很慢。
希望能发布一个ChatGLM最小版,因为价值网络训练可以迅速收敛,我认为低于500M都可以,因为Bloom-560M版本,配合Bloom7B的训练,我得到的结果都很好。

commented

由于ChatGLM的小模型版本迟迟不能发布等原因,ChatGLM的支持我这边暂时暂停开发了。

PPO

你这样优化改进后跟原始模型的性能差距大吗?

commented

同求,opt系列的这类支持也很好,希望chatglm可以跟上

commented

Reward Model 的tokenizer可以和actor不保持一致吧