如何在Vertex AI中访问AIP_STORAGE_URI



我上传了一个带有的模型

gcloud beta ai models upload --artifact-uri

在docker中,我访问AIP_STORAGE_URI。我看到AIP_STORAGE_URI是另一个谷歌存储位置,所以我尝试使用storage.Client()下载文件,但它说我没有访问权限:

google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/storage/v1/b/caip-tenant-***-***-*-*-***?projection=noAcl&prettyPrint=false: custom-online-prediction@**.iam.gserviceaccount.com does not have storage.buckets.get access to the Google Cloud Storage bucket

我正在使用默认服务帐户运行此终结点。

https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#artifacts

根据以上链接:The service account that your container uses by default has permission to read from this URI.

我做错了什么?

错误背后的原因是,Vertex AI使用的默认服务帐户具有"存储对象查看器"角色,不包括storage.buckets.get权限。同时,代码的storage.Client()部分向默认服务帐户无权访问的Vertex AI管理的bucket发出storage.buckets.get请求。

为了解决这个问题,我建议您遵循以下步骤-

  1. 更改自定义代码以访问具有项目中模型工件的bucket,而不是使用指向Vertex AI管理bucket中模型位置的环境变量AIP_STORAGE_URI

  2. 创建您自己的服务帐户,并授予该服务帐户自定义代码所需的所有权限。对于此特定错误,必须向服务帐户授予具有storage.buckets.get权限的角色,例如Storage Admin("roles/Storage.Admin"(。

  3. 在";服务帐户";字段。

如果你查看谷歌文档,它说模型的容器默认可以访问Vertex AI存储模型工件的不同存储桶。在您的python脚本中,或者在任何地方,您都可以使用gcloud命令来安装模型工件,而无需运行gcloud init或进行任何授权。

以下是如何使用AIP_STORAGE_URI:在python脚本中下载模型工件的示例

# Loading the model from the pickle file
AIP_STORAGE_URI = os.environ.get('AIP_STORAGE_URI')
command = f"gcloud storage cp '{AIP_STORAGE_URI}/model.pkl' model.pkl"
subprocess.run(command, shell=True, stdout=subprocess.PIPE)
with open('model.pkl', 'rb') as file:
model = pickle.load(file)

请确保在Docker映像中安装了gcloud CLI。

相关内容

  • 没有找到相关文章

最新更新