聊聊开源类ChatGPT工作——MOSS

news2024/9/21 12:39:10

自从ChatGPT发布以来,它的“三步走方案”就好比《九阴真经》流落到AI江湖中,各大门派练法不一,有人像郭靖一样正着练,循序渐进;有人像欧阳锋一样反着练,守正出奇;也有像梅超风一样仅练就半部《九阴真经》,凭借九阴白骨爪横行江湖的。这也说明,“三步走方案”并非终局,在复现的基础上,多做些思考,像斗酒僧一样,认识到《九阴真经》的不足之处,加以修复,方能得到阴阳调和、刚柔互济的《九阳真经》。

这个系列希望通过介绍现有的类ChatGPT工作,提供一个鸟瞰的视角,方便读者了解他们的异同,如果能有所启发那是最好了。受限于个人能力,其间可能会有疏漏错误,欢迎一同讨论。

Part1三步走方案

抱着self-contained的原则,简要介绍一下ChatGPT的三步走技术方案[1],更详细的介绍可在互联网上找到:

  1. SFT Model:通过人工标注的问答数据,对强大的GPT预训练模型进行supervised fine-tuning,即得到SFT模型,这个过程又可以称为Instruction tuning。

  1. Reward Model:SFT模型在同一个问题上会得到的多个回答,对其进行好坏程度标注,然后将标注数据训练一个GPT模型,使模型能够判别回答的好坏,这便得到了Reward Model。

  1. PPO Model:使用Proximal Policy Optimization算法,让Reward Model引导SFT模型进行符合人类意图的回答,便得到了PPO Model,即ChatGPT模型。

Part2Moss

让我们从中文的工作开始讲起,复旦大学的Moss在23年2月20日晚便打响了中文版ChatGPT的第一枪,但当晚我却一直无法打开官方主页。近日MOSS团队兑现了他们的诺言,将预训练模型、SFT模型(包括插件版)和训练数据一并开源出来,这应该是目前开源得最彻底的中文ChatGPT工作了,接下来从几个方面来展开看看:

整体效果

MOSS目前开源了moss-moon-003-sft,这并不是最终版,但主要的能力基本已具备,知乎上有网友对其进行了评估,结论为:MOSS的性能基本达到了ChatGLM-6b的78%。官方称后续会公布他们的评估结果,但就我个人的使用moss-moon-003-sft的主观体验来看,的确是ChatGLM-6b略胜一筹。

预训练模型

虽然相关的论文还没放出来,但根据参与者的介绍[2]:

基座是codegen初始化,它的训练语料包括pile bigquery bigpython,我们又在100B中文+20B英文和代码上继续预训练的

codegen作为一个代码生成模型,将其作用来初始化基座模型,难免有些违背直觉。但细想下:

  1. 放眼国内,大模型之风从18年底Bert发布开始,decoder-only的结构始终不如encoder-only和encoder-decoder盛行,导致学校和企业自研的decoder-only模型并不多,大规模的更是少之又少。

  1. 当时Bert的large版本不过3亿参数,如果要做百亿模型不仅需要魄力,更需要资源,能入局的玩家凤毛麟角,所以人家训练好的百亿模型也不会轻易开源。

  1. 大模型写代码现在来看已经是标配,但将代码作为预训练数据的开源中文大模型却不多。

所以,一个开源可用的中文decoder-only大模型几乎不存在,这么一来,如果没有自研的大模型,那在一个代码生成模型上做继续预训练也不失为一种曲线救国的方案。但估计是受限于计算资源,MOSS团队进行了120B的继续预训练,这个数量和现在受欢迎的LLaMA(1T+ tokens)相比,还是一段差距的。

SFT

SFT部分的核心在于标注数据的质量,MOSS所用的SFT数据一大亮点是来自于真实用户的提问,同时他们也引入了3H(helpfulness, honesty, harmlessness)数据,这样即使是SFT模型,也能够具备初步的有助、无害、诚实的能力。目前开源了moss-002的标注数据,这部分的数据回复偏短,可能是由于使用Self-Instruct生成的缘故。SFT对数据质量的要求非常高,所谓“garbage in, garbage out”,Alpaca使用了self-instruct生成的数据,而Vicuna使用了shareGPT上用户真实的数据,效果上Vicuna明显胜出,中文方面目前很缺少像shareGPT这样的高质量数据。

SFT-plugin

MOSS团队同时还放出了会使用工具(即plugin)的版本——moss-moon-003-sft-plugin。大模型让人惊艳的能力之一便是它的推理能力,所谓推理,是指将复杂问题拆分为多个简单子问题的能力,通过逐个解决这些简单子问题,便能得到最终的正确答案。但在实际中,即使强如ChatGPT,在解决简单子问题的时候仍然容易出错,比如4位数的乘除法,一旦其中一个子问题出错,便会导致最终结果的错误。自然而然地,我们可以想到:让模型在解决简单子问题时通过使用外部工具以保证答案的正确性。

换一个角度,将模型比作大脑,而一个个工具则相当于是模型能与外部世界交互的手脚,这是一个令人激动的方向。近期这方面有不少亮眼的工作,如:ToolFormer[3]、ReAct[4]、HuggingGPT[5]、TaskMatrix.AI[6]、AutoGPT[7]……open AI自己也相应推出了ChatGPT plugins

让ChatGPT使用工具,仅仅需要在Prompt里说明每个工具即可,借助于ChatGPT强大的zero-shot推理能力,即使ChatGPT从未在训练过程中用过这些工具,它也能使用这个工具较好地完成任务。但对于像MOSS一样的百亿模型也可以吗?MOSS选择的方案是为每个工具构造对应的训练数据,然后用于训练模型,通过这种方式教会模型使用特定的工具。

“使用搜索工具”的训练数据

“使用搜索工具”的训练数据

这种方案优点是能够确保模型能够深刻理解每个工具的用处,但缺点也很明显:

  1. 每次添加新工具,需要对应构造训练数据,重新训练模型

  1. 从给出的样例来看,用户的问题仅需一个工具就被解决了,但实际中,用户的要求可能需要调用多个工具才能达成,比如:姚明比奥尼尔高多少?

总之,让模型自己分解任务,组合使用工具完成任务,被认为是“自主智能体”,这个方向这近期将会有大量的工作涌现。

Reward Model+PPO

MOSS repo的README中提到其最终版是经过偏好模型训练得来的,这里的偏好模型即Reward Model。目前能在PPO上取得收益的开源工作好像不多,所以很多类Chatgpt的工作也只是做了第一步SFT。目前MOSS还未开源这部分的工作,很期待看他们的实现细节。

——2023.04.24

Reference

[1] Introducing ChatGPT

[2] 复旦团队大模型 MOSS 开源了,有哪些技术亮点值得关注? - 孙天祥的回答 - 知乎

[3] Language Models Can Teach Themselves to Use Tools

[4] REACT : SYNERGIZING REASONING AND ACTING INLANGUAGE MODELS

[5] HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

[6] TaskMatrix.AI: Completing Tasks by Connecting Foundation Models with Millions of APIs

[7] Auto-GPT: An Autonomous GPT-4 Experiment https://github.com/Significant-Gravitas/Auto-GPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5、认真学习枚举类型

1、数字枚举 // 这里你的TSLint可能会报一个:枚举声明只能与命名空间或其他枚举声明合并。这样的错误,这个不影响编译 enum Status {Uploading,Success,Failed } console.log(Status.Uploading); // 0 console.log(Status["Success"]); // 1 …

智能骨传导蓝牙耳机该如何选,分享几款不错的骨传导蓝牙耳机

骨传导耳机是一种通过骨骼传递声音的耳机。相比于传统的耳塞和头戴式耳机,它有许多优点,例如: 1.安全。因为无需通过耳膜进行声音传递,所以对听力影响较小。 2.对耳朵没有伤害。 3.舒适。 4.节省时间。由于无需通过耳膜传递声音&a…

Codefi基于区块链的开发框架

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Codefi基于区块链的开发框架 Codefi技术是一种基于区块链的开发框架,它提供了一系列工具和服务,帮助开发者轻松构建和管理去中心化应用程序。C…

【Access】win 10 / win 11:Access 下载、安装、使用教程(「管理信息系统」实践专用软件)

目录 一、前言 二、卸载 Office 三、下载 Office Tool Plus 四、安装 Office(内含 Access) (1)启动 Office Tool Plus (2)部署 (3)安装 Office(内含 Access&#…

C++STL详解(10) -- 使用哈希表封装unordered_set和unordered_map

文章目录 哈希表模板参数改造针对模板参数V改造增加仿函数获取具体数据类型. 哈希表的正向迭代器正向迭代器中的内置成员:正向迭代器的成员函数 哈希表插入函数的修改(适用于unordered_map)一个类型K去做set和unordered_set他的模板参数的必备条件.unordered_set的模拟实现(完整…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题242有效的字母异位词) 2023.4.25

目录 前言算法题(LeetCode刷题242有效的字母异位词)—(保姆级别讲解)分析题目:有效的字母异位词代码:算法思想: 结束语 前言 本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删除…

详解js跨页面传参以及API的解释

详解js跨页面传参 前言什么是跨页面传参?跨页面传参本质是什么?常见的跨页面传参方法URL参数传递localStorage和sessionStorage参数传递Cookie传递 经常听到API,那么到底的什么是API? 前几天有粉丝私信我,希望能把js跨…

超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!

‍‍ 众所周知,实时目标检测( Real-Time Object Detection )一直由 YOLO 系列模型主导。 飞桨在去年 3 月份推出了高精度通用目标检测模型 PP-YOLOE ,同年在 PP-YOLOE 的基础上提出了 PP-YOLOE 。后者在训练收敛速度、下游任务泛化能力以及高性能部署能力…

搞懂 API ,地图 API 制作方法分享

地图 API 是一种基于 Web 开发的应用程序编程接口,可以用于创建和展示地图及地理信息。以下是一些地图 API 制作的方法: 选择地图 API 平台:目前市场上有很多地图 API 平台供选择,比如 Google Maps API、百度地图 API、高德地图 A…

Chess.com:象棋社区网站每月访问量达 2.8 亿,年收入在 5000 万至 1 亿之间

Chess.com是世界领先的国际象棋社区。它始于 2007 年,目前年收入超过 5000 万美元。 核心功能 Live Chess 花了 5 个多月才发布。到那时,该网站已经拥有近100,000名会员。Chess.com 域名的重要性他们 80% 的用户来自过去 4 年 Chess.com的故事是如何开…

[算法前沿]--004-transformer的前世今生

文章目录 1.transformer介绍1.1 注意力机制1.2 Transformer架构1.2.1编码器1.2.2解码器 2. Transformer中的模块2.1 注意模块2.1.1 缩放点积注意事项2.1.2 多头注意 2.2 Transformer中的注意事项2.2.1 自注意2.2.2 掩蔽的自注意(自回归或因果注意)2.2.3 …

027:Mapbox GL加载circle样式图层,用data-driven风格绘制圆形

第027个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载circle样式图层。圆形样式图层在地图上呈现一个或多个实心圆。 您可以使用圆形图层来配置矢量切片中点或点集合要素的视觉外观。 圆形层渲染其半径以屏幕单位测量的圆形。 直接复制下面的 vue+mapbox源…

HTML5 <label> 标签、HTML5 <map> 标签

HTML5 <label> 标签 实例 HTML5 <label>标签用于为 input 元素做出标记。 带有两个输入字段和相关标记的简单 HTML 表单&#xff1a; <form action"demo_form.asp"><label for"male">Male</label><input type"ra…

【libuv】入门:queue work 的跨线程异步通信

通过阅读2012年的uv book 入门。有中文版 Handles and Requests libuv works by the user expressing interest in particular events. This is usually done by creating a handle to an I/O device, timer or process. Handles are opaque structs named as uv_TYPE_t where…

【分布式搜索引擎ES01】

分布式搜索引擎ES 分布式搜索引擎ES1.elasticsearch概念1.1.ES起源1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引 1.3.es的一些概念1.3.1.文档和字段1.3.2.索引和映射1.3.3.mysql与elasticsearch 1.4.1安装es、kibana、IK分词器1.4.2扩展词词典与停用词词典 2.索引库操作2.1.mappi…

设置网格旋转轴心【Babylonjs】

推荐&#xff1a;用 NSDT场景设计器 快速搭建3D场景。 Babylon.js 中的轴心&#xff08;Pivot Point&#xff09;是使用父节点设置网格变换中心的替代方法&#xff0c;即用作旋转中心或放大中心的点。 注意&#xff1a;使用 setPivotPoint 产生的行为不同于在 3DS Max 和 Maya …

vue-cli的使用和单页面应用程序、使用vue-cli脚手架创建vue项目步骤

1.vue-cli的使用 vue-cli是Vue.js开发的标准工具。它简化了程序员基于webpack创建工程化的Vue项目的过程。 引用自vue-cli官网上的一句话: 程序员可以专注在撰写应用上&#xff0c;而不必花好几天去纠结webpack配置的问题。 中文官网: https://cli.vuejs.org/zh/ 1.1 安装 …

WTI纽约原油CFD是什么?交易技巧有哪些?

WTI常称为美国原油或纽约原油&#xff0c;WTI是West Texas Intermediate 的简称&#xff0c;代表西德州中级原油(West Texas Intermediate)&#xff0c;偶尔称为德州轻甜原油(Texas Light Sweet)&#xff0c;它是大宗商品交易中核心的石油基准。那么本文就来具体的聊聊&#xf…

接口自动化【四】(在接口自动化【三】上的优化_加入了类前置,表格中替换数据,断言)

前言 一、使用 unittest框架结合setUpClass前置条件上传图片 二、一个类里面同时有类方法和实例方法----补充知识点&#xff08;需要引用类方法中的变量&#xff09; 三、结合类前置setUpClass&#xff0c;ddt&#xff0c;Excel表格数据&#xff0c;进行上传图片 四、加入l…

铁路应答器传输系统介绍

应答器传输系统 应答器传输系统是安全点式信息传输系统&#xff0c;通过应答器实现地面设备向车载设备传输信息。 应答器可根据应用需求向车载设备传输固定的&#xff08;通过无源应答器&#xff09;或可变的&#xff08;通过有源应答器&#xff09;上行链路数据。 当天线单…