ChatGPT AI使用成本

news2024/11/17 0:22:42

LLM “经济学”:ChatGPT 与开源模型,二者之间有哪些优劣权衡?谁的部署成本更低?

太长不看版:对于日均请求在 1000 次左右的低频使用场景,ChatGPT 的实现成本低于部署在 AWS 上的开源大模型。但面对每天数以百万计的请求,在 AWS 上部署开源模型则成本更低。(结论适用于 2023 年 4 月 24 日本文撰稿时。)

img

用图表比较不同大语言模型间的实现成本

大语言模型正席卷全球。随着 2017 年 Transformers 的推出,BERT、GPT 和 BART 等突破性模型开始陆续亮相,凭借亿级参数在情感分析、问答、分类等语言任务当中带来了前所未见的强大能力。

几年之前,OpenAI 和谷歌的研究人员曾经整理出多篇论文,表明拥有超百亿参数的大语言模型出现了“涌现”能力。简言之,它们似乎能够理解语言中种种复杂微妙之处,并获得了与人类相似的情境反应。

img

GPT-3 论文称,大语言模型拥有令人印象深刻的学习能力。

GPT-3 论文提到,参数在 10 亿至 1000 亿级别的模型只需几十个提示词,即可展示出令人印象深刻的学习能力。

然而,这些大模型也极耗资源,导致在经济意义上难以实现规模化部署。但这一切随着 ChatGPT 的到来而宣告终结。

就在 ChatGPT 发布后不久,OpenAI 又开放了 ChatGPT API,允许开发人员在自己的应用程序中接入 ChatGPT。

现在大模型的规模成本和经济可行性如何,让我们一起算算这笔账:

*ChatGPT API 使用成本*

ChatGPT API 的价格随使用方式而变化。其成本为每 1000 个 token 计费 0.002 美元。每个 token 约为一个英文单词的 3/4,就是说,一条请求内的 token 数量等于提示词 + 所生成的输出 token 的总和。

假定大家每天需要处理 1000 个小文本块,每个文本块对应一页文本(即 500 个单词,约合 667 个 token),那么日均成本就是 0.002 美元 /1000x667*1000= 约 1.3 美元。听起来还可以!

但如果每天需要处理上百万份这类文档,情况又会如何呢?那计算下来就是日均 1300 美元,每年约 50 万美元!达到这个规模,ChatGPT 就从酷炫的玩具一下子成了沉重的业务运营负担!(当然,能否靠它赚到更多的钱另说。)

*开源生成式模型*

在 ChatGPT 赢得众人惊叹之后,一系列开源项目也相继问世。

Meta 发布了 LLaMA ,一个具有数十亿参数的大语言模型,且性能优于 GPT-3。斯坦福随后在 52K 指令遵循演示中对 LLaMA 的 7B 版本做了微调,最终得出的 Aplaca 模型同样胜过 GPT-3。

一组研究人员最近还展示了名为 Vicuna 的 13B 参数微调版 LLaMA 模型,其表现已达 ChatGPT 的九成功力以上。而且企业选择开源生成式模型,而不用 OpenAI 家 GPT 系列模型的理由也有很多。可能是不满于 OpenAI 的服务经常中断,可能是开源大模型更易于定制,也可能是使用成本更有优势。

虽然开源模型可以免费使用,但用于托管和部署模型的基础设施却不可能凭空得来。

BERT 这类早期 transformer 模型倒是可以在装有高配 CPU 和普通 GPU 的个人计算机上轻松运行和微调,但如今的大语言模型却需要更多资源。一种常见的解决方案,是使用 AWS 等云服务商托管和部署这类模型。

那么,免费的开源模型在 AWS 那边到底会产生多少成本?

*AWS 成本分析*

首先,我们得先明确部署模型并以 API 的形式开放服务所对应的 AWS 标准架构。这通常分为三个步骤:

\1. 使用 AWS SageMaker 将模型部署为端点。

\2. 将这个 SageMaker 端点接入 AWS Lambda。

\3. 通过 API Gateway 将此 Lambda 函数开放为 API。

img

使用 API Gateway 加 Lambda 调用 SageMaker 模型端点。

当客户端对 API Gateway 执行 API 调用时就会触发 Lambda 函数,并在完成函数解析之后将其发送至 SageMaker 端点。之后由模型端点执行预测,把信息发送至 Lambda。Lambda 再做解析,将结果发送至 API 并最终返回至客户端。

SageMaker 的实际成本往往直接取决于用于托管模型的计算实例类型。大语言模型体量可观,自然要用到容量极大的计算实例。

img

各种 SageMaker 实例类型价格表。

例如,AWS 就专门发布一篇教程,介绍了如何部署一套包含 200 亿参数的 Flan UL2 模型。

文章中使用的是 ml.g5.4xlarge 实例。虽然上表的 SageMaker 定价并没有列出这个特定实例的价格,但粗略估算成本大约在每小时 5 美元左右。这就相当于每天 150 美元上下!而且这还只是托管实例的部分,我们还没算上 Lambda 和 API Gateway 的费用。

下面来看 AWS Lambda 部分的成本,它的价格由内存用量和请求频率决定。

img

AWS Lambda 价目表。

假定 5 秒之内向用户返回响应即可,那么考虑到将数据路由至 AWS SageMaker 端点的需求,128 MB 内存就够了。这样对于每 1000 条请求,成本为 5*.12810000.0000166667 美元 = 0.01 美元。如果按 100 万条请求计算,则费用为 10 美元。

最后是 API Gateway 部分的成本:

img

AWS API Gateway 价目表。

如大家所见,API Gateway 倒是非常便宜,每百万条请求只需 1 美元。

也就是说,在 AWS 上托管像 Flan-UL2 这样的开源大模型,每天 1000 请求时的成本为 150 美元,每天 150 万请求则为 160 美元。

但我们有必要选择这么昂贵的计算实例吗?对于像 BERT 这样亿级参数的小语言模型,选择 ml.m5.xlarge 这类更便宜的实例就足够了,其每小时成本仅为 0.23 美元,全天只合约 5 美元。与所谓能够理解语言中细微差别的大模型相比,这些小模型也已经相当强大,还能针对特定任务和训练数据进行微调。

*写在最后*

那么,到底是商用大模型好还是开源大模型好?OpenAI 的 GPT 家族到底有没有性价比?最终答案还是要看大家的实际需求:

img

付费服务模型的优势和短板。

img

开源大模型的优势和短板

注意:因为这个领域仍在快速发展,所以在规模化需求的推动之下,大语言模型的部署成本很可能会快速下降。而且虽然开源大模型的托管比较复杂,但像 BERT 这类亿级参数的小语言模型在特定任务上仍是个很好的选择。

从性能上看,ChatGPT 和 GPT-4 的响应质量确实比开源大模型强一些。但开源模型阵营也在迎头赶上,所以我们将有越来越坚定的理由选择这一派。

首先,企业希望根据特定数据源对开源模型做微调。在经过针对性微调之后,开源模型的性能往往会反超专为通用场景打造的 ChatGPT 及其他 OpenAI 后续模型。事实证明,BloombergGPT 等领域特定模型已经成为生成式 AI 世界中一股不容忽视的重要力量。

最后,希望 OpenAI 不会进一步提高 ChatGPT API 的价格。毕竟跟早期的 GPT-3 API 相比,ChatGPT API 在亮相之初就把价格压到了十分之一的水平,但愿 OpenAI 能继续保持住这样的优良传统。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 从入门到入土

本文目录 1. Qt 概述1.1 什么是 Qt1.2 Qt 的发展史1.3 支持的平台1.4 Qt 的版本1.5 Qt 的优点1.6 成功案例 2. 创建 Qt 项目2.1 使用向导创建2.2 手动创建2.3 .pro文件2.4 一个最简单的 Qt 应用程序2.5 Qt 命名规范和常用快捷键 3. 第一个 Qt 小程序3.1 按钮的创建3.2 对象模型…

基于springboot的学生成绩管理系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&…

LeetCode第2题——两数相加(Java)

题目描述: ​ 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 ​ 请你将两个数相加,并以相同形式返回一个表示和的链表。 ​ 你可以假设除了数字 0 之外…

考研数据结构--数组与广义表

数组与广义表 文章目录 数组与广义表数组数组的基本概念性质数组的存储结构一维数组的存储结构二维数组的存储结构 特殊矩阵的压缩存储对称矩阵上三角矩阵下三角矩阵对角矩阵 稀疏矩阵定义稀疏矩阵的三元组表示稀疏矩阵的存储结构及其基本运算算法定义存入三元组三元组元素赋值…

ChatGPT in Drug Discovery

ChatGPT是OpenAI开发的一种语言模型。这是一个在大型人类语言数据集上训练的机器学习模型,能够生成类似人类语言文本。它可以用于各种自然语言处理任务,如语言翻译、文本摘要和问题回答。在目前的工作中,我们讨论了ChatGPT在药物发现中的应用…

矩阵乘法之叉乘和点乘

矩阵的乘法包含两种:点乘和叉乘。 矩阵点乘的含义是对应元素相乘,例如矩阵,同样存在矩阵, 那么. 矩阵叉乘含义与我们平时理解矩阵相乘一致,即一个矩阵A,若要与另外一个矩阵相乘,另另外一个矩阵的行数必须…

【iOS】NSOperation,NSOperationQueue

文章目录 前言概念使用NSOperation,NSoperationQueue的好处操作和操作队列操作(Operation)操作队列(Operation Queues) NSOperation,NSOperationQueue常用属性和方法归纳NSOperation常用属性和方法NSOperat…

阶乘求和,求 1 + 2 + 3 + ... + 202320232023 ,阶乘总和的末尾九位数字

求 1! 2! 3! … 202320232023! ,总和的末尾九位数字。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址:ht…

learn_C_deep_8 (循环语法的理解、void的用法以及理解)

目录 循环语法的理解 break关键字 continue关键字 continue跳转的位置 goto关键字 void的用法以及理解 void是否可以定义变量 为何 void 不能定义变量 void的应用场景 void 指针 循环语法的理解 for循环是一种常用的循环结构,它适合于在已知循环次数的情况…

ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程

目录 一、资料二、 指南环境配置两个基本原则&#xff08;最重要!!!!&#xff09;原则一&#xff1a;编写清晰、具体的指令**策略一&#xff1a;使用分隔符清晰地表示输入的不同部分**&#xff0c;**分隔符可以是&#xff1a;&#xff0c;""&#xff0c;<>&…

浅谈几个通信概念-如何理解卷积,负频率,傅里叶变换,奈奎斯特采样定理?

1.如何理解卷积&#xff1f; t时刻的输出信号是t时刻之前的无数小的脉冲序列冲击引起的。 2. 如何理解欧拉公式&#xff0c;复指数信号呢&#xff1f; 可以看成一个点在复平面上以角速度w进行逆时针的旋转。 傅里叶分析&#xff1a; 整体到部分&#xff0c;把一个信号分解成无…

【网络】socket套接字基础知识

文章目录 IP与端口号TCP/UDP协议网络字节流socket套接字接口总结 IP与端口号 IP 每台主机都有自己的IP地址&#xff0c;所以当数据从一台主机传输到另一台主机就需要IP地址。报头中就会包含源IP和目的IP 源IP地址&#xff1a;发送数据报那个主机的IP地址&#xff0c;目的IP地…

JMeter开发web及手机APP自动化脚本练习

一、打开浏览器代理服务器设置 我这里用的是360浏览器&#xff0c;打开浏览器代理服务器设置&#xff0c;端口要与jmeter中的端口设置保持一致哦。 二、JMeter设置代理 JMeter设置代理&#xff08;jmeter中的端口要与360浏览器端口设置保持一致哦。&#xff09; 三、启动代理运…

BM17 二分查找-I

二分查找-I_牛客题霸_牛客网 (nowcoder.com) 设置中间值mid 每次判断目标值和中间值的大小 缩短区间 直到区间全被搜索完成 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可 * * * param nums …

因子挖掘框架cs优缺点介绍和使用说明

cs框架的优点和缺点 优点和ts一样,就是速度非常快缺点有好几个:必须使用根据过去一定天数计算因子值,持有一定天数之后再平衡的模式;必须使用连续的数据,如果是期货期权等需要合成连续数据。资金不足的时候不会拒单。cs框架使用方法 设计理念 计算因子由用户进行计算,因…

Yolov7论文详解

论文地址&#xff1a;https://arxiv.org/pdf/2207.02696.pdfhttps://arxiv.org/pdf/2207.02696.pdf 项目地址&#xff1a; WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors (gith…

多进程多线程并发服务器代码实现

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

R语言:鉴于计算10亿以内训练模型记录for循环的加速

文章目录 1 前言2 几个循环2.1 100以内的和2.2 100以内奇数和/偶数和 3 多重循环3.1 向量化3.2 合并循环3.3 apply函数3.4 矩阵运算3.5 foreach分解任务 4 讨论 1 前言 笔者主力机是MBAM1芯片&#xff08;8256&#xff09;&#xff0c;某个下午巩固循环突然思考到个问题&#…

【Luenberger Observer】龙贝格观测器及示例Matlab仿真

目录 龙贝格观测器 龙贝格观测器示例和仿真 Matlab仿真 龙贝格观测器 观测器&#xff1a;根据系统的输入u和输出y估计系统的状态x。 SISO系统的状态空间方程如下 龙贝格观测器&#xff0c;通过在原系统添加基于输出误差校正项&#xff0c;构造状态空间方程&#xff0c;设x_h…

如何用Jmeter压测Netty的Echo服务之自定义Jmeter的Java Sampler

前言 如果想要压测一些三方组件&#xff0c;比如MQ&#xff0c;redis什么的&#xff0c;jmeter本身是不支持的。 本文以开发一个压测netty的echo示例&#xff0c;说明如何自定义jmeter的sampler。 开发 本文以idea示例&#xff0c; 新建工程 打开idea新建一个空的maven工程…