当前位置: 首页 > 科技观察

ChatGPT技术本地化尝试

时间:2023-03-12 00:51:48 科技观察

本次分享的主题是ChatGPT技术、本地化尝试和开源模型。分享包括三个部分。第一部分总体介绍ChatGPT相关技术:ChatGPT技术的演进,目前存在什么样的问题,ChatGPT技术学习的三个阶段,数据组织和效果评估;第二部分分享了我们在ChatGPT技术本土化方面的尝试,包括我们在实验过程中遇到的问题、我们的思考,以及模型的效果和应用;第三部分介绍了我们发布的中国开源大模型,以及如何使用自己的数据训练本地模型的操作,实验过程中可能遇到的问题,与开源先进模型的差距以及如何进一步完善模型的效果。1.ChatGPT相关技术ChatGPT是一个通用的助手。2022年12月5日,OpenAICEOSamAltman在社交媒体上发文称,ChatGPT上线五天内用户已突破100万。AI聊天机器人ChatGPT爆出圈,成为标志性事件。微软正在谈判增加100亿美元的股份,这些股份很快将被整合到微软云中。上图中显示了两个示例,显示了惊人的结果。ChatGPT之所以如此受欢迎,一方面是因为它有更好的理解用户意图的能力,从而产生更好的结果;另一方面,它可以通过对话机器人的形式被大家使用。下面将介绍模型的演进,初始模型存在的问题,ChatGPT模型学习的三个阶段,以及训练ChatGPT模型的数据组织和效果。1.模型演化ChatGPT技术经历了数代模型的演进。2018年提出原始GPT模型,只有1.17亿个模型参数;2019年GPT-2模型参数15亿;到2020年,GPT-3模型参数达到1750亿;经过几代模型更新迭代,到2022年ChatGPT模型将出现。2.之前的模型存在什么样的问题ChatGPT模型出来之前模型存在什么样的问题?通过分析,发现比较明显的问题之一就是对齐问题。虽然大模型的生成能力比较强,但生成的答案有时并不符合用户的意图。通过研究发现,造成对齐问题的主要原因是语言模型训练的训练目标是预测下一个单词,而不是根据用户的意图生成。为了解决对齐问题,在训练ChatGPT模型的过程中添加了人类反馈强化学习(RLHF)过程。3.学习三个阶段ChatGPT模型的训练过程以三个步骤的形式进行。第一步是在GPT模型的基础上,使用真实的用户输入进行监督学习。在这个过程中,数据来源于真实用户,数据质量比较高,有价值。第二步是训练奖励模型。不同的模型会为查询产生不同的输出结果。标注器对所有模型的输出结果进行排序,并使用这些排序后的数据来训练奖励模型。第三步,将模型生成的初步答案输入奖励模型。奖励模型将评估答案。如果生成的答案符合用户的意图,则给出正反馈,否则给出负反馈,让模型越来越好,这就是引入强化学习的目的,让生成的结果更符合人的需求。训练ChatGPT模型的三步流程如下图所示。4.数据组织与效果评估在训练模型之前,我们需要准备好所用的数据集。在这个过程中,我们会遇到数据冷启动的问题,可以通过以下三个方面来解决:(1)收集老系统用户使用的数据集(2)让标注者根据之前真实用户输入的问题(3)数据标注者从问答、写故事、生成等方面思考一些提示。训练ChatGPT模型的数据包括三部分数据集(77k真实数据):(1)基于真实用户提示、用户提示、模型响应的监督学习数据,数据量13k。(2)用于训练奖励模型的数据集。这部分数据排序一个提示对应多个响应,数据量为33k。(3)基于奖励模型的数据集采用强化学习技术进行模型训练只需要用户提示,数据量31k,质量要求高。ChatGPT模型训练完成后,对模型的评价比较充分,主要从以下几个方面:(1)模型生成的结果是否符合用户的意图(2)生成的结果是否能满足上面提到的约束条件(3)模型在客服领域是否有很好的效果与GPT基础模型对比的详细实验结果如下图所示。二、ChatGPT技术国产化下面将从背景与问题、解决方案、效果与实践三个方面介绍我们ChatGPT技术国产化的内容。一、背景及问题之所以进行本地化主要考虑以下几个方面:(1)ChatGPT技术本身比较先进,在很多任务上都表现良好,但不向中国大陆提供服务。(2)可能无法满足国内企业级客户的需求,无法提供本地化的技术支持和服务。(3)价格以美元计价,主要市场为欧美。价格比较贵,国内大部分用户可能买不起。通过测试发现,每条数据的成本约为0.5元,对于数据量大的客户无法商用。由于以上三个问题,我们尝试了ChatGPT技术的国产化。2.解决思路在ChatGPT技术的国产化过程中,我们采用了分布式策略。首先训练了一个百亿参数的中文预训练模型;其次,在亿级任务数据上以Prompt的形式进行任务监督学习;然后对模型进行对话,即以对话或人机交互的形式与人进行交互;最后,我们介绍了奖励模型和用户反馈的强化学习RLHF技术。Prompt多任务学习模型(PromptCLUE)是一个支持所有中文任务零样本学习的模型。该模型实现了三个统一:统一模型、统一数据形式(所有任务都转化为提示形式)、统一使用方法(以零样本形式使用)。该模型基于1000亿中文词级token进行无监督学习,在亿级下游任务数据上进行训练,目前已积累1.5万亿中文词级token。支持20多个任务(文本理解、提取、生成任务)的零样本使用。如何将模型转化为对话,即转化为人机交互的模型,我们主要做了以下工作:首先,为了让模型有更好的生成效果,我们去除了文本的任务理解和提取。这加强了问答、对话和生成任务的学习;其次,转换为对话模型后,生成的结果会受到上下文的干扰。为了解决这个问题,我们加入了抗干扰数据,让模型在必要的时候可以忽略不相关的信息。语境;最后,我们添加了一个基于真实用户反馈数据的学习过程,使模型能够更好地理解用户意图。下图展示了用模型进行单轮和多轮测试的形式。3.效果与实践下面是模型的测试效果。与目前的ChatGPT模型相比,还有1到2年的差距,但这个差距是可以逐步弥补的。目前,我们已经做了一些有益的尝试。也起到了一定的作用。目前可以进行对话、问答、书写等部分交互。下图显示了测试结果。三、国产开源大模型1、中国开源模型我们最近发布了拥有7.7亿参数的元语言功能对话大模型(ChatYuan)。网络版是一个100亿参数的模型。可以使用Huggingface、ModelScope、Github、paddlepaddle等平台。该模型可以下载到本地并根据您自己的用户数据集进行微调。基于PromptCLUE-large结合亿级功能对话和多轮对话数据进一步训练。以上以Huggingface平台为例,展示了如何在本地使用模型。在平台搜索ChatYuan,加载模型,进行简单打包。使用中有一些重要的参数,比如是否采样,如果需要生成多种样本,就需要采样。2.要根据自己的数据训练一个本地模型,首先需要将数据组织成统一的形式,它由两部分组成:输入(Input)和输出(Output)。对于单轮问答或生成输入(Input):任务描述+输入文本(如:“用户:你好\n小源:”),输出(Output)是指系统需要预测的文本(如:“你好!我是元语言人工智能……”)。对于多轮对话输入(Input):任务描述+上面文字+输入文字,输出是指系统需要预测的文字,如下图“小原”后面。下图显示了在您自己的数据上训练本地模型的示例。这个例子涵盖了从数据准备,到开源数据的下载和转换的全过程,还包括模型训练、预测和评估。它基于pCLUE多任务数据集。用户可以使用自己的数据进行训练,也可以使用pCLUE进行初步训练来测试效果。3、可能存在的问题、差距以及如何进一步提升效果ChatYuan和ChatGPT都是通用功能对话模型,都可以在聊天或者法律、医疗等专业领域进行问答、交互和生成。与ChatGPT模型相比,还有一定的差距,主要体现在以下几个方面:在模型规模上,ChatGPT参数量在千亿级别,而ChatYuan在百亿级别;学习到的数据量也有很大差距,ChatYuan模型还在学习中;在强化学习方面,ChatGPT模型引入了基于用户反馈的强化学习,我们的模型还在引入过程中。在使用模型的过程中,可能会遇到生成效果和文本长度的问题,这取决于数据格式是否正确,生成过程中是否对样本进行采样,输出结果的长度由max_length控制,等。为了进一步提升模型效果,可以从以下几个方面着手:(1)结合行业数据进行进一步训练,包括无监督预训练,利用大量优质数据进行监督学习。(2)使用真实用户反馈数据进行学习可以补偿分布差异。(3)引入强化学习以调整用户意图。(4)选择较大型号。一般来说,模型越大,模型能力越强。ChatGPT带来的新技术和使用场景,让人们看到了AI的巨大潜力。更多的应用会升级,也会创建一些新的应用。元语言智能作为大型模型Model-as-a-Service服务商,也在该领域不断探索。欢迎有兴趣的小伙伴关注我们的网站和公众号。今天的分享就到这里,谢谢大家。