商汤算电协同Agent与TPW新指标:从PUE到Tokens Per Watt的AIDC系统级算效革命深度解析
一、引言:AI基础设施的度量衡革命
2026年7月17日,在WAIC 2026"构筑AI算力与绿色能源融合发展新范式"算电协同专题研讨会上,商汤大装置发布了一项可能改变行业游戏规则的产品——算电协同Agent。但真正值得关注的,不是这个Agent本身,而是它背后提出的一个全新评价指标:TPW(Tokens Per Watt)——单位电力成本的Token产出。
这个指标背后的逻辑直指AI基础设施的核心矛盾:当全球四大云巨头2026年资本开支合计高达7250亿美元(同比增长77%),当单个万卡集群年电费突破10亿元量级,当数据中心电力成本已占TCO的60%以上——“我的每一度电到底产出了多少Token?” 成了比"我的GPU利用率是多少"更本质的问题。
PUE(Power Usage Effectiveness)已经统治数据中心能效评价超过20年,但它的核心缺陷在于:它只衡量"有多少电被设备用掉了",而不回答"这些电到底创造了多少价值"。在Token经济时代,一个AIDC(AI数据中心)的竞争力不在于它的PUE有多低,而在于每瓦特电力能持续产出多少有效Token。
本文将从技术架构、算法决策、系统实现三个层面,深度解析商汤算电协同Agent的技术原理,并用Go和Python代码演示TPW优化核心算法。
二、从PUE到TPW:度量衡革命的必然性
2.1 PUE的历史贡献与时代局限
PUE = 数据中心总能耗 / IT设备能耗,理想值为1.0。过去二十年,全球顶级数据中心的PUE从2.0以上降至1.1左右,Google、Meta等公司甚至达到了1.08-1.10的水平。
但问题在于:PUE优化到1.1之后,再往下每降0.01,投入的边际成本呈指数级增长。而且,PUE为1.1的数据中心,A可能每度电产出1000个Token,B可能只产出300个——因为芯片利用率、模型效率、调度策略完全不同。
2.2 TPW:Token经济时代的核心标尺
TPW(Tokens Per Watt)的定义:
TPW = 有效Token产出总量 / 总电力成本(综合考虑电量与实时电价)
这个公式的妙处在于它同时考虑了三个维度:
- 算力效率:同样一度电,芯片利用率越高、模型推理效率越好,Token产出越多
- 能源成本:不同时段的电价差异可达3-5倍,智能调度在低价时段产出更多Token
- 业务匹配:不是所有Token都有同等价值,高优先级的推理Token价值远高于批处理Token
// TPW计算核心结构
package tpw
import (
"math"
"time"
)
type TPWMetrics struct {
TotalTokens int64 // 有效Token总产出
PowerConsumed float64 // 总耗电量(kWh)
ElectricityCost float64 // 总电费(元)
TimeWindow time.Duration // 统计时间窗口
}
// TPWByCost: 单位电力成本的Token产出
func (m *TPWMetrics) TPWByCost() float64 {
if m.ElectricityCost == 0 {
return 0
}
return float64(m.TotalTokens) / m.ElectricityCost
}
// TPWByEnergy: 单位电量的Token产出
func (m *TPWMetrics) TPWByEnergy() float64 {
if m.PowerConsumed == 0 {
return 0
}
return float64(m.TotalTokens) / m.PowerConsumed
}
// 时间序列TPW追踪
type TPWTimeSeries struct {
Points []TPWPoint
}
type TPWPoint struct {
Timestamp time.Time
TPWValue float64
LoadLevel float64 // 负载水平 0-1
PricePhase string // 电价时段: peak/flat/valley
}
// 计算加权TPW,按电价时段加权
func (ts *TPWTimeSeries) WeightedTPW() float64 {
if len(ts.Points) == 0 {
return 0
}
var totalWeighted float64
var totalWeight float64
for _, p := range ts.Points {
weight := 1.0
switch p.PricePhase {
case "peak":
weight = 3.0 // 峰值电价权重高
case "flat":
weight = 1.5
case "valley":
weight = 1.0
}
totalWeighted += p.TPWValue * weight
totalWeight += weight
}
return totalWeighted / totalWeight
}
商汤临港AIDC实测数据:算电协同Agent部署后,单位电力成本Token产出提升80%,平均电费单价低于同地区IDC 10%,算力负荷预测准确率达到96%,全年预估每万P算力碳减排24000吨。
三、算电协同Agent系统架构
3.1 “算力×电力×Agent"三位一体架构
商汤算电协同Agent的核心架构可以用一个三层模型来理解:
┌─────────────────────────────────────────────────────┐
│ Agent 决策层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 负荷预测 │ │ 电价预测 │ │ 储能优化 │ │
│ └─────┬────┘ └─────┬────┘ └─────┬────┘ │
│ ┌─────┴────┐ ┌─────┴────┐ ┌─────┴────┐ │
│ │ 容量控制 │ │ 暖通协同 │ │ 算力调度 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────┤
│ 八级数据穿透体系 │
│ 楼栋 → 集群 → 包间 → 机柜 → 服务器 → Node → Pod → Job│
├─────────────────────────────────────────────────────┤
│ 物理层:算力 + 电力 + 储能 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ GPU集群 │ │ 供配电系统 │ │ 储能系统 │ │
│ │ 国产芯片 │ │ 光伏/市电 │ │ 宁德时代 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────┘
3.2 八级数据穿透体系
这是整个系统的"感神经系统”。从楼栋级到Job级,八级数据穿透确保每一个粒度的运行状态都可感知、可分析、可决策。
"""
八级数据穿透体系 - 数据采集与聚合层
"""
from dataclasses import dataclass, field
from typing import List, Dict, Optional
from datetime import datetime
import numpy as np
from enum import Enum
class MetricType(Enum):
POWER = "power" # 功率(W)
TEMPERATURE = "temp" # 温度(°C)
UTILIZATION = "util" # 利用率(%)
LATENCY = "latency" # 延迟(ms)
THROUGHPUT = "throughput" # 吞吐量(tokens/s)
@dataclass
class MetricPoint:
timestamp: datetime
metric_type: MetricType
value: float
unit: str
@dataclass
class JobMetrics:
"""Job级 - 最细粒度"""
job_id: str
model_name: str
gpu_count: int
power_consumption: float # W
token_throughput: float # tokens/s
gpu_util: float
def tpw_instant(self) -> float:
"""瞬时TPW:每秒Token产出 / 功率(W)"""
return self.token_throughput / max(self.power_consumption, 1)
@dataclass
class PodMetrics:
"""Pod级 - 一组同任务Job"""
pod_id: str
jobs: List[JobMetrics] = field(default_factory=list)
@property
def total_power(self) -> float:
return sum(j.power_consumption for j in self.jobs)
@property
def total_throughput(self) -> float:
return sum(j.token_throughput for j in self.jobs)
@dataclass
class NodeMetrics:
"""Node级 - 一台物理服务器"""
node_id: str
gpu_model: str
gpu_count: int
pods: List[PodMetrics] = field(default_factory=list)
node_power: float # 包含CPU/内存/网络等非GPU功耗
@property
def total_power(self) -> float:
return self.node_power + sum(p.total_power for p in self.pods)
@dataclass
class ServerMetrics:
"""Server级 - 机架服务器组"""
server_id: str
nodes: List[NodeMetrics] = field(default_factory=list)
@dataclass
class CabinetMetrics:
"""机柜级"""
cabinet_id: str
servers: List[ServerMetrics] = field(default_factory=list)
@dataclass
class RoomMetrics:
"""包间级"""
room_id: str
cabinets: List[CabinetMetrics] = field(default_factory=list)
room_cooling_power: float # 该包间制冷功耗
@dataclass
class ClusterMetrics:
"""集群级"""
cluster_id: str
rooms: List[RoomMetrics] = field(default_factory=list)
@dataclass
class CampusMetrics:
"""园区/楼栋级 - 最粗粒度"""
campus_id: str
clusters: List[ClusterMetrics] = field(default_factory=list)
total_incoming_power: float # 市电总入口
solar_generation: float # 光伏发电量
battery_soc: float # 储能SOC (0-1)
3.3 五大算法决策链
算电协同Agent的核心智能来自五条算法决策链,它们构成了一个完整的感知-预测-决策-执行-度量闭环:
"""
五大算法决策链实现
"""
import numpy as np
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.preprocessing import StandardScaler
import joblib
class ElectricityPricePredictor:
"""决策链1: 负荷→电价 - 电价预测模型"""
def __init__(self):
self.model = GradientBoostingRegressor(
n_estimators=300,
max_depth=6,
learning_rate=0.05
)
self.scaler = StandardScaler()
def _extract_features(self, historical_load: np.ndarray,
hour: int, day_of_week: int,
is_holiday: bool) -> np.ndarray:
"""特征工程:从历史负荷和时段信息提取电价预测特征"""
features = []
# 过去24小时平均负荷
features.append(np.mean(historical_load[-24:]))
# 过去1小时负荷变化率
features.append(historical_load[-1] - historical_load[-2]
if len(historical_load) >= 2 else 0)
# 过去7天同期负荷均值
features.append(np.mean(historical_load[-168::24])
if len(historical_load) >= 168 else 0)
# 时间特征
features.append(np.sin(2 * np.pi * hour / 24))
features.append(np.cos(2 * np.pi * hour / 24))
features.append(day_of_week)
features.append(1 if is_holiday else 0)
# 气温特征(影响空调负荷和电价)
features.append(0) # placeholder for temperature
return np.array(features).reshape(1, -1)
def predict_price(self, load_series: np.ndarray,
hour: int, dow: int, holiday: bool) -> float:
"""预测下一个时段的电价(元/kWh)"""
features = self._extract_features(load_series, hour, dow, holiday)
features_scaled = self.scaler.transform(features)
return self.model.predict(features_scaled)[0]
class BatteryOptimizer:
"""决策链2: 电价→储能 - 储能充放电策略优化"""
def __init__(self, capacity_kwh: float, max_power_kw: float,
efficiency: float = 0.92):
self.capacity = capacity_kwh
self.max_power = max_power_kw
self.efficiency = efficiency # 充放电效率
def optimize_schedule(self, price_forecast: np.ndarray,
current_soc: float,
hours_ahead: int = 24) -> np.ndarray:
"""
基于电价预测优化储能充放电计划
使用动态规划求解最优策略
"""
n = hours_ahead
# DP表: dp[t][soc_level] = 最小成本
soc_levels = 20 # 离散化SOC等级
dp = np.full((n + 1, soc_levels), float('inf'))
action = np.zeros((n, soc_levels), dtype=int)
# -1=放电, 0=闲置, 1=充电
initial_soc_idx = int(current_soc * (soc_levels - 1))
dp[0][initial_soc_idx] = 0
for t in range(n):
for s in range(soc_levels):
if dp[t][s] == float('inf'):
continue
current_energy = s / (soc_levels - 1) * self.capacity
for a in [-1, 0, 1]: # 放电/闲置/充电
if a == -1: # 放电
discharge = self.max_power * 0.5 # 30分钟放电
new_energy = max(0, current_energy - discharge / self.efficiency)
cost = -discharge * price_forecast[t] # 收益
elif a == 1: # 充电
charge = self.max_power * 0.5
new_energy = min(self.capacity, current_energy + charge * self.efficiency)
cost = charge * price_forecast[t]
else: # 闲置
new_energy = current_energy
cost = 0
new_s = int(new_energy / self.capacity * (soc_levels - 1))
new_s = min(soc_levels - 1, max(0, new_s))
if dp[t][s] + cost < dp[t + 1][new_s]:
dp[t + 1][new_s] = dp[t][s] + cost
action[t][s] = a
# 回溯最优路径
best_soc = np.argmin(dp[n])
schedule = np.zeros(n, dtype=int)
for t in range(n - 1, -1, -1):
schedule[t] = action[t][best_soc]
# 回溯前一步状态
prev_energy = best_soc / (soc_levels - 1) * self.capacity
if schedule[t] == -1:
prev_energy += self.max_power * 0.5 / self.efficiency
elif schedule[t] == 1:
prev_energy -= self.max_power * 0.5 * self.efficiency
prev_energy = max(0, min(self.capacity, prev_energy))
best_soc = int(prev_energy / self.capacity * (soc_levels - 1))
best_soc = min(soc_levels - 1, max(0, best_soc))
return schedule
class TPWOptimizer:
"""
决策链5: 电价→Token - TPW导向的算力调度优化
核心逻辑:在电价低时执行高Token产出任务,电价高时执行高价值低Token任务
"""
def __init__(self, token_value_fn=None):
self.token_value_fn = token_value_fn or (lambda t: 1.0)
def optimize_job_scheduling(self, jobs: List[Dict],
price_forecast: np.ndarray,
gpu_capacity: int) -> Dict:
"""
基于电价和TPW优化任务调度
jobs: [{'id': str, 'tokens_per_hour': float, 'importance': float, 'deadline': int}]
"""
n_jobs = len(jobs)
n_slots = len(price_forecast)
# 计算每个任务在每个时间段的TPW贡献
# TPW = tokens_per_hour / (gpu_power * price)
gpu_power = 700 # W, 单卡平均功耗
# 贪心调度:按TPW排序分配低电价时段
job_scores = []
for j, job in enumerate(jobs):
tph = job['tokens_per_hour']
for t in range(min(n_slots, job.get('deadline', n_slots))):
tpw = tph / (gpu_power * price_forecast[t] / 1000)
job_scores.append((tpw * job['importance'], j, t))
job_scores.sort(reverse=True)
schedule = {j: [] for j in range(n_jobs)}
slot_usage = np.zeros(n_slots)
for score, j, t in job_scores:
if slot_usage[t] < gpu_capacity:
schedule[j].append(t)
slot_usage[t] += 1
return schedule
四、算电协同Agent的六大核心能力
4.1 IT负载与功耗预测
基于八级数据穿透体系,系统可以精确预测未来24-72小时的IT负载和功耗变化。预测模型融合了时间序列分析(Prophet/LSTM)、任务队列信息(Job Schedule)和外部因素(天气/节假日)。
// 负载预测系统的核心实现
package prediction
import (
"math"
"time"
)
type LoadPredictor struct {
history []LoadPoint
seasonalPeriod int // 季节性周期(小时)
}
type LoadPoint struct {
Timestamp time.Time
LoadKW float64
TokenRate float64 // tokens/s
TPW float64
}
// 基于三重指数平滑的负载预测
func (lp *LoadPredictor) TripleExponentialSmoothing(
alpha, beta, gamma float64,
horizon int,
) []float64 {
n := len(lp.history)
if n == 0 {
return nil
}
// 提取负载序列
loads := make([]float64, n)
for i, p := range lp.history {
loads[i] = p.LoadKW
}
// 初始化
seasonLen := lp.seasonalPeriod
seasonal := make([]float64, seasonLen)
for i := 0; i < seasonLen; i++ {
seasonal[i] = loads[i] / lp.initialLevel()
}
level := lp.initialLevel()
trend := lp.initialTrend()
predictions := make([]float64, horizon)
for i := 0; i < n+horizon; i++ {
if i < n {
// 更新
lastLevel := level
seasonIdx := i % seasonLen
level = alpha*(loads[i]/seasonal[seasonIdx]) + (1-alpha)*(level+trend)
trend = beta*(level-lastLevel) + (1-beta)*trend
seasonal[seasonIdx] = gamma*(loads[i]/level) + (1-gamma)*seasonal[seasonIdx]
} else {
// 预测
idx := i - n
seasonIdx := i % seasonLen
predictions[idx] = (level + float64(idx+1)*trend) * seasonal[seasonIdx]
}
}
return predictions
}
func (lp *LoadPredictor) initialLevel() float64 {
// 取第一个季节性周期的均值
n := len(lp.history)
if n < lp.seasonalPeriod {
return 0
}
var sum float64
for i := 0; i < lp.seasonalPeriod; i++ {
sum += lp.history[i].LoadKW
}
return sum / float64(lp.seasonalPeriod)
}
func (lp *LoadPredictor) initialTrend() float64 {
n := len(lp.history)
if n < 2*lp.seasonalPeriod {
return 0
}
var sum1, sum2 float64
for i := 0; i < lp.seasonalPeriod; i++ {
sum1 += lp.history[i].LoadKW
sum2 += lp.history[i+lp.seasonalPeriod].LoadKW
}
return (sum2 - sum1) / float64(lp.seasonalPeriod*lp.seasonalPeriod)
}
4.2 电价与电量分析
系统接入实时电力市场数据,结合历史电价模式、天气预测、燃料价格等因素,构建电价预测模型。在中国电力市场环境下,系统需要处理分时电价(峰/平/谷)、现货市场实时报价、绿电交易价格等多维价格信号。
4.3 储能策略管理
与宁德时代储能系统深度集成,通过决策链2(电价→储能)和决策链3(储能→需量),优化储能充放电策略。在低电价时段充电,高电价时段放电,同时利用储能削峰填谷降低需量电费。
4.4 容量控制与优化
通过动态调整在线GPU数量、任务并发度、推理批次大小等参数,实现容量与负载的精确匹配。避免"GPU闲置但功耗不降"的典型问题。
4.5 暖通协同优化
传统数据中心制冷系统与IT负载是解耦的——IT负载高时制冷不一定跟得上,IT负载低时制冷可能还在满负荷运行。算电协同Agent将暖通系统纳入统一调度,实现"负载-制冷-电价"三联动。
4.6 算力调度决策
这是TPW优化的最终执行层。系统根据电价预测、储能状态、任务优先级和TPW目标,实时决策:
- 哪些任务现在执行(高电价时段仅执行高价值任务)
- 哪些任务可以延迟到低电价时段
- 是否启用低频推理模式(降低功耗,牺牲部分延迟)
- 是否将任务调度到其他区域电价更低的AIDC
"""
TPW驱动的算力调度决策引擎
"""
from typing import List, Dict, Tuple, Optional
from dataclasses import dataclass
from enum import Enum
import heapq
from datetime import datetime, timedelta
class TaskPriority(Enum):
CRITICAL = 0 # 实时推理,必须立即执行
HIGH = 1 # 在线服务,可容忍秒级延迟
MEDIUM = 2 # 离线批处理,可容忍小时级延迟
LOW = 3 # 训练任务,可灵活调度
@dataclass
class Task:
task_id: str
priority: TaskPriority
gpu_required: int
estimated_tokens: int # 预估Token产出
estimated_duration_min: int # 预估执行时长(分钟)
deadline: Optional[datetime] = None
hourly_value: float = 1.0 # 每小时产出价值
@property
def gpu_hours(self) -> float:
return self.gpu_required * self.estimated_duration_min / 60.0
class TPWAwareScheduler:
"""
TPW感知调度器 - 核心决策引擎
"""
def __init__(self,
gpu_power_watt: float = 700,
idle_power_ratio: float = 0.3):
self.gpu_power = gpu_power_watt
self.idle_power = gpu_power_watt * idle_power_ratio
self.task_queue: List[Task] = []
def calculate_tpw(self, task: Task,
electricity_price: float) -> float:
"""
计算任务在给定电价下的TPW
TPW = tokens / (power * duration * price)
"""
power_kw = task.gpu_required * self.gpu_power / 1000.0
duration_h = task.estimated_duration_min / 60.0
energy_cost = power_kw * duration_h * electricity_price
if energy_cost <= 0:
return float('inf')
return task.estimated_tokens / energy_cost
def schedule_tasks(self,
tasks: List[Task],
price_forecast: List[float],
available_gpus: int,
time_slot_min: int = 30) -> List[Tuple[str, int, int]]:
"""
调度任务到最优时间段
返回: [(task_id, start_slot, end_slot)]
"""
n_slots = len(price_forecast)
slot_gpu_usage = [0] * n_slots
schedule = []
# 按优先级排序,同优先级按TPW排序
sorted_tasks = sorted(tasks, key=lambda t: (
t.priority.value,
-self.calculate_tpw(t, min(price_forecast))
))
for task in sorted_tasks:
slots_needed = max(1, task.estimated_duration_min // time_slot_min)
best_tpw = -1
best_start = -1
for start in range(n_slots - slots_needed + 1):
# 检查GPU容量
if max(slot_gpu_usage[start:start + slots_needed]) + task.gpu_required > available_gpus:
continue
# 检查deadline
if task.deadline and start * time_slot_min > task.deadline.hour * 60:
continue
# 计算该时间段平均TPW
avg_price = sum(price_forecast[start:start + slots_needed]) / slots_needed
tpw = self.calculate_tpw(task, avg_price)
if tpw > best_tpw:
best_tpw = tpw
best_start = start
if best_start >= 0:
for s in range(best_start, best_start + slots_needed):
slot_gpu_usage[s] += task.gpu_required
schedule.append((
task.task_id,
best_start,
best_start + slots_needed
))
return schedule
def estimate_tpw_improvement(self,
before_schedule: List[Tuple[str, int, int]],
after_schedule: List[Tuple[str, int, int]],
price_forecast: List[float]) -> float:
"""评估TPW优化效果"""
def total_cost(schedule, tasks_map):
cost = 0.0
total_tokens = 0
for task_id, start, end in schedule:
task = tasks_map[task_id]
duration_h = (end - start) * 0.5 # 半小时slot
power_kw = task.gpu_required * self.gpu_power / 1000.0
avg_price = sum(price_forecast[start:end]) / (end - start)
cost += power_kw * duration_h * avg_price
total_tokens += task.estimated_tokens
return total_tokens / max(cost, 0.001)
tasks_map = {t.task_id: t for t in self.task_queue}
before_tpw = total_cost(before_schedule, tasks_map)
after_tpw = total_cost(after_schedule, tasks_map)
return (after_tpw - before_tpw) / before_tpw * 100 # 百分比
五、系统级算效:TPW时代的产业变革
5.1 从"算力规模"到"算力效能"的范式转移
商汤算电协同Agent的发布,标志着AI基础设施的竞争焦点正在从"我有多少张卡"转向"我的每度电能产出多少Token"。TPW指标的提出,本质上是在回答一个产业级问题:AI基础设施的ROI到底该怎么算?
传统模式下,GPU利用率是核心KPI,但高利用率不等于高效益——如果所有任务都在高电价时段运行,利用率再高也无法盈利。TPW将电价、储能、负载、模型效率整合为一个统一指标,为AIDC的运营优化提供了明确的优化目标。
5.2 国产算力的TPW优势
商汤的异构混合推理技术数据显示,在同等成本下,国产芯片的Token产出规模可达到NVIDIA H系列的1.25倍。这并非因为国产芯片单卡性能更强,而是因为:
- 国产芯片采购成本低,单位资本开支对应的算力更多
- 商汤的全栈适配体系让模型迁移成本趋近于零
- 算电协同Agent在国产芯片平台上实现了更精细的功耗管控
5.3 算电协同生态联合体
商汤联合中国长江三峡集团、中国能源研究会、中国IDC圈、达卯科技、优刻得等发起"算电协同生态联合体",构建"源—网—荷—储—算"一体化协同生态。这个生态的底层逻辑是:当AI算力成为像水、电一样的基础设施,它的定价和调度逻辑也必须像电网一样精细。
六、结论与展望
TPW指标的出现,标志着AI基础设施从"粗放式扩张"进入"精细化运营"时代。商汤算电协同Agent的80% Token产出提升只是开始,随着算电协同生态的扩展和AI调度算法的持续进化,未来AIDC的TPW有望再提升2-3倍。
从产业角度看,TPW标准的建立将深刻影响:
- 智算中心选址:电价低的地区将获得更大的竞争优势
- 芯片设计:能效比(TOPS/W)将取代绝对算力成为核心指标
- 模型优化:更小的模型、更高效的推理架构将获得更大市场空间
- 电力市场:AI负荷将成为电力市场的重要参与者,推动更精细化的电价机制
当每一度电都在被精打细算,AI才能真正成为普惠的基础设施。
参考资料:新华网《商汤大装置亮相WAIC 2026,技术-生态-商业协同进化》、量子位《WAIC 2026商汤大装置发布算电协同Agent,单位电力成本Token产出提升80%》、上观新闻《商汤大装置发布算电协同Agent》、36氪《商汤大装置亮相WAIC2026》