使用 Python API 从本地计算机提交 Cloud ML Engine 作业

Submit Cloud ML Engine job from local machine using the Python API

我有一个 Python 定义 CMLE 作业的脚本,如下所示:

import os
import sys
import logging
from config import Config # this holds all my config variables
from pumps import trainer
from googleapiclient import discovery, errors

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = Config.GOOGLE_APPLICATION_CREDENTIALS

# The trainer folder needs to be added to PYTHONPATH for google to find it
sys.path.append(os.path.abspath(os.pardir)+'/pumps/trainer')

training_inputs = {'scaleTier': 'BASIC',
                   'pythonModule': 'trainer.task',
                   'args': ['--bucket', Config.BUCKET_NAME,
                            '--model_dir', Config.MODEL_DIR,
                            '--transformer_dir', Config.TRANSFORMER_DIR,
                            '--data', Config.DATA_FILE,
                            '--n_estimators', '100',
                            '--class_weight', 'balanced_subsample',
                            '--criterion', 'entropy'],
                   'region': Config.REGION,
                   'jobDir': Config.JOB_DIR,
                   'runtimeVersion': Config.RUNTIME_VERSION,
                   'pythonVersion': Config.PYTHON_VERSION}


job_spec = {'jobId': Config.JOB_NAME,
            'trainingInput': training_inputs}


# the format for this variable is projects/<your_project_name>
project_id = 'projects/{}'.format(Config.PROJECT)

cloudml = discovery.build('ml', 'v1')
request = cloudml.projects().jobs().create(body=job_spec,
                                           parent=project_id)
response = request.execute()enter code here

不幸的是,我得到了错误 "Field: package_uris Error: Tarball URIs of the training program must be provided."> 我的等效 bash 脚本没有问题 运行 而且似乎 Python 版本缺少等效的 --package-path 标志。这是 Python API 的限制还是我只是遗漏了什么?

如错误消息所示,您需要指定 package_uris,这是包含培训程序和任何其他依赖项的包的 Google 云存储位置。如果直接调用RESTAPI提交作业,则必须指定。

请注意,如果您使用GCLOUD,您可以指定package-path,这是一个本地路径,GCLOUD帮助您打包您的培训计划并上传到云存储。当 GCLOUD 将作业提交到 CloudML Engine 时,Cloud Storage uris 将设置为 package_uris