Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

够快!爆火的ChatGPT等价开源项目来了,网友:我担心跑不起来

感兴趣的小伙伴不妨一试。
最近一段时间,由 OpenAI 开发的 AI 聊天机器人程序 ChatGPT 横扫各大 AI 社区,大家对它的热情只增不减,不断挖掘其潜力。

有些研究者坐不住了,开始琢磨怎样才能开发个等同于 ChatGPT 的开源软件。还没有行动的小伙伴这次参考示例来了,下面我们将要介绍的这个项目(PaLM + RLHF)就实现了这样的功能。

图片

项目地址:https://github.com/lucidrains/PaLM-rlhf-pytorch

该项目是在 PaLM 架构之上实施 RLHF(人类反馈强化学习)。基本上等同于 ChatGPT,区别是使用了 PaLM。PaLM 是在谷歌的通用 AI 架构「Pathways」上训练而成的具有 5400 亿参数的大型语言模型。而 RLHF,是 ChatGPT 在 GPT 3.5 系列模型的基础上,引入「人工标注数据 + 强化学习」(RLHF)来不断微调预训练语言模型,旨在让大型语言模型(LLM)学会理解人类的命令,并学会根据给定的 prompt 给出最优的答案。

想要了解 RLHF 更多内容,可以参考:https://huggingface.co/blog/rlhf

正如网友所说的:「在 AI 领域中,每有一次专项突破,开发者们很快就会复现出一个开源版本。」

图片


不过该项目目前只包含训练架构和代码,没有预先训练好的权重。在使用说明上,文档也显示必须先要训练 PaLM。

图片
对此也有网友表示担心,表示:这不是一个开箱即用的项目,还只是一个架构,就像 shell 一样,需要昂贵的开销才能训练完成,没有机构能够像谷歌那样训练 PaLM。

图片

还有网友表示:「没有预训练权重是非常糟糕的,官方至少需要释放 50% 的稀疏权重,剩下的让开发者自己训练,才是最好的选择。」

图片

不过也有网友表示自己会去尝试:

图片

下面我们来看看这个项目是如何运行的。

安装
$ pip install palm-rlhf-pytorch
用法

首先训练 PaLM,就像任何其他自回归 transformer 一样。

接着使用精选的人类反馈来训练奖励模型。在原始论文中,在没有出现过拟合的情况下,无法从预训练 transformer 中获得微调的奖励模型。项目作者则提供了使用 LoRA 进行微调的选项。
import torch
from palm_rlhf_pytorch import PaLM, RewardModel
palm = 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 data
seq = 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 response
labels = torch.randint(0, 5, (1,)).cuda()
# train
loss = reward_model(seq, prompt_mask = prompt_mask, labels = labels)loss.backward()
# after much training
reward = reward_model(seq, prompt_mask = prompt_mask)

最后将 transformer 和奖励模型传递给 RLHFTrainer。

import torch
from palm_rlhf_pytorch import PaLM, RewardModel, RLHFTrainer
# load your pretrained palm
palm = PaLM(
    num_tokens = 20000,
    dim = 512,
    depth = 12
).cuda()
palm.load('./path/to/pretrained/palm.pt')
# load your pretrained reward model
reward_model = RewardModel(
    palm,
    num_binned_output = 5
).cuda()
reward_model.load('./path/to/pretrained/reward_model.pt')
# ready your list of prompts for reinforcement learning
prompts = torch.randint(0, 256, (50000, 512)).cuda() # 50k prompts
# pass it all to the trainer and train
trainer = 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 one
answer = trainer.generate(2048, prompt = prompts[0], num_samples = 10) # (<= 2048,)

更多细节内容请参阅原项目。

参考链接:https://twitter.com/rasbt/status/1608133663937495041
工程大模型
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

聊天机器人技术

聊天机器人是经由对话或文字进行交谈的计算机程序。能够模拟人类对话,通过图灵测试。 聊天机器人可用于实用的目的,如客户服务或资讯获取。有些聊天机器人会搭载自然语言处理系统,但大多简单的系统只会撷取输入的关键字,再从数据库中找寻最合适的应答句。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
暂无评论
暂无评论~