繁体   English   中英

Google AI Platform 培训 - 等待工作完成

[英]Google AI Platform training - wait for the job to finish

我构建了一个包含大量并行进程的 AI Platform 管道。 每个进程在 AI 平台上启动一个训练作业,如下所示:

gcloud ai-platform jobs submit training ... 

然后它必须等待作业完成才能传递到下一步。 为此,我尝试将参数--stream-logs添加到上述命令中。 通过这种方式,它会流式传输所有日志,直到作业完成。

问题是,有这么多并行进程,我用完了获取日志的请求:

Quota exceeded for quota metric 'Read requests' and limit 'Read requests per minute' 
of service 'logging.googleapis.com'

但是我实际上不需要 stream 日志,我只需要一种方法来告诉进程“等待”直到训练工作完成。 有没有更聪明、更简单的方法来做到这一点?

我刚刚发现我可以使用 Python API 来启动和监控作业:

training_inputs = {
    'scaleTier': 'CUSTOM',
    'masterType': 'n1-standard-8',
    ...
}

job_spec = {'jobId': 'your_job_name', 'trainingInput': training_inputs}


project_name = 'your-project'
project_id = 'projects/{}'.format(project_name)


cloudml = discovery.build('ml', 'v1')

request = cloudml.projects().jobs().create(
    body=job_spec,
    parent=project_id
)
response = request.execute()

现在我可以设置一个循环,每 60 秒检查一次作业 state

state = 'RUNNING'
while state == 'RUNNING':

    time.sleep(60)
    status_req = cloudml.projects().jobs().get(name=f'{project_id}/jobs/{job_name}')

    state = status_req.execute()['state']

    print(state)

关于您遇到的错误消息,确实您达到了 Cloud Logging超出的配额,您可以做的是请求增加配额。

另一方面,关于在没有流日志的情况下检查作业状态的更智能方法,您可以通过运行gcloud ai-platform jobs describe <job_name>或创建 Python 脚本来偶尔检查状态检查状态,这在以下文档中有解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM