Google cloud platform 如何从GCP云构建管道内部提交GCP AI平台培训工作?
对于基于容器的机器学习培训模型,我有一个非常标准的Google cloud platform 如何从GCP云构建管道内部提交GCP AI平台培训工作?,google-cloud-platform,google-cloud-build,gcp-ai-platform-training,Google Cloud Platform,Google Cloud Build,Gcp Ai Platform Training,对于基于容器的机器学习培训模型,我有一个非常标准的CI管道,使用云构建: 使用flake8检查python错误 使用pylint、pydocstyle检查语法和样式问题 构建基本容器(CPU/GPU) 为我的模型构建专门的ML容器 检查已安装软件包的漏洞 运行测试单元 现在在机器学习中,如果不使用真实数据对模型进行测试,就不可能验证模型。通常我们会增加2张额外支票: 修复所有随机种子并运行测试数据,以查看我们是否找到完全相同的结果 对模型进行批量训练,看看我们是否可以进行过度拟合,并使损失
CI
管道,使用云构建
:
- 使用flake8检查python错误
- 使用pylint、pydocstyle检查语法和样式问题
- 构建基本容器(CPU/GPU)
- 为我的模型构建专门的ML容器
- 检查已安装软件包的漏洞
- 运行测试单元
- 修复所有随机种子并运行测试数据,以查看我们是否找到完全相同的结果
- 对模型进行批量训练,看看我们是否可以进行过度拟合,并使损失为零
云构建
放在一个构建GCP
项目中,数据放在另一个GCP
项目中
问题1:是否有人设法在云构建
中使用AI平台培训
服务来培训另一个GCP
项目中的数据
问题2:如何告知云构建等待
AI平台培训工作完成,并检查状态(成功/失败)?在查看文档时,似乎唯一的选择是使用流日志,但它似乎不是最优的(使用这样的选项,我看到了一些巨大的延迟)当您提交AI平台培训作业时,您可以指定一个
确保服务帐户在另一个项目中有足够的权限使用其中的数据
对于第二个问题,您有两种解决方案
- 使用您提到的
--流日志。如果不希望在云构建中使用日志,可以将stdout和/或stderr重定向到/dev/null
-name:name:'gcr.io/cloud builders/gcloud'
入口点:“bash”
args:
--c
- |
gcloud ai平台作业提交培训--流日志>/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
-name:name:'gcr.io/cloud builders/gcloud'
入口点:“bash”
args:
--c
- |
工作名称=
gcloud ai平台作业提交培训$${JOB_NAME}
#每60秒测试一次作业状态
而[-z“$$(gcloud ai平台作业描述$${JOB_NAME}}grep successed)”;睡60分钟;完成
这里我的测试很简单,但是您可以根据需要定制状态测试
不要忘了按预期设置超时。提交AI平台培训作业时,可以指定一个
确保服务帐户在另一个项目中有足够的权限使用其中的数据
对于第二个问题,您有两种解决方案
- 使用您提到的
--流日志。如果不希望在云构建中使用日志,可以将stdout和/或stderr重定向到/dev/null
-name:name:'gcr.io/cloud builders/gcloud'
入口点:“bash”
args:
--c
- |
gcloud ai平台作业提交培训--流日志>/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
-name:name:'gcr.io/cloud builders/gcloud'
入口点:“bash”
args:
--c
- |
工作名称=
gcloud ai平台作业提交培训$${JOB_NAME}
#每60秒测试一次作业状态
而[-z“$$(gcloud ai平台作业描述$${JOB_NAME}}grep successed)”;睡60分钟;完成
这里我的测试很简单,但是您可以根据需要定制状态测试
不要忘记按预期设置超时