Google 来自 Dataflow 的 CloudML 权限 - 无法重新创建 google 张量流图像示例

Google CloudML Permissions from Dataflow - cannot recreate google tensorflow image example

我正在尝试使用他们的新 CLOUDML 工具从 Google 关注此博客 post。

https://cloud.google.com/blog/big-data/2016/12/how-to-train-and-classify-images-using-google-cloud-machine-learning-and-cloud-dataflow

运行 来自他们提供的 docker 实例

docker pull gcr.io/cloud-datalab/datalab:local
docker run -it -p "127.0.0.1:8080:8080" \
  --entrypoint=/bin/bash \
  gcr.io/cloud-datalab/datalab:local

开始于: root@9e93221352d8:~/google-cloud-ml/samples/flowers#

到运行第一步预处理:

分配适当的值。

PROJECT=$(gcloud config list project --format "value(core.project)")
JOB_ID="flowers_${USER}_$(date +%Y%m%d_%H%M%S)"
BUCKET="gs://${PROJECT}-ml"
GCS_PATH="${BUCKET}/${USER}/${JOB_ID}"
DICT_FILE=gs://cloud-ml-data/img/flower_photos/dict.txt

预处理评估集。

python trainer/preprocess.py \
  --input_dict "$DICT_FILE" \
  --input_path "gs://cloud-ml-data/img/flower_photos/eval_set.csv" \
  --output_path "${GCS_PATH}/preproc/eval" \
  --cloud

returns

(27042c30421ec530): Workflow failed. Causes: (70e56dda0121e0fa): One or more access checks for temp location or staged files failed. Please refer to other error messages for details. For more information on security and permissions, please see https://cloud.google.com/dataflow/security-and-permissions.

前往控制台,日志显示为:

(531d956bf99b5f27): Staged package cloudml.latest.tar.gz at location 'gs://api-project-773889352370-ml/flowers__20170106_123249/preproc/staging/flowers-20170106-123312.1483705994.201001/cloudml.latest.tar.gz' is inaccessible.

我再次尝试使用

进行身份验证
gcloud beta auth application-default login

并从浏览器获取密钥。那里似乎没有错。

我已成功 运行 MNIST 云学习教程,因此与 google 计算引擎通信没有身份验证问题。

我可以确认我的存储桶路径是正确的:

root@9e93221352d8:~/google-cloud-ml/samples/flowers# echo ${GCS_PATH}
gs://api-project-773889352370-ml//flowers__20170106_165608

但从未创建文件夹 flowers__20170106_165608(由于权限)。

Dataflow 是否需要单独的凭据?我去了控制台并确保我的帐户对数据流开放 API。任何超越

root@9e93221352d8:~/google-cloud-ml/samples/flowers# gcloud config list
Your active configuration is: [default]

[component_manager]
disable_update_check = True
[compute]
region = us-central1
zone = us-central1-a
[core]
account = ####<- scrubbed for SO, its correct.
project = api-project-773889352370

编辑:在控制台上显示服务帐户选项卡。

编辑:接受以下答案。我接受这个答案,因为 Jeremy Lewi 是正确的。问题不在于数据流确实具有权限,而是因为从未创建 GCS 对象。进入预处理记录器你可以看到

教程 google 显示的免费套餐可能配置不当,我猜它分发到太多实例并超过了 CPU 配额。如果我不能解决,我会开一个正确的框架问题。

请参阅错误消息提供的 link 中有关服务帐户的信息。我怀疑服务帐户未被正确授权以查看暂存文件。