PHP课程限时特价
PHP一对一教学
PHP全栈开发

采用OpenAI还是DIY?揭开自托管大型语言模型的真实成本

WBOY   2024-04-22 18:01   1045浏览 转载

采用OpenAI还是DIY?揭开自托管大型语言模型的真实成本

你的服务标准已被定位为“ai驱动”,通过整合大型语言模型。你的网站首页自豪地展示了你的ai驱动服务带来的革命性影响,通过互动演示和案例研究。这也是你公司在全球genai领域留下的第一个印记。

你的小而忠实的用户基础正在享受提升后的客户体验,并且你可以看到未来增长的潜力。然而,在这个月进入第三周时,你收到了一封来自OpenAI的邮件,让你大吃一惊:

就在一周前,你还在与客户交谈,评估产品市场契合度(PMF),现在,成千上万的用户涌到你的网站(如今在社交媒体上任何事情都可能变得病毒式传播),并使你的AI驱动服务崩溃。

结果,你曾经可靠的服务不仅让现有用户感到沮丧,也影响了新用户。

一个快速而显而易见的解决办法是通过增加使用限制立即恢复服务。

然而,这个临时解决方案带来了不安感。你不禁感到自己被锁定在对单一供应商的依赖中,对自己的AI及其相关成本控制有限。

“我应该自己动手吗?”你问自己。

你已经知道了开源的大型语言模型(LLMs)已经成为现实。在Hugging Face这样的平台上,成千上万的模型可供即时使用,这为自然语言处理的开展提供了可能性。

然而,你遇到的最强大的LLMs拥有数十亿参数,达到数百千兆字节,并且需要大量努力才能扩展。在一个需要低延迟的实时系统中,你不能像使用传统模型那样简单地将它们插入你的应用程序。

尽管你对团队建设必要基础设施的能力充满信心,真正的关注点在于这种转变的成本含义,包括:

  • 微调成本
  • 托管成本
  • 服务成本

所以,一个重大的问题是:你是应该增加使用限制,还是应该走自托管,也就是所谓的“拥有”路线?

使用Llama 2做一些计算

首先,不要急。这是一个重大决定。

如果你咨询你的机器学习(ML)工程师,他们可能会告诉你,Lama 2是一个开源LLM,看起来是一个不错的选择,因为在大多数任务上它的表现与你目前使用的GPT-3一样好。

你还会发现,这个模型有三种规模大小——70亿、13亿和7亿参数——你决定使用最大的70亿参数模型,以保持与你目前使用的OpenAI模型的竞争力。

LLaMA 2使用bfloat16进行训练,因此每个参数消耗2字节。这意味着模型大小将是140 GB。

如果你认为这个模型调整起来很大,不用担心。使用LoRA,你不需要在部署前对整个模型进行微调。

事实上,你可能只需要微调总参数的约0.1%,即70M,这在bfloat16表示下消耗0.14 GB。

令人印象深刻,对吧?

为了在微调期间适应内存开销(如反向传播、存储激活、存储数据集),最好维持的内存空间是可训练参数消耗的大约5倍。

让我们来详细分析一下:

在使用LoRA时,LLaMA 2 70B模型的权重是固定的,因此这不会导致内存开销 → 内存需求 = 140 GB。

然而,为了调整LoRA层,我们需要维持0.14 GB * (5倍) = 0.7 GB。

这样在微调期间总共需要约141 GB的内存。

假设你目前还没有培训基础设施,我们假设你更喜欢使用AWS。根据AWS EC2按需定价,计算成本约为每小时2.8美元,因此微调的成本约为每天67美元,这并不是一个巨大的费用,因为微调不会持续很多天。

人工智能与餐厅正相反:主要成本在于服务而非准备

在部署时,你需要在内存中维护两个权重:

  • 模型权重,消耗140 GB内存。
  • LoRA微调权重,消耗0.14 GB内存。

总共是140.14 GB。

当然,你可以取消梯度计算,但仍然建议维持大约1.5倍的内存 — 大约210 GB — 以应对任何意外的开销。

再次基于AWS EC2按需定价,GPU计算的成本约为每小时3.70美元,即保持模型在生产内存中并响应传入请求的成本约为每天90美元。

这相当于每月约2700美元。

另一个需要考虑的事情是,意外故障总是会发生。如果你没有备用机制,你的用户将停止接收模型预测。如果你想防止这种情况发生,你需要维护另一个冗余模型,以防第一个模型请求失败。

因此,这将使你的成本达到每天180美元或每月5400美元。你几乎接近目前使用OpenAI的成本了。

在什么情况下,OpenAI和开源模型的成本会打平?

如果你继续使用OpenAI,以下是每天你可以处理的单词数量,以匹配上述使用LLaMA 2的微调和服务成本。

根据OpenAI的定价,微调GPT 3.5 Turbo的成本为每1000个令牌0.0080美元。

假设大多数单词有两个令牌,为了匹配开源LLaMA 2 70B模型的微调成本(每天67美元),你需要向OpenAI模型提供大约415万个单词。

通常,A4纸上的平均字数为300,这意味着我们可以向模型提供大约14,000页的数据以匹配开源微调成本,这是一个巨大的数字。

你可能没有那么多的微调数据,所以使用OpenAI进行微调的成本总是较低。

另一个可能很明显的点是,这种微调成本不是与训练时间相关,而是与模型微调的数据量相关。在微调开源模型时情况并非如此,因为成本将取决于数据量和你使用AWS计算资源的时间。

至于服务成本,根据OpenAI的定价页面,一个经过微调的GPT 3.5 Turbo的输入成本为每1000个令牌0.003美元,输出为每1000个令牌0.006美元。

我们假设平均每1000个令牌0.004美元。要达到每天180美元的成本,我们需要通过API每天处理大约2220万个单词。

这相当于超过74,000页的数据,每页300个单词。

然而,好处是你不需要确保模型全天候运行,因为OpenAI提供了按使用付费的定价。

如果你的模型从未被使用,你就不需要支付任何费用。

总结:何时拥有才真正有意义?

一开始,转向自托管AI可能看起来是一个诱人的尝试。但要小心随之而来的隐藏成本和头痛问题。

除了偶尔失眠的夜晚让你纳闷你的AI驱动服务为何会宕机之外,如果使用第三方提供商,几乎所有在生产系统中管理LLMs的困难都会消失。

特别是当你的服务不是主要依赖于“AI”,而是依赖于AI的其他东西时。

对于大企业来说,每年65,000美元的拥有成本可能只是杯水车薪,但对于大多数企业来说,这是一个不能忽视的数字。

此外,我们不应忘记其他额外费用,如人才和维护,这些可以轻松将总成本增加到每年200,000至250,000美元以上。

当然,从一开始就拥有模型有其好处,比如保持对你的数据和使用的控制。

但是,要使自托管变得可行,你将需要用户请求量远远超过每天大约2220万个单词的标准,并且需要同时具备管理人才和后勤的资源。

对于大多数用例来说,拥有模型而不是使用API在财务上可能并不划算。

声明:本文转载于:51CTO.COM,如有侵犯,请联系admin@php.cn删除