够快!爆火的ChatGPT等价开源项目来了,网友:我担心跑不起来
感兴趣的小伙伴不妨一试。最近一段时间,由 OpenAI 开发的 AI 聊天机器人程序 ChatGPT 横扫各大 AI 社区,大家对它的热情只增不减,不断挖掘其潜力。 有些研究者坐不住了,开始琢磨怎样才能开发个等同于 ChatGPT 的开源软件。还没有行动的小伙伴这次参考示例来了,下面我们将要介绍的这个项目(PaLM + RLHF)就实现了这样的功能。
不过该项目目前只包含训练架构和代码,没有预先训 练好的权重。 在使用说明上,文档也显示必须先要训练 PaLM。
对此也有网友表示担心,表示:这不是一个开箱即用的项目,还只是一个架构,就像 shell 一样,需要昂贵的开销才能训练完成,没有机构能够像谷歌那样训练 PaLM。
$ pip install palm-rlhf-pytorch
import torchfrom palm_rlhf_pytorch import PaLMpalm = PaLM(num_tokens = 20000,dim = 512,depth = 12).cuda()seq = torch.randint(0, 20000, (1, 2048)).cuda()loss = palm(seq, return_loss = True)loss.backward()# after much training, you can now generate sequencesgenerated = palm.generate(2048) # (1, 2048)
import torchfrom palm_rlhf_pytorch import PaLM, RewardModelpalm = PaLM(num_tokens = 20000,dim = 512,depth = 12,causal = False)reward_model = RewardModel(palm,num_binned_output = 5 # say rating from 1 to 5).cuda()# mock dataseq = torch.randint(0, 20000, (1, 1024)).cuda()prompt_mask = torch.zeros(1, 1024).bool().cuda() # which part of the sequence is prompt, which part is responselabels = torch.randint(0, 5, (1,)).cuda()# trainloss = reward_model(seq, prompt_mask = prompt_mask, labels = labels)loss.backward()# after much trainingreward = reward_model(seq, prompt_mask = prompt_mask)
import torchfrom palm_rlhf_pytorch import PaLM, RewardModel, RLHFTrainer# load your pretrained palmpalm = PaLM(num_tokens = 20000,dim = 512,depth = 12).cuda()palm.load('./path/to/pretrained/palm.pt')# load your pretrained reward modelreward_model = RewardModel(palm,num_binned_output = 5).cuda()reward_model.load('./path/to/pretrained/reward_model.pt')# ready your list of prompts for reinforcement learningprompts = torch.randint(0, 256, (50000, 512)).cuda() # 50k prompts# pass it all to the trainer and traintrainer = RLHFTrainer(palm = palm,reward_model = reward_model,prompt_token_ids = prompts)trainer.train(num_episodes = 50000)# then, if it succeeded...# generate say 10 samples and use the reward model to return the best oneanswer = trainer.generate(2048, prompt = prompts[0], num_samples = 10) # (<= 2048,)
更多细节内 容请参阅原项目。
参考链接:https://twitter.com/rasbt/status/1608133663937495041
© THE END 转载请联系本公众号获得授权
投稿或寻求报道:[email protected]