首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拒绝使用Google AiPlatform ModelServiceClient的权限

拒绝使用Google AiPlatform ModelServiceClient的权限
EN

Stack Overflow用户
提问于 2022-03-10 20:18:07
回答 2查看 1.4K关注 0票数 0

为了让顶点AI管道正常工作,我正在遵循一个指南:

https://codelabs.developers.google.com/vertex-pipelines-intro#5

我实现了以下自定义组件:

代码语言:javascript
复制
from google.cloud import aiplatform as aip
from google.oauth2 import service_account

project = "project-id"
region = "us-central1"
display_name = "lookalike_model_pipeline_1646929843"

model_name = f"projects/{project}/locations/{region}/models/{display_name}"
api_endpoint = "us-central1-aiplatform.googleapis.com" #europe-west2
model_resource_path = model_name
client_options = {"api_endpoint": api_endpoint}

# Initialize client that will be used to create and send requests.
client = aip.gapic.ModelServiceClient(credentials=service_account.Credentials.from_service_account_file('..\\service_accounts\\aiplatform_sa.json'), 
client_options=client_options)
#get model evaluation
response = client.list_model_evaluations(parent=model_name)

我得到了以下错误:

代码语言:javascript
复制
(<class 'google.api_core.exceptions.PermissionDenied'>, PermissionDenied("Permission 'aiplatform.modelEvaluations.list' denied on resource '//aiplatform.googleapis.com/projects/project-id/locations/us-central1/models/lookalike_model_pipeline_1646929843' (or it may not exist)."), <traceback object at 0x000002414D06B9C0>)

该模型确实存在,并已完成训练。我已经在aiplatform服务帐户中给自己赋予了管理权限。在指南中,他们不使用服务帐户,而是只使用client_options。client_option有错误的类型,因为它应该是一个dict(str,str):可选的‘’ClientOptions‘。但这不会导致错误。

我的主要问题是:我怎样才能避开这个许可问题?

我的子问题是:

  1. 如何在URL中使用我的model_name变量来访问模型?
  2. 如何创建可选的‘’ClientOptions‘对象作为client_option传递
  3. 还有另一种方法,我可以从list_model_evaluations的模型,是在VertexAI,培训使用自动?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-11 04:05:59

我尝试使用您的代码,但它也不适用于我,并得到了一个不同的错误。正如@DazWilkin所提到的,建议使用云客户机。

我用了aiplatform_v1,效果很好。我注意到的一件事是,您应该始终为client_options定义一个值,以便它将指向正确的端点。检查"aiplatform.googleapis.com"的代码,如果我没有弄错的话,端点默认为ModelServiceClient,它没有预先设置位置。端点应该预先加上一个位置

请参阅下面的代码。我使用了AutoML模型,它返回它们的模型评估。

代码语言:javascript
复制
from google.cloud import aiplatform_v1 as aiplatform
from typing import Optional

def get_model_eval(
        project_id: str,
        model_id: str,
        client_options: dict,
        location: str = 'us-central1',
        ):

    client_model = aiplatform.services.model_service.ModelServiceClient(client_options=client_options)

    model_name = f'projects/{project_id}/locations/{location}/models/{model_id}'
    list_eval_request = aiplatform.types.ListModelEvaluationsRequest(parent=model_name)
    list_eval = client_model.list_model_evaluations(request=list_eval_request)
    print(list_eval)



api_endpoint = 'us-central1-aiplatform.googleapis.com'
client_options = {"api_endpoint": api_endpoint} # api_endpoint is required for client_options
project_id = 'project-id'
location = 'us-central1'
model_id = '99999999999' # aiplatform_v1 uses the model_id

get_model_eval(
        client_options = client_options,
        project_id = project_id,
        location = location,
        model_id = model_id,
        )

这是我的AutoML文本分类的输出片段:

票数 1
EN

Stack Overflow用户

发布于 2022-03-11 03:25:21

尽管我在评论中提到,虽然我熟悉GCP,但我对AI\ML不太熟悉。下列各点应能发挥作用。我没有一个模型可以用来测试它。

代码语言:javascript
复制
BILLING=[[YOUR-BILLING]]

export PROJECT=[[YOUR-PROJECT]]
export LOCATION="us-central1"
export MODEL=[[YOUR-MODEL]]

ACCOUNT="tester"

gcloud projects create ${PROJECT}

gcloud beta billing projects link ${PROJECT} \
--billing-account=${BILLING}

# Unsure whether ML is needed
for SERVICE in "aiplatform" "ml"
do
  gcloud services enable ${SERVICE}.googleapis.com \
  --project=${PROJECT}
done

gcloud iam service-accounts create ${ACCOUNT} \
--project=${PROJECT}

EMAIL=${ACCOUNT}@${PROJECT}.iam.gserviceaccount.com

gcloud projects add-iam-policy-binding ${PROJECT} \
--role=roles/aiplatform.admin \
--member=serviceAccount:${EMAIL}

gcloud iam service-accounts keys create ${PWD}/${ACCOUNT}.json \
--iam-account=${EMAIL} \
--project=${PROJECT}

export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/${ACCOUNT}.json

python3 -m venv venv
source venv/bin/activate
python3 -m pip install google-cloud-aiplatform
python3 main.py

main.py

代码语言:javascript
复制
import os

from google.cloud import aiplatform

project = os.getenv("PROJECT")
location = os.getenv("LOCATION")
model = os.getenv("MODEL")

aiplatform.init(
    project=project,
    location=location,
    experiment="test",
)

parent = f"projects/{project}/locations/{location}/models/{model}"
model = aiplatform.Model(parent)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71430286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档