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"]