添加自定义依赖项在 ML-Engine 提交训练中不起作用

Adding custom dependancy wont work in ML-Engine submit training

我有一个 .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"

并且单独发一个stand alone 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.

查看文档 packaging-trainer 我注意到有两个示例,一个像我的原始脚本一样工作,正如我所说,它工作得很好,另一个示例使用打包的依赖项。

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

提前致谢!!!

我相信您要尝试做的事情需要使用

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

代替--package-path