Google ML 引擎:通过 REST 提交训练作业 API
Google ML Engine: Submit a training job via REST API
我正在尝试使用 Googles github 中的人口普查示例项目通过 REST API 请求开始培训工作。我可以提交作业,但它总是失败,因为我无法说明培训和评估(测试)文件的保存位置,而且确实缺乏这方面的文档 - 它只是说明 args[]
。当我查看 Google ML 中的日志时,出现以下错误:
task.py: error: the following arguments are required: --train-files, --eval-files
The replica master 0 exited with a non-zero status of 2.
这是我制定的 REST 请求:
{
"jobId": "training_12",
"trainingInput": {
"scaleTier": "BASIC",
"packageUris": ["gs://MY_BUCKET/census.tar.gz"],
"pythonModule": "trainer.task",
"args": ["--train_files gs://MY_BUCKET/adult.data.csv", "--eval_files gs://MY_BUCKET/adult.test.csv"],
"region": "europe-west1",
"jobDir": "gs://MY_BUCKET/",
"runtimeVersion": "1.4",
"pythonVersion": "3.5"
}
}
在 args
下,我尝试了很多不同的方法来说明训练和评估文件的位置,但我一直无法让它工作。只是为了澄清,我必须为这个用例使用 REST API - 而不是 CLI。
谢谢
-- 更新--
我已经尝试将参数设置为 --train-files
和 --eval-files
,但仍然无效。
-- 更新 2 --
我已经能够通过将 args 表述为:
来解决这个问题
"args": [
"--train-files",
"gs://MY_BUCKET/adult.data.csv",
"--eval-files",
"gs://MY_BUCKET/adult.test.csv",
"--train-steps",
"100",
"--eval-steps",
"10"],
现在,我收到一个新错误,日志似乎没有提供更多信息:"The replica master 0 exited with a non-zero status of 1."
日志实际上已经做了一些训练,我怀疑这与保存作业有关,但我不确定。
我看到您在 Google Cloud ML Engine 中提交训练作业时已经找到了 args
问题的解决方案。但是,让我与您分享一些文档页面,您可以在其中找到有关该主题的所有必需信息。
在关于 formatting configuration parameters 的第一页中(在 Python 选项卡下),您可以看到 args
字段填充为:
'args': ['--arg1', 'value1', '--arg2', 'value2'],
因此,定义 args
的正确方法是将它们写成 key-value 对作为独立的字符串。
此外,这个包含 general information about Training jobs 的页面解释了训练服务接受参数作为字符串列表,格式为:
['--my_first_arg', 'first_arg_value', '--my_second_arg', 'second_arg_value']
这就是为什么您最后分享的格式(下方)是正确的原因:
"args": [
"--train-files",
"gs://BUCKET/FILE",
"--eval-files",
"gs://BUCKET/FILE_2",
"--train-steps",
"100",
"--eval-steps",
"10"]
我正在尝试使用 Googles github 中的人口普查示例项目通过 REST API 请求开始培训工作。我可以提交作业,但它总是失败,因为我无法说明培训和评估(测试)文件的保存位置,而且确实缺乏这方面的文档 - 它只是说明 args[]
。当我查看 Google ML 中的日志时,出现以下错误:
task.py: error: the following arguments are required: --train-files, --eval-files
The replica master 0 exited with a non-zero status of 2.
这是我制定的 REST 请求:
{
"jobId": "training_12",
"trainingInput": {
"scaleTier": "BASIC",
"packageUris": ["gs://MY_BUCKET/census.tar.gz"],
"pythonModule": "trainer.task",
"args": ["--train_files gs://MY_BUCKET/adult.data.csv", "--eval_files gs://MY_BUCKET/adult.test.csv"],
"region": "europe-west1",
"jobDir": "gs://MY_BUCKET/",
"runtimeVersion": "1.4",
"pythonVersion": "3.5"
}
}
在 args
下,我尝试了很多不同的方法来说明训练和评估文件的位置,但我一直无法让它工作。只是为了澄清,我必须为这个用例使用 REST API - 而不是 CLI。
谢谢
-- 更新--
我已经尝试将参数设置为 --train-files
和 --eval-files
,但仍然无效。
-- 更新 2 -- 我已经能够通过将 args 表述为:
来解决这个问题"args": [
"--train-files",
"gs://MY_BUCKET/adult.data.csv",
"--eval-files",
"gs://MY_BUCKET/adult.test.csv",
"--train-steps",
"100",
"--eval-steps",
"10"],
现在,我收到一个新错误,日志似乎没有提供更多信息:"The replica master 0 exited with a non-zero status of 1."
日志实际上已经做了一些训练,我怀疑这与保存作业有关,但我不确定。
我看到您在 Google Cloud ML Engine 中提交训练作业时已经找到了 args
问题的解决方案。但是,让我与您分享一些文档页面,您可以在其中找到有关该主题的所有必需信息。
在关于 formatting configuration parameters 的第一页中(在 Python 选项卡下),您可以看到 args
字段填充为:
'args': ['--arg1', 'value1', '--arg2', 'value2'],
因此,定义 args
的正确方法是将它们写成 key-value 对作为独立的字符串。
此外,这个包含 general information about Training jobs 的页面解释了训练服务接受参数作为字符串列表,格式为:
['--my_first_arg', 'first_arg_value', '--my_second_arg', 'second_arg_value']
这就是为什么您最后分享的格式(下方)是正确的原因:
"args": [
"--train-files",
"gs://BUCKET/FILE",
"--eval-files",
"gs://BUCKET/FILE_2",
"--train-steps",
"100",
"--eval-steps",
"10"]