CA周记 - 带你进⼊ OpenAI 的世界
2021年11月的 Microsoft Ignite , 微软带来了全新的 Azure OpenAI Service,通过新的 Azure 认知服务能够访问 OpenAI 强大的 GPT-3 模型 。 虽然微软还没有正式开放 Open AI Service , 但 GitHub 和 OpenAI 已经推出了基于 GPT-3 的新模型 Codex 的工具 - Copilot ,通过它可以帮助软件开发人员更高效地编写代码。我相信不少小伙伴都已经开始在 Visual Studio Code / Visual Studio 使用 Copilot 感受到 GPT-3 的威力。 作为开发者, 希望微软能尽快开放相关文档, 能尽快掌握相关技能 。 为了满足各位要求, 今天我就带大家进入 OpenAI 。
GPT-3 介绍
2020 年 5 月,Open AI 发表了一篇开创性的论文,题为 Language Models Are Few-Shot Learners。 他们展示了 GPT-3语言模型,它使用了一个具有 1750 亿个参数的神经网络。 GPT-3 使用来自 CommonCrawl、WebText、维基百科和书籍语料库的数据进行训练, 并在各种自然语言处理任务中表现出惊人的性能,包括翻译、问答和完形填空任务。在性能上 GPT-3 也是非常优秀, 超过了很多现有的模型。2020 年 7 月,也就是论文发表两个月后,OpenAI 开放了一个 beta API playground,大家可以通过 API 方式访问 GPT-3 模型。
GPT-3 的几个主要特点
1. 零/单/少样本学习(Zero/one/few-shot learning): 通常,深度学习会针对一组特定的类别进行训练和测试。 如果计算机视觉中对星球大战中的 BB8 , R2D2 , C3PO 进行分类,在测试过程中就只能针对这三个类别进行。 但在零样本学习设置中,系统在测试时,可以使用不在训练内的类别(例如,用曼努达人做测试)。 单/少样本学习(one-shot 和few-shot) 也是一个道理,在测试时,系统会分别看到一个或几个新的类别。
2. 零/单/少样本任务迁移(Zero/one/few-shot task transfer): 这个整合了 零/单/少样本学习和多任务学习的概念。 新任务(或者显示零个、一个或几个新任务的示例)可以随时执行,而不是在测试时才展示新类。 例如, 输入 “I love you -> 我爱你。 I miss you -> ____。” GPT-3 就可以通过单样本任务迁移 ,把之前没有训练过的英语转中文的任务执行起来
3. Transformers: Transformers 是解决机器翻译问题的框架, 有一个简单的网络结构,基于自注意机制,不依赖于递归和卷积完全。通过并行计算使Transformer效率高,需要更少的训练时间。
4. 生成模型(Generative models): 统计学中分类任务有两种模型-判别模型,生成模型。 判别模型对给定的可观察变量和目标变量对的条件概率进行编码:p(y|x)。 生成模型对联合概率进行编码:p(x,y)。 生成模型可以“生成类似于现有数据的新数据”,GPT-3 模型就是应用生成模型来。
5. 多任务学习(Multitask learning): 大多数深度学习系统都是单任务的, 只针对特定的场景。多任务系统克服了这一限制。 他们受过训练,能够针对给定的输入解决不同的任务。 例如我输入一个苹果,他可以帮我翻译成英文的 Apple ,可以找到一张苹果的图片,也可以找到苹果的一些特征等。
6. 半监督学习(Semi-supervised learning): 是以无监督的方式训练具有非常大数据集的模型,然后通过在较小的数据集中使用监督训练来调整模型以适应不同的任务。
通过 OpenAI API 调用GPT-3
由于微软现在还没开放 OpenAI 的 GPT-3 功能 , 现阶段我们只能通过 OpenAI (beta.openai.com) 提供的 API 使用 GPT-3 。(当然你需要有一个美国的电话号码来激活该功能) ,OpenAI 有非常丰富的文档, 以及示例 ,让开发者可以非常快上手使用 API。

Python 调用 API 几个必须的步骤
- 安装 openai 库
pip install openai
申请 API 的密钥

可以通过 Notebook 测试一下

几个注意的点
- 模型 engine ,现在针对 GPT-3 有2个比较主要的模型
| 模型 | 介绍 |
|---|---|
| text-davinci-002 | GPT-3 关于自然语言处理场景的模型,通常需要较少的上下文。 除了响应提示外,还支持在文本中插入补全。 |
| code-davinci-002 | 可以理解和生成程序代码的模型,包括将自然语言翻译成代码(这个模型需要另外申请) |
关于一些示例,你可以通过访问
https://beta.openai.com/examples 学习更多的应用场景

你可以通过 OpenAI 提供的 Playground 做一些测试 https://beta.openai.com/playground

你可以针对自己的业务定义 GPT-3 模型 ,你可以通过该链接了解更多 https://openai.com/blog/customized-gpt-3/
展望
GPT-3 功能强大 ,让 AI 应用场景更贴近实际的生活 。 我非常希望微软的 OpenAI Service 能尽快开放 ,让更多的开发者能使用。 还有现在 OpenAI GPT-3 在中文的支持还是非常有限的, 我也寄望微软版本的服务能有更好的中文支持。
相关资料
了解 Azure OpenAI Service 功能,请访问 https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/
Azure OpenAI Service 介绍,请访问
https://blogs.microsoft.com/ai/new-azure-openai-service/OpenAI 的相关博客 https://openai.com/blog/
CA周记 - 带你进⼊ OpenAI 的世界的更多相关文章
- 小丁带你走进git的世界三-撤销修改
一.撤销指令 git checkout还原工作区的功能 git reset 还原暂存区的功能 git clean 还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...
- 小丁带你走进git的世界三-撤销修改(转)
一.撤销指令 git checkout还原工作区的功能 git reset 还原暂存区的功能 git clean 还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...
- 小丁带你走进git的世界二-工作区暂存区分支
小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git init git clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...
- 带你走进rsync的世界
导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...
- 让 Python 带你进入开源的世界——Git 从入门到与他人协作开发
让 Python 带你进入开源的世界--Git 从入门到与他人协作开发 我认为开源社区中有很多优秀的资源,并且可以帮助进阶中的程序员提高编程能力和水平.所以,我发起了<HelloGitHub&g ...
- 两篇文章带你走入.NET Core 世界:Kestrel+Nginx+Supervisor 部署上云服务器(二)
背景: 上一篇:两篇文章带你走入.NET Core 世界:CentOS+Kestrel+Ngnix 虚拟机先走一遍(一) 已经交待了背景,这篇就省下背景了,这是第二篇文章了,看完就木有下篇了. 直接进 ...
- 带你剖析WebGis的世界奥秘----Geojson数据加载(高级)(转)
带你剖析WebGis的世界奥秘----Geojson数据加载(高级) 转:https://zxhtom.oschina.io/zxh/20160819.html 编程 java 2016/08/ ...
- 带你剖析WebGis的世界奥秘----点和线的世界(转)
带你剖析WebGis的世界奥秘----点和线的世界 转:https://zxhtom.oschina.io/zxh/20160813.html 编程 java 2016/08/13 0留言, 0 ...
- 带你剖析WebGis的世界奥秘----瓦片式加载地图(转)
带你剖析WebGis的世界奥秘----瓦片式加载地图 转:https://zxhtom.oschina.io/zxh/20160805.html 编程 java 2016/08/05 0留言, ...
随机推荐
- synchronized已经不在臃肿了,放下对他的成见之初识轻量级锁
前言 物竞天择,适者生存.JDK也在不断的优化中.关于JDK中synchronized锁内部也是不断的优化,前面我们分析了偏向锁用来解决初期问题,随着争抢的不断堆积轻量级锁营运而生. 关注我,一个不断 ...
- KVM虚拟机cpu资源限制和vcpu亲缘性绑定
前言 KVM中添加的实例存在资源分布不均的情况,这样如果有消耗资源的实例会影响到其他实例的服务正常运行,所以给kvm做资源限制是很有必要的,下面记录一下在centos7中KVM环境下使用cgroup限 ...
- Redis的删除机制
Redis的删除机制 Redis的使用分两点: 性能如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存.这样,后面的请求就去缓存中读取,使得请求能够迅速响 ...
- fiber核心(react 16)?
旧: 浏览器渲染引擎单线程, 计算DOM树时锁住整个线程, 所有行为同步发生, 有效率问题, 期间react会一直占用浏览器主线程,如果组件层级比较深,相应的堆栈也会很深,长时间占用浏览器主线程, 任 ...
- Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math类中提供了三个与取整有关的方法:ceil.floor.round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil( ...
- kafka中的broker 是干什么的?
broker 是消息的代理,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一 ...
- MyISAM Static 和 MyISAM Dynamic 有什么区别?
在 MyISAM Static 上的所有字段有固定宽度.动态 MyISAM 表将具有像 TEXT, BLOB 等字段,以适应不同长度的数据类型. MyISAM Static 在受损情况下更容易恢复.
- SPI简单解析
什么是SPI 一种服务加载方式,全名为Service Provider Interface,Service提供者接口 如果我们要抽象里面的模块,在面对对象编程当中,我们模块之间,一般推荐模块之间基于 ...
- 为什么要用Spring
1.方便解耦,简化开发 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合.有了Spring,用户不必再为单实例模式类.属性文件解析 ...
- java-可变参数hei
/* 使用前提: 当前方法的参数的数据类型已经确定,但是参数的个数不确定,就可以使用可变参数 使用格式: 定义方法是使用 修饰符 返回类型 方法名(数据类型... 变量名){} 可变参数的原理: 可变 ...