机器之心报道
OpenChatKit 是一个类 ChatGPT 开源工具包,内含一个 20B 参数量的大模型,而且该模型在 4300 万条指令上进行了微调。
2023 年,聊天机器人领域似乎只剩下两个阵营:「OpenAI 的 ChatGPT」和「其他」。
ChatGPT 功能强大,但 OpenAI 不太可能将其开源。「其他」阵营表现欠佳,但不少人都在做开源方面的努力,比如前段时间Meta 开源的 LLaMA。
除此之外,一个名为 EleutherAI 的开源 AI 研究团队也一直在贡献开源大模型成果。自 2020 年 7 月成立以来,该团队先后开源了基于 GPT-3 的、包含 60 亿参数的 NLP 模型 GPT-J,类 GPT 的27 亿参数模型 GPT-Neo,以及 200 亿参数的GPT-NeoX-20B。据悉,他们的最终目标是将开源模型的参数规模扩展到 1700 亿左右,就像 GPT-3 一样。
在 ChatGPT 火遍全球之际,EleutherAI 的这些开源成果派上了用场。一家名为 Together 的组织表示,他们基于 EleutherAI 开源的 GPT-Neo 和 GPT-J 构建了一个新的类 ChatGPT 开源项目 ——OpenChatKit。
项目链接:
https://github.com/togethercomputer/OpenChatKit
这个项目提供了一个强大的、开源的基础,可以为各种应用创建专门和通用的聊天机器人。具体来说,它包含:
- 一个参数量达 20B 的开源模型,该模型基于 EleutherAI 的 GPT-NeoX-20B,在 4300 万条指令上进行了微调;
- 一个参数量达 60 亿的审核模型(moderation model),可以帮模型过滤不当内容;
- 一个可扩展的检索系统,可以帮模型检索维基百科等资源库,从而给出最新信息。
根据 Together 提供的链接,我们可以粗略看到 OpenChatKit 在摘要提取、问答、写作等方面的表现。以下是 Together 提供的一些 demo:
想要深入了解 OpenChatKit 的读者也可以亲自测试。
测试链接:
https://huggingface.co/spaces/togethercomputer/OpenChatKit
从目前的表现来看,OpenChatKit 可能还不太令人满意。但在此开源项目的基础上,社区有望构建出更加强大的聊天机器人应用。
参数量 20B 的指令调优大模型
GPT-NeoXT-Chat-Base-20B 是构成 OpenChatKit 基础的大型语言模型。它基于 EleutherAI 的 GPT-NeoX 模型,并通过专注于对话互动的数据进行了微调。Together 在 Huggingface 上发布了这个模型的预训练权重:
https://huggingface.co/togethercomputer/GPT-NeoXT-Chat-Base-20B
Together 的开发者将模型调整的重点放在几个任务上,如多轮对话、问答、分类、提取和总结。他们用 4300 万条高质量指令对模型进行了微调,并与 LAION 和 Ontocord 合作,创建了该模型所基于的 OIG-43M 数据集。数据集信息参见:
https://laion.ai/blog/oig-dataset/
OIG-43M 数据集示例。
开箱即用的 GPT-NeoXT-Chat-Base-20B 为一系列广泛的自然语言任务提供了一个强大的基础。从质量上看,它在 HELM 基准上的得分比其基础模型 GPT-NeoX 高,特别是在涉及问答、提取和分类的任务上。
模型长处
OpenChatKit 有几个任务是开箱即用的,包括:
1、将一份长的文件总结成一句话,并回答与该文件相关的问题,问答可进行多轮;
2、从非结构化文件中提取结构化信息,如下图所示;
3、将一个句子或段落分为不同的类别(比如情绪是积极还是消极)。
利用 OpenChatKit 把一段长文字内容转化成图表。
模型短板
OpenChatKit 目前的短板包括:
- 基于知识的封闭式问答。该聊天机器人可能会给出不正确的结果,需要用户提供反馈;
- 代码相关任务。由于训练数据中没有足够多的代码,因此该聊天机器人在代码方面表现欠佳;
- 重复性。该聊天机器人有时会重复自己的回答,用户可以点击刷新,开始新的对话;
- 上下文切换。该聊天机器人不太擅长转换话题。
- 创意写作和较长的答案。该聊天机器人不会生成长的、有创意的文本,如论文或故事。
针对特定任务定制聊天机器人
在一般问答任务中,大型语言模型已经显示出令人印象深刻的能力。当为特定的应用进行微调时,它们往往能达到更高的准确率。例如,谷歌的 PaLM 在医学回答上达到了大约 50% 的准确率,但是通过添加指令支持和对医学特定信息的微调,谷歌创造了 Med-PaLM,其准确率达到了 92.6%。同样的方法也可以用于其他任务。
OpenChatKit 提供了一些工具来为专门的应用微调聊天机器人。其开发团队正在与研究小组和公司合作,帮助他们为各种任务创建自定义模型。这些任务包括:
- 教育助手:在开放的教科书数据集上进行微调,创建一个聊天机器人,通过自然对话帮助各年龄段的学生了解各种主题;
- 金融问答:微调并利用美国证券交易委员会文件等金融数据的检索,实现金融领域的问答;
- 客户支持代理:利用知识库数据进行微调,创建聊天机器人,帮助终端用户分辨问题并快速找到答案。
如何进行微调
微调需要的操作包括
- 准备好你的数据集,使用指定格式的交互示例;
- 将你的数据集保存为 jsonl 文件,并按照 OpenChatKit 的 GitHub 文档对聊天模型进行微调;
- 不要忘记审核模型!在开始使用你的微调模型之前,请注意审核模型可能需要过滤的域外问题。如果有必要,准备一些调节数据并微调审核模型。
这个过程的文档和源代码可以在 OpenChatKit 的 GitHub 链接中找到。由于 OpenChatKit 在 Apache-2.0 许可下完全开源,你可以为自己的应用或研究深入调整、修改或检查权重。
用于实时更新答案的可扩展检索系统
OpenChatKit 还包括一个可扩展的检索系统。有了这个检索系统,聊天机器人能够将定期更新的内容或自定义的内容,如来自维基百科的知识、新闻提要或体育比赛成绩纳入回答中。
检索增强系统的工作流程示例。
审核模型在必要时进行干预
OpenChatKit 的最后一个组件是一个由 GPT-JT 微调的 60 亿个参数的审核模型。在聊天应用中,审核模型与主聊天模型同步运行,检查用户话语中是否有任何不适当的内容。基于审核模型的评估,聊天机器人可以将输入的内容限制在经过审核的主题上。当然,这个审核模型只是一个基线,用户可以根据不同的需求进行调整和定制。
在推理过程中,开发者进行了 few-shot 分类,将用户问题分为五类。聊天机器人只在问题落入允许的分类中时才会做出回应。
参考链接:
https://www.together.xyz/blog/openchatkit