我通常使用 GPT 的方式是,先用 GPT-4 来快速搭建一个原型,然后不断优化,直到解决方案能够在 GPT-3.5 模型上运行。
这个方法在我的实践中非常高效,它的一个重要好处是能迅速筛选出那些“行不通”的项目——如果你在几天内都无法使项目在 GPT-4 的基础上运行起来,那么这个项目可能就不值得进一步深入。
实际上,这就是我在 2023 年全年向合作公司推荐的工作流程。GPT-4 有一些问题,使得将其应用于实际生产环境并不理想。
我对 GPT-4 的具体担忧包括:
- 直到几个月前,OpenAI 本身还表示 GPT-4 尚未准备好投入生产使用。他们的官方建议是将其用于原型设计阶段。
- 长期以来,GPT-4 的请求速率限制非常严格。以前,它的上限仅为每分钟 200 个请求,而现在已经提升至每分钟 10,000 个。
- GPT-4 一直比 GPT-3.5 慢。我在 6 月对模型进行的基准测试显示,GPT-4 相比 GPT-3.5 的令牌间延迟高出 3 倍。
- 在历史上,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-preview | 0.0100 美元 | 0.0300 美元 |
gpt-4-0613 | 0.0300 美元 | 0.0600 美元 |
gpt-4-0314 | 0.0300 美元 | 0.0600 美元 |
gpt-3.5-turbo-1106 | 0.0010 美元 | 0.0020 美元 |
gpt-3.5-turbo-16k-0613 | 0.0030 美元 | 0.0040 美元 |
gpt-3.5-turbo-0613 | 0.0015 美元 | 0.0020 美元 |
gpt-3.5-turbo-0301 | 0.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:1 | gpt-3.5-turbo-1106 | 12.88 |
gpt-3.5-turbo-0613 | 10.63 | |
gpt-4-0613 | 0.43 | |
9:1 | gpt-3.5-turbo-1106 | 10.91 |
gpt-3.5-turbo-0613 | 7.74 | |
gpt-4-0613 | 0.36 | |
22.5:1 | gpt-3.5-turbo-1106 | 10.41 |
gpt-3.5-turbo-0613 | 7.13 | |
gpt-4-0613 | 0.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 进行文档审查的具体流程。这张图表展示了如何在各项标准评分并行完成后,汇总并整合这些评分以产生反馈。
因此,我们的“调用栈 (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?