1

我有一个 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 的限制还是我只是遗漏了什么?

4

1 回答 1

2

如错误消息所示,您需要指定package_uris,这是包含培训计划和任何其他依赖项的包的 Google Cloud Storage 位置。如果直接调用 REST API 提交作业,则必须指定。

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

于 2018-10-17T17:03:16.260 回答