OpenAI GPT-3模型详解

针对文本生成和代码生成这两大类场景,OpenAPI分别提供了GPT-3Codex模型,

模型 描述
GPT-3 一组能够理解和生成自然语言的模型
Codex 一组可以理解和生成代码的模型,包括将自然语言转换为代码

本文将为大家详细介绍这两个模型。

文章目录

  • 模型概述
    • GPT-3
      • Davinci
      • Curie
      • Babbage
      • Ada
    • Codex
  • API调用
    • Python库
    • Node.js库
  • 参数说明
  • 总结

模型概述

GPT-3

GPT-3模型可以理解并生成自然语言。OpenAI根据任务场景和功能强度提供了四种可选子模型。其中Davinci g功能最强大,而Ada 响应速度最快。

模型名称 描述 最大tokens 训练数据
text-davinci-003 最强大的GPT-3模型。
具有更高的输出质量、
更长的输出内容
和更好的语言理解能力。
还支持文本插入功能。
4,000 tokens 截至2021年6月
text-curie-001 功能强大,
但比Davinci速度更快,价格也更便宜。
2,048 tokens 截至2019年10月
text-babbage-001 能够完成简单任务,速度快,成本低。 2,048 tokens 截至2019年10月
text-ada-001 能够完成非常简单的任务,
通常是GPT-3系列中速度最快的,成本最低的。
2,048 tokens 截至2019年10月

尽管通常来讲Davinci最强大,但其他型号的模型在某些特定场景和任务下,具有明显的速度或成本优势。例如,Curie可以执行许多与Davinci相同的任务,但速度更快,成本仅为Davinci的1/10。

建议在实验时使用Davinci,因为它产生的结果最好。一旦实验完成,建议尝试一下其他模型的效果,看看是否能以更低的延迟或成本获得同样或近似的效果。同时还可以通过在特定任务上对其他模型进行微调来提高它们的性能。

Davinci

Davinci是GPT-3系列中最强大的模型,可以在很少指引的情况下完成其他模型能完成的任何任务。对于需要大量理解内容的应用,如针对特定受众的摘要生成和创造性内容生成,Davinci的产生效果最佳好。当然,这些优势需要更多的计算资源,因此Davinci每次API调用的成本更高,而且速度也不如其他模型。

Davinci的另一个亮点是理解文本的意图。Davinci非常擅长解决各种逻辑问题,并解释其中角色的动机。Davinci已经能够解决一些涉及因果关系的最具挑战性的人工智能问题。

擅长领域:复杂意图理解、因果关系发现及理解、针对性摘要总结

Curie

Curie也非常强大,同时速度也非常快。虽然Davinci在分析复杂文本时更具优势,但Curie在情感分类和总结摘要等许多细致任务上表现出色。Curie还非常擅长回答问题,因此非常适合作通用服务聊天机器人。

擅长领域:翻译、摘要、复杂分类、文本情感

Babbage

Babbage可以执行分类等简单任务。当涉及到语义搜索时,它也可以很好地对文档与搜索查询的匹配程度进行排序。

擅长领域:文本分类、语义搜索分类

Ada

Ada通常是速度最快的模型,可以执行解析文本、地址更正和粗放的分类任务。可以通过提供更多上下文来提升Ada的表现。

擅长:文本解析、简单分类、地址更正、关键字提取

⚠注意:高级模型都能完成低级模型能完成的任务,例如Ada能完成的工作,Curie和Davinci都能完成。

OpenAI模型是非确定性的,这意味着相同的输入可以产生不同的输出。将temperature 设置为0将使输出大部分具有确定性,但仍可能存在少量可变性。

Codex

Codex模型是GPT-3模型的派生模型,可以理解和生成代码。训练数据包含自然语言和来自GitHub的数十亿行公共代码。

Codex最擅长Python,并精通十几种语言,包括JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL,甚至Shell。

Open AI目前提供2种子模型:

模型名称 描述 最大请求 训练数据
code-davinci-002 最强大的Codex模型。
特别擅长将自然语言转译成代码。
除了完成代码外,还支持在代码补全。
8,000 tokens 截至2021年6月
code-cushman-001 几乎与Davinci Codex一样强大,但速度稍快。
这种速度优势可使其更适合于实时应用。
2,048 tokens

Codex目前尚处在公测阶段。公测期间免费调用,但是速度会受限制。推荐直接用最强的code-davinci-002

API调用

OpenAI API调用非常简单,官方提供Python和Node.js库。

Python库

Python库可以通过下面命令安装:

$ pip install openai

安装后即可在代码中通过导入openai库来调用各功能接口

import openaiopenai.api_key = "YOUR_API_KEY"response = openai.Completion.create(model="text-davinci-003", prompt="Hello", temperature=0, max_tokens=16
)

这里需要注意的是:调用接口需要先绑定OpenAI API Key。该API Key可以在OpenAI后台申请,点击右上角头像,在弹出菜单中点击”View API keys“。在API Keys管理界面可以创建或删除API Keys。

Node.js库

Node.js库的安装和使用步骤与Python库类似,在项目中运行

$ npm install openai

即可向项目中安装并添加openai库。安装完成后,即可在代码中调用

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({apiKey: 'YOUR_API_KEY',
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({model: "text-davinci-003",prompt: "Hello",temperature: 0,max_tokens: 16,
});

社区提供了其他所有主流编程语言的库,大家可以根据自己使用的语言,在这里查找。

参数说明

用API的一大好处是,API提供了众多参数,可以让我们控制输出效果。下面是GPT-3Codex模型支持的参数:

参数名 类型 默认值 说明
model string 模型名称(详见模型综述)
prompt string 输入的提示
suffix string null 文本生成后在文末插入的后缀
max_tokens int 16 文本生成时要生成的最大token数。
提示的token数加上max_tokens不能超过模型的上下文长度。
大多数模型的上下文长度为2048个token(最新模型支持4096 tokens)
temperature float 1 采样温度。值越高意味着模型承担的风险越大。
对于需要创意的场景,可以尝试0.9,
对于答案明确的场景,建议用0(argmax采样)
建议不要与top_p同时改变。
详见《ChatGPT模型采样算法详解》
top_p float 1 核采样(温度采样的另一种方式),其中模型考虑具有top_p概率质量的token的结果。因此,0.1意味着只考虑包含最高10%概率质量的token
建议不要与temperature同时改变。
详见《ChatGPT模型采样算法详解》
n int 1 每个提示要生成多少个答案
stream boolean false 是否返回流传输进度。如果设置,token将在可用时以纯数据服务器端推送事件发送,流以data:[DONE]消息终止。
logprobs int nul 如果传值(最大值5)则表示包括logprobs个最可能的token以及所选令牌的对数概率。例如,如果logprobs为5,则API将返回包含5个最可能Token的列表。
echo boolean false 是否回传提示
stop string null 最多4个序列,遇到stopAPI将停止生成。
返回的文本不包含停止序列。
presence_penalty float 0 数值介于-2.0和2.0之间。正值将根据到目前为止新token是否出现在文本中来惩罚新token,从而增加模型谈论新主题的可能性。
详见 《ChatGPT模型中的惩罚机制》
frequency_penalty float 0 数值介于-2.0和2.0之间。正值根据文本中新token已经出现的频率惩罚新token,从而降低模型逐字重复同一行的可能性。
详见 《ChatGPT模型中的惩罚机制》
best_of int 1 在服务端生成best_of个完成,并返回“最佳”(每个token的log概率最高的一条)。结果无法流式传输。
n一起使用时,best_of控制候选回应的数量,n指定要返回的数量–best_of必须大于等于n
⚠注意:由于此参数生成许多回应,因此会快速消耗token配额。小心使用并确保对max_tokensstop进行了合理的设置。
logit_bias map null 修改回应种出现指定token的可能性。
接受一个json对象,该对象将token(由GPT tokenizer的token ID指定)映射到-100到100之间的相关偏差值。可以用 tokenizer tool 将文本转换成token ID。
在数学上,在采样之前,将偏差添加到模型生成的逻辑中。每个模型的确切效果会有所不同,但介于-1和1之间的值应该会降低或增加选择的可能性;像-100或100这样的值应该会导致相关token的禁用或必现。
例如,可以传递{"50256": -100}以防止生成`<
user string null 代表终端用户的唯一标识符,OpenAI用来监控和检测滥用。

理解上述参数对文本生成任务的影响至关重要。其中最重要的一组参数是temperaturetop_ppresence_penaltyfrequency_penalty,详见《ChatGPT模型采样算法详解》 和 《ChatGPT模型中的惩罚机制》

总结

虽然GPT-3模型没有ChatGPT强大,但使用API有如下好处:

优点

  • 无需注册、直接使用
  • 有参数可以控制输出
  • 比ChatGPT稳定
  • 速度比ChatGPT快一点
  • 可以整合到其他系统中

缺点

  • 生成质量不如ChatGPT
  • 有限的上下文支持
  • 会产生费用

OpenAI GPT-3模型详解相关推荐

  1. 使用pickle保存机器学习模型详解及实战(pickle、joblib)

    使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...

  2. Transformer 模型详解

    Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer.Transformer 模型使用了 Self- ...

  3. TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,

    TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344  作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...

  4. TensorFlow Wide And Deep 模型详解与应用

    Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1].wide and dee ...

  5. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  6. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  7. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

  8. 数学建模——一维、二维插值模型详解Python代码

    数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...

  9. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

最新文章

  1. 今晚8点直播 | 微软亚洲研究院副院长刘铁岩:机器学习技术前沿与未来展望
  2. Apache IoTDB v0.12.5 发布!
  3. 8953n的user获取权限以及remount
  4. 读取数据库并写入excel表中 发送邮件
  5. 编程的本质--深入理解类型系统/泛型/函数式编程/面向对象编程
  6. linux firefox 检查组件是否加载,利用火狐浏览器查看网站加载速度
  7. [转载] python sum()函数和.sum(axis=0)函数的使用
  8. 寒心!一个开发者就这样离开了!
  9. Crash Course经济学笔记
  10. No.3小白的HTML+CSS心得篇
  11. Windows下CodeLite支持中文的正确设置方法
  12. 中兴网络设备交换机路由器查看ARP表项命令方法
  13. 2007年7月27日
  14. 关于购买域名的一些建议
  15. Mybatis实现订单案例的五表联合操作
  16. 1分钟激活任意Windows 系统
  17. 微信公众号文章采集思路
  18. 基于FlashWavRecorder实现IE11浏览器录音后用科大讯飞转文字
  19. mac 不显示 外接屏幕_教大家Mac外接显示器设置教程
  20. img标签 src路径正确 但图片不显示

热门文章

  1. 惊!读取大脑重建高清视频,Stable Diffusion还能这么用
  2. Appinventor 单片机 手机蓝牙通信实现
  3. mac中finder侧边栏个人收藏中目录英文改中文的方法
  4. 打包——在英语学习中同样重要
  5. 怎么抓取股票交易接口?
  6. vueh5获取手机前置摄像头(安卓ios),input capture属性和navigator.mediaDevices
  7. 【周易AIPU 仿真】R329开发板模拟仿真
  8. 英化的移动QQ 第一版
  9. img 图片加载错误时显示默认图片
  10. Vscode中注释快捷键设置