如何追踪Google Cloud Vertex AI自定义作业的成本?
Vertex AI自定义作业成本追踪方案
一、通过标签在账单页面追踪成本
你之前仅在自定义作业层级设置标签,这类标签不会自动同步到底层计算资源(如VM实例),而账单系统仅识别资源层级的标签。需同时在作业层级和资源层级设置标签:
- 代码调整示例(Python SDK):创建CustomJob时,除了在作业根节点配置
labels,还要在worker_pool_specs的资源配置中添加对应标签from google.cloud import aiplatform custom_job = aiplatform.CustomJob( display_name="my-custom-job", labels={"job_id": "job-001", "team": "data-science"}, # 作业层级标签 worker_pool_specs=[ { "machine_spec": { "machine_type": "n1-standard-4", "labels": {"job_id": "job-001", "team": "data-science"} # 资源层级标签 }, "replica_count": 1, "container_spec": { "image_uri": "gcr.io/my-project/my-image:latest" } } ] ) custom_job.submit() - 验证与生效:作业启动后,前往Compute Engine的VM实例页面,确认对应实例已同步标签;等待1-24小时账单系统更新后,即可在Cloud Billing页面通过标签筛选该作业的成本。
二、通过API/工具获取单个作业成本
方法1:BigQuery账单导出查询
- 在Cloud Billing控制台开启账单导出到BigQuery,将所有费用数据同步至指定数据集。
- 在BigQuery中执行关联查询,通过自定义标签筛选单作业成本:
SELECT SUM(cost) AS total_cost, labels.value AS job_id FROM `your-project.billing_dataset.gcp_billing_export_v1_XXXXXX` WHERE labels.key = "job_id" AND service.description = "Vertex AI" AND labels.value = "job-001" GROUP BY labels.value
方法2:Cloud Billing API查询
调用Cloud Billing的Costs.List接口,通过标签过滤条件获取指定作业成本:
- REST请求示例:
GET https://billing.googleapis.com/v1/projects/your-project/costs ?filter=labels.key%3D%22job_id%22%20AND%20labels.value%3D%22job-001%22 - 注意:API返回数据存在延迟,需配置
billing.costs.get权限。
方法3:结合Vertex AI元数据计算
通过Vertex AI的customJobs.get API获取作业运行时长、机器类型等元数据,再结合GCP定价公式计算成本。需注意:必须包含磁盘、网络附加费用,以及预emptible实例折扣(若使用),否则计算结果会与实际账单存在偏差。
内容的提问来源于stack exchange,提问作者DarioB
相关产品推荐
相关产品推荐

