直接从 Python 提交 Google Cloud ML Engine Jobs



我有一个Keras .h5模型,我一直在本地训练,但现在希望通过Google Cloud ML-Engine自动化整个过程。

我已将所有 GCloud 存储桶设置为可从应用程序访问,并且我已经阅读了有关配置作业以提交 Keras 模型以在 GCloud ML-Engine 中进行训练的信息。但是,所有这些教程(包括谷歌云 ml-engine 上的文档)都表示要运行作业,最好从命令行运行gcloud ml-engine jobs submit training

我知道谷歌云的Python客户端库,但是关于它的文档似乎有点不透明。

有谁知道我是否可以完全从python文件本身提交模型的训练(通过直接API调用或通过Google客户端库)?我问,因为我希望将其变成一个完全自动化的托管 Flask Web 应用程序,用于模型训练,因此需要尽可能放手。

确实有一种方法可以从Python脚本将作业提交到Cloud ML Engine。您可以使用Google Python API客户端库来实现此目的,在我共享的链接中,您可以查看API如何调用的仔细解释。有一个逐个命令的解释,最后是一个如何将所有内容放在一起的示例。为了使用该库,您必须先安装它,如其他页面所述。

然后,您感兴趣的方法(用于提交作业)是cloudml.projects.jobs.create(),您可以在开发人员页面中找到有关如何调用它的详细信息。我想你可能有兴趣先玩一下 REST API,以便熟悉它是如何工作的;可以通过 API 资源管理器执行此操作。下面是一个用于进行 API 调用的正文示例:

training_inputs = {'scaleTier': 'CUSTOM',
'masterType': 'complex_model_m',
'workerType': 'complex_model_m',
'parameterServerType': 'large_model',
'workerCount': 9,
'parameterServerCount': 3,
'packageUris': ['gs://<YOUR_TRAINER_PATH>/package-0.0.0.tar.gz'],
'pythonModule': 'trainer.task',
'args': ['--arg1', 'value1', '--arg2', 'value2'],
'region': '<REGION>',
'jobDir': 'gs://<YOUR_TRAINING_PATH>',
'runtimeVersion': '1.4'}
job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

您应该根据模型的规格对其进行调整。准备好后,您可以查看此页面,解释如何使用 Python 提交训练作业,但简而言之,它应该是这样的:

from oauth2client.client import GoogleCredentials
from googleapiclient import discovery
from googleapiclient import errors
project_name = 'my_project_name'
project_id = 'projects/{}'.format(project_name)
credentials = GoogleCredentials.get_application_default()
cloudml = discovery.build('ml', 'v1', credentials=credentials)
request = cloudml.projects().jobs().create(body=job_spec, parent=project_id)
try:
response = request.execute()
# Handle a successful request
except errors.HttpError, err:
logging.error('There was an error creating the training job.'
' Check the details:')
logging.error(err._get_reason())

您应该能够运行此代码,以便通过 Python 脚本提交云 ML 引擎作业。

我希望这会有所帮助,并减轻您提到的文档的不透明度。

最新更新