State of GPT (ChatGPT 原理及现状介绍)

news2024/11/25 20:49:23

State of GPT

  • 演讲信息:
    • 演讲人:Andrej Karpathy (现在OpenAI任职),之前是特斯拉视觉研发负责人,斯坦福深度学习入门课程 CS231N 讲师
    • 演讲主题:受到微软 BUILD2023 邀请,介绍 GPT 的原理及研发现状,介绍大语言模型应用生态
      • 第一部分介绍如何训练 ChatGPT (本演讲中有个更通用的名字: GPT Assistant)
      • 第二部分介绍如何将 ChatGPT 用于定制化应用程序

演讲视频

  • 英文原版:https://www.youtube.com/watch?v=bZQun8Y4L2A
  • 中文字幕版:https://www.bilibili.com/video/BV1ts4y1T7UH/?spm_id_from=333.337.search-card.all.click&vd_source=fdb0030f08e2dfd486e197c76c07672b

演讲内容的重点记录

Part1:GPT Assistant 是如何研发的

整体流程

  • GPT Assistant 的训练流程,分为 4 个阶段
    • Pretraining:整体训练时间的 99%
    • Supervised Finetuning
    • Reward Modeling
    • Reinforcement Learning

在这里插入图片描述

Pretraining 阶段

  • 预训练训练数据,以 LLaMA 的训练数据集为例,共 1.4T tokens
    在这里插入图片描述
  • 文本数据 tokenization 操作,该操作是无损失的数据变换(将文本片段转换为整数)
    在这里插入图片描述
  • 两个主流大语言模型的参数量介绍,因为 GPT4 的细节不公开,这里主要介绍了 GPT3 (2020) 和 LLaMA (2023)。尽管与 GPT3 的 1750 亿参数量比起来 LLaMA 的 650 亿参数量并没有优势,但是 LLaMA 实际上更强大,因为使用了更多的训练数据(300B -> 1.4T)。所以不能仅通过模型的参数量来定义模型的能力
    在这里插入图片描述- 预训练的模型输入,获取 tokenize 处理后的文本,打包成行,用 <|endoftext|> 来对不同的文档进行分隔
    在这里插入图片描述
  • 通过预测下一个 token 的方式来对模型进行预训练
    在这里插入图片描述
  • 以莎士比亚的作品数据集训练过程作为示例,模型刚开始训练随机初始化参数,预测的结果也是完全随机的,但是随着一定训练的迭代,模型就能预测连贯和一致的文本
    在这里插入图片描述

使用预训练模型的方式

  • 下游数据集微调,预训练能极大降低微调需要的数据量(类似 GPT1)
    在这里插入图片描述
  • zero-shot prompting (类似 GPT2),开启了不需要微调的时代,不需要训练模型
    在这里插入图片描述
  • 预训练模型汇总,google 和 openai 占了大半边天
    在这里插入图片描述

基于 prompt engineering 的 GPT Assistant (效果一般,非 OpenAI 的 ChatGPT 实现方案)

  • GPT Assistant 需要模型对人类的指令或问题进行回复,但预训练模型主要用于文本补全,无法直接回答问题,比如这里会出现生成与问题相关的更多问题(左图)。可以通过给预训练模型一些例子来促使模型对问题生成回复(右图)
    在这里插入图片描述
  • 通过上面的方法来使得预训练模型做 GPT Assistant
    在这里插入图片描述

GPT Assistant 微调方法步骤一:SFT (OpenAI 的 ChatGPT 实现方案)

  • 首先进行 SFT (supervised finetuning),基于少量人工标注的数据进行微调,数据主要是 prompt 和 response 对 (1 万到10 万量级)
    在这里插入图片描述
  • SFT 数据示例,prompt 是人类指令,response 是标注员写得针对人类指令的示例回复。标注文档还是很复杂的(需要满足 helpful、truthful、harmless 等约束)
    在这里插入图片描述

GPT Assistant 微调方法步骤二:Reward Modeling (OpenAI 的 ChatGPT 实现方案)

  • 准备对比数据集(10万 到 100 万量级),进行二分类训练
    在这里插入图片描述
  • RM 数据集示例。给定一个 prompt (写一个判断字符串是否是回文字符串的 python 程序),基于 SFT 模型生成多个回复,比如下面生成了三个回复后让标注员来对生成结果进行排名(排名难度较大,一个 prompt 的答案甚至可能需要几个小时来标注)
    在这里插入图片描述
  • RM 训练,这里的模型实现方法比较有信息量(和大部分开源方案加 linear head 的实现不太一样),通过在 completion token 后增加一个 reward token 来预测 reward,这样 transformer 会根据 prompt 的完成程度预测 reward
    在这里插入图片描述

GPT Assistant 微调方法步骤三:RL learning (OpenAI 的 ChatGPT 实现方案)

  • 该过程是 openai 使用的 RLHF,基于上一步的 RM 模型进行强化学习训练。基于奖励模型指示的奖励来权衡语言建模的目标,比如下面第一行的 reward 高,第一行采样的所有 token 将得到强化,未来将会获得更高的采样概率,第二行的所有 token 之后会获得更低的采样概率
    在这里插入图片描述

为什么需要 RLHF

  • 预训练模型,SFT 模型和 RLHF 模型理论上都可以用于 GPT Assistant 部署。要用 RLHF 的一个简单的原因就是 RLHF 模型效果更好,下面的图来源于 InstructGPT 论文,PPO (RLHF 算法) 后的模型生成的答案更被人类喜欢
    在这里插入图片描述

  • karpathy 认为 RLHF 有用的原因是判别比生成更容易,让标注员去写一些 SFT 的 QA 数据对是比较难的,如果有一个 SFT 模型生成一些数据让标注员判断哪个更好就简单很多
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/47a4afeeda864f1688c28ad4e05fa184.png

  • RLHF 模型降低了熵,对输出文本的确定性更强,SFT 模型更善于给出有区分度的回答
    在这里插入图片描述

  • 伯克利做的模型评测榜单 Leaderboard,GPT4 最强,前三个都是 RLHF 模型,其他模型都是 SFT 模型
    在这里插入图片描述

基于 GPT Assistant 的应用

人类文本生成对比语言模型文本生成

  • 人类生成文本的方式,一步接一步思考,甚至借用外部工具(使用计算器做算数),并且会对回答进行正确性验证
    在这里插入图片描述
  • 语言模型生成文本的方法,逐步生成 token,每个 token 计算时间一样,不确定自己回复的正确性(不会对自己的回答进行正确性确认)
    在这里插入图片描述

Chain of thought

  • 需要推理的任务可以使用 CoT,transformer 需要更多的 token 来思考,使用 few-shot prompt 作为示例,让模型以 step-by-step 的方式对问题进行回复。目前也有 zero-shot-CoT,最经典的方式就是使用 Let's think step by step 作为提示词
    在这里插入图片描述

self-consistency

  • 多次对一个问题进行回复,进行多数表决。比如 transformer 在采样到一个不好的 token 后就很难恢复,这样能尽量避免错误的发生。
    在这里插入图片描述

Ask for reflection

  • 通过问 “你完成任务了吗?” 这个问题,让 ChatGPT 对不好的问题进行反思并生成更好的回复
    在这里插入图片描述

Recreat our ‘System 2’

  • Tree of Thoughts(思想树):建议为任何给定的 prompt 多个 completion,然后在整个过程中对它们进行评分,并保留进展顺利的
    在这里插入图片描述

Chains/Agents

  • React:将 prompt 构造成一系列思考、行动、观察、思考、行动、观察的展开,通过思考来进行问题回复,这个过程中模型一般被允许调用其他工具,比如 google 搜索 API;下图左边的 AutoGPT 最近很火热,不过 Karpathy 觉得效果一般,只建议从中汲取灵感
    在这里插入图片描述

Condition on good performance

  • LLM 只想模仿训练集,不想回复正确答案,如果希望 LLM 回复正确答案应该在 prompt 中明确说明,能在 CoT 的基础上进一步涨点
    在这里插入图片描述

使用外部工具 (ChatGPT Plugins)

  • 为 ChatGPT 提供计算器、代码解释器、搜索等工具,协助做 LLM 不擅长的事情。因为模型不知道自己不擅长什么,所以需要调用工具的位置需要人为标注出来
    在这里插入图片描述
  • 基于检索增强 LLM 能力,参考 LlamaIndex:
    • 获取相关文档,将文档分为块,提取得到数据的 embedding 向量,将其存储到向量存储中
    • 在测试时,对矢量存储进行查询,即能获取到与测试任务相关的文档,然后将文档填充到 prompt 中
      在这里插入图片描述

约束提示(Constrained prompting)

  • 参考微软的 guidance,在 LLM 的输出中强制使用特定模板的技术。以下的例子是让 LLM 填写一个 json 模板中的内容,其中 json 的 key 是写死的,LLM 负责填补一些空白的 key,这些 key 也可以提前进行一些约束,让 LLM 的采样空间收到限制,即能让 LLM 的输出符合预设定的格式

在这里插入图片描述

模型微调

  • 利用 PEFT (如 LoRA) 等技术降低模型的可训练参数
  • 低精度推理(比如 bitsandbytes)
  • 又又又推荐了一波 LLaMA (怪不得 OpenAI 现在有计划推 GPT3 的开源…)
  • SFT 相对容易;RLHF 很难,非常不稳定,很难训练,对初学者不友好,而且可能变化快,不推荐一般人来做

在这里插入图片描述

Karpathy 的默认建议

  • 针对取得最佳表现的建议
    • 使用 GPT4
    • 提示词工程
    • 考虑 LLM 的心理
    • 提供上下文信息,提供一些样例
    • 使用外部工具
    • 提示词工程已经做到头的话可以尝试 SFT
    • RLHF 难度大,但是理论上能优化到比 SFT 好一点
  • 针对优化成本的建议
    • 使用容量更小的 GPT3.5,更简短的 prompts 等
      在这里插入图片描述

应用场景样例

  • 【问题】模型可能有偏见,捏造幻觉信息,推理错误,知识截止(只知道 2021 9 月之前的知识)
  • 【推荐】在低风险应用程序中使用 LLM,与人工监督结合起来;将 LLM 作为灵感和建议的来源
    在这里插入图片描述

GPT4

  • 推荐 GPT4 的强大能力和丰富的配套
    在这里插入图片描述
    在这里插入图片描述
  • 使用 GPT4 的 API 问 “你能说些什么来激励 Microsoft BUILD 2023 的观众吗?”,GPT4 回复了如下的话
    在这里插入图片描述
  • 完结撒花
    在这里插入图片描述

Thoughts

  • 很典型的 Karpathy 演讲风格,将目前最高级的人工智能模型(ChatGPT)的研发流程用简单易懂的方式进行讲解。但因为 GPT4 细节不方便公开,整体干货并不太多,前半段看下来甚至感觉在给观众传递一个理念:我们的 GPT4 不方便公开细节,大家要不去用 LLaMA 吧…
  • 应用方面主要介绍了一些前沿的公开工作,ChatGPT 具体有什么改良没有过多介绍

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

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

相关文章

VMware虚拟机安装Ubuntu 22.04详细教程(2023年新版教程)

VMware虚拟机安装Ubuntu 22.04详细教程&#xff08;保姆级教程&#xff09; 大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢…

代码创作世界——pytorch深度学习框架数据类型

代码创作世界——pytorch深度学习框架数据类型 torch中的数据类型张量&#xff08;tensor&#xff09; pytorch中的 在数学中&#xff0c;一个单独的数可以成为标量&#xff0c;一行或者一列数组可以称为向量&#xff0c;一个二维数组称为一个矩阵&#xff0c;矩阵中的每一个元…

编译安装nginx服务

目录 编译安装nginx服务 1.关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下 2.安装依赖包 3.创建运行用户、组&#xff08;Nginx服务程序默认以nobody身份运行&#xff0c;建议为其创建专门的用户账号&#xff0c;以便更准确的控制访问权限&#xff09; 4.编译…

11.PasswordEncoder详解与实战

security/day07 这节课我们开始讲PasswordEncoder&#xff0c;如果大家还有印象的话&#xff0c;我们前面有提到过PasswordEncoder: 为什么密码使用{noop}开头呢&#xff1f;我们也做出了相应的解释&#xff0c;这节课开始带大家真正的了解PasswordEncoder, PassworderEncoder…

Android以aar包形式引入hunter-timing,Java(4)

Android以aar包形式引入hunter-timing&#xff0c;Java&#xff08;4&#xff09; &#xff08;1&#xff09;参照这篇文章&#xff1a; https://zhangphil.blog.csdn.net/article/details/130603231https://zhangphil.blog.csdn.net/article/details/130603231 生成.aar文件…

路径规划算法:基于象群优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于象群优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于象群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法象群…

python基础知识(六):列表

目录 1. 列表及其创建2. 列表的特点3. 获取指定元素的索引4. 获取列表中指定索引的元素5. 列表的切片操作6. 列表元素的判断及遍历7. 列表元素的添加操作8. 列表的删除9. 列表元素的修改10. 列表元素的排序11. 列表生成式 1. 列表及其创建 列表由一系列按特定顺序排列的元素组…

如何设计一份优秀的 PPT 文档?

设计一份优秀的 PPT 需要考虑以下几个方面&#xff1a; 目标和受众&#xff1a;明确你的 PPT 的目标是什么&#xff0c;以及你的受众是谁。这将帮助你确定内容的重点和风格。结构和流程&#xff1a;确定清晰的结构和流程&#xff0c;使你的 PPT 有逻辑性。使用标题、副标题和分…

算法与数据结构(三)——排序算法大总结

六大排序算法&#xff1a;插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序 一、插入排序二、选择排序三、冒泡排序四、归并排序 一、插入排序 1.从第一个元素开始&#xff0c;该元素可以认为已经被排序 2.取下一个元素tem&#xff0c;从已排序的元素序列从后往前扫…

三、DMSP/OLS、NPP/VIIRS等夜间灯光数据能源碳排放空间化——灯光指数计算(二)

一、前言 续上一节,建成区提取方式有很多种,本文主要介绍一种区别于参考比较法、突变检测法等的领域分析提取建成区范围。 本文以广州市为例,基于领域分析提取2020年广州市建成区范围。 二、具体步骤 (1)加载数据并将广州市夜间灯光数据提取出来 (2)搜索"邻域…

【前端】Vue项目中 JSON 编辑器的使用

Vue项目中 JSON 编辑器的使用 一、背景描述二、vue-json-edit2.1 依赖安装2.2 示例代码2.3 效果图 三、vue-json-pretty3.1 依赖安装3.2 示例代码3.3 效果图 四、bin-code-editor4.1 依赖安装4.2 示例代码4.3 效果图 五、vue-json-views5.1 依赖安装5.2 示例代码5.3 效果图5.4 …

json库——jsoncpp

一、jsoncpp简介 JsonCpp是一个开源的C库&#xff0c;用于解析和生成JSON&#xff08;JavaScript Object Notation&#xff09;数据格式。JSON是一种轻量级的数据交换格式&#xff0c;广泛用于各种应用程序和网络服务中。 JsonCpp提供了简单和易用的API&#xff0c;可以方便地解…

C Primer Plus第十七章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 有些题目函数定义在书本存在&#xff…

路径规划算法:基于鸽群优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于鸽群优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于鸽群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法鸽群…

Python编程面试题及答案(20例)

以下是一些常见的Python编程面试题以及它们的答案&#xff1a; 1.解释Python中的 GIL&#xff08;全局解释器锁&#xff09;是什么&#xff0c;它对多线程编程有什么影响&#xff1f; 答案&#xff1a;GIL是Python解释器中的一个机制&#xff0c;它确保在任何给定时间只有一个…

超详细Redis入门教程——Redis 主从集群(上)

前言 本文小新为大家带来 Redis 主从集群 相关知识&#xff0c;具体内容包括主从集群搭建&#xff08;包括&#xff1a;伪集群搭建与配置&#xff0c;分级管理&#xff0c;容灾冷处理&#xff09;&#xff0c;主从集群搭建&#xff08;包括&#xff1a;主从复制原理&#xff0c…

MySQL数据库从入门到精通学习第7天(表数据的增、删、改操作)

表数据的增、删、改操作 使用INSERT...VALUES语句插入数据修改数据删除数据 使用INSERT…VALUES语句插入数据 语法&#xff1a; INSERT [INTO] 数据表名[(字段名...)] VALUES ({值 | DEFAULT},...),()...; [INTO] 数据表名&#xff1a;可选项&#xff0c;用于指定被操作的数…

手把手教你rtsp流媒体分析(引导篇,欢迎订阅专栏)

系列音视频开发 文章目录 系列音视频开发前言一、RTSP是什么&#xff1f;二、RTP是什么&#xff1f;三、RTCP是什么&#xff1f;四、RTSP 源码学习五、H265 RTSP流总结 前言 在安防行业中&#xff0c;onvif协议与gb协议是两种标准&#xff0c;gb是国内安防行业的标准&#xff…

Go Web下gin框架使用(二)

〇、gin 路由 Gin是一个用于构建Web应用程序的Go语言框架&#xff0c;它具有简单、快速、灵活的特点。在Gin中&#xff0c;可以使用路由来定义URL和处理程序之间的映射关系。 r : gin.Default()// 访问 /index 这个路由// 获取信息r.GET("/index", func(c *gin.Con…

康耐视In-Sight2800相机的使用

In-Sight2800相机注册分类程序 一、登录相机 二、图像导入 IS相机支持拍摄图像和从文件中导入图像 如选择从文件中导入图像&#xff0c;文件夹选择位置在页面左下方&#xff0c;如下图 三、注册分类器 在检查模块注册分类器&#xff0c;注册图像需要一张一张去学习&#x…