我有一个Keras .h5模型,我一直在本地培训,但现在希望通过Google Cloud ML-Engine自动完成整个过程。
我已将所有GCloud Storage存储桶设置为可从应用程序访问,我已阅读有关将作业配置为submit a Keras model以在GCloud ML-Engine中进行训练的内容。但是,所有这些教程(包括google cloud ml-engine上的文档)声明要运行作业,最好从命令行运行gcloud ml-engine jobs submit training
。
我知道有一个适用于Google Cloud的Python客户端库,但是文档似乎有点不透明。
是否有人知道我是否可以从python文件本身(通过直接API调用或通过Google Client Library)完全提交模型的培训?我问,因为我希望将其变成一个完全自动化的托管Flask网络应用程序,用于模型培训,所以它需要尽可能地实现。
答案 0 :(得分:3)
确实有一种从Python脚本向Cloud ML Engine提交作业的方法。您可以使用Google Python API Client Library来实现此目的,在我分享的链接中,您可以查看API调用的详细说明。这是一个逐个命令的解释,最后是一个如何把所有东西放在一起的例子。要使用库,您必须先安装它,如this other page中所述。
然后,您感兴趣的方法(用于提交工作)为cloudml.projects.jobs.create()
,您可以在developers page中找到有关如何调用它的详细信息。我想你可能有兴趣首先使用REST API,以便熟悉它的工作原理;你可以通过APIs Explorer这样做。下面是用于进行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}
您应该根据模型的规格进行调整。一旦准备就绪,您可以查看此页面解释how to submit a training job using 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)
response = request.execute()
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脚本提交Cloud ML Engine作业。
我希望这可以提供帮助并减轻你提到的文档的不透明度。