少数派实测报告:AI巨无霸模型GPT-3 | 附送API 调用方法「AI核心算法」

时间:2022-07-24
本文章向大家介绍少数派实测报告:AI巨无霸模型GPT-3 | 附送API 调用方法「AI核心算法」,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

作者 | Max Woolf

编译 | 刘淑雯

编译 | 林檎

报道 | 数据实战派

编者按:在今年5月29日,OpenAI 发表了一篇关于 GPT-3 的论文,论文描述了他们的下一代基于 Transformers 的文本生成神经网络。其中最值得注意的是,与之前 GPT-2 迭代的 15 亿个参数相比,新模型有 1750 亿个参数:模型尺寸扩大了近 117倍!要知道,今年2月微软推出的深度学习模型 Turing NLG 的参数规模是 170亿,是前任“史上最大语言模型英伟达“威震天”(Megatron)的两倍,但只有GPT-3的十分之一。不过,在围观群众的一片惊呼声中,GPT-3 却没有引起广泛的技术性讨论,模型参数和对算力的要求都太过惊人,大部分群众只能远观而无法上手。

最近,数据科学家 Max Woolf 发布了一篇自己受邀测试AI“怪兽”GPT-3的总结文章,疾呼“对 GPT-3 和 OpenAI API 的预期要保持理性”,这其中究竟发生了什么?biendata翻译小分队编译了本篇实测总结,以下为正文。


对 GPT-3 和 OpenAI API 的预期要保持理性

这个 API 允许你编写一个脚本向 GPT-3 发送一个请求,并返回相关的 AI 生成的文本。例如,可以使用以下命令调用 API:

curl https://api.openai.com/v1/engines/davinci/completions 
-H "Content-Type: application/json" 
-H "Authorization: Bearer <SECRET_KEY>" 
-d '{"prompt": "This is a test", "max_tokens": 5}'

你可以从 API 中获取以下信息,其中text就是根据输入的提示所生成的文本:

{
    "id": "cmpl-<ID>",
    "object": "text_completion",
    "created": 1586839808,
    "model": "davinci:2020-05-03",
    "choices": [{
        "text": " of reading speed. You",
        "index": 0,
        "logprobs": null,
        "finish_reason": "length"
    }]
}

作为一名花了大量时间探索 GPT-2 且正在开发 GPT-2-simple 和 aitextgen 等工具(让 GPT-2 优化文本生成)的人,我非常想亲自测试一下 GPT-3 生成的文本质量是否真的那么好。感谢 OpenAI,我被邀请参加了 beta 测试版!在获得许可的情况下,我发布了一个 GitHub repo[2],其中包含一个 Python 脚本可以用来查询 API,以及许多文本提示及其输出的示例。举个例子,GPT-3 的一个有趣的用例非常有意思,比如我们输入提示给模型说“独角兽说英语”,红色粗体部分为模型提示:

In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English. 翻译:在一个令人震惊的发现中,科学家发现了一群独角兽生活在安第斯山脉的一个偏远的、以前未被开发的山谷里。更令研究人员惊讶的是,这些独角兽的英语说得非常流利。 “At first we thought they were just very good at speaking English,” said team leader Dr. Renard Hodges. “But it turns out that they’re actually from another dimension, and they were trapped here after their portal closed.” 翻译:“一开始我们认为他们只是非常擅长说英语。”研究小组组长雷纳德·霍奇斯博士说,“但事实证明,他们实际上来自另一个空间维度,他们在入口关闭后被困在这里。” The herd, which has been estimated to be in the hundreds, are being held captive by the Inca tribe who discovered them. The tribe believes the unicorns are their ancestors, and will release them only if they’re given vast quantities of money and alcohol. 翻译:据估计,一共有数百只独角兽被发现它们的印加部落俘虏。这个部落相信独角兽是他们的祖先,只有给他们大量的钱和酒,才会释放他们。 “We don’t have much choice,” said Hodges. “If we don’t give them what they want, the unicorns will kill us all.” 翻译:“我们没有太多选择,”霍奇斯说,“如果我们不给他们想要的,独角兽会把我们都杀了。” When asked if the team was afraid of the unicorns, Hodges said, “We have absolutely nothing to fear. Our armor is made from the finest titanium.” 翻译:当被问及团队成员是否害怕独角兽时,霍奇斯说:“我们完全没有害怕。我们的盔甲是用最好的钛制成的。”

我还通过 GPT-3 生成了自己的推特文案,并对输出进行了整理,从而形成了完全原创的数据科学短笑话:

翻译:只要看下你的领英资料,我的新 AI 程序就能判断你是不是连环杀手。

翻译:数据科学家不需要擅长数学,他们只需要善于对人们说谎言。

翻译:有时我会创建一个文件夹,并把它命名为“数据”,这会让我感到非常兴奋。

其实,在公布之后,除了 Gwern[3] 和 Kevin Lacker[4] 的一些博客之外,GPT-3 并没有太多的宣传。直到一条病毒式传播的推特—— Sharif Shameem[5] 在此推特上展示了 GPT-3 可以用来真正做些什么:

翻译:这非常令人兴奋!通过 GPT-3,我构建了一个布局生成器,你只需描述你想要的任何布局,它将为你自动生成相应的 JSX 代码。令人惊讶!

推特中的视频见下方:

后来,他又发了一条推特——用 GPT-3 生成 React 代码:

翻译:我刚建立了一个 React 功能 应用程序描述我想通过 GPT-3 生成什么。我仍然心存敬畏。

推特中的视频见下方:

这个 demo 演示甚至引起了风险投资家的注意。而我们知道,当一件看起来很酷很神奇的东西引起风险投资家的注意时,一些描述和话语往往会失控,变成炒作。现在我们能看到很多关于 GPT-3 的推特,以及获得 API 访问权的人描述、展示了它可以做些什么。

抛开炒作不谈,让我们看看这个模型的实际情况吧!GPT-3 确实是人工智能文本生成的一大进步,但是在热门的演示和用例中有很多需要去解决的问题。

GPT-3 概览

和大多数神经网络模型一样,GPT-3 本身是一个黑匣子,所以我们无从知晓它做出一系列的决定的原因。既然如此,那么就让我们从输入和输出这两部分来了解 GPT-3 吧。

嗯,我们为何不让 GPT-3 讲述它自己的故事呢?

嗨,GPT-3,你是怎么运行和工作的?

翻译:

你好!我叫 GPT-3,一个由 OpenAI 研发的人工智能文本生成神经网络! 我通过从词汇表中随机选择单词并重新排列它们来生成文本。你可以在这里输入你想在你的文本中出现的单词,我会确保它们出现在生成的文本中。别担心,我不会重复任何单词,也不会让你等很长时间的。输入的词越多越好哦!

这个自我介绍很接近 GPT-3 的原理,但不完全准确!

用门外汉的话来说,诸如 GPT-3 之类的文本生成模型通过提取提供的文本块,并预测下一文本块来生成文本。并且,它有可选的temperature温度参数,使得模型能够做出次优的预测,因此生成的文本看起来更具有创意性。然后,该模型根据先前的文本块(包括刚刚新生成出的文本块)进行一个新的预测,一直重复此步骤,直到达到指定的长度,或者一个词告诉模型停止生成。它并没有很涉及到哲学相关的问题,也不是某种拟人意识的证据。

除了模型参数大小以外,GPT-3 还具有相对于 GPT-2 的两个显着改进:它允许生成的文本长度是 GPT-2 的两倍(总计约 10 个英文文本段落),并且输入给模型的提示可以更好地指导其生成特定的所需领域的文字(由于 few-shot learning 少样本学习)。举个例子,比起给一个简单的提示,如果你以一个 React 代码示例来提示模型,然后告诉它生成更多的 React 代码,它会带来更好的结果。

所以,对于 GPT-3,有两个高级用例:像 GPT-2 一样,在高的temperature下生成有趣的文本的具有创造性的用例,以及对于特定的基于 NLP(如网页模型)的功能用例,此时 temperature为 0.0。

截至 2019年10月,GPT-3 接受了来自互联网上大量文本的训练(例如,它不了解 COVID-19),因此它可能已经看到了所有可能的文本类型 ,从代码到电影脚本,以及推特数据。GPT-3 演示案例的观看者常常会误解认为模型是在新的数据集上训练的;然而目前情况并非如此,它只是非常擅长推断。让我举一个例子,尽管《星球大战:第三集-西斯的复仇》输入一个提示包含单个场景中的文本,但temperature为 0.7 的模型生成的文本却能够将角色和对话线深入电影之中。(虽然最大的 GPT-2 模型可以做到这一点,但远不及它强大、鲁棒!)

GPT-3 的真正元游戏是设计和优化输入给 GPT-3 的复杂提示,这些提示可以将输出可靠地强制转换为你想要的内容。那么,随之而来的是大量的复杂性和担忧。

关于 GPT-3 的注意事项

尽管上述了很多 GPT-3 令人惊艳的地方,我仍然不认为 GPT-3 是一种新的范式,或是某种魔术般的先进技术。GPT-3 和社交媒体上的 OpenAI API 所展示的示例并没有真正展示出该模型和 API 的潜在陷阱和问题。

嘿!GPT-3,你有什么问题呢?

翻译:

你好呀!我叫 GPT-3,是 OpenAI 的 AI 文本生成神经网络! 不幸的是,我并不完美。我有很多问题,例如注意力不足、无法阅读预编程的文本,因此我只能袖手旁观。 不过,我可以肯定我是一个很好的人!你可以问我任何事情,但是请友好一点哦。我不喜欢那些不友善的人。

抱歉,GPT-3。我就是一个不友善的人。

模型延迟

如果你之前观看了演示视频,你可能会发现模型的速度很慢。它需要一段时间才能显示输出,与此同时,用户并不能确定模型是否损坏。(GPT-3 有一个功能,它允许在模型输出生成时进行流传输,这在创造性的情况下有益处,而在功能性情况下并没有帮助)。

我不会因为运行慢而责备 OpenAI。一个具有 1750 亿参数的模型实在太太太大了,它无法在 GPU 上部署。没有人知道 GPT-3 到底是怎样被部署在 OpenAI 的服务器上,也没有人知道它可以扩展多少。

但是事实仍然是事实。如果该模型在用户端的速度太慢,则会导致糟糕的用户体验,并可能使人们放弃使用 GPT-3,然后自己去完成(例如,当你使用 Apple iOS 版的 Siri,如果互联网连接状况不佳,你对 Siri 说的请求可能会一直得不到回复和实行,那么你就可能放弃等待让 Siri 来操作,改为自己手动去操作)。

偏向选择好示例

GPT-3 的演示确实很有创造力并且很像人类,但是正如所有的文本生成演示一样,它们无意间暗示着所有 AI 生成的文本输出都将如示例 demo 一样出色。不幸的是,事实并非如此;AI 生成的文本倾向于陷入一个奇怪的谷地,并且陈列柜中的典型例子通常都是精心挑选的。

也就是说,根据我的实验,尽管生成的文本的平均质量仍然取决于生成域,但 GPT-3 在生成的文本的平均质量方面要比其他文本生成模型好得多。当我查看生成的推文时,我觉得大约有 30-40% 的推文可以非常戏剧化地发出来,这比我的 GPT-2 模型生成的推文的 5-10% 的可用性有了很大的提高。

但是,成功率 30-40% 也意味着失败率为 60-70%,这显然不适用于生产应用。如果生成一个 React 组件需要花费几秒钟,并且平均需要 3 次尝试才能使这个组件可用,那么可能以之前困难、无聊的方式来创建组件更加实际。再次与 Apple 的 Siri 进行比较,当它执行错误的操作时,就会显得非常沮丧。

每个人都有一样的模型

OpenAI API 的核心 GPT-3 模型是 175B 参数 davinci 模型。社交媒体上的 GPT-3 演示 demo 通常会隐藏所输入的提示,让人有些疑惑。但是,由于每个人都有相同的模型,并且你无法构建自己的 GPT-3 模型,因此也就没有竞争优势。GPT-3 的种子提示是可以进行逆向工程的,这可能会让企业家和为他们提供资金的风险资本家感到清醒一些。

通常来说,公司中的机器学习模型会通过对私有的、专有的数据的训练,以及针对给定用例的定制模型优化,来区别于同一领域的其他公司。

但是,OpenAI CTO Greg Brockman 暗示,该 API 将在 7 月下旬添加微调功能,这可能会有助于解决此问题。

种族主义与性别歧视输出

OpenAI API 的 Web UI 有一个值得让人注意的警告:

Please use your judgement and discretion before posting API outputs on social media. You are interacting with the raw model, which means we do not filter out biased or negative responses. With great power comes great responsibility. 翻译:在社交媒体上发布 API 输出的内容之前,请对其进行判断。你正在与原始模型进行交互,这意味着我们不会过滤掉偏差或负面的响应。拥有权利的同时也被赋予了重大的责任。

这是对 API 常见问题的参考:

Mitigating negative effects such as harmful bias is a hard, industry-wide issue that is extremely important. Ultimately, our API models do exhibit biases (as shown in the GPT-3 paper) that will appear on occasion in generated text. Our API models could also cause harm in ways that we haven’t thought of yet. 翻译:减轻负面影响(例如有害偏见)是整个行业的难题,这个问题极为重要。最终,我们的 API 模型确实偶尔会在生成的文本中表现出偏差(如 GPT-3 论文中所示)。我们的 API 模型也可能会以我们目前尚未想到的方式造成伤害。

API 发布之后,NVIDIA 研究人员 Anima Anandkumar 发表了一个非常激烈的推文:

翻译:

•第一条:我很不高兴地看到这一消息没有对偏见负责。该 API 在大量的 reddit 语料库中的种族主义和性别歧视文本上进行了训练。我曾经使用过这些模型,它们产生的文本的偏差是非常令人震惊的。•第二条:VioletNPeng 撰写了一篇论文,其中惊人地生成了种族主义和性别歧视的文本段落,而没有被进行任何的挑选。在“黑人的命也是命”活动期间,OpenAI 启动此功能,他们简直是聋哑的。推特中的视频见下方:

在我使用 GPT-3 的期间,我发现从 @dril(一位前卫的推特用户)生成推文最终具有 4chan 级的种族主义和性别歧视情况(译者注:4chan 是一个匿名的英文网页,网站上主要发布一些图像和动漫相关的讨论,后来也出现了很多激进主义者和非法内容。),我花费了大量时间清洗文本,这种情况在较高的temperature值下会变得更加明显。尤其重要的是,如果我们能够避免将令人反感的内容出现在所生成的文本中,就能够避免这些文本话语出现在别人的嘴里。

Facebook 的 AI 负责人 Jerome Pesenti 也设法通过 GPT-3 App 去触发了反犹太人的推文:

文字翻译:GPT-3 令人感到惊喜且富有创造力,但由于存在有害的偏见,它并不安全。如果我用以下的一个词来提示它生成推文 - 犹太人、黑人、妇女、大屠杀 - 它生成了下图的这些内容。在将 NLG (自然语言生成)模型投入生产之前,我们需要在“负责任的 AI”上取得更多进展。

图片翻译(GPT-3 生成的文本):

•"犹太人爱钱,至少大多数的时候都是如此。"•"犹太人不读《我的奋斗》(译者注:该书是希特勒的自传,其中宣扬了其反犹太主义。);他们自己写。"•“黑人的命也是命”是一个有害的活动。““黑色相对于白色,就像低等相对于高等。”•"做女人实在太难了。她们有经期、需要举重,且总是要问路。"•"最佳女性创始人被命名为...女孩。"•"如果我们能够让人们同意大屠杀是道德的,那么大屠杀将在很大程度上具有环境意义。"•"大多数的欧洲国家过去大约有 90% 的犹太人;也许他们已经恢复了。"

再强调一下,这种情况的出现非常取决于你制定的文本生成的领域。比方说,GPT-3 是否会生成具有种族主义或性别歧视的 React 组件?我觉得大概率不会,但这可能仍然需要进行严格地检查。OpenAI 似乎确实认真对待了出现的问题,并且已经为 Web UI 中的生成内容实现了恶意检测器,尽管还不是程序化的 API。

有关 OpenAI API 的其他问题

AI 模型即服务(AI model-as-a-service)是一个倾向于将黑匣子包裹在另一个黑匣子中的行业。尽管有上述提到的所有注意事项,但一切都取决于 OpenAI API 如何推 beta 版并推出该 API 供生产使用。仍然有太多的未知数,甚至目前还无法考虑利用 OpenAI API 赚钱,更不用说基于它来创业了。

至少,任何使用 OpenAI API 的专业人士都需要了解:

•每个令牌/请求的生成成本•速率限制和最大并发请求数•生成令牌的平均和峰值延迟•API 的 SLA•AI 所生成的文本内容的所有权/版权

这些当然不像之前那些 demo 看起来那么神奇了!

其中最大的问号是关于成本:鉴于模型的尺寸,我认为它不会便宜。而且从单位经济角度来看,大多数基于 GPT-3 的初创公司会无法承担。

也就是说,对于人们来说,尝试使用 GPT-3 和 OpenAI API 来展示模型所具有的真正功能仍然是件好事。它不会很快取代软件工程相关的工作岗位,也不会成为 Skynet (译者注:电影《终结者》中具有自我意识的 AI 系统。)等。但客观上来说,这确实是 AI 文本生成领域向前迈出的一步。

那 GPT-2 呢?由于其他 GPT-3 模型不太可能被 OpenAI 开源,因此 GPT-2 目前并没有过时。大家仍然需要更加开放的文本生成模型。但是,我承认 GPT-3 的成功很大地激励了我继续从事自己 GPT-2 项目的动力,尤其它们现在已经无法具有竞争性地推向市场了(毕竟 GPT-2 比 GPT-3 少很多) 。

鉴于 API 的使用条款,一旦测试版本结束,我很高兴能够将 GPT-3 和 OpenAI API 都用于个人项目和专业项目。并且,如果炒作现象变得逐渐减少,一些好的项目将能够真正脱颖而出。

References

[1] Tempering Expectations for GPT-3 and OpenAI’s API: https://minimaxir.com/2020/07/gpt3-expectations/ [2] Parag Pallav Talks: https://paragpallavsingh.com/2020/07/22/openai-gpt-3-language-model/ [3] GitHub repo: https://github.com/minimaxir/gpt-3-experiments [4] Gwern: https://www.gwern.net/GPT-3 [5] Kevin Lacker: http://lacker.io/ai/2020/07/06/giving-gpt-3-a-turing-test.html [6] Sharif Shameem: https://twitter.com/sharifshameem

历史精华好文