【发布时间】:2020-06-27 15:42:30
【问题描述】:
我创建了一个训练作业,我从大查询中获取数据、执行训练和部署模型。我想在这两种情况下自动开始训练:
- 超过 1000 个新行添加到数据集中
- 有时间表(例如,每周一次)
我检查了 GCP Cloud Scheduler,但它似乎不适合我的情况。
【问题讨论】:
标签: google-cloud-platform gcp-ai-platform-training
我创建了一个训练作业,我从大查询中获取数据、执行训练和部署模型。我想在这两种情况下自动开始训练:
我检查了 GCP Cloud Scheduler,但它似乎不适合我的情况。
【问题讨论】:
标签: google-cloud-platform gcp-ai-platform-training
Cloud Scheduler 是按计划触发培训的正确工具。 我不知道你的拦截器是什么!!
对于你的第一点,你不能。您不能放置触发器(在 BigQuery 或其他数据库上)以在 X 新行之后发送事件。为此,我建议您这样做:
如您所见,这并不容易,并且有几个注意事项:
这对你有意义吗?
编辑
gcloud 命令是 API 调用的“简单”包装器。尝试将参数 --http-log 添加到您的 gcloud 命令中,以查看调用了哪个 API 以及使用了哪些参数。
无论如何,您可以通过调用此API 来开始工作,如果您愿意,可以使用 gcloud SDK 的 --http-log 参数!
【讨论】:
对于任何寻求按时提交培训工作的解决方案的人,在尝试了几种方法后,我在这里发布了我的解决方案。我试过了,
最简单且最具成本效益的方法是使用云调度器和具有云功能的 AI 平台客户端库
第 1 步 - 创建发布/订阅主题(例如 start-training)
第 2 步 - 使用云调度程序针对 start-training 主题创建 cron
第三步——创建云函数,触发器类型为cloud pub/sub,主题为start-training,入口点为submit_job函数。该函数通过python客户端库向AI平台提交训练作业。
现在我们有了这个漂亮的 DAG
调度器 -> 发布/订阅 -> 云功能 -> 人工智能平台
云功能代码是这样的
main.py
import datetime
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
id = '<PROJECT ID>'
bucket_name = "<BUCKET NAME>"
project_id = 'projects/{}'.format(id)
job_name = "training_" + datetime.datetime.now().strftime("%y%m%d_%H%M%S")
def submit_job(event, context):
training_inputs = {
'scaleTier': 'BASIC',
'packageUris': [f"gs://{bucket_name}/package/trainer-0.1.tar.gz"],
'pythonModule': 'trainer.task',
'region': 'asia-northeast1',
'jobDir': f"gs://{bucket_name}",
'runtimeVersion': '2.2',
'pythonVersion': '3.7',
}
job_spec = {"jobId":job_name, "trainingInput": training_inputs}
cloudml = discovery.build("ml" , "v1" ,cache_discovery=False)
request = cloudml.projects().jobs().create(body=job_spec,parent=project_id)
response = request.execute()
requirement.txt
google-api-python-client
oauth2client
重要
确保使用Project_id而不是Project_name,否则会出现权限错误
如果您在构建函数中收到ImportError:file_cache is unavailable when using oauthclient .... 错误使用cache_discovery=False,否则出于性能原因让函数使用缓存。
指向正确的 GCS 位置到您的源包,在这种情况下,我的包名称是 trainer 构建并位于存储桶中的 package 文件夹中,主模块是 task
【讨论】:
--epochs 5 如下所述:cloud.google.com/ai-platform/training/docs/…