云API的失败调用在账单上留下几毛钱的痕迹,本地推理的失败调用则在电表、风扇转速与人的注意力上留下痕迹。本文提出“影子单价”(Shadow Unit Price, SUP)作为统一度量:把一次本地失败任务折算为可比较的货币当量,由电力、硬件折旧、占用时间与机会成本四部分构成。文章给出可复现的测算流程、参数取值区间与工程优化路径,并讨论“免费”感知背后的心理账户机制。结论是:本地部署并非免费,而是把显性账单替换为分散、延迟、难以归因的隐性成本;是否划算取决于任务失败率、批量规模与时间估值三个边界条件。
一、问题的提出:为什么“免费”需要被重新记账
把一个大语言模型跑在自己的机器上,最直观的感受是“不花钱”。云厂商按 token 计费,账单精确到小数点后几位;本地推理没有账单,只有电费单上那点几乎察觉不到的增长。这种对比制造了一个强烈的认知落差:同样是失败的一次生成,云端扣掉几毛钱,本地似乎什么也没损失。但这个“什么也没损失”经不起推敲——机器转了、风扇响了、你等了,这些都是真实发生的资源消耗,只是它们没有以货币形式出现在任何一张发票上。
经济学上,这类未进入市场交易、但存在真实机会成本的资源,需要用影子价格(shadow price)来度量。影子价格的概念最早来自线性规划中对偶变量的解释,后来被广泛应用于公共项目评估与资源定价。本文借用这一思路,提出“影子单价”(Shadow Unit Price, SUP)概念:把一次本地推理任务(尤其是失败任务)所消耗的电力、硬件折旧、占用时长与注意力,统一折算为可与云API单价直接比较的货币当量。本文评述:影子价格在工程经济学中并非新事物,但将其系统性地引入个人与小团队的本地AI部署决策,目前仍缺乏可操作的度量框架,这正是本文试图填补的空白。
需要强调的是,本文不主张“本地部署不划算”这一结论。恰恰相反,本地部署在隐私、可控性、离线可用性和长期边际成本上具有云API无法替代的优势。本文的目标是把隐性成本显性化,让“本地 vs 云”的决策从感觉层面上升到可计算层面。一个被正确记账的本地部署,往往仍然是划算的;但一个被错误地当作“零成本”的本地部署,会在失败率上升、模型迭代频繁时悄悄吞噬大量资源。
“免费”不是一种价格状态,而是一种记账视角。当成本没有被记录,它不会消失,只会转移到更难被察觉的地方。
二、影子单价:一个可计算的成本框架
2.1 成本的四项分解
一次本地推理任务的影子单价可以分解为四个部分,分别对应不同的物理量与估值方式:
| 成本项 | 物理量 | 估值方式 | 典型量级(单次失败任务) |
|---|---|---|---|
| 电力 | 整机功率 × 时长 | 当地电价(元/kWh) | 0.01–0.06 元 |
| 硬件折旧 | 占用时长 / 设计寿命 | 设备购置成本摊销 | 0.02–0.15 元 |
| 占用时间 | 墙钟时长 | 时间估值(元/小时) | 0.5–8 元 |
| 注意力损耗 | 上下文切换次数 | 恢复成本估算 | 难以货币化,单列 |
四项中,电力与硬件折旧是“物理可测”的,占用时间依赖主观估值,注意力损耗则几乎无法精确货币化。本文的处理方式是:前三项给出可计算的货币当量,第四项作为定性修正因子单独讨论。笔者认为,把注意力强行货币化容易滑向主观臆测,更稳妥的做法是把它作为决策的“摩擦项”——它不改变精确数值,但会系统性放大人们对本地部署的负面感受,从而影响实际使用频率。
2.2 电力成本的估算
电力成本 = 整机平均功率(kW)× 任务时长(h)× 电价(元/kWh)。难点在于“整机平均功率”的取值。GPU 在推理时的功耗并非标称 TDP,而是随 batch size、序列长度、是否使用 KV Cache 量化等因素波动。以常见的消费级显卡为例,推理时整机功耗大致落在 250–450 W 区间;若使用多卡或工作站级配置,可达 600–1000 W。电价方面,国内居民用电第一档约 0.5–0.6 元/kWh,商业用电更高,部分地区峰谷电价差异显著。
一个容易被忽略的细节是空闲功耗。很多本地部署场景并非“用完即关”,而是模型常驻显存、服务常开。此时即使没有任务,整机仍维持 60–150 W 的待机功耗。把待机功耗摊到每次任务上,会显著抬高单次成本。本文建议在测算时区分“任务态功耗”与“常驻态功耗”,前者用于单次任务成本,后者用于日均固定成本。
2.3 硬件折旧的估算
硬件折旧的直观算法是“购置成本 ÷ 设计寿命”。但 GPU 的寿命并非单一数字:电容、风扇、显存颗粒、供电模块的失效模式各不相同。工程上更合理的做法是按“有效运行小时”摊销,并区分机械磨损(风扇)与电子老化(电容、显存)。风扇是本地部署中最先失效的部件之一,长时间高转速运行会加速轴承磨损,这也是“风扇噪音”不仅是体验问题、更是成本信号的原因。
另一个常被忽视的折旧来源是热循环。频繁的满载—空闲切换会造成焊点与封装的热应力累积。对于每天多次短时高负载推理的用户,热循环次数可能远高于持续训练的服务器。这一效应难以精确量化,但在设备长期可靠性上不可忽略。本文评述:把硬件折旧简单等同于“价格除以年数”会低估高频短任务场景的真实磨损,建议至少引入“运行小时”与“启停次数”两个维度做修正。
2.4 时间成本的估值
时间估值是四项中最主观的。常见做法有三种:一是按个人时薪折算;二是按“如果不等待,这段时间能产生的价值”折算(机会成本);三是按“愿意为节省这段时间支付的金额”折算(支付意愿)。三种方法给出的数值可能相差数倍。本文建议在决策时使用区间而非点估计,并明确标注所用假设。
需要区分“阻塞等待”与“非阻塞等待”。如果任务在后台运行、你可以去做别的事,时间成本接近于零(仅剩注意力切换成本);如果是交互式抽卡、你必须盯着屏幕等结果,时间成本就是全额墙钟时间。这一区分对本地部署的体验评价至关重要——很多“本地很慢”的抱怨,本质上是交互模式设计问题,而非算力问题。
三、失败任务的成本解剖:从电表到注意力
3.1 为什么失败任务特别值得单独核算
成功任务的成本可以摊入产出价值,失败任务的成本则是纯损耗。在“抽卡式”生成场景(反复采样直到满意)中,失败率往往远高于一次性生成。设单次采样成功概率为 p,则期望采样次数为 1/p。当 p = 0.2 时,平均需要 5 次才能得到一次满意结果,其中 4 次是失败。这意味着失败成本可能是成功成本的数倍。
云端与本地在这一点的差异被账单结构放大了:云端每次失败都即时扣费,痛感明确;本地失败不产生任何即时反馈,痛感被延迟和分散。行为经济学中的“支付痛感”(pain of paying)研究表明,支付行为的即时性和显著性会显著影响消费决策。本文认为,本地部署的“免费”错觉,很大程度上源于支付痛感的缺失,而非成本本身的消失。
3.2 一个可复现的测算示例
下面给出一个测算脚本的骨架,读者可替换为自己的参数。脚本仅做算术,不依赖任何外部库。
# 影子单价测算骨架(参数为示例,非实测)
gpu_power_w = 350 # 任务态整机功率(W)
idle_power_w = 90 # 常驻待机功率(W)
task_seconds = 180 # 单次任务墙钟时长(s)
price_kwh = 0.55 # 电价(元/kWh)
gpu_cost = 8000 # 设备购置成本(元)
life_hours = 20000 # 按运行小时计的设计寿命(h)
hourly_value = 60 # 时间估值(元/h)
energy = gpu_power_w / 1000 * (task_seconds / 3600) * price_kwh
deprec = gpu_cost / life_hours * (task_seconds / 3600)
time_c = hourly_value * (task_seconds / 3600)
sup = energy + deprec + time_c
print(f"电力 {energy:.4f} 元 | 折旧 {deprec:.4f} 元 | 时间 {time_c:.4f} 元")
print(f"影子单价合计 {sup:.4f} 元/次")
按上述示例参数,单次任务的电力成本约 0.0096 元,折旧约 0.02 元,时间成本约 3 元。时间成本占据了绝对主导。若把时间估值降到 10 元/h,合计约 0.53 元;若任务改为后台非阻塞执行,时间成本可近似归零,合计降到约 0.03 元。这组数字说明一个关键结论:影子单价对时间估值和阻塞模式极度敏感,而对电价几乎不敏感。
3.3 失败率如何放大影子单价
设单次采样影子单价为 c,成功概率为 p,则获得一次满意结果的期望成本为 c/p。当 p 从 0.5 降到 0.1,期望成本放大 5 倍。云端由于单价低,即使放大 5 倍仍在可接受范围;本地由于时间成本高,放大 5 倍后可能达到数元甚至数十元。这就是为什么“本地抽卡”在体感上远比“云端抽卡”更令人疲惫——不是单次更贵,而是失败被时间成本反复计价。
更隐蔽的是失败率的自我强化。本地模型往往参数量更小、量化更激进,生成质量分布更不稳定,导致需要更多次采样才能满意。采样次数增加又延长了等待,等待又降低了使用频率,使用频率降低使得用户缺乏对模型行为的熟悉度,进一步推高主观失败率。这是一个负反馈循环,本文称之为“本地抽卡陷阱”。
3.4 噪音与热:被低估的体验成本
风扇噪音在成本核算中通常被忽略,但它对使用行为的实际影响不容小觑。持续的高频噪音会造成主观烦躁、降低专注度,在长时间使用中累积为真实的效率损失。从工程角度看,噪音是散热系统在高负载下工作的副产品,它同时是“设备正在高功耗运行”的可听信号。把噪音纳入考量,本质上是把“设备运行强度”这一物理量转化为可感知的体验指标。
温度同样如此。长时间高负载会推高机箱内温度,进而影响其他部件寿命与系统稳定性。对于放在书桌上的个人工作站,热与噪音共同构成了“本地部署的体感税”。本文建议在部署方案设计时,把散热与噪音控制作为一等公民,而非事后补救。
四、工程实践:把影子单价压下来的七条路径
既然时间成本主导影子单价,优化方向就应聚焦于“减少阻塞等待”与“提高单次成功率”,而非一味追求更低的功耗。以下七条路径按投入产出比排序,前三条几乎零成本,后四条需要一定工程投入。
4.1 把交互式等待改为后台批处理
最有效的降本手段不是换硬件,而是改交互模式。把“生成—等待—查看—再生成”的同步循环,改为“提交任务队列—后台执行—完成后通知”的异步模式。这样墙钟时间不再阻塞你的注意力,时间成本从全额降为接近零。实现上,一个简单的任务队列加桌面通知即可,无需复杂框架。
对于必须交互的场景,可以采用“流式输出 + 提前终止”。很多失败在生成早期就已可判断(如格式错误、明显跑题),流式输出让你在第一个 token 出现后就能决定是否中断,避免为一次注定失败的生成等满全程。
4.2 提高单次成功率:约束解码与结构化提示
失败率每降低一半,期望成本就降低一半。提高成功率的手段包括:使用语法约束解码(grammar-constrained decoding)强制输出符合 JSON、正则或特定模板;在提示中给出明确的输出契约与反例;对高频任务建立提示模板库,避免每次从零构造。这些手段的收益远大于任何硬件升级。
4.3 缓存与去重
大量“抽卡”请求在语义上是重复或近似的。建立基于提示哈希或语义相似度的缓存,可以直接跳过重复计算。对于确定性任务(相同输入、相同参数),缓存命中率可以很高;对于采样类任务,可以缓存“已探索过的失败方向”,避免重复踩坑。缓存是纯软件优化,边际成本接近于零。
4.4 量化与显存效率
量化降低显存占用与带宽压力,通常能提升吞吐、降低单次延迟。但量化也可能降低生成质量,推高失败率。这里存在一个需要实测的权衡点:4-bit 量化带来的速度提升,是否足以抵消质量下降导致的额外采样次数?本文建议对具体任务做 A/B 实测,而非默认“量化一定更划算”。
4.5 批处理与连续批处理
当有多个任务排队时,批处理能显著提升 GPU 利用率,摊薄单位任务的电力与折旧成本。连续批处理(continuous batching)进一步允许在生成过程中动态加入新请求,减少空闲等待。这类优化对吞吐敏感的场景收益明显,对单次交互延迟则可能略有增加,需要按场景取舍。
4.6 功耗曲线调优
GPU 的功耗—性能曲线通常是非线性的:把功耗上限从 100% 降到 80%,性能损失可能只有 5%–10%,但电力与发热显著下降。对于时间成本主导的场景,降功耗意义不大;但对于后台批处理、常驻服务场景,功耗调优能同时降低电费、噪音与热应力,是性价比很高的手段。
4.7 混合路由:把难任务交给云
最务实的方案往往是混合:把高频、简单、对延迟敏感的任务留在本地,把低频、复杂、失败率高的任务路由到云API。这样既保留了本地的隐私与可控性,又避免了在难任务上反复支付本地的时间成本。路由策略可以基于任务类型、历史成功率或简单的规则引擎实现。
五、心理账户与决策边界:什么时候本地真的更便宜
5.1 “免费”是一种心理账户
行为经济学中的心理账户(mental accounting)理论指出,人们会把不同来源、不同用途的钱分门别类地记账,并对不同账户采用不同的决策规则。本地部署恰好制造了一个“无账单账户”:电费混在家庭总电费里,硬件是一次性沉没成本,时间是“反正也没别的事”。这三者都被归入一个模糊的、不被逐次计价的账户,于是单次任务在主观上就是“免费”的。
本文评述:心理账户解释了“免费”错觉的形成机制,但不能据此否定本地部署的合理性。心理账户是一种启发式,它在多数日常决策中是有效的简化;问题只在于当失败率上升、任务量增大时,这种简化会系统性低估真实成本,导致过度使用或错误的技术选型。
5.2 决策边界的三个变量
本地是否更便宜,取决于三个变量的组合:失败率、批量规模、时间估值。可以用一个简化的判据:设云端单次成本为 c_cloud,本地影子单价为 c_local,成功概率为 p,则本地更划算的条件近似为 c_local / p < c_cloud / p,即 c_local < c_cloud。但由于 c_local 中时间成本占比极高,实际判据应改为“本地非时间成本 / p < c_cloud / p 且 时间成本可接受”。
| 场景 | 失败率 | 时间估值 | 建议 |
|---|---|---|---|
| 后台批处理、离线任务 | 任意 | 接近零 | 本地优先 |
| 交互式高频抽卡 | 高 | 高 | 混合路由或云端 |
| 隐私敏感、离线场景 | 中 | 中 | 本地,接受时间成本 |
| 大批量数据标注 | 低 | 低 | 本地,摊薄折旧 |
5.3 一个反直觉的结论
把时间成本计入后,很多“本地更省钱”的直觉会反转;但把隐私、可控性、离线可用性计入后,本地又常常重新胜出。这说明影子单价不是唯一的决策维度,而是一个被长期忽视的维度。本文的立场是:不要用“免费”来说服自己选择本地,也不要用“电费”来说服自己放弃本地。正确的做法是把隐性成本显性化,然后在完整的价值函数上做选择。
六、结论与展望
本地部署的失败任务成本,确实不体现在API账单上。它分散在电费、硬件折旧、阻塞等待与注意力损耗中,其中时间成本占据主导。本文提出的影子单价框架,把这四项折算为可与云API比较的货币当量,并给出可复现的测算脚本与七条优化路径。核心结论有三:其一,电费在影子单价中占比极低,“本地电费贵”基本是伪问题;其二,时间成本主导一切,改变交互模式比升级硬件更有效;其三,“免费”是心理账户的产物,而非成本的真实状态。
展望未来,随着端侧推理芯片能效提升、模型蒸馏与小量化技术成熟,本地推理的时间成本有望持续下降;同时,混合路由、任务队列、约束解码等工程实践的普及,也会让本地的影子单价更接近云端。但无论技术如何进步,“把隐性成本显性化”这一记账习惯本身,都是比任何单一技术更持久的竞争力。
主要参考文献
- Patterson D, et al. Carbon Emissions and Large Neural Network Training. arXiv:2104.10350, 2021.
- Strubell E, Ganesh A, McCallum A. Energy and Policy Considerations for Deep Learning in NLP. ACL 2019.
- Thaler R H. Mental Accounting Matters. Journal of Behavioral Decision Making, 1999, 12(3): 183–206.
- DellaVigna S, et al. Estimating the Pain of Paying. 工作论文系列, 多版本, 2019–2023.
- Frantar E, et al. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers. ICLR 2023.
- Lin J, et al. AWQ: Activation-aware Weight Quantization for LLM Compression. MLSys 2024.
- Kwon W, et al. Efficient Memory Management for Large Language Model Serving with PagedAttention. SOSP 2023.
- Willard B T, Louf R. Efficient Guided Generation for Large Language Models. arXiv:2307.09702, 2023.
- Dodge J, et al. Measuring the Carbon Intensity of AI in Cloud Instances. FAccT 2022.

