推理网博客 异步请求:降低 LLM 成本的缺失模式 --- Inference.net Blog Asynchronous Requests The Missing Mode That Slashes Llm Costs - 知识铺
大多数团队将 LLM 调用视为要么是同步的 (现在给我答案)要么是批量的 (今晚运行整个数据集)。然而,对于某些工作负载来说,批量推理并不适用,这就是我们为什么要引入一种新的 LLM 请求类型:一个_异步的_请求。
异步请求 – 一旦空闲 GPU 可用,就会完成。
以下是关于为什么这很重要以及如何今天使用 Inference.net 来实现它的 5 分钟解释。
为什么“同步”是昂贵的
从 OpenAI/Anthropics 到 Inference.net 这样的 OS LLM 提供商,所有无服务器推理服务都面临同样的问题——有时你会看到使用量的大幅波动,而扩展现有的 GPU 来处理所有请求却很难,这可能导致一些请求失败。个人用户购买信用额度,并期望能够随时进行 LLM 推理。他们可能会以允许的速率尽可能快地发送请求,或者等待一段时间后再发送请求,并期望在他们决定进行推理时,容量是充足的。
在交互式端点中,唯一降低错误率的方法是保持 GPU 处于预热状态并等待。问题是,租用和低效使用 GPU 是昂贵的,这些成本最终转嫁给了用户。
行业调查将平均利用率放在 15%-40%的范围内,这意味着你正在为大量的闲置时间付费(DevZero,LinkedIn)。这种浪费的容量最终被纳入所有提供的 LLM 模型的价格中。
这也是为什么大多数 LLM 提供商都有极其严格的速率限制——他们根本无法在保持可靠性的同时处理推理的突然增加,而且他们的错误容忍度通常出人意料地低。那么,如果你需要成千上万甚至数百万次请求来丰富你的数据库,你该怎么办呢?
批处理作业有所帮助——但可能不是最佳选择
批处理 API 允许你上传一个巨大的文件,并获得一张单价的折扣账单。从定价角度来看,批处理对双方来说实际上都非常出色。用户可以得到折扣,而 LLM 推理提供商则可以利用整天未充分利用的容量。
批处理对于处理大型数据集,如分类或合成数据集生成等任务非常出色,但通常你只是想处理一个请求并更新你的数据库。你不需要即时响应(实际上等待即时响应可能会实际上使用宝贵的服务器资源),但你也不想担心将 LLM 请求累积成一个大批次!
对于许多不需要即时响应的产品,开发者要么:
- 人为地等到午夜才运行批量操作(需要管理请求和构建整个工作流程,如果批量操作因某些原因失败,风险很高),要么
- 继续通过同步调用烧钱。
遇见异步请求
一个_异步_请求只是一个普通的 API 调用,它说:
“这是我的有效载荷。我不在乎答案两分钟后还是10小时后回来——只要便宜就行。”
因为提供商可以将这些工作滑入空闲的 GPU 间隙(与批量处理相同),价格就会下降,并且基本上不需要速率限制。一天处理 10M 异步请求比 10 分钟内处理 5k 请求要容易得多,尽管后者的请求/秒数要高得多。
这些’异步’请求对开发者来说更加方便,他们可以设置一个 webhook 端点来在 inference.net 仪表板中接收响应,并等待请求到来。
使用 /v1/slow
在 Inference.net 上
from openai import OpenAI # OpenAI SDK works out of the box
client = OpenAI(
base_url="https://api.inference.net/v1/slow", # only change
api_key=os.getenv("INFERENCE_API_KEY"),
)
job = client.chat.completions.create(
model="meta-llama/llama-3.2-1b-instruct/fp-8",
messages=[{"role": "user", "content": "Summarize War and Peace in 10 bullets"}],
metadata= {
"webhook_id": "AhALzdz8S"
}
)
print(job.id) # store this for later
调用立即返回一个 请求 ID。当 GPU 处理能力较低(可能是立即或最多 24 小时后),获取结果:
curl https://api.inference.net/v1/generation/$ID \
-H "Authorization: Bearer $INFERENCE_API_KEY"
或者,更有可能的是,在您的 webhook 端点接收响应!
当异步调用有意义时
- 大规模内容生成(翻译、合成数据、SEO 内容、丰富化)
- 异步丰富化任务(公司数据查询、文档嵌入)
一些可能从异步请求中受益的应用示例
同步(亚秒级或流式)
- 支持小部件的实时聊天完成
- IDE 中的代码自动补全
- 用户发布消息前的实时策略过滤
批量(按计划的大负载)
- 夜间将该日文章批量翻译成20种语言
- 每周对模型进行一次重新训练,评分 10M 条评论以刷新嵌入
- 月底合同审计,对每个新的 PDF 文件运行 LLM 以检查合规性标志
异步(一次性调用,无需等待响应)
- 用户资料丰富化:当有人注册时,启动一个低成本的异步请求来总结他们的 LinkedIn/GitHub 资料,并存储起来以备后续个性化使用
- 背景标签化:每个新上传的 PDF 文件都会被发送到
/v1/slow
进行关键词提取;标签在准备好后进入您的数据库 - 异步情感/语气评分:每封客户邮件都会收到一个异步请求来标注情感,这样就不会阻塞支持代理人的工作,同时为分析仪表板提供数据
为什么异步请求可能比同步请求更好
对于同步请求,我们需要等待响应。通常,你最终会为这段等待时间付费(我个人因为等待缓慢的异步请求,已经产生了超过 10k 的 Vercel 函数持续时间费用)。异步请求不需要你等待响应,因此处理大量请求要简单得多。除此之外,你还能节省成本并提高可靠性。如果你不需要即时结果,这真的是不言而喻的。
便宜多少?
Inference.net 目前将异步推理的价格定在同步价格的 10%以下,但如果你预计会有大量工作负载,请联系我们,我们可能能够提高这个数字。
TL;DR
- 同步用于用户体验, 批量用于大型离线作业。
- 其他呢? 异步请求。
- 它们是即插即用的(
/v1/slow
),对 webhook 友好,还能帮你削减 LLM 账单。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai/post/202510/%E6%8E%A8%E7%90%86%E7%BD%91%E5%8D%9A%E5%AE%A2-%E5%BC%82%E6%AD%A5%E8%AF%B7%E6%B1%82%E9%99%8D%E4%BD%8E-LLM-%E6%88%90%E6%9C%AC%E7%9A%84%E7%BC%BA%E5%A4%B1%E6%A8%A1%E5%BC%8F---Inference.net-Blog-Asynchronous-Requests-The-Missing-Mode-That-Slashes-Llm-Costs/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com
See Also
- 推理网博客 你需要模型蒸馏吗 --- Inference.net Blog Do You Need Model Distillation - 知识铺
- 推理网博客 开源模型经济学 --- Inference.net Blog Open Source Model Economics - 知识铺
- Inference.net 博客 剩下的就是蒸馏 --- Inference.net Blog What S Left Is Distillation - 知识铺
- Inference.net 博客Cliptagger 12b --- Inference.net Blog Cliptagger 12b - 知识铺
- Inference.net 博客将 LLM 推理成本降低到电费水平 --- Inference.net Blog Arbitraging Down Llm Inference To The Cost Of Electricity - 知识铺