你自豪地将你的服务标榜为“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在财务上可能并不划算。