如何解决TensorFlow model.save权限不足
我正在尝试使用false
将TF模型保存到gcs存储桶中,但始终出现以下错误:
model.save("bucket_path")
我确保使用Traceback (most recent call last):
File "python-file.py",line 765,in <module>
model.save(bucket_save_path)
File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py",line 1979,in save
signatures,options)
File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/save.py",line 134,in save_model
signatures,options)
File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/save.py",line 80,in save
save_lib.save(model,filepath,signatures,options)
File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/save.py",line 981,in save
utils_impl.get_or_create_variables_dir(export_dir)
File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/utils_impl.py",line 214,in get_or_create_variables_dir
file_io.recursive_create_dir(variables_dir)
File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/lib/io/file_io.py",line 465,in recursive_create_dir
recursive_create_dir_v2(dirname)
File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/lib/io/file_io.py",line 480,in recursive_create_dir_v2
_pywrap_file_io.RecursivelyCreateDir(compat.as_bytes(path))
tensorflow.python.framework.errors_impl.PermissionDeniedError: Error executing an HTTP request: HTTP response code 403 with body '{
"error": {
"code": 403,"message": "Insufficient Permission","errors": [
{
"message": "Insufficient Permission","domain": "global","reason": "insufficientPermissions"
}
]
}
}
when initiating an upload to gs://bucket_name/mode_name/
和gsutil auth login
登录。因此,我不确定为什么会不断收到此权限错误。
注意:此文件正在GCP VM中运行,并保存在GCS存储桶中。
解决方法
这可能与您用来在其下运行代码的帐户的存储桶上的权限有关。 VM在其下运行的服务帐户(很可能是默认的计算服务帐户)应具有对您正在使用的存储桶的写入权限。如果您在存储桶上使用细粒度的ACL,则此命令将授予写权限:
gsutil acl ch -u $PROJECT_NUMBER@compute-system.iam.gserviceaccount.com:WRITE gs://example-bucket
如果您想使用自己的帐户使用TF代码,请使用以下命令,当然,您自己的帐户也需要对存储桶进行写权限。
gcloud auth application-default login
基本上可以归结为以下问题:
- 您使用哪个帐户在VM上运行代码?
- 服务帐户(设置GOOGLE_APPLICATION_CREDENTIALS)
- 用户帐户(使用应用程序默认登录名)
- 您使用哪种存储桶权限?
- 细粒度访问(
gsutil iam ch
) - 统一的存储桶级访问(
gsutil acl ch
)
- 细粒度访问(
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。