【问题标题】:Google AI Platform training - wait for the job to finishGoogle AI Platform 培训 - 等待作业完成
【发布时间】:2021-02-24 13:57:03
【问题描述】:

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

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'

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

【问题讨论】:

    标签: google-cloud-platform gcp-ai-platform-training google-ai-platform


    【解决方案1】:

    我刚刚发现我可以使用 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 = '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)
    

    【讨论】:

      【解决方案2】:

      关于您遇到的错误消息,确实您正在为 Cloud Logging 发送 quota exceeded,您可以请求增加配额。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 2018-01-06
        • 1970-01-01
        • 2020-07-18
        • 2015-04-17
        相关资源
        最近更新 更多