使用 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
。
我有一个 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
。