ELAI S.r.l.

AI 放在自己的电脑还是云端?如何比较成本

通过假设成本算例解释平衡点、容量、高峰和每项有用工作的成本,帮助明确选择本地或云端 AI 前需要验证什么。

AI 放在自己的电脑还是云端?如何比较成本

问题不是哪里一个词元更便宜

企业希望用助手阅读文档并准备回答。选择看似简单:按使用量支付远程服务,或购买并运营本地机器。前者有服务账单,后者似乎买完就免费。但维护人员、闲置时间和高峰能力可能改变选择。本文帮助运营和技术负责人先建立可核查的比较,再讨论品牌或模型。实际问题是:达到多少使用量时本地更便宜,而这些请求真的能被处理吗?

我们建立月度成本公式,推导盈亏平衡量,并加入容量约束。所有价格、数量和吞吐数字都是教学假设,不是当前价目表、报价或计算机实测。没有运行模型或负载测试,但实际执行了成本和敏感性计算,并保存结果和图表。结论不推荐供应商,而是说明应收集哪些证据,以及看似有利的比较何时仍不完整。

先确保两种服务可比

两条路径中的一次请求应代表相同工作:相同目标、可比较文档、最低质量和可接受响应时间。如果本地模型快但需要纠正,远程模型能完成任务,每次调用成本就不是等价服务比较。只统计词元,即模型处理的文本单位,也可能误导,因为任务与回答长度会变化。下文假设请求同质,实际应区分负载类别,或按真实案例组合计算加权平均成本。

FinOps Foundation 区分资源效率指标与工作结果指标。这有助于选择分母,但不证明云更便宜,也不证明 AI 对某企业有价值。本文公式和场景是我们的分析,不是该组织的结果。

分开可用性成本与使用成本

F 表示即使没有请求、为保持路径可用仍要承担的月成本,v 表示一次同质请求的平均增量成本。本地 F 可包括机器经济分摊、管理和预留容量,远程 F 可包括集成和最低承诺。人工不一定固定,能源不一定可变,应按实际行为分类。已有现金购买机器不意味着使用无成本,也不意味着没有其他用途的机会成本。

必须使用共同时间范围。不能不说明使用期限、维护和残值,就把初始采购与一个月账单比较。等效月成本和现金流回答不同问题。本例 F 只是设定月参数,不来自税务折旧或报价。初始费用应按透明假设分摊或单列,不能在同一总额里同时重复计入采购和该采购的分摊。

最简单的可验证模型

N 是月请求数,C 是当月欧元成本。下标 L 和 C 分别表示本地和云,F 单位为欧元每月,v 为欧元每请求。在固定月份内,公式把可用性与使用成本相加。假设 v 恒定、容量不跳变且请求组合相同。阶梯价格、折扣、缓存与自动扩缩需要不同函数,不能神奇地被一条通用直线吸收。

C_L(N) = F_L + v_L*N C_C(N) = F_C + v_C*N u(N) = C(N)/N, for N > 0

设 F_L = 600 欧元每月、v_L = 0.0002 欧元每请求,F_C = 50、v_C = 0.005,单位相同。这些虚构值用于说明机制。1000 次请求时,本地为 600.20 欧元,云为 55 欧元;除以一千得到包含固定成本的每请求 0.6002 和 0.055 欧元。零请求时成本仍为 600 与 50 欧元,但每请求成本未定义。无人使用时声称单位成本为零,会掩盖正要评估的闲置成本。

平衡点:受假设限制的阈值

令 C_L = C_C,把固定项和比例项分开,就能求相同成本的数量。如果本地固定成本更高但可变成本更低,使用量可补偿初始差异。只有 v_C 不等于 v_L 才能相除。可变成本相等时不存在这种阈值,由固定成本决定。结果若为负,不能说成需要达到的正客户数,而应检查 N 非负范围哪条曲线占优。

F_L - F_C = (v_C-v_L)*N_star N_star = (600-50)/(0.005-0.0002) N_star = 114583.3333... requests/month

连续平衡点约为每月 114583.33 次。按这些确切假设的整数请求计,从 114584 次开始本地更便宜。这不表示达到该需求就应购买机器,因为可行性尚未检查。计算只是明确需要验证的需求假设。100000 次为 620 对 550 欧元,云更低;200000 次为 640 对 1050,本地仅在成本模型中更低。表格保留更高数量,用来展示算术可能超出实际可行范围。

N/月本地(€)云(€)本地 €/次云 €/次N ≤ K (1/0)
0600.0050.00——1
1000600.2055.000.6002000.0550001
10000602.00100.000.0602000.0100001
100000620.00550.000.0062000.0055001
200000640.001050.000.0032000.0052501
1000000800.005050.000.0008000.0050500

最后一列 1 只表示 N 不超过名义 K,0 表示超过。它不评价模型质量或延迟达标。

便宜的机器可能能力不足

加入本地能力假设:每秒 0.5 请求,每月可用 160 小时。不声称真实模型或开发板达到此速度。速率乘时间只给出名义容量 288000 次,是在设定时间处理月需求的必要条件,不保证队列、内存或截止时间。按本地直线,一百万次形式上为 800 欧元,云为 5050,但已超过本地容量假设。这不是能服务一百万次请求的有效报价,必须重新计算具备能力的架构。

K = mu*H*3600 = 0.5*160*3600 = 288000 requests/month N <= K is necessary under the assumed service window

即使 200000 次低于月容量,也可能以不合适的方式到达。早晨每秒到达两次、处理 0.5 次时,该时段队列每秒增加 1.5 次。晚间闲置不能让早晨用户更早得到答复。可延迟非紧急任务、增加容量或采用混合路径,每种都会改变需求与成本。我们没有模拟此队列,也不报告延迟分位数。反例仅说明月平均不足以证明服务达标。

Reddi 等人 2019 年 11 月 v1 预印本 MLPerf Inference Benchmark 区分离线处理与延迟受限服务。它是历史方法参考,不是当前排名或本任务本地与云比较。我们没有复现其测试或结果。

估计错误会怎样改变结论?

本地固定成本常有争议:已有机器似乎免费,而有支持的系统可能比预期更耗人力。保持其他参数不变,F_L = 300 欧元时平衡约为 52083.33 次,1200 时为 239583.33。这不是三个产品估价,只隔离一个参数的影响。如此敏感,意味着报精确阈值前应测量并说明固定成本。更多小数不会让不确定假设更可信。

成本和平衡点来自虚构参数,本地超过 K 超出设定容量;不是供应商价格或硬件基准。
成本和平衡点来自虚构参数,本地超过 K 超出设定容量;不是供应商价格或硬件基准。

左图是计算曲线,不是报价。本地超过 288000 次的部分以虚线延伸,因为超过设定单服务名义容量,不能当成可实现价格。平衡点在容量之前,但不证明延迟或质量。右图三根柱展示固定成本改变时阈值移动。两图回答不同问题:曲线在哪里相交,以及该位置对假设多敏感。

从每调用成本到每可用任务成本

如果只有部分回答可用,分母就应改变。U 表示独立验证后可接受任务数,C/U 是每可用任务技术成本。若计入复核修复,应把对应成本加入分子。不能把模型分数视为正确概率,U 必须用两条路径相同标准观察。我们未运行模型评估,因此不报告 U。这项缺失证据对决策重要,不能用看似合理数字填补。

服务边界也要一致。推理价格可能不含检索、存储、传输、认证和搜索维护,本地可能需要备份、监控、更新和故障恢复。云端可能涉及配额、承诺、传输或合同依赖,应检查实际条款。不是说所有供应商都有这些费用,而是需要核实具体报价。敏感数据与访问应沿完整路径评估,“本地”不自动等于受保护,“云”也不能独自描述所有流向与策略。

决策前进行可复现比较

要把计算变成真实评估,应固定获准任务和结果接受标准。在各方案重复相同案例,记录模型与运行时版本、上下文规模、并发和设置。测量首次可见输出与可用完成时间,尽可能区分网络、排队和计算。记录中位数、分位数、错误、重试和纠正时间。这是未来测试说明,不是本次已有结果。协议还应保留失败与超范围案例,不只保留快速成功。

需求测试应超出平均值,包含长短请求、合理高峰与闲置。共享机器有其他进程使用内存时,不能按独占资源评估。若维护期间也需可用,应明确冗余和备用能力并重算 F 与 v。混合路径可让部分案例本地处理、其他远程处理,但路由、双重集成及两边都失败的案例有成本。若不用 AI 的流程能以可比质量和工作量完成任务,也应纳入。

代码证明什么,能支持什么选择?

程序用 Decimal 表示金额,计算六个数量,并用三种本地固定成本重算平衡点。过程确定,无需种子。断言检查 100000 次时云较低、200000 次时本地在设定直线中较低,并检查 288000 名义容量。算术精度不减少虚构价格的不确定性。JSON 与图表用于改假设、核算,不用于推断封面机器性能。封面是示意,不代表 EL-AI 安装项目。

现在无需口号就能回答:只有有用需求、可变成本差和容量允许,本地才可能补偿较高固定成本;云在低量可能有利,但不表示适合所有需求。本例平衡在 100000 与 200000 次之间,假设本地容量无法服务一百万次,高峰仍未验证。具体选择需要真实成本、等价任务与方案测试。我们未证明企业节省、投资回报或产品优越,只建立了揭示决策必要条件的可核查计算。

来源与可复现材料

FinOps Foundation — Unit Economics; consulted 28 October 2026.

Reddi et al. — MLPerf Inference Benchmark, arXiv:1911.02549v1, 6 November 2019; sections 4.5–4.7 and 6.

MLPerf Inference Benchmark — version-specific bibliographic record.

from decimal import Decimal as D
from pathlib import Path
import json,sys
# All costs and capacity are invented scenario inputs, not current vendor prices.
FL,FC=D('600'),D('50');VL,VC=D('.0002'),D('.005')
volumes=[0,1000,10000,100000,200000,1000000]
rows=[]
for n in volumes:
 local=FL+VL*n;cloud=FC+VC*n
 rows.append(dict(monthlyRequests=n,localEUR=str(local),cloudEUR=str(cloud),localEURPerRequest=str(local/n) if n else None,cloudEURPerRequest=str(cloud/n) if n else None))
break_even=(FL-FC)/(VC-VL)
assert FL+VL*100000>FC+VC*100000
assert FL+VL*200000<FC+VC*200000
assert FL+VL*114583>FC+VC*114583 and FL+VL*114584<FC+VC*114584
assert D('2')-D('.5')==D('1.5')
capacity=D('.5')*D('160')*3600
assert capacity==288000
sensitivity=[dict(localFixedEUR=str(f),breakEvenRequests=str((f-FC)/(VC-VL))) for f in [D('300'),D('600'),D('1200')]]
assert sensitivity[0]['breakEvenRequests'].startswith('52083.') and sensitivity[2]['breakEvenRequests'].startswith('239583.')
result=dict(sensitivity=sensitivity,python=sys.version.split()[0],seed=None,scope='Hypothetical equal-workload monthly cost arithmetic; no vendor quotation, hardware throughput, model quality or investment return measured',assumptions=dict(localFixedEUR=str(FL),cloudFixedEUR=str(FC),localVariableEURPerRequest=str(VL),cloudVariableEURPerRequest=str(VC),localAssumedRequestsPerSecond='.5',assumedHoursPerMonth='160'),breakEvenRequests=str(break_even),nominalMonthlyCapacityRequests=str(capacity),peakIncomingRequestsPerSecond='2',peakExceedsAssumedCapacity=True,rows=rows)
Path(__file__).with_name('results.json').write_text(json.dumps(result,indent=2),encoding='utf8')
print(json.dumps(result))

代码、数据与说明 · JSON. 教学计算使用 Python 3.14.0,图使用 Matplotlib 3.11.2。分析由 AI 辅助,不声称经过同行评审或人工审核。原创 ImageGen 封面仅作示意,不记录 EL-AI 人员、场所或实际安装。来源查阅于 2026 年 10 月 28 日。