google-cloud-storage - PermissionDeniedError:来自 /job:worker/replica:0/task:0
问题描述
我正在使用 google colaboratory 对 bert 进行预训练。我的 train_data 在谷歌云存储上,我的代码在 colab 上
IS_COLAB_BACKEND = 'COLAB_GPU' in os.environ
if IS_COLAB_BACKEND:
from google.colab import auth
auth.authenticate_user()
model_saved_path = 'gs://zhongxing_train/model/roberta_pretrain_model2.ckpt'
corpus_paths = ['gs://zhongxing_train/corpus.0.tfrecord' ]
tpu_address = 'grpc://' + os.environ['COLAB_TPU_ADDR']
流动的是错误消息:
PermissionDeniedError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1355 try:
-> 1356 return fn(*args)
1357 except errors.OpError as e:
10 frames
PermissionDeniedError: From /job:worker/replica:0/task:0:
Error executing an HTTP request: HTTP response code 403 with body '{
"error": {
"code": 403,
"message": "service-555555555555@cloud-tpu.iam.gserviceaccount.com does not have storage.objects.get access to zhongxing_train/corpus.0.tfrecord.",
"errors": [
{
"message": "service-555555555555@cloud-tpu.iam.gserviceaccount.com does not have storage.objects.get access to zhongxing_train/corpus.0.tfrecord.",
"domain": "global",
"reason": "forbidden"
}
]
}
}
'
when reading metadata of gs://zhongxing_train/corpus.0.tfrecord
[[{{node MultiDeviceIteratorGetNextFromShard}}]]
[[RemoteCall]]
[[IteratorGetNextAsOptional]]
During handling of the above exception, another exception occurred:
PermissionDeniedError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1368 pass
1369 message = error_interpolation.interpolate(message, self._graph)
-> 1370 raise type(e)(node_def, op, message)
1371
1372 def _extend_graph(self):
PermissionDeniedError: From /job:worker/replica:0/task:0:
Error executing an HTTP request: HTTP response code 403 with body '{
"error": {
"code": 403,
"message": "service-555555555555@cloud-tpu.iam.gserviceaccount.com does not have storage.objects.get access to zhongxing_train/corpus.0.tfrecord.",
"errors": [
{
"message": "service-555555555555@cloud-tpu.iam.gserviceaccount.com does not have storage.objects.get access to zhongxing_train/corpus.0.tfrecord.",
"domain": "global",
"reason": "forbidden"
}
]
}
}
'
when reading metadata of gs://zhongxing_train/corpus.0.tfrecord
[[{{node MultiDeviceIteratorGetNextFromShard}}]]
[[RemoteCall]]
[[IteratorGetNextAsOptional]]
我想也许我需要在云存储上为我的 train_data 设置权限如何从谷歌云存储获得许可
解决方案
您需要授予您的服务帐户storage.objects.get
权限,您可以通过授予服务帐户至少Storage Object Viewer
角色来做到这一点。
推荐阅读
- node.js - 开玩笑测试与 ssh2-sftp-client 库集成的功能
- python - 如何修复错误:selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互
- python - 从不同的一个 socketio 命名空间访问方法
- python-3.x - 使用 Python 的诗歌将我的最新版本的包从工作目录安装到我的本地环境中
- branch.io - iOS branch.io SDK 网络故障
- r - 创建表作为输出
- excel - 将两列数据合并为一个变量
- javascript - Vue 实例方法返回格式化属性
- r - 每次加载一行以查找错误存在的位置
- ibm-cloud - IBM Watson Studio API 在尝试上传模型时突然开始抛出错误