生成式 AI 的爆发为我们带来了令人难以置信的工具。我们用大型语言模型 (LLM) 做所有事情,从编写代码到总结历史事件。但这种数字魔法伴随着物理成本。数据中心正迅速成为世界上最大的电力消耗者之一,随之而来的是,它们也成为了碳排放的重要贡献者。
当我们谈论 AI 的环境成本时,话题通常围绕训练展开——即用于教导像 GPT-4 或 Llama 2 这样模型的巨大的一次性能源消耗。然而,随着这些模型获得数百万日常用户,推理的能源成本——即向模型提问并获得答案的实际过程——有望超过训练,成为主要的排放源。
那么,我们该如何解决这个问题?我们要停止使用 AI 吗?我们要强迫每个人都使用更“笨”、更小的模型吗?
最近一篇题为 “SPROUT: Green Generative AI with Carbon-Efficient LLM Inference” 的研究论文提出了一个更明智的第三种选择。研究人员意识到,我们并不总是需要长篇大论的回答。通过在电网“肮脏” (高碳强度) 时智能地引导模型保持简洁,而在电网“清洁”时允许它们自由发挥,我们可以在不牺牲质量的情况下显著减少 AI 的碳足迹。
在这篇深度文章中,我们将探索 SPROUT,这是一个将生成式 LLM 推理的碳足迹减少 40% 以上的框架。我们将通过数学原理、架构和巧妙的工程设计来揭示它是如何做到这一点的。
问题所在: 不仅仅是模型大小的问题
要理解 SPROUT,我们首先需要了解推理请求中的碳排放来自哪里。
总碳排放量通常分为两类:
- 隐含碳排放 (Embodied Carbon): 制造硬件 (GPU、服务器) 所产生的排放。
- 运营碳排放 (Operational Carbon): 运行这些硬件所消耗的电力产生的排放。
研究人员用以下公式对单个用户请求的碳足迹 (\(C_{req}\)) 进行建模:

这里:
- \(CO_2^{\text{Intensity}}\) 是当地电网在当下的“肮脏”程度 (例如,煤电与风电的对比) 。
- \(E_{req}\) 是 GPU 回答你的提示词所消耗的能量。
- 第二项代表分摊到处理请求所需时间 (\(T_{req}\)) 内的隐含碳排放。
Token 的发现
传统观念认为,为了节省能源,应该使用较小的模型 (参数较少) 。一个 70 亿参数的模型自然比一个 700 亿参数的模型消耗更少的电力。
然而,研究人员发现了更微妙的关系。这不仅关乎模型有多大,还关乎它说了多少话 。
生成式 AI 是“自回归”的,意味着它一次生成一个单词 (token) 。GPU 必须为它生成的每一个 token 进行运算。研究人员进行了实证研究,比较了模型大小与输出长度的关系。

看看上面的图表。
- 图 (a) 显示较大的模型 (13B) 确实比 较小的模型 (7B) 每次请求排放更多的碳。这是意料之中的。
- 图 (b) 展示了关键的洞察。生成的 token 数量与碳排放之间存在严格的线性关系 。
这暗示了一个巨大的机会。如果我们能简单地让模型停止啰嗦——生成 50 个 token 而不是 100 个——我们实际上就将运营碳排放减半了。
“生成指令” (Generation Directive)
但是,如果我们缩减长度,会不会丢失信息?不一定。
LLM 默认通常都很健谈。它们可能会在回答前加上“这是您请求的信息……”或者提供过多的背景上下文。SPROUT 团队引入了 生成指令 (Generation Directives) 的概念。这些是系统级的指令 (对用户隐藏) ,用于指导模型的冗长程度。
- L0 (基线): 无指令。模型自然表现。
- L1 (简洁): 类似于“简明扼要地回答”的指令。
- L2 (非常简洁): 类似于“尽可能简短地回答”的指令。

如图 2(a) 所示,应用指令 (L1) 去除了废话但保留了正确答案。更重要的是, 图 2(b) 揭示了一个迷人的权衡: 一个带有简洁指令的较大模型 (13B) 实际上比运行默认设置的较小模型 (7B) 产生更少的碳排放,并实现更高的准确性。
这揭穿了“绿色 AI”必须是“小 AI”的迷思。我们可以保留大模型的智能;我们只需要控制它们的输出量。
SPROUT 框架
设计一个自动执行此操作的系统是很困难的。你不能让模型一直保持简短,因为有些复杂的问题需要详细的回答。此外,电网的“绿色程度”每小时都在变化。
SPROUT (Sustainable PRompting for Optimized User Traffic) 通过基于两个因素动态调整“生成指令”来解决这个问题:
- 实时碳强度: 电网现在是靠太阳能还是煤炭运行?
- 生成质量: 让回答变短会破坏其质量吗?
这是系统的高级架构:

让我们梳理一下流程:
- 用户 发送一个提示词 (Prompt)。
- 指令选择器 (Directive Selector) 为该提示词分配一个特定的“简洁级别” (L0、L1 或 L2) 。
- 优化器 (Optimizer) 在后台运行。它查看电网 API 和历史性能数据,以决定使用每个指令级别的概率。
- 推理服务器 使用选定的指令生成响应。
- 离线评估: 至关重要的是,SPROUT 扮演科学家的角色。它不断对其输出进行采样,并将其发送给“老师”模型 (如 GPT-4) 进行评分。“简洁版本是否丢失了重要信息?”这种反馈循环改进了未来的决策。
优化引擎
SPROUT 的核心是 生成指令优化器 (Generation Directive Optimizer) 。 它将问题视为一个线性规划挑战。
目标是找到一组概率 \(\mathbf{x} = [x_0, x_1, \dots, x_{n-1}]\)。
- \(x_0\) 是使用默认 (详细) 模式的概率。
- \(x_1\) 是使用“简洁”模式的概率。
- \(x_2\) 是使用“非常简洁”模式的概率。
系统求解 \(\mathbf{x}\) 以最小化总碳足迹。
目标函数:

这个方程最小化总碳排放 (\(f(\mathbf{x})\))。
- \(k_0\) 是当前的碳强度 (来自电网) 。
- \(\mathbf{e}^T\mathbf{x}\) 根据我们的指令组合计算预期的能源使用量。
- \(k_1\) 是隐含碳系数。
- \(\mathbf{p}^T\mathbf{x}\) 计算 GPU 被占用的预期时间。
然而,我们不能仅仅为了拯救地球就把“非常简洁”的概率设为 100%。那样会破坏用户体验。我们需要约束条件。
质量约束:

这个不等式确保预期质量 (\(\mathbf{q}^T\mathbf{x}\)) 保持在某个阈值以上。
- \(q_0\) 是基线 (详细) 模型的质量。
- 中间的项是一个动态的“容忍度”因子。
- 当碳强度 (\(k_0\)) 高时,系统放宽质量约束 (允许更简洁) 。
- 当碳强度 低时,系统收紧约束 (优先考虑高细节质量) 。
优化器将这些组合成标准的线性规划公式:

受限于概率约束:

这使得 SPROUT 能够在数学上平衡地球的需求与用户的需求。
实现: 指令如何工作
SPROUT 实际上是如何“告诉”模型要简短的?它将指令作为 系统提示词 (System Prompt) 注入。

如图 11 所示,系统获取用户的问题 (“哪位科学家提出了……”) ,并在将其发送给模型之前附加一个隐藏的系统指令 (“始终简短回答”) 。这是无缝的;用户永远看不到指令,只能看到高效的结果。
质量控制循环: 离线评估
SPROUT 最具创新性的功能之一是它衡量质量的方式。由于“质量”是主观的,SPROUT 使用一个更大、更聪明的 LLM (如 GPT-4) 作为裁判。
它获取用户查询的样本,在所有三个级别 (L0、L1、L2) 生成答案,并询问 GPT-4: “对于用户的问题,这些答案中哪一个是最好的?”

不过这里有个陷阱。查询 GPT-4 也是碳密集型的。如果我们评估得太频繁,我们制造的排放可能会比节省的还多!
SPROUT 使用 机会主义离线评估器 (Opportunistic Offline Evaluator) 。 它等待完美的时刻来运行这些评估。它寻找托管评估器的区域碳强度较低的时间窗口。
为了决定何时运行评估,它计算“紧急度调整后的碳强度” (\(k'_2\)):

这个方程平衡了两种对立的力量:
- 碳强度 (\(k_2\)): 我们希望等待它变低 (绿色能源) 。
- 经过的时间 (\(t - t_0\)): 我们等待的时间越长,我们的质量数据就越“陈旧”。紧急度因子 \(\beta\) 确保最终即使电网很脏,我们也会运行评估,但我们会努力等待绿色窗口。

图 5 完美地展示了这一点。系统监视碳强度曲线。它会忽略局部低谷,如果它们仍然太高 (红叉) 。它等待“金星”时刻——当紧急度足够高且碳排放足够低时。
它真的有效吗? (评估)
研究人员使用 Llama 2 13B 模型在真实数据集 (如 MMLU、ScienceQA 和 TriviaQA) 上测试了 SPROUT。他们模拟了五个不同地区的电网: 德克萨斯州、加利福尼亚州、南澳大利亚州、荷兰和英国。
碳节省与质量
结果令人信服。

图 6 显示,在所有五个地区,SPROUT 实现了 40% 到 60% 的碳节省 (绿色柱) 。值得注意的是,生成质量 (黄色柱) 始终保持很高——与基线相比,标准化偏好度保持在 90% 以上。
在可再生能源波动很大 (大量太阳能和风能) 的南澳大利亚 (SA),SPROUT 在削减超过 40% 的碳排放的同时,实现了近 95% 的质量保留。
SPROUT 与竞争对手对比
研究人员将 SPROUT 与其他策略进行了比较:
- BASE: 标准推理 (无优化) 。
- SPROUT_CO2: 激进地最小化碳排放 (忽略质量) 。
- MODEL_OPT: 在小模型 (7B) 和大模型 (13B) 之间切换 (一种常见的先前方法) 。
- ORACLE: 一个不可能的、知晓未来的完美系统。

图 7 可视化了这场竞争。理想的位置是 右上角 (高碳节省,高质量) 。
- SPROUT (绿星) 始终最接近 ORACLE (青色方块) 。
- MODEL_OPT (棕色) 表现尚可,但通常节省的碳较少,因为它忽略了 token 长度因素。
- SPROUT_CO2 (蓝色) 节省了最多的碳,但质量大幅下降 (向左漂移) 。
这证明了动态调整输出长度是比简单交换模型大小更有效的策略。
对电网的适应性
最酷的结果之一是看到 SPROUT 实时适应电网。

图 8 显示了每个请求的排放分布。
- 左图 (200 gCO2/kWh): 电网相对清洁。SPROUT 表现温和。
- 右图 (400 gCO2/kWh): 电网很脏。SPROUT 变得激进。绿色曲线向上移动,表明更多的请求正以显著更低的排放量 (更短的回答) 被处理。
与静态策略不同,SPROUT 在环境需要时会“勒紧裤腰带”。
评估开销
批评者可能会问: “GPT-4 评估器的碳成本会抵消节省的碳吗?”

图 10(a) 平息了这种担忧。由于智能的机会主义调度和所需的小样本量,所有地区的开销都 低于 1% 。 运行保持系统智能的质量检查几乎不需要成本。
季节性和稳健性
最后,研究人员验证了这不仅仅是特定天气模式的侥幸。他们使用 2 月、6 月和 10 月的电网数据进行了模拟。

图 13 显示了一致的性能。无论是冬天还是夏天,SPROUT 都能识别出简洁的最佳时机和详细的最佳时机,保持 40% 以上的节省幅度。
该系统还提供了一个可调节的“帕累托前沿 (Pareto Front)”。

图 14 展示了权衡曲线。如果系统管理员希望将质量置于一切之上 (在 X 轴上向右移动) ,SPROUT 仍然提供节省。如果他们想优先考虑绿色计算 (在 Y 轴上向上移动) ,SPROUT 可以在偏好度受控下降的情况下提供巨大的减排。
结论
SPROUT 框架代表了我们对“绿色 AI”思考方式的转变。多年来,焦点一直集中在硬件效率或缩小模型上。SPROUT 证明,我们仅仅通过 改变我们要求模型表现的方式 就能实现巨大的效率提升。
通过认识到:
- 碳排放与 token 长度呈线性关系,
- 用户并不总是需要冗长的回答,以及
- 电网的清洁度是波动的,
SPROUT 创造了一个 AI 可以可持续扩展的系统。它在不需要新硬件或重新训练模型的情况下,将推理的碳足迹减少了 40% 以上。随着我们迈向 AI 代理全天候运行的未来,像 SPROUT 这样使软件具备“电网感知”能力的解决方案,对于防止我们的技术进步以牺牲地球为代价将至关重要。
](https://deep-paper.org/en/paper/file-3661/images/cover.png)