Azure OpenAI 官方指南02|ChatGPT 的架构设计与应用实例

ChatGPT 作为即将在微软全球 Azure 公有云平台正式发布的服务,已经迅速成为了众多用户关心的服务之一。而由 OpenAI 发布的 ChatGPT 产品,仅仅上线两个月,就成为互联网历史上最快突破一亿月活的应用。本期从技术角度深度解析 ChatGPT 的架构设计与应用实例。
ChatGPT的起源 ╱ 01
InsturctGPT的架构设计 ╱ 02
ChatGPT的技术应用场景及示例 ╱ 03
ChatGPT 的起源
ChatGPT 是由 OpenAI 公司在 2022年11月推出的一款智能聊天机器人程序,属于文本类AI应用。这里,Chat 即「聊天」,GPT 的全称为“Generative Pre-trained Transformer”。由于采用 Transformer 架构,且 ChatGPT 在 GPT-3 大模型基础上专门针对 Chat 聊天能力做了性能上的调优,所以 ChatGPT 在自然语言的许多交互场景中表现出了卓越的性能。
Transformer 模型在2017年问世,能够同时并行进行数据计算和模型训练,训练时长更短,并且训练得出的模型可用语法解释,也就是模型具有可解释性。经过训练后,这个最初的 Transformer 模型在包括翻译准确度、英语成分句法分析等各项评分上都达到了业内第一,成为当时最先进的大型语言模型(Large Language Model, LLM)。
2018年,在 Transformer 模型诞生还不到一年的时候,OpenAI 公司发表了论文“Improving Language Understanding by Generative Pre-training”(用创造型预训练提高模型的语言理解力),并推出了具有1.17亿个参数的GPT-1(Generative Pre-training Transformers)模型。
这是一个用大量数据训练的、基于 Transformer 结构的模型。OpenAI 的工程师使用了经典的大型书籍文本数据集(BookCorpus)进行模型预训练。该数据集包含超过7000本从未出版的书籍,涵盖了冒险、奇幻、言情等类别。在预训练之后,工程师们又针对四种不同的语言场景、使用不同的特定数据集对模型进行进一步的训练(又称为微调,Fine-Tuning)。最终训练所得的模型在问答、文本相似性评估、语义蕴含判定,以及文本分类这四种语言场景,都取得了比基础 Transformer 模型更优的结果,成为了新的业内第一。
2019年,OpenAI 公布了一个具有15亿个参数的模型:GPT-2。该模型架构与 GPT-1 原理相同,主要区别在于 GPT-2 的规模更大(10倍)。同时,OpenAI 也发表了介绍该模型的论文“Language Models are Unsupervised Multitask Learners”。
2020年,OpenAI 发表论文“Language Models are Few-Shot Learner”,并推出了最新的 GPT-3 模型——它有1750亿个参数。GPT-3 模型架构与 GPT-2 类似,但是规模大了整整两个数量级。GPT-3 的训练集也比前两款 GPT 模型要大得多:经过基础过滤的全网页爬虫数据集(4290亿个词符)、维基百科文章(30亿词符)、两个不同的书籍数据集(670亿词符)。
2022年3月,OpenAI再次发表论文“Training Language Models to Follow Instructions with Human Feedback”,并推出了基于 GPT-3 模型并进一步微调的 InstructGPT 模型。InstructGPT 的模型训练中加入了人类的评价和反馈数据,而不仅仅是事先准备好的数据集,从而训练出更真实、更无害,且更好地遵循用户意图的语言模型。
2022年11月,ChatGP 横空出世,它是基于 GPT-3.5 架构开发的对话AI模型,是 InstructGPT 的兄弟模型。但两者在训练模型的数据量上,以及数据收集、数据如何设置用于训练方面有所不同。
InsturctGPT 的架构设计
目前 Azure OpenAI 还没有官方公开资源详细说明 ChatGPT 的技术原理,因此我们将以 ChatGPT 的兄弟模型 InstructGPT 为对象,深度解析其算法架构设计。

如上图所示,开发人员将提示分为三个阶段,并以不同的方式为每个阶段创建响应和训练:
第 1 阶段 训练监督策略模型
在这个阶段,工程师会在数据集中随机抽取问题,由专门的标注人员给出高质量答案,然后用这些人工标注好的数据来微调 GPT-3.5 模型。这些标注人员会在应聘前进行筛选测试,训练数据大约有1万3千个。相较于第二、三阶段,这里用到的数据量较少。
标注人员根据提示 (prompt) 编写质量可靠的输出响应 (demonstrations)。这里采用的是 Supervised Fine-Tuning(SFT)模型,即有监督的策略来进行微调。微调之后,SFT 模型在遵循指令/对话方面已经优于 GPT-3.5,但不一定符合人类偏好。
第 2 阶段 训练奖励模型
这一阶段主要是训练一个奖励模型Reward Modeling (RM)。这里的训练数据是怎么得到的呢?首先通过在数据集中随机抽取问题,使用第一阶段生成的模型,对每个问题生成多个不同的回答,然后再让标注人员对这些回答进行排序。对于标注人员来说,对输出进行排序比从头开始打标要容易得多,因此这一过程可以扩展数据量,大约产生3万3千个训练用的数据。
接下来,再使用这个排序结果来训练奖励模型。对于多个排序结果,两两组合,形成多个训练数据对。RM 模型接受输入后,给出评价回答质量的分数。对于一对训练数据,通过调节参数使得高质量回答的打分比低质量的打分要高。奖励模型学会了为评分高的响应计算更高的奖励,为评分低的回答计算更低的奖励。
第 3 阶段 采用 PPO 强化学习进行优化
PPO (Proximal Policy Optimization,近端策略优化)是一种用于在强化学习中训练 agent 的策略,这里被用来微调 SFT 模型。这一阶段利用第二阶段训练好的奖励模型,靠奖励打分来更新预训练模型参数。在数据集中随机抽取问题后,使用 PPO 模型生成回答,并用上一阶段训练好的 RM 模型计算奖励,给出质量分数,然后用这个奖励来继续更新 PPO 模型。奖励依次传递,由此产生策略梯度,通过强化学习的方式更新 PPO 模型参数。
不断重复第二和第三阶段,通过迭代,会训练出更高质量的 InstructGPT 模型。我们将来自于人类反馈的强化学习简称为 RLHF(reinforcement learning from human feedback):使用人类的偏好作为奖励信号来微调模型。这也是 ChatGPT 在实际对话过程中的输出更符合人类偏好的原因。
ChatGPT 的技术应用场景及示例
总的来说,ChatGPT 有如下几大类技术应用的领域——
⦿ 对话机器人:可以用于生成自然语言对话,实现人机交互。
⦿ 文本生成:可以用于生成摘要、文章、诗歌等文本。
⦿ 问答系统:可以用于回答用户提出的问题,提供相关信息。
⦿ 自动翻译:可以用于实现自动翻译,将文本从一种语言翻译为另一种语言。
⦿ 情感分析:可以用于分析文本的情感倾向,实现情感分析。
⦿ 语音合成:可以用于生成语音,将文本转换为语音。
场景示例 1 NLP 领域

⦿ 生成摘要

⦿ 情感分析(小样本或零样本)
few-shot or zero-shot

⦿ 开放领域问答

⦿ 由文字生成表格

⦿ 数据集生成(小样本或零样本)
few-shot or zero-shot
场景示例 2 代码领域

⦿ 代码生成

⦿ 解释代码

⦿ 知识库生成
Azure OpenAI 官方指南 Vol.02 ChatGPT 作者
Annie Hu 微软云 AI 高级技术专家
相关文章:
Azure OpenAI 官方指南02|ChatGPT 的架构设计与应用实例
ChatGPT 作为即将在微软全球 Azure 公有云平台正式发布的服务,已经迅速成为了众多用户关心的服务之一。而由 OpenAI 发布的 ChatGPT 产品,仅仅上线两个月,就成为互联网历史上最快突破一亿月活的应用。本期从技术角度深度解析 ChatGPT 的架构设…...
RK3568核心板以太网大数据测试报告-万象奥科
1. 测试对象HD-RK3568-IOT 底板基于HD-RK3568-CORE工业级核心板设计(双网口、双CAN、5路串口),接口丰富,适用于工业现场应用需求,亦方便用户评估核心板及CPU的性能。适用于工业自动化控制、人机界面、中小型医疗分析器…...
来 CSDN 三年,我写了一本Python书
大家好,我是朱小五。转眼间已经来 CSDN 3年了,其中给大家一共分享了252篇Python文章。 但这三年,最大的收获还是写了一本Python书! 在这个自动化时代,我们有很多重复无聊的工作要做。想想这些你不再需要一次又一次地做…...
TIA博途中通过SCL语言实现快速排序的具体方法示例
TIA博途中通过SCL语言实现快速排序的具体方法示例 首先,了解一下快速排序的原理: 排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数。为了方便,我们一般选择第 1 个数字作为基准数(其实选择第几个并没有关系)。接下来我们需要将这个待排序的数列…...
第 46 届世界技能大赛浙江省选拔赛“网络安全“项目B模块任务书
第46届世界技能大赛浙江省选拔赛"网络安全"项目B模块(网络安全事件响应、数字取证调查)第46届世界技能大赛浙江省选拔赛"网络安全"项目B模块2.1 第一部分 事件响应2.2 第二部分 数字取证调查2.3 第三部分 应用程序安全第46届世界技能…...
【C】字符串操作函数
初始化字符串 #include <string.h>void *memset(void *s, int c, size_t n); 返回值:s指向哪,返回的指针就指向哪memset函数把s所指的内存地址开始的n个字节都填充为c的值。通常c的值为0,把一块内存区清零。例如定义char buf[10];&…...
【python】 pytest自动化测试框架--selenium,requests,appium自动化工具
一、pytest简介 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高 二、 pytest 单元测试框架 1、pytest 特点 pytest是python当中的一个单元框架,比unittest更灵…...
Spring boot 实战指南(三):配置事务,整合Elasticsearch、swagger、redis、rabbitMQ
文章目录一、配置事务依赖使用注解二、Elasticsearch创建项目配置maven完善依赖es连接配置实体映射repositoryservicecontroller三、swagger依赖启动类路径匹配配置配置类controller注解四、redis(代码实现)依赖yml配置配置类封装redisTamplate五、rabbi…...
九、Bean的循环依赖问题
1 什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。 比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 2 singleton下的set注入产生的循环依赖 丈夫类 pac…...
macOS关闭SIP后,仍无法修改/usr文件夹下文件
发现问题 MacOS 升级到Big Sur后,删除多余的python3文件,发现写不到磁盘,会报OSError: [Errno 30] Read-only file system的错误。经过了解,在Mac OS10.11 之后,苹果公司为了提高系统环境安全,引入了一个内…...
【编程基础之Python】8、Python复合数据类型
【编程基础之Python】8、Python复合数据类型Python复合数据类型列表(List)创建列表访问元素内置方法列表操作元组(Tuple)创建元组访问元素集合(Set)创建集合基本操作其他操作字典(Dictionary&am…...
自动驾驶决策规划-控制方向学习资料总结(附相关资料的链接)
项目仓库 欢迎访问我的Github主页 项目名称说明chhCpp学习C仓库chhRobotics学习自动驾驶、控制理论相关仓库(python实现)chhRobotics_CPP学习自动驾驶、控制理论相关仓库(c实现)chhML 、chh-MachineLearning学习机器学习仓库chhRL学习强化学习仓库chhTricks存放一些有意思的t…...
网络安全岗位介绍——售前工程师
一、工作内容 1、独立完成并配合销售人员引导客户完成方案设计、产品选型、配置报价和能为客户提供安全咨询与方案优化等服务; 2、作为售前工程师,跟踪整个项目的进展,和销售进行配合,协调公司各种资源完成项目中标; 3、编写投标文件的技术…...
nodejs安装和卸载超详细步骤
安装程序①下载完成后,双击安装包,开始安装,使用默认配置安装一直点next即可,安装路径默认在C:\Program Files下,也可以自定义修改②安装路径默认在C:\Program Files下面,也能够自定义修改,而后…...
【Leetcode】移除链表元素 链表的中间节点 链表中倒数第k个节点
目录 一.【Leetcode203】移除链表元素 1.链接 2.题目再现 A.双指针法 B.类尾删法 C.哨兵位 二.【Leetcode876】链表的中间节点 1.链接:链表的中间节点 2.题目再现 3.解法:快慢指针 三.链表中倒数第k个节点 1.链接:链表中倒数第k个…...
快速上手配置firewalld
firewalld使用firewall-cmd命令配置策略。 查看当前firewalld当前服务运行状态 firewall-cmd --state firewalld防火墙状态还用使用如下命令查看状态 systemctl status firewalld 查看所有打开运行的端口 firewall-cmd --zonepublic --list-ports 查看区域信息情况 firewall…...
treap使用mt19937会导致问题原因分析
Treap 是一种使用随机数生成器来维护树形结构的数据结构,而 mt19937 是一种常用的伪随机数生成器。虽然 mt19937 可以生成高质量的随机数序列,但是在 Treap 中使用它可能会导致一些问题。 mt19937 返回的是一个 unsigned int 其中一个问题是࿰…...
tmux和vim
tmux 作用 分屏 允许断开Terminal连接后继续运行进程 结构 一个tmux可以开一堆session tmux: session 1, session 2, session 3 … Session: window 1, window 2, window 3… Window: pane 1, pane 2, pane 3… pane是最小单位,用shell语言编程 操作 输入…...
2023年全国最新保安员精选真题及答案12
百分百题库提供保安员考试试题、保安职业资格考试预测题、保安员考试真题、保安职业资格证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 121.《保安员证》是经由设区的()单位进行发放。 A:市级人民政…...
Hbase的基本概念与架构
一、Hbase的概念 HBase是Hadoop的生态系统,是建立在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,通过利用Hadoop的文件系统提供容错能力。如果你需要进行实时读写或者随机访问大规模的数据集的时候,请考虑使用H…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...
