我有一个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客户端库)完全提交模型训练吗?我问的是我希望将其变成一个用于模型训练的完全托管的Flask Web应用程序,因此它需要尽可能地简化。

最佳答案

实际上,确实存在一种从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)

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作业。
我希望这会有所帮助,并减轻您提到的文档的不透明性。

关于python - 直接从Python提交Google Cloud ML引擎作业,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48169130/

10-15 21:54
查看更多