迁移GCP AI Platform自定义作业到Vertex AI:如何获取状态与日志
Vertex AI 自定义作业状态查询与日志流式拉取替代实现
作业状态查询实现
原有AI Platform的ml v1接口不再适配Vertex AI作业,替换为aiplatform v1接口即可,资源路径需匹配Vertex AI的层级规则,代码逻辑和原有写法基本一致:
from google.oauth2 import service_account from googleapiclient import discovery scopes = ['https://www.googleapis.com/auth/cloud-platform'] credentials = service_account.Credentials.from_service_account_file(keyFile, scopes=scopes) # 替换服务名为aiplatform,使用v1版本API ai_platform_client = discovery.build("aiplatform", "v1", credentials=credentials, cache_discovery=False) # 替换为你的实际项目ID、作业部署区域、自定义作业ID job_resource_name = f"projects/{your_project_id}/locations/{job_region}/customJobs/{job_id}" job_detail = ai_platform_client.projects().locations().customJobs().get(name=job_resource_name).execute() # 状态字段仍为state,返回Vertex AI定义的作业状态枚举值 return job_detail['state']
常见返回状态说明:
JOB_STATE_QUEUED:作业已提交,排队等待资源调度JOB_STATE_RUNNING:作业正在运行JOB_STATE_SUCCEEDED:作业执行成功JOB_STATE_FAILED:作业执行失败JOB_STATE_CANCELLED:作业已被取消JOB_STATE_CANCELLING:作业正在执行取消操作
作业日志流式拉取实现
原AI Platform的stream-logs命令对应Vertex AI自定义作业的日志拉取命令,只需替换命令前缀并补全必填的区域、项目参数即可:
命令行直接调用
gcloud ai custom-jobs stream-logs <你的自定义作业ID> --region=<作业所在区域> --project=<你的GCP项目ID>
Python代码中调用
直接替换原有cmd变量即可:
cmd = f'gcloud ai custom-jobs stream-logs {job_id} --region={job_region} --project={your_project_id}'
注意事项
- 传入的作业ID是创建自定义作业后返回的短ID,不是完整的资源路径字符串
- 区域参数必须和作业创建时指定的部署区域完全一致,否则会出现找不到作业的错误
- 如果使用自定义服务账号拉取日志,需要确保该账号已分配Vertex AI查看者、日志查看者相关的IAM权限,否则会出现权限不足报错
内容的提问来源于stack exchange,提问作者Stiefel
相关产品推荐
相关产品推荐

