GPT-4 现在是否已经足够划算?

我通常使用 GPT 的方式是,先用 GPT-4 来快速搭建一个原型,然后不断优化,直到解决方案能够在 GPT-3.5 模型上运行。

这个方法在我的实践中非常高效,它的一个重要好处是能迅速筛选出那些“行不通”的项目——如果你在几天内都无法使项目在 GPT-4 的基础上运行起来,那么这个项目可能就不值得进一步深入。

实际上,这就是我在 2023 年全年向合作公司推荐的工作流程。GPT-4 有一些问题,使得将其应用于实际生产环境并不理想。

我对 GPT-4 的具体担忧包括:

  1. 直到几个月前,OpenAI 本身还表示 GPT-4 尚未准备好投入生产使用。他们的官方建议是将其用于原型设计阶段。
  2. 长期以来,GPT-4 的请求速率限制非常严格。以前,它的上限仅为每分钟 200 个请求,而现在已经提升至每分钟 10,000 个。
  3. GPT-4 一直比 GPT-3.5 慢。我在 6 月对模型进行的基准测试显示,GPT-4 相比 GPT-3.5 的令牌间延迟高出 3 倍。
  4. 在历史上,GPT-4 的成本远高于 GPT-3.5。例如,2023 年 3 月,对于一个平均应用来说,GPT-3.5 的成本仅为 GPT-4 的五分之一。

自 2023 年 3 月起,这些因素都发生了显著的变化。请求速率限制、性能和定价都有了大幅提升,主流的 GPT-4 模型现已非常适用于生产环境——尽管 GPT-4 Turbo 还未达到这一水平。

GPT 价格历史

回顾一下,GPT 模型的成本如何随时间变化:

模型每千个输入 Token 的价格每千个输出 Token 的价格
gpt-4-1106-preview0.0100 美元0.0300 美元
gpt-4-06130.0300 美元0.0600 美元
gpt-4-03140.0300 美元0.0600 美元
gpt-3.5-turbo-11060.0010 美元0.0020 美元
gpt-3.5-turbo-16k-06130.0030 美元0.0040 美元
gpt-3.5-turbo-06130.0015 美元0.0020 美元
gpt-3.5-turbo-03010.0020 美元0.0020 美元

跨不同模型进行成本比较需要考虑两个维度的定价因素:你预计的 Token 使用总量和输入输出 Token 的比例。

第一个指标很直观:你的 OpenAI 账单会随着使用量的增加而线性上升。而第二个指标则涉及不同应用场景下的成本差异。以 11 月的模型为例,GPT-4 Turbo 的输出 Token 成本是输入 Token 的三倍,而 GPT-3.5 Turbo 的输出 Token 则是输入 Token 的两倍。

这意味着,对于输出 Token 使用量大的应用来说,GPT-4 Turbo 相较于 GPT-3.5 Turbo 会更加昂贵。相比之下,输入 Token 使用较多的应用会发现成本差异较小。

现实世界中的输入与输出比例

当 Sam Altman 宣布 GPT-4 Turbo 相较于七月的 GPT-4 模型降价时,他提到平均 API 用户的成本将减少约 2.75 倍。根据这个数据反推,我们可以得出平均输入与输出的 Token 比例大约为 9:1。

这个比例只是一个大致的平均值。OpenAI 有众多客户,他们的工作内容各不相同。在规划你的业务时,依赖这个 9:1 的比例可能不太可靠,因为实际的比例可能会有很大的差异。

以 Crimson Education 的产品为例,我观察到的输入与输出比例从 22.5:1 到 2.6:1 不等,这取决于具体功能。我个人观察到的最大比例是 22.5:1,但在其他情况下,我也看到过低至 1.47:1 的比例。

在开发和生产过程中实际测量和跟踪输入与输出 Token 的比例是极其重要的。因为现实世界中的比例变化极大,所以很难给出一个普适的标准比例。

如果我们只考虑成本而忽略模型的性能,那么具有 22.5:1 Token 比例的功能与 GPT-4 Turbo 非常匹配,因为我们可以通过这种方式最小化相对较高的输出 Token 成本。

价格比较

基于这些考量,这里是 11 月 GPT-4 Turbo 模型(gpt-4-1106-preview)在不同输入:输出比率下相对成本的详细分析。表中的“相对价格”一栏显示了 GPT-4 Turbo 相对于其他模型的额外成本;例如,在 9:1 输入:输出 Token 比率下,使用 GPT-4 Turbo 的综合成本是使用 11 月 GPT-3.5 Turbo 模型的成本的 10.91 倍。

输入:输出比率模型相对价格
1.47:1gpt-3.5-turbo-110612.88
gpt-3.5-turbo-061310.63
gpt-4-06130.43
9:1gpt-3.5-turbo-110610.91
gpt-3.5-turbo-06137.74
gpt-4-06130.36
22.5:1gpt-3.5-turbo-110610.41
gpt-3.5-turbo-06137.13
gpt-4-06130.35

明确地说,7 月 GPT-4 模型的成本是同期 GPT-3.5 模型的 20 倍,但性能仅为三分之一,这对我来说是难以接受的。我并不认为它适合投入实际应用,因为几乎在所有场合,只要适当地使用提示,GPT-3.5 Turbo 就能够达到与 GPT-4 相似的效果。这种在价格和性能上的巨大差异令人震惊。

但最新的模型变化大大改变了这一判断。

当我们将 GPT-4 Turbo 与 7 月份的模型相比较时,我发现差距已经显著缩小了。到目前为止,我一直很高兴地在这些模型上进行工作。在成本上,GPT-4 Turbo 是 7.13 至 10.63 倍于 7 月份的 GPT-3.5 Turbo 模型,但在每个 Token 之间的响应时间上,它仅比 GPT-3.5 Turbo 模型慢 26.2%。

如果你必须在 GPT-4 Turbo 和上一代 GPT-3.5 Turbo 模型中做出选择,那么 GPT-4 Turbo 无疑是更明智的选择。在大多数情况下,除非你需要的输出可以通过一个简单的提示就得到,否则 GPT-4 Turbo 在成本和性能上几乎总是更胜一筹。

当然,我们实际上并不需要在这两个模型之间做出选择,因为还有新推出的 GPT-3.5 Turbo 模型可以考虑。这个新模型的成本比 GPT-4 Turbo 高出 10.41 至 12.88 倍,但在性能方面,GPT-4 Turbo 的响应时间大约只有 GPT-3.5 Turbo 的一半。

只考虑当前这一代的模型时,选择就变得不那么明显了。

案例研究:文档审查

我们在 Crimson 最近推出了一个新功能,能够根据特定的评分标准来评估输入的文档。尽管 GPT-4 Turbo(GPT-4 Turbo)有能力单次提示下完成文档评分,但从经济和可扩展性角度考虑,我们选择使用 GPT-3.5 Turbo(GPT-3.5 Turbo)。

文档审查功能的屏幕截图。所审查的文档质量高,分数也反映了这一点。

文档审查功能的屏幕截图。所审查的文档质量高,分数也反映了这一点。

展示我们新的文档审查功能如何工作

对于这种文档审查应用,绕过较小型号 GPT-3.5 Turbo 的局限性相对容易。我们做法是:评分标准的每个项目都有各自的评分提示,并且这些提示可以同时运行(并行处理!)。然后,这些单独的提示结果会被送到最后的提示中,用来生成反馈。

Crimson 使用 GPT-3.5 Turbo 进行文档审查的具体流程。这张图表展示了如何在各项标准评分并行完成后,汇总并整合这些评分以产生反馈。

Crimson 使用 GPT-3.5 Turbo 进行文档审查的具体流程。这张图表展示了如何在各项标准评分并行完成后,汇总并整合这些评分以产生反馈。

因此,我们的“调用栈 (call stack)”仅有两个提示深度。鉴于 GPT-4 Turbo 的处理速度仅为 GPT-3.5 Turbo 的一半,这个选择是合理的。但重要的不仅是提示的数量,更关键的是输出 Token(Token)的数量。在大多数情况下,大语言模型 (LLM) 的响应时间几乎是线性的,取决于在关键流程中生成的 Token 数量。

而且很明显,我们每个更小、更受限制的提示生成的内容要比单个大型 GPT-4 Turbo 提示的内容少。至少在并行处理的每个评分提示中,我们只需要输出一个分数,而不是像之前那样需要顺序输出所有分数,这样可以节省不少 Token。

在实际操作中,我们的关键流程输出的 Token 数量还可以进一步减少。我们采用了思维链提示 (chain-of-thought prompting) 来获得更好的效果,当模型一次只需考虑评分标准中的一个方面时,其“思维”过程可以更加简洁。

我们通常能在 6 秒左右的时间内,使用 GPT-3.5 Turbo 生成一条评价。而 GPT-4 Turbo 的生成时间通常在 17 秒左右。但仅仅比较 Token 生成速度的直接基准测试,并不能完全展现出全部情况:将 gpt-3.5-turbo-1106 升级到 gpt-4-1106-preview 时,预期的性能下降约为 2.12 倍,这只是在一个相似场景下的测量结果。

值得一提的是,我们用于 GPT-3.5 Turbo 的架构也同样适用于 GPT-4 Turbo;并非一定要在大模型的单一提示中完成所有任务。但当我们的架构在较小模型上运行良好时,就没有必要改变,这通常是长时间架构优化后的常态。

最终,我们不仅节约了相当一部分成本,还显著提升了用户体验。六秒的响应时间几乎即时,对于终端用户而言并不显得过于漫长。

至少在我们迄今为止开发的应用中,文档审查是一个相对简单的任务。你并不真正需要更大模型的高级推理能力,因为我们希望用户能够几乎实时地编辑他们的文档,因此对性能的要求非常严格。

像这种情况下的用例,GPT-3.5 Turbo 仍然非常合适。但在更复杂的问题上,我不再认为避免使用 GPT-4 Turbo 是个好主意。对于你和你的公司而言,减少提示工程的工作量,承担 GPT-4 Turbo 较高的成本,以便更频繁地发布产品,从经济角度看是更合理的。

输入与输出比率及模型的选择

我们研究了输入与输出 Token 比率在成本分析中的应用,发现它们也是选择合适模型的重要指标。直观上,输入与输出比率高的应用更适合长提示(而非简短的补全),因此 GPT-4 Turbo 特别适用于这类场景。

实际上,我有一个具体的标准:在使用 GPT-3.5 系列模型时,我从未部署过输入与输出比率达到或超过 17.5:1 的应用。所有这类比率的特性都是使用 GPT-4 Turbo 来实现的。

深入分析这种直觉,我们可以发现两个关键因素:

一次性处理大量数据变得简单。 当你处理海量数据时——即拥有大量输入 Token——使用 GPT-3.5 就意味着你需要进行多轮的排序、筛选和总结,来应对其较小的上下文限制。

虽然使用 GPT-4 Turbo 时你可能仍需进行这些处理,但它在开发过程中的便捷性是显而易见的。

在 GPT-3.5 的环境中,你必须大量减少数据量,然后才能看到最终输出的示例。而在 GPT-4 的环境中,你可以立刻得到一个输出,然后利用这个输出来智能地优化你的预处理流程。

GPT-4 Turbo 在处理“中段忽略”问题上更加高效。 语言模型常常会忽视提示中间的指令,这个问题随着提示长度的增加而加剧。GPT-4 Turbo 虽未能完全解决这一问题,但它在处理更长上下文时的性能衰减程度较之前有了显著改善。

Greg Kamradt 的测量表明,在一项简单的回忆测试中,性能一直表现出色,直到输入 Token 达到 73K。这是个相当优秀的成果!在这项基准测试中,你基本上能够处理相当于两个完整大小的gpt-4-32k上下文,然后才会遇到问题。

简而言之,如果你的输入与输出 Token 的比例非常高,那么你的应用场景很可能非常适合使用 GPT-4 Turbo,无论是从成本还是模型性能的角度看都是如此。

结论

直到现在,我都不太倾向于推荐在实际应用中使用 GPT-4 模型,但技术的进步使得这些模型的应用变得更加可行。尽管 GPT-4 Turbo 目前还处于预览阶段,但它在速率限制方面已经取得了重大改进,我预计不久后 OpenAI 将会宣布它正式适用于生产环境。

与 2022 年 7 月的 GPT-3.5 Turbo 模型相比,转换到 GPT-4 Turbo 将使成本增加约 7.74 倍,且在相同架构下性能降低 50%。

但 GPT-4 模型的真正价值在于,它们能够通过更少的提示和更简洁的架构达到良好的效果。在我的经验中,一个 GPT-4 的提示往往能完成 3-4 个 GPT-3.5 提示的工作量。考虑到这一点,GPT-4 Turbo 将适合许多应用场景的成本效益。

然而,GPT-4 并不是 GPT-3.5 的直接升级。在性能要求严格的应用场景中,或者问题足够简单,可以为 GPT-3.5 重新设计架构的情况下,投入资源进行提示优化仍然是值得的。

 原文:Is GPT-4 cost effective yet?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

循环异步调取接口使用数组promiseList保存,Promise.all(promiseList)获取不到数组内容,then()返回空数组

在使用 vue vant2.13.2 技术栈的项目中,因为上传文件的接口是单文件上传,当使用批量上传时,只能循环调取接口;然后有校验内容:需要所有文件上传成功后才能保存,在文件上传不成功时点击保存按钮&#xff0c…

HarmonyOS自学-Day5(使用List、Stack、RelativeContainer相关组件实现的小案例)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧!小案例 文章声明⭐⭐⭐ 该文章为我(有编程语言基础,非编程小白)的 HarmonyOS自学笔记,此类文章笔记我会默认大家都学过前端相关的知识,并常常以实现相关小案例…

软考系分之计算机网络IP地址的表示(IPv4及IPv6)

文章目录 1、概要2、IPv4地址点分十进制和分类表示2.1 IPv4分类表示2.2 IPv4不分类表示2.3 IPv4特殊IP和子网划分 3、IPv6地址4、总结 1、概要 本篇介绍计算机网络中的IP地址,在网络工程师的考试中,IP地址是必考内容,但是在系统分析师的考察中…

Spring5.0 — WebClient(响应式web客户端)

一、介绍 1.1、RestTemplate 同步阻塞代码,http 请求返回响应才继续执行。 1.2、WebClient 1.基于 Reactor 和 Netty。 2.响应式 web 客户端。异步执行不阻塞代码,少量的线程数处理高并发的 Http 请求。 3.集成 Spring WebFlux 框架,可与…

【C语言基础考研向】05 scanf读取标准输入超详解

文章目录 一.scanf函数的原理 样例问题原因解决方法 二.多种数据类型混合输入 错误样例正确样例 一.scanf函数的原理 C语言未提供输入/输出关键字,其输入和输出是通过标准函数库来实现的。C语言通过scanf函数读取键盘输入,键盘输入又被称为标准输入。…

JavaScript 类型判断及类型转换规则

文章目录 JavaScript 类型及其判断使用 typeof 判断类型使用 instanceof 判断类型使用 constructor 和 Object.prototype.toString 判断类型JavaScript 类型及其转换JavaScript 函数参数传递cannot read property of undefined 问题解决方案分析一道网红题目JavaScript 类型判断…

thinkphp 可执行文件think

think 是一个可执行文件,位置:网站根目录 内容:1 定义项目路径 2 加载cll框架文件 shell脚本里第一行的:#!/usr/bin/env php 什么意思 这句#!的含义就是,按照环境变量PATH寻找第一个php程序来执行。 #!/usr/bin/php…

大语言模型系列-ELMo

文章目录 前言一、ELMo的网络结构和流程二、ELMo的创新点总结 前言 在前文大语言模型系列-word2vec已经提到word2vec的缺点: 为每个词汇表中每个分词静态生成一个对应的词向量表示,没有考虑到语境,因此无法无法处理多义词 ps:先…

【Spring Boot 3】【Redis】分布式锁

【Spring Boot 3】【Redis】分布式锁 背景介绍开发环境开发步骤及源码工程目录结构总结 背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经…

【文档数据库】ES和MongoDB的对比

目录 1.由文档存储牵出的问题 2.什么是MongoDB? 3.ES和MongoDB的对比 1.由文档存储牵出的问题 本文或者说关于mongodb的这个系列文章的源头: 前面我们聊过了分布式链路追踪系统,在基于日志实现的分布式链路追踪的方式seluthzipkin中为了…

VsCode 常见的配置

转载:Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插件】 - 知乎 (zhihu.com) 一、VsCode 常见的配置 1、取消更新 把插件的更新也一起取消了 2、设置编码为utf-8:默认就是了,不用设置了 3、设置常用的…

beego的控制器Controller篇 — 错误处理

1 错误处理 在做 Web 开发的时候,经常需要页面跳转和错误处理,beego 这方面也进行了考虑,通过 Redirect 方法来进行跳转: func (this *AddController) Get() {this.Redirect("/", 302) } 如何中止此次请求并抛出异常…

TDengine 企业级功能:存储引擎对多表低频场景优化工作分享

在去年 8 月份发布的 3.1.0.0 版本中,TDengine 进行了一系列重要的企业级功能更新,其中包括对多表低频场景写入性能的大幅优化。这一优化工作为有此需求的用户提供了更大的便捷性和易用性。在本文中,TDengine 的资深研发将对此次优化工作进行…

C语言--带哨兵位的双向循环链表的创建及使用详解

C语言--带哨兵位的双向循环链表的创建及使用详解 1. 双向循环链表定义1.1 定义1.2 优点:1.3 物理结构 2. 双向链表的创建2.1 文件创建2.2 节点创建 3. 链表操作3.1 初始化3.2 显示3.3 尾插3.4 头插3.5 尾删3.6 头删3.7 查找3.8 指定位置前插入3.9 指定位置删除3.10 …

【Qt之模型视图】2. 模型类及QModelIndex模型索引、自定义模型

1. 模型类 在模型/视图体系结构中,模型提供了一个标准接口,视图和委托使用该接口访问数据。在Qt中,标准接口是由QAbstractItemModel类定义的。无论数据项如何存储在任何底层数据结构中,QAbstractItemModel的所有子类都会以层次结…

GPT APP的开发步骤

开发一个GPT(Generative Pre-trained Transformer) Store(存储)涉及到使用预训练的语言模型(例如GPT-3)来生成和管理内容。以下是一般的步骤,希望对大家有所帮助。北京木奇移动技术有限公司&…

云计算入门——Linux 命令行入门

云计算入门——Linux 命令行入门 前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 如今,我们许多人都熟悉计算机(台式机和笔记本电…

vscode 中配置 python 虚拟环境

vscode 中配置 python 虚拟环境 Start 在编写代码的过程中,我们经常会用到一些第三方依赖,帮助我们快速完成功能。在 Python 中,默认情况都是统一安装在全局环境中,但是这样伴随着电脑项目越来越多,不同项目对依赖的…

XTuner 大模型单卡低成本微调实战

1 概述 1.1 XTuner 一个大语言模型微调工具箱。由 MMRazor 和 MMDeploy 联合开发。 1.2 支持的开源LLM (2023.11.01) InternLM ✅Llama,Llama2ChatGLM2,ChatGLM3QwenBaichuan,Baichuan2…Zephyr 1.3 特色 🤓 傻瓜化&#xf…

pytest学习和使用-pytest如何进行分布式测试?(pytest-xdist)

1 什么是分布式测试? 在进行本文之前,先了解些基础知识,什么是分布式测试?分布式测试:是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享…