创建Vertex AI CustomJob遇RuntimeError:资源未创建的解决办法
修复Vertex AI CustomJob资源未创建的报错
核心原因
你仅在本地实例化了CustomJob对象,但没有触发GCP端的实际资源创建操作,本地对象未绑定远程的Google Cloud API资源,因此访问依赖远程数据的字段(如create_time、end_time)时会抛出资源未创建的错误。
解决方案
调用submit()方法提交任务,该操作会在GCP端创建真实的CustomJob资源,之后即可正常访问相关字段。若需要等待任务完成,可搭配wait()方法或直接使用submit(wait=True)。
修改后的代码示例
import time from google.cloud import aiplatform worker_pool_specs = [ { "machine_spec": { "machine_type": "n1-standard-4", }, "replica_count": 1, "container_spec": { "image_uri": "eu.gcr.io/somexistingimage", "command": ["python", "myscript.py", "test", "--var"], "args": [], }, } ] job = aiplatform.CustomJob( display_name="job_{}".format(round(time.time())), worker_pool_specs=worker_pool_specs, project="my-project", staging_bucket="gs://some-bucket", ) # 提交任务到GCP,触发资源创建 job.submit() # 资源创建后即可正常访问字段 print("任务名称:", job.display_name) print("创建时间:", job.create_time) # 可选:等待任务执行完成后获取结束时间 job.wait() print("任务结束时间:", job.end_time)
补充说明
CustomContainerTrainingJob的run()方法会自动触发资源创建,而CustomJob需要显式调用submit(),这是两者使用逻辑的关键区别。- 任务提交后,可通过
job.resource_name查看GCP端的资源ID,也可在Vertex AI控制台直接查看任务状态。
内容的提问来源于stack exchange,提问作者GenError
相关产品推荐
相关产品推荐

