如何定义 HAMi 虚拟 GPU 成本模型
此操作步骤会将 HAMi 虚拟设备内存分配注册为计费项。该指标在 HAMi scheduler 层统一,并同时适用于 soft-slice 和 hard-slice 工作负载。
此配置提供的内容
- 内存分配:由 scheduler 确认的虚拟内存分配量,按 GiB-hours 累计。
- 项目配额(可选):项目虚拟内存配额,按 GiB-hours 累计。
- 模型定价:分配记录保留
modelName,因此价格可以根据底层 accelerator 模型而变化。 - 运行时指标:WebUI 或 device-plugin 使用量指标可用于监控,但不是默认的计费事实来源。
1. 创建记录规则
应用此配置的位置
在运行 HAMi 及其 scheduler metrics 的集群中应用此 PrometheusRule。应用前确认 scheduler exporter target 状态正常。
hami_vgpu_memory_allocated_bytes 是 scheduler 分配事实。它不是容器当前实际使用的运行时内存。此规则会为每个设备、namespace、pod 和 container 分配创建唯一的 virtual_device_id。
resource="requests.nvidia.com/gpumem" selector 仅为示例。例如,HAMi Ascend 310P 环境可能会将 NPU 内存公开为 requests.huawei.com/Ascend310P-memory。HAMi NPU 内存资源通常特定于模型。请将 selector 替换为目标环境公开的确切内存资源 key;适用时还应包含 accelerator 模型。应用规则前,请在 Prometheus 中检查 resource label 以及 cpaas_project_resourcequota 的单位。如果资源 key 或单位不同,请相应更新 selector 和 MiB 到 bytes 的转换;否则 ProjectQuota 数据可能为空或缩放不正确。
项目配额规则是可选的。如果不需要项目配额计费,请将其移除。
在 Prometheus 中验证标准化指标:
继续操作前,分配指标必须为 soft-slice 和 hard-slice 工作负载返回预期的 series。
2. 创建采集配置
应用此配置的位置
在运行 Cost Management Agent 的 HAMi 集群中应用此 ConfigMap。
源值的单位是 bytes。Cost Management 以 byte-hours 存储数据,显示除数会将其转换为 GiB-hours。应用 ConfigMap 后重新加载 Agent:
3. 创建显示配置
应用此配置的位置
在运行 Cost Management Server 的 global 集群中应用此 ConfigMap。
divisor: 1073741824 表示 1 GiB(1024 x 1024 x 1024 bytes)。它会将 Cost Management 采集的 byte-hours 转换为用于显示和价格计算的 GiB-hours。请将源数据和采集数据保留为 bytes;不要在 Prometheus 中或在采集查询中、数据进入计量系统前对数值进行除法运算。这样可以保留精度,并将转换集中在一个位置。
应用 ConfigMap 后重新加载 Cost Management Server:
4. 将价格添加到成本模型
在平台控制台中打开 Metering and Billing > Cost Models,然后编辑与 HAMi 集群关联的成本模型。
Project Quota 是可选的,并且没有 accelerator 模型维度。不要为此方法配置 modelName 价格覆盖。
对于分配定价,请配置 HAMi scheduler label source 发出的确切 modelName 值。该值区分大小写。不得将底层物理设备 UUID 用作虚拟设备名称,因为多个虚拟设备可以共享同一物理卡。
5. 验证结果
等待至少一个每小时计费窗口。按以下顺序验证结果:
- 使用量:确认存在分配记录,其中包含预期的
virtual_device_id、namespace 以及 GiB-hours 转换结果。 - 账单:确认已生成账单,并且应用了预期的默认价格或特定模型价格。
- 控制台:确认相同的项目和金额出现在成本详情和统计信息中。
有关共享部署规则,请参阅Configuration Conventions。