《架构师》2023年4月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

ChatGPT开源平替来了,开箱即用!200亿参数,采用4300万条指令集微调模型

作者 刘燕 核子可乐

3月10日,Together发布了开源(Apache-2.0许可)基础模型项目OpenChatKit。OpenChatKit的聊天模型支持推理、多轮讨论、知识和生成答案,该模型拥有200亿个参数并接受了4300万条指令的训练。这被认为是ChatGPT的开源平替。

资料显示,Together正在创建第一个专门为处理大型基础模型而设计的分布式云。该公司提供了一个结合数据、模型和计算的直观平台,以帮助AI研究人员、开发人员和企业更好地利用和推进AI。Together团队认为,大型开放模型应该像开源一样易于使用。

OpenChatKit提供强大的开源基础,能够为各类应用创建专用及通用型聊天机器人。Together团队与LAION与Ontocord合作创建了训练数据集。

Together团队认为开源基础模型将带来更好的包容性、透明性、稳健性和技术能力。Together在Apache 2.0许可下发布了OpenChatKit 0.15,源代码、模型权重和训练数据集可以全面访问。

优秀的聊天机器人必须能够执行自然语言指令、在对话中保持上下文,同时做出适度回应。OpenChatKit提供一个基础机器人,并可根据此基础派生出专用的聊天机器人构建块。

据介绍,套件中共包含四大关键组件:

•一套根据指令微调的大语言模型,利用4300万指令在100%负碳排放算力上对EleutherAI的GPT-NeoX-20B模型做出微调;

•自定义recipes,可通过模型微调提高任务执行精度;

•可扩展的检索系统,使您能够在推理时使用来自文档仓库、API或其他实时更新信息源的信息来增加机器人响应;

•由GPT-JT-6B微调而成的审核模型,用于过滤用户对机器人提出的问题。OpenChatKit中的工具还允许用户提交反馈,以供社区成员添加新的数据集;社区可以为不断增长的开放训练数据集做出贡献,这些素材将随时间推移不断改进LLM的实际表现。

Hugging Face上的OpenChatKit反馈应用,允许社区成员测试聊天机器人的表现并提交反馈。

指令微调的大语言模型

构成OpenChatKit基础的是GPT-NeoXT-Chat-Base-20B大语言模型,这套模型基于EleutherAI的GPT-NeoX,并利用涉及对话交互的数据进行了微调。我们将调整重点放在了多轮对话、问答、分类、提取和摘要等几个核心任务上。我们已经使用4300万条高质量指令集对模型进行了微调,并与LAION和Ontocord合作创建了供模型训练使用的OIG-43M数据集。

GPT-NeoXT-Chat-Base-20B能够开箱即用,为广泛的自然语言任务集提供了强大基础。总结来讲,它在HELM基准测试中的得分高于其基础模型GPT-NeoX,在问答、提取和分类等任务上的表现尤其突出。

在HELM上评估GPT-NeoXT-Chat-Base-20B并与GPT-NeoX进行比较。†表示测试所使用的数据,在我们的微调语料库中也有收录。

模型优势

OpenChatKit能够以开箱即用的方式出色处理多种任务,包括:

1.语境总结与答疑;

2.信息提取;

3.文本分类。

此外,该模型在few-shot少样本提示中表现良好。与大多数HELM任务一样,对于文本分类和信息提取工作,该模型能在提示较少的情况下表现良好。

模型劣势

Together团队表示,目前团队还有一些尚未攻克的难关待克服,其中包括:

•基于知识的封闭式问答:聊天机器人可能产生“幻觉”,给出不正确的结果。请务必进行事实核查,并在可能的情况下提花包含更正信息的反馈。

•编码任务:聊天机器人没有经过足够大的源代码语料库训练,因此并不擅长编写代码。

•重复:有时聊天机器人会重复自己给出的回应。

•上下文切换:如果您在对话过程中改变话题,聊天机器人往往难以自动切换,而是会继续按照先前的话题给出答案。

•创意性写作和长回答:聊天机器人无法生成较长的创意文案,例如文章或故事。

自定义recipes以微调模型

大语言模型在通用问答方面表现出了令人印象深刻的能力,而且在针对特定应用场景进行微调后,往往能够实现更高的准确率。例如,谷歌PaLM在医学回答方面的准确率已经在50%左右,而通过添加指令支持和医疗信息微调之后,派生出的Med-PaLM一举拿下92.6%的准确率。对于其他应用任务,也可以采用相同的微调方法。

OpenChatKit提供多种工具,能够针对各类应用场景进行聊天机器人微调。目前To gether团队正在与研究小组和企业合作,帮助他们根据自己的任务需求建立自定义模型:

•教育助手——对开放教科书数据集进行微调,创建的聊天机器人有望帮助全年龄段学生通过自然对话学习各种主题。

•金融问答——利用金融数据进行微调和检索(例如证券交易委员会文件),以实现金融领域的问答能力。

•客服代表——利用知识库数据进行微调以创建聊天机器人,帮助最终用户诊断问题并快速给出答案。

如何微调

微调的具体步骤为:

•准备相应的数据集,其中的交互示例应符合指定格式。

•将您的数据集保存为jsonl文件,并按照此处(https://github.com/togethercomputer/OpenChatKit)说明进行聊天模型微调。

•别忘了审核模式。在开始使用微调模型之前,请注意审核模型可能会过滤掉域外问题。如有必要,请再准备一些审核数据并对审核模型做微调。Together在GitHub仓库(https://github.com/togethercomputer/OpenChatKit)中提供了整个操作过程的说明文档和源代码。OpenChatKit是基于Apache 2.0许可的完全开源项目,因此用户可以深入调整、修改或审查您自己的应用方案或权重设置。

可提供实时更新答案的可扩展检索系统

OpenChatKit还包含一个可扩展的检索系统。借助检索系统,聊天机器人能够合并定期更新或自定义内容,例如来自维基百科的知识、新闻提要或者体育赛事比分,将其纳入响应当中。

检索增强系统的工作流程示例。

通过检索系统,聊天机器人能够检索给定问题的相关信息,收集最新的资讯内容。这也为模型的答案提供了“上下文”。举例来说,检索系统能够支持维基百科索引,也可以在检索期间调用Web搜索API以获取示例代码。只要按照说明文档的指示操作,就能利用检索系统在推理过程中让聊天机器人接入任何数据集或API,并将实时更新数据合并到响应当中。

如何在检索模式下使用聊天机器人

Together直接提供一个将检索模型与聊天模型结合起来的一体化脚本,具体请参阅自述文件(https://github.com/togethercomputer/OpenChatKit#retrieval-augmented-models)中的完整信息。

在文档中的维基百科示例中,系统会针对特定用户查询执行以下步骤:

1.服务器根据用户查询,从维基百科索引中检索相关语句。

2.服务器将步骤1的输出添加到查询内,并使用聊天机器人模型生成响应结果。用户可以更改代码和提示以匹配自己的特定用例。

审核模型将在必要时适度干预

OpenChatKit的最后一个组件,是由GPT-JT微调而成的60亿参数审核模型。在聊天应用中,审核模型将和主聊天模型协同运行,负责检查用户话语中是否存在不当内容。基于审核模型的评估,聊天机器人可以将输入内容限制为审核主题。对于指向性更强的任务,审核模型还可检测哪些问题属于域外问题,并在与主题无关时将其覆盖。

在推理过程中,Together团队进行了小样本分类并将用户问题划分为五类。只有当问题属于允许的分类时,聊天机器人才会给出响应:

审核是一项难度颇高且相当主观的任务,而且很大程度上由上下文决定。Together提供的审核模型只作为基准,可以根据各种需求进行调整和定制。Together希望社区能够继续改进这套基础审核模型,并开发出适合不同文化和组织背景的特定数据集。

Together与LAION和Ontocord合作,共同为审核模型提供训练数据集,并针对一系列不当问题对GPT-JT做了微调。

参考链接

https://www.together.xyz/blog/openchatkit

https://www.marktechpost.com/2023/03/12/together-releases-the-first-open-source chatgpt-alternative-called-openchatkit/