成本核算与计费
核心目标:让算力成本透明化、可追溯、可分摊,驱动各团队高效使用算力资源
为什么需要算力成本核算
算力不便宜。一台Atlas 800T A2服务器的全生命周期成本超过100万元。如果没有成本核算体系,会出现以下问题:
| 问题 | 无成本核算 | 有成本核算 |
|---|---|---|
| 成本不透明 | 不知道算力花了多少钱 | 每张卡、每个团队成本清晰 |
| 资源浪费 | 免费资源导致占用不用 | 按用量计费,促进高效使用 |
| 分摊困难 | 成本全算IT头上,业务不买单 | 各团队为自己的用量买单 |
| 决策缺乏依据 | 不清楚扩容是否值得 | ROI驱动投资决策 |
算力成本核算的核心理念:谁使用,谁付费;用多少,付多少。
按卡时计费模型
什么是卡时
卡时(Card-Hour) 是算力计费的基本单位,表示1张NPU卡使用1小时。
1卡时 = 1张NPU卡 × 1小时
8卡时 = 8张NPU卡 × 1小时(或1张卡 × 8小时)卡时单价计算
卡时单价 = 算力总成本 / 总可用卡时
示例计算:
假设:
- 硬件:10台 Atlas 800T A2(80张卡)
- 硬件采购成本:1000万元(5年折旧)
- 年化成本计算:
硬件折旧:1000万 / 5年 = 200万/年
电费:80卡 × 0.4kW × 8760h × 0.8元 = 22.4万/年
软件许可:CANN免费 + MindSpore免费 = 0
运维人力:2人 × 20万 = 40万/年
机房/网络:15万/年
年化总成本 = 200 + 22.4 + 0 + 40 + 15 = 277.4万/年
总可用卡时 = 80卡 × 8760h = 700,800 卡时/年
卡时单价 = 277.4万元 / 700,800 = 3.96元/卡时
(考虑85%可用率,实际单价 ≈ 4.65元/卡时)分级计费模型
不同类型算力的成本不同,建议分级计费:
| 算力类型 | 硬件 | 参考单价(元/卡时) | 说明 |
|---|---|---|---|
| 训练算力 | Atlas 800T A2 (910B) | 4-6 | 成本高,训练专用 |
| 推理算力 | Atlas 800I A2 (910B) | 3-5 | 推理优化配置 |
| 轻量推理 | Atlas 300I (310P) | 1-2 | 功耗低,成本低 |
| 边端推理 | Atlas 500 A2 | 0.5-1 | 边端设备,成本最低 |
| vNPU分片 | 按比例折算 | 单价/切分数 | 细粒度计费 |
分时段计费
为鼓励闲时利用,可实施分时段计费:
| 时段 | 时间范围 | 计费系数 | 说明 |
|---|---|---|---|
| 高峰时段 | 9:00-18:00(工作日) | 1.2x | 鼓励错峰 |
| 平峰时段 | 18:00-22:00(工作日) | 1.0x | 标准计费 |
| 低谷时段 | 22:00-9:00 + 周末 | 0.5x | 鼓励闲时使用 |
Chargeback体系搭建
Chargeback vs Showback
| 模式 | 说明 | 适用阶段 |
|---|---|---|
| Showback | 展示各团队成本,但不实际扣费 | 初期,培养成本意识 |
| Chargeback | 实际从团队预算中扣除算力费用 | 成熟期,成本驱动 |
建议分阶段实施:
- 第一阶段(1-3月):Showback,让团队看到自己的用量和成本
- 第二阶段(3-6月):半Chargeback,部分成本分摊到团队
- 第三阶段(6月+):全Chargeback,团队为实际用量买单
Chargeback实施流程
1. 卡时统计 → 2. 费用计算 → 3. 账单生成 → 4. 费用分摊 → 5. 报告反馈第一步:卡时统计
Slurm环境:
bash
# 统计各账户的卡时消耗(按月)
sacct --starttime 2026-08-01 --endtime 2026-08-31 \
--format=Account,AllocatedNPU,Elapsed,State \
--state=COMPLETED \
| awk '{account=$1; npus=$2; time=$3;
# 计算卡时
split(time, t, ":");
hours = t[1] + t[2]/60 + t[3]/3600;
card_hours[account] += npus * hours;
}
END {for (a in card_hours) print a, card_hours[a]}'K8s环境:
bash
# 通过Metrics Server + 自定义脚本统计NPU使用时长
kubectl get pods --all-namespaces -o json | jq '
.items[] |
{
namespace: .metadata.namespace,
npu: .spec.containers[].resources.limits["ascend.kubernetes.io/npu"]
}' | group_by(.namespace) | ...第二步:费用计算
python
# 费用计算脚本示例
from datetime import datetime, timedelta
# 计费配置
PRICING = {
"training": 5.0, # 训练算力 5元/卡时
"inference": 4.0, # 推理算力 4元/卡时
"light_inference": 1.5, # 轻量推理 1.5元/卡时
}
# 分时段系数
TIME_MULTIPLIER = {
"peak": 1.2, # 高峰 9:00-18:00
"normal": 1.0, # 平峰 18:00-22:00
"off_peak": 0.5, # 低谷 22:00-9:00 + 周末
}
def calculate_cost(team, resource_type, card_hours, time_period):
"""计算团队算力费用"""
base_price = PRICING[resource_type]
multiplier = TIME_MULTIPLIER[time_period]
cost = card_hours * base_price * multiplier
return cost
def generate_monthly_bill(year, month):
"""生成月度账单"""
# 从统计系统获取各团队卡时数据
usage_data = get_usage_data(year, month) # {team: {resource_type: {period: hours}}}
bills = {}
for team, resources in usage_data.items():
total_cost = 0
details = []
for res_type, periods in resources.items():
for period, hours in periods.items():
cost = calculate_cost(team, res_type, hours, period)
total_cost += cost
details.append({
"resource_type": res_type,
"time_period": period,
"card_hours": hours,
"cost": cost
})
bills[team] = {"total_cost": total_cost, "details": details}
return bills第三步:账单生成
月度账单模板:
╔══════════════════════════════════════════════╗
║ 昇腾算力月度账单 ║
║ 2026年8月 ║
╠══════════════════════════════════════════════╣
║ 团队:AI研发团队A ║
║ 账期:2026-08-01 至 2026-08-31 ║
╠══════════════════════════════════════════════╣
║ 资源明细: ║
║ ┌────────┬────────┬────────┬────────┐ ║
║ │资源类型 │时段 │卡时 │费用(元) │ ║
║ ├────────┼────────┼────────┼────────┤ ║
║ │训练算力 │高峰 │2,400 │14,400 │ ║
║ │训练算力 │低谷 │1,800 │4,500 │ ║
║ │推理算力 │平峰 │960 │3,840 │ ║
║ └────────┴────────┴────────┴────────┘ ║
║ ║
║ 总卡时:5,160 卡时 ║
║ 总费用:¥22,740 ║
║ ║
║ 备注:低谷时段享5折优惠 ║
╚══════════════════════════════════════════════╝成本分摊策略
分摊模式对比
| 模式 | 说明 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 按用量分摊 | 按实际卡时消耗分摊 | 公平,激励节约 | 需精确计量 | 成熟期 |
| 按配额分摊 | 按团队配额比例分摊固定成本 | 简单,可预测 | 不激励节约 | 初期 |
| 混合分摊 | 固定成本按配额 + 变动成本按用量 | 兼顾公平和可预测 | 计算复杂 | 推荐方案 |
混合分摊方案
团队月费用 = 固定费用(配额部分) + 变动费用(用量部分)
固定费用 = 团队配额卡数 × 月时长 × 固定单价 × 60%
变动费用 = 实际卡时 × 变动单价 × 40%示例:
团队A:
- 配额:30张卡
- 固定费用 = 30卡 × 730h × 4元 × 60% = 52,560元
- 实际使用:20,000卡时
- 变动费用 = 20,000 × 4元 × 40% = 32,000元
- 月总费用 = 52,560 + 32,000 = 84,560元
团队B:
- 配额:20张卡
- 固定费用 = 20卡 × 730h × 4元 × 60% = 35,040元
- 实际使用:12,000卡时
- 变动费用 = 12,000 × 4元 × 40% = 19,200元
- 月总费用 = 35,040 + 19,200 = 54,240元共享资源分摊
多个团队共享的推理服务,按调用量分摊:
团队A月调用量:500万次(50%)
团队B月调用量:300万次(30%)
团队C月调用量:200万次(20%)
推理服务月成本:50,000元
团队A分摊:50,000 × 50% = 25,000元
团队B分摊:50,000 × 30% = 15,000元
团队C分摊:50,000 × 20% = 10,000元算力TCO计算框架
TCO(Total Cost of Ownership)总拥有成本
算力TCO包含硬件、软件、运维、电费等全生命周期成本:
TCO = 硬件成本 + 软件成本 + 运维成本 + 电费成本 + 场地成本 + 其他成本TCO详细分解
1. 硬件成本
| 项目 | 说明 | 计算方式 |
|---|---|---|
| NPU服务器 | Atlas 800T A2 / 800I A2 | 采购价 / 折旧年限(通常5年) |
| CPU服务器 | 管理节点、登录节点 | 采购价 / 折旧年限 |
| 网络设备 | 交换机、网卡(RoCE) | 采购价 / 折旧年限 |
| 存储设备 | NAS/分布式存储 | 采购价 / 折旧年限 |
| 机柜/PDU | 机柜及配电 | 采购价 / 折旧年限 |
Atlas 800T A2 参考价格:
| 配置 | 参考价格 | 年折旧(5年) |
|---|---|---|
| Atlas 800T A2(8×910B) | 100-140万元 | 20-28万/年 |
| Atlas 800I A2(8×910B推理) | 80-120万元 | 16-24万/年 |
| Atlas 300I(310P推理卡) | 2-3万元/卡 | 0.4-0.6万/年 |
| Atlas 500 A2(边端) | 3-5万元/台 | 0.6-1万/年 |
2. 软件成本
| 项目 | 说明 | 费用 |
|---|---|---|
| CANN | 昇腾计算架构 | 免费 |
| MindSpore | AI框架 | 免费(开源) |
| MindFormers | 大模型库 | 免费(开源) |
| MindIE | 推理引擎 | 免费 |
| Slurm | 作业调度 | 免费(开源) |
| KubeSphere | 容器平台 | 社区版免费/企业版收费 |
| 商业大模型 | 盘古大模型等 | 按许可收费 |
| 监控系统 | Prometheus + Grafana | 免费(开源) |
昇腾优势:CANN + MindSpore + MindFormers全免费,软件成本极低。
3. 运维成本
| 项目 | 说明 | 参考费用 |
|---|---|---|
| 运维工程师 | 硬件运维 | 1人 × 15-25万/年 |
| AI平台工程师 | 平台维护 | 1-2人 × 20-35万/年 |
| 算力运营专员 | 计费/报表 | 0.5人 × 12-18万/年 |
| 培训费用 | 团队培训 | 5-10万/年 |
4. 电费成本
python
# 电费计算
def calculate_power_cost(num_cards, power_per_card_w, hours_per_year, electricity_rate):
"""
num_cards: NPU卡数
power_per_card_w: 单卡功耗(瓦)
hours_per_year: 年运行小时数
electricity_rate: 电价(元/kWh)
"""
total_power_kw = num_cards * power_per_card_w / 1000
annual_kwh = total_power_kw * hours_per_year
annual_cost = annual_kwh * electricity_rate
return annual_cost
# 示例:80张910B卡
cost = calculate_power_cost(
num_cards=80,
power_per_card_w=400, # 910B TDP约400W
hours_per_year=8760,
electricity_rate=0.8 # 工业电价
)
print(f"年电费: {cost:.1f}元 = {cost/10000:.1f}万元")
# 输出: 年电费: 224256.0元 = 22.4万元各硬件功耗参考:
| 硬件 | 单卡/台功耗 | 80卡年电费 |
|---|---|---|
| Ascend 910B | 400W/卡 | 22.4万元 |
| Ascend 310P | 75W/卡 | 4.2万元 |
| Atlas 500 A2 | 60W/台 | - |
注意:还需加上服务器其他组件功耗(CPU、内存、风扇等),通常NPU功耗约占总功耗的60-70%。
5. 场地成本
| 项目 | 说明 | 参考费用 |
|---|---|---|
| 机房空间 | 机柜租用 | 5000-15000元/机柜/月 |
| 网络带宽 | 互联网/专线 | 5000-20000元/月 |
| 制冷 | 空调电费 | 已含在电费或机房费用中 |
TCO计算示例
10台Atlas 800T A2训练集群5年TCO:
| 成本项 | 金额(万元) | 年化(万元) | 占比 |
|---|---|---|---|
| 硬件采购 | 1200 | 240 | 65% |
| 电费 | 112 | 22.4 | 6% |
| 运维人力 | 175 | 35 | 9% |
| 场地网络 | 90 | 18 | 5% |
| 软件许可 | 0 | 0 | 0% |
| 培训其他 | 50 | 10 | 3% |
| 合计 | 1627 | 325.4 | 100% |
单位成本:
- 80张卡,年化成本325.4万元
- 卡时成本 = 325.4万 / (80 × 8760) = 4.64元/卡时
- 考虑85%可用率:5.46元/卡时
成本优化建议
降低TCO的策略
| 策略 | 节省比例 | 实施难度 |
|---|---|---|
| 提升利用率(30%→70%) | 相当于节省57%硬件投入 | 中 |
| 闲时利用(夜间+周末) | 提升30%+有效算力 | 低 |
| vNPU分片 | 减少30-50%推理卡数 | 中 |
| 模型量化(FP32→INT8) | 推理吞吐提升2-4倍 | 中 |
| 混合精度训练 | 训练速度提升1.5-2倍 | 低 |
| 合理选型(推理用310P) | 推理成本降低60%+ | 低 |
成本可视化看板
建议建设以下成本看板:
| 看板 | 核心内容 | 更新频率 |
|---|---|---|
| 月度成本总览 | 总成本/各团队成本/趋势 | 月 |
| 团队成本排行 | 各团队月费用排行 | 月 |
| 卡时消耗趋势 | 各团队卡时趋势 | 周 |
| 单位成本趋势 | 元/卡时趋势 | 月 |
| ROI分析 | 各场景投入产出 | 季度 |
| 成本预警 | 超预算团队预警 | 实时 |
下一步
本文档由昇腾AI解决方案架构师团队编写,持续更新中。最后更新:2026-08-26