Как мне получить доступ к AIP_STORAGE_URI в Vertex AI?

Я загрузил модель с

      gcloud beta ai models upload --artifact-uri

И в докере обращаюсь. я вижу это AIP_STORAGE_URI это еще одно хранилище Google, поэтому я пытаюсь загрузить файлы, используя 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.

Что я делаю неправильно?

2 ответа

Причина ошибки в том, что учетная запись службы по умолчанию, которую использует Vertex AI, имеет роль « », которая исключает разрешение. В то же время storage.Client() Часть кода делает запрос к управляемой корзине Vertex AI, для которой учетная запись службы по умолчанию не имеет разрешений.

Чтобы решить эту проблему, я предлагаю вам выполнить следующие шаги:

  • Внесите изменения в пользовательский код, чтобы получить доступ к корзине с артефактами модели в вашем проекте вместо использования переменной среды. AIP_STORAGE_URI который указывает на расположение модели в управляемом сегменте Vertex AI.

  • Создайте свою собственную учетную запись службы и предоставьте учетной записи службы все разрешения, необходимые для настраиваемого кода. Для этой конкретной ошибки роль с storage.buckets.getразрешение, например. Просмотр объектов хранилищаАдминистратор хранилища («role / storage.admin») должен быть предоставлен учетной записи службы.

  • При развертывании модели укажите вновь созданную учетную запись службы в поле «Учетная запись службы».

Если вы посмотрите на документацию Google, там говорится, что контейнер модели по умолчанию имеет доступ к другому сегменту, где Vertex AI хранит артефакты модели. В вашем скрипте Python или где-либо еще вы можете использовать команду gcloud для установки артефакта модели без запускаgcloud initили делать какие-либо авторизации. Вот пример загрузки артефактов модели в скрипте Python с использованием AIP_STORAGE_URI.

      # 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.

Другие вопросы по тегам