Как мне получить доступ к 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.