Вопрос или проблема
Я пытаюсь написать базовый скрипт для суммирования текста:
def generate(self, text_to_summarize):
vertexai.init(project=”<PROJECT_ID”, location=”MY_REGION”)
model = GenerativeModel(
“gemini-1.5-flash-002″,
system_instruction=[my_prompt]
)
responses = model.generate_content(
[text_to_summarize],
stream=True,
)
for response in responses:
print(response.text, end=””)
Это работает как задумано локально, используя “gemini-1.5-flash-002”
Чтобы запустить на gcloud run, я создал скрипт в контейнере Docker и развернул его в gcloud run.
Вызов конечной точки завершился неудачей с ошибкой:
“PermissionDenied(\”Permission ‘aiplatform.endpoints.predict’ denied on resource ‘//aiplatform.googleapis.com/projects/<PROJECT-ID>/locations/<REGION>/publishers/google/models/gemini-1.5-flash-002’ (or it may not exist).\”)”
Я дважды проверил разрешения с помощью gcloud projects get-iam-policy <PROJECT-ID> и увидел:
bindings:
– members:
– serviceAccount:service-<CODE>@gcp-sa-vertex-op.iam.gserviceaccount.com
role: roles/aiplatform.onlinePredictionServiceAgent
– members:
– serviceAccount:service-<CODE>@gcp-sa-aiplatform.iam.gserviceaccount.com
role: roles/aiplatform.serviceAgent
– members:
– serviceAccount:<CODE>[email protected]
– user:<MY-EMAIL>
role: roles/aiplatform.user
…
Я проверил модели здесь, и aiplatform.endpoints.predict является разрешением для roles/aiplatform.user, так что у меня есть разрешение.
Это привело меня к выводу, что модель не существует. Я думал, что gcloud run автоматически использует gemini flash, как это работает локально. Я выполнил
gcloud ai models list –region=<REGION>
и моделей нет.
Даже попытка развернуть эту модель на моей конечной точке завершилась неудачей. Код для развертывания:
gcloud ai endpoints deploy-model <MY-ENDPOINT-ID>\
–model=gemini-1.5-flash-002 \
–region=<REGION> \
–display-name=”flash-deployment” \
–machine-type=”n1-standard-4″
и это завершилось ошибкой
(gcloud.ai.endpoints.deploy-model) Произошла ошибка при получении информации о модели. Пожалуйста, убедитесь, что модель ‘projects/<PROJECT-ID>/locations/<REGION>/models/gemini-1.5-flash-002’ существует.
Я думаю, что мне нужно зарегистрировать модель где-то, но когда я открываю реестр моделей и пытаюсь “Создать” одну, он запрашивает у меня тренировочные данные и так далее. Я не хочу обучать новую модель, просто использовать предобученную flash.
Кто-нибудь знает, как это можно сделать?
Ответ или решение
Для того чтобы сделать модель "gemini-1.5-flash-002" доступной для вашего проекта на Google Cloud Run, необходимо выполнить несколько шагов, чтобы правильно настроить окружение, разрешения и саму модель. Ваша основная ошибка заключается в том, что вы пытаетесь использовать модель, которая не зарегистрирована для вашего проекта или не имеет соответствующих разрешений. Вот как можно решить вашу проблему:
Шаг 1: Регистрация модели в вашем проекте
Прежде всего, убедитесь, что модель "gemini-1.5-flash-002" зарегистрирована в вашей учетной записи Google Cloud. Для этого выполните следующие действия:
- Войдите в Google Cloud Console.
- Перейдите в раздел AI Platform (Vertex AI).
- Выберите Models в боковом меню и посмотрите, доступна ли модель.
Если модель отсутствует, вы должны сначала зарегистрировать ее, используя команду:
gcloud ai models upload \
--region=<REGION> \
--display-name="genimi-1.5-flash-002" \
--artifact-uri=<URI_ARTIFACT> \
--container-image-uri=<IMAGE_URI>
Обратите внимание, что вам нужно будет указать правильные параметры каталога и контейнера. Если у вас нет необходимого артефакта и контейнера, тогда вы не сможете использовать эту модель.
Шаг 2: Проверка разрешений
Вы правильно указали, что для доступа к модели требуется соответствующий уровень разрешений. Убедитесь, что учётная запись вашего сервиса (обычно это service-<CODE>@gcp-sa-vertex-op.iam.gserviceaccount.com
) имеет роли:
roles/aiplatform.admin
илиroles/aiplatform.user
roles/aiplatform.onlinePredictionServiceAgent
Вы можете проверить разрешения, выполнив следующую команду:
gcloud projects get-iam-policy <PROJECT-ID>
Если вы не видите указанные роли, добавьте их с помощью команды:
gcloud projects add-iam-policy-binding <PROJECT-ID> \
--member="serviceAccount:service-<CODE>@gcp-sa-vertex-op.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
Шаг 3: Деплой модели на конечную точку (Endpoint)
После успешной регистрации модели и настройки разрешений, вы можете попробовать задеплоить модель:
gcloud ai endpoints deploy-model <MY-ENDPOINT-ID> \
--model=projects/<PROJECT-ID>/locations/<REGION>/models/gemini-1.5-flash-002 \
--region=<REGION> \
--display-name="flash-deployment" \
--machine-type="n1-standard-4"
Обратите внимание на правильное указание идентификатора проекта и региона. Если модель уже существует и зарегистрирована правильно, команда должна работать без ошибок.
Шаг 4: Проверка и отладка
Если вы все еще получаете ошибку "PermissionDenied", проверьте:
- Что сервисный аккаунт, используемый вашим Cloud Run приложением, имеет все необходимые разрешения для выполнения предсказаний модели.
- Что ваша модель действительно зарегистрирована в правильном проекте и в правильном регионе.
Это позволит вам избежать проблем и делать модель доступной в вашем проекте Google Cloud Run. Если все шаги были выполнены правильно, вы сможете успешно запрашивать предсказания из модели "gemini-1.5-flash-002" без ошибок.