【问题标题】:ML Engine batch prediction job errorML Engine 批量预测作业错误
【发布时间】:2017-12-29 09:37:20
【问题描述】:

我在向 GCP ML Engine 提交批量预测作业时遇到了令人沮丧的错误。作业成功排队但失败:

Forbidden: 403 The caller does not have permission (POST https://logging.googleapis.com/v2/entries:write) [while running 'BATCH_PREDICTION/Prediction/ParDo(PredictionDoFn)/Do']

我已成功训练我的模型并通过“gcloud ml-engine”调用将其全部部署。我还可以通过“gcloud ml-engine predict”成功提交在线预测。

我按照here 的指示准备了批量预测作业。

DATA_FORMAT="TEXT"
INPUT_PATHS='gs://[BUCKET_NAME]/[INUPT_DIR]/-*'
OUTPUT_PATH='gs://[BUCKET_NAME]/[OUTPUT_DIR]' 
MODEL_NAME='[MODEL_NAME]'
VERSION_NAME='v1'
REGION='europe-west1'
now=$(date +"%Y%m%d_%H%M%S")
JOB_NAME="predict_$now"
MAX_WORKER_COUNT="20"

gcloud ml-engine jobs submit prediction $JOB_NAME \
--model $MODEL_NAME \
--input-paths $INPUT_PATHS \
--output-path $OUTPUT_PATH \
--region $REGION \
--data-format $DATA_FORMAT \
--verbosity debug

我还发现了一个 github issue 描述了一个类似的问题,该问题建议在存储桶的 ACL 中包含具有所有者角色的 cloud-logs@google.com 组。我更新了 ACL。当我跑步时

gsutil acl get gs://[BUCKET_NAME]

我将以下内容视为条目之一。

{
    "email": "cloud-logs@google.com",
    "entity": "group-cloud-logs@google.com",
    "role": "OWNER"
}

但是,我仍然收到 403 错误。有任何想法吗?谢谢。

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage google-cloud-ml-engine


    【解决方案1】:

    发送到 Cloud Logging 的请求似乎被拒绝,因为执行请求的帐户无权访问。

    这可能是几件事:

    1. 您在运行预测作业时请求了“调试”级别的详细信息 (--verbosity debug)。尝试删除它,看看它是否有效?

    2. 您没有启用 Stackdriver Logging API。尝试在API manager

    3. 中打开它
    4. 代表您的服务帐户(我认为是cloud-logs@google.com)无权通过 Strackdriver 日志记录 API 向您的项目发出请求。尝试通过IAM console添加该特定帐户电子邮件

    【讨论】:

    • 我尝试了所有三个步骤,但没有成功。仔细查看错误消息,问题可能与 GCS 无关。它看起来像一个 DataFlow 问题,因为批量预测作为“ParDo”运行。 DataFlow 进程是否可能是“调用者”并且需要一些明确的权限才能发布日志消息?
    • 如果 JJ 的建议对您不起作用,您是否介意将您的 project_id 和 job_id 分享给失败的请求,以便我们进一步了解?您可以将它们发布到 cloudml-feedback@google.com。
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    相关资源
    最近更新 更多