首页 > 解决方案 > 如何从 GCP Cloud Build 管道内提交 GCP AI Platform 训练作业?

问题描述

我有一个非常标准的CI管道Cloud Build用于基于容器的机器学习训练模型:

现在在机器学习中,如果不使用真实数据进行测试,就不可能验证模型。通常我们会添加 2 个额外的检查:

这允许在模型代码中捕获问题。在我的设置中,我有Cloud Build一个构建GCP项目和另一个GCP项目中的数据。

Q1:有人设法使用AI Platform training服务Cloud Build来训练另一个GCP项目中的数据吗?

Q2:如何告诉 Cloud Build 等到AI Platform training作业完成并检查状态(成功/失败)是什么?在查看要使用的文档链接时,似乎唯一的选择,--stream-logs但似乎不是最佳选择(使用这样的选项,我看到了一些巨大的延迟)

标签: google-cloud-platformgoogle-cloud-buildgcp-ai-platform-training

解决方案


当您提交 AI 平台训练作业时,您可以指定要使用的服务帐户电子邮件

确保服务帐户在其他项目中具有足够的权限以使用来自那里的数据。

对于你的第二个问题,你有 2 个解决方案

  • 按照你说的使用--stream-logs。如果您不希望 Cloud Build 中的日志,您可以将 stdout 和/或 stderr 重定向到/dev/null
- name: name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
    - -c
    - |
         gcloud ai-platform jobs submit training <your params> --stream-logs >/dev/null 2>/dev/null

或者您可以创建一个无限循环来检查状态

- name: name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
    - -c
    - |
        JOB_NAME=<UNIQUE Job NAME>
        gcloud ai-platform jobs submit training $${JOB_NAME} <your params> 
        # test the job status every 60 seconds
        while [ -z "$$(gcloud ai-platform jobs describe $${JOB_NAME} | grep SUCCEEDED)" ]; do sleep 60; done

这里我的测试很简单,但是您可以根据需要自定义状态测试

不要忘记按预期设置超时。


推荐阅读