You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Vertex AI批量预测任务的Job ID及相关问题排查

解决Google Cloud批量预测任务Job ID/Name获取及JSON序列化问题

问题说明

  • 直接用json.dump()把batch_prediction_job对象写入JSON文件失败,因为这是Google Cloud SDK生成的类实例,不是原生Python可序列化的字典/列表类型
  • 要访问GCS里的批量预测结果,必须先拿到Job Name或ID,但不知道怎么从batch_predict()返回的对象里提取

解决方案

1. 提取Job Name和ID

model.batch_predict()返回的batch_prediction_job是一个BatchPredictionJob实例,直接访问它的属性就能拿到需要的信息:

  • Job Name:直接取batch_prediction_job.name,格式类似projects/xxx/locations/xxx/batchPredictionJobs/xxx
  • Job ID:两种方式获取
    • 优先用batch_prediction_job.job_id(大部分SDK版本都支持)
    • 如果上面的属性不存在,就从Job Name里分割最后一段:job_id = job_name.split("/")[-1]

代码示例:

# 获取Job Name
job_name = batch_prediction_job.name
print(f"任务名称:{job_name}")

# 获取Job ID
try:
    job_id = batch_prediction_job.job_id
except AttributeError:
    job_id = job_name.split("/")[-1]
print(f"任务ID:{job_id}")

2. 将Job对象写入JSON文件

SDK实例不能直接序列化,先调用to_dict()方法把它转成Python字典,再写入JSON:

import json

# 把Job对象转成字典
job_info = batch_prediction_job.to_dict()

# 写入JSON文件
with open('batch_prediction_job.json', 'w') as f:
    json.dump(job_info, f, indent=2)

3. 访问GCS中的预测结果

拿到Job ID后,预测结果的存储路径是你指定的gcs_destination_prefix加上Job ID,比如你设置的是gs://demo/batch/,那结果路径就是gs://demo/batch/{job_id}/,里面的predictions_*.jsonl就是预测结果文件。可以用GCS SDK列出或下载这些文件:

from google.cloud import storage

# 初始化GCS客户端
storage_client = storage.Client()
# 桶名和前缀
bucket_name = "demo"
result_prefix = f"batch/{job_id}/"

# 遍历所有结果文件
for blob in storage_client.list_blobs(bucket_name, prefix=result_prefix):
    if blob.name.endswith(".jsonl"):
        print(f"找到结果文件:gs://{bucket_name}/{blob.name}")
        # 下载到本地
        blob.download_to_filename(f"本地保存文件名.jsonl")

内容的提问来源于stack exchange,提问作者krissy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:27:17