首页 > 解决方案 > 添加自定义依赖项在 ML-Engine 提交训练中不起作用

问题描述

我有一个.sh脚本可以submit training完成以下工作:

    now=$(date +"%Y%m%d_%H%M%S")
    JOB_NAME="campign_retention_model__$now"
    JOB_DIR="gs://machine_learning_datasets/campaign_retention"
    REGION="us-east1"
    PYTHON_VERSION='3.5'
    RUNTIME_VERSION='1.12'

    TRAINER_PACKAGE_PATH="./trainer/"
    PACKAGE_STAGING_PATH="gs://machine_learning_datasets/campaign_retention"
    CLOUDSDK_PYTHON="/usr/bin/python"
    MAIN_TRAINER_MODULE="trainer.task"

    gcloud ml-engine jobs submit training $JOB_NAME \
      --job-dir $JOB_DIR \
      --package-path $TRAINER_PACKAGE_PATH \
      --module-name $MAIN_TRAINER_MODULE \
      --region $REGION \
      --runtime-version=$RUNTIME_VERSION \
      --python-version=$PYTHON_VERSION \ 

效果很好(请注意,.sh位于培训师目录旁边)。

由于外部基础设施要求,我被迫将我的项目内容保存在一个名为:

"gs://campign_retention_code/camp_ret"

并单独分发一个sh,所以我刚刚将其更改为(只是更改了路径TRAINER_PACKAGE_PATH):

    now=$(date +"%Y%m%d_%H%M%S")
    JOB_NAME="campign_retention_model__$now"
    JOB_DIR="gs://machine_learning_datasets/campaign_retention"
    REGION="us-east1"
    PYTHON_VERSION='3.5'
    RUNTIME_VERSION='1.12'

    TRAINER_PACKAGE_PATH="gs://campign_retention_code/camp_ret/trainer"
    PACKAGE_STAGING_PATH="gs://machine_learning_datasets/campaign_retention"
    CLOUDSDK_PYTHON="/usr/bin/python"
    MAIN_TRAINER_MODULE="trainer.task"

    gcloud ml-engine jobs submit training $JOB_NAME \
      --job-dir $JOB_DIR \
      --package-path $TRAINER_PACKAGE_PATH \
      --module-name $MAIN_TRAINER_MODULE \
      --region $REGION \
      --runtime-version=$RUNTIME_VERSION \
      --python-version=$PYTHON_VERSION \ 

现在当我运行它时(我将它移动到桌面上的不同位置/Users/yehoshaphatschellekens/Desktop,以确保它不靠近我的项目)我收到以下错误:

ERROR: (gcloud.ml-engine.jobs.submit.training) Source directory [/Users/yehoshaphatschellekens/Desktop/camp_ret] is not a valid directory.

查看文档包装培训师,我注意到有两个示例,一个与我的原始脚本一样工作,正如我所说,它完美地工作,另一个使用打包依赖的示例。

为什么提交作业无法识别我的依赖关系gs,我不能只指向--package-path一个目录gs而不是我的本地目录吗?

提前致谢!!!

标签: google-cloud-ml

解决方案


我相信你想做的事情需要使用

--packages gs://path/to/packages

代替 --package-path


推荐阅读