В настоящее время я использую мультимодальную модель внедрения Vertex AI (https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-multimodal-embeddings)
Мне удалось нормально запустить примеры изображений и текста с помощью Python SDK и POST, однако, когда я пытаюсь запустить следующий пример видео (по ссылке выше), я получаю следующую ошибку
import vertexai
from vertexai.vision_models import MultiModalEmbeddingModel, Video
project_id = 'project_name'
location = 'us-central1'
vertexai.init(project=project_id, location=location)
# Document metadata
video_path = 'gs://test-public-bucket-123/dog_jumping_short.mp4' # public small 1 MB 7 second video file
description = 'dogs jumping'
model = MultiModalEmbeddingModel.from_pretrained("multimodalembedding@001")
video = Video.load_from_file(video_path)
embeddings = model.get_embeddings(
video=video
)
# Video Embeddings are segmented based on the video_segment_config.
print("Video Embeddings:")
for video_embedding in embeddings.video_embeddings:
print(
f"Video Segment: {video_embedding.start_offset_sec} - {video_embedding.end_offset_sec}"
)
print(f"Embedding: {video_embedding.embedding}")
print(f"Text Embedding: {embeddings.text_embedding}")
Ошибка, которую я получаю при запуске этого примера кода, связана с Deadline
Traceback (most recent call last):
File "/Users/me/Code/multi-modal-test/multi-modal/lib/python3.12/site-packages/google/api_core/grpc_helpers.py", line 76, in error_remapped_callable
return callable_(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/me/Code/multi-modal-test/multi-modal/lib/python3.12/site-packages/grpc/_channel.py", line 1181, in __call__
return _end_unary_response_blocking(state, call, False, None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/me/Code/multi-modal-test/multi-modal/lib/python3.12/site-packages/grpc/_channel.py", line 1006, in _end_unary_response_blocking
raise _InactiveRpcError(state) # pytype: disable=not-instantiable
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
status = StatusCode.UNAUTHENTICATED
details = "Video embedding failed with the following error: Deadline"
debug_error_string = "UNKNOWN:Error received from peer ipv4:142.250.81.234:443 {grpc_message:"Video embedding failed with the following error: Deadline", grpc_status:16, created_time:"2024-05-23T15:53:15.429704-04:00"}"
Обратите внимание, что мне удалось встроить contextual_text
и image
с одной и той же аутентификацией, поэтому я вполне уверен, что это не имеет ничего общего с аутентификацией, даже если об этом говорится в ошибке.
Я также пытался отправить POST, используя следующий cURL, но получаю тот же ответ об ошибке Deadline
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/multi/locations/us-central1/publishers/google/models/multimodalembedding@001:predict"
У меня включены следующие API (обратите внимание, что, согласно документации, мне нужно включить только Vertex AI API)
Это мои разрешения IAM
- members:
- user:[email protected]
role: roles/aiplatform.admin
- members:
- user:[email protected]
role: roles/aiplatform.user
- members:
- user:[email protected]
role: roles/ml.admin
- members:
- user:[email protected]
role: roles/owner
- members:
- user:[email protected]
role: roles/storage.admin
- members:
- user:[email protected]
role: roles/visionai.admin
etag: BwYaJsGtzOk=
version: 1
Я использую не учетную запись службы, а учетную запись пользователя.
Кто-нибудь знает, что я могу здесь сделать?
Весь код выглядит правильно. Это может быть проблема со службой или что-то связанное с файлом в GCS.
Возникает ли эта ошибка с каким-либо видео, отправленным в API мультимодального внедрения из вашего проекта, или только с этим конкретным? Можете ли вы попробовать использовать это видео в общедоступной корзине GCS gs://cloud-samples-data/video/animals.mp4
.
Я также пытаюсь встроить этот общедоступный URL-адрес видео: https://storage.googleapis.com/test-public-bucket-123/dog_jumping_short.mp4
, и все еще получаю ту же ошибку.
Возможно, это не основная причина, но можете ли вы запустить это, чтобы убедиться, что объект существует в GCS?
gsutil ls gs://multi-assets/videos/dog_jumping_short.mp4
Когда я делаю это со своей учетной записью, я получаю BucketNotFoundException: 404 gs://multi-assets bucket does not exist.
, хотя ожидал чего-то вроде AccessDeniedException: 403 does not have storage.objects.list access to the Google Cloud Storage bucket.
Я попробовал это, и он продолжает выдавать мне ту же ошибку. Я также попробовал общедоступную корзину + общедоступный файл, и она продолжает вызывать у меня ту же проблему:/gs://test-public-bucket-123/dog_jumping_short.mp4
Я мог бы успешно запустить ваш скрипт, заменив project_id
собственным проектом и video_path
общедоступным ресурсом gs://test-public-bucket-123/dog_jumping_short.mp4
Хм! Может быть, тогда проблемы возникают из-за настроек моего проекта? Я использую корпоративную учетную запись (под своей компанией), так что проблема может быть в этом!
Я попробовал это также в своем личном аккаунте, но все равно получил ту же ошибку. Не могли бы вы рассказать, как выглядят ваши разрешения? Может быть, дело в конфигурации, разрешениях или API, которые я не включил?
Это может быть связано с несоответствием между «текущим проектом» gcloud и «учетными данными приложения по умолчанию». Это может сбить с толку, поскольку точный порядок этих команд имеет значение.
Чтобы убедиться, не могли бы вы попробовать в таком порядке:
1.
gcloud config set project MY_PROJECT_ID
(док)
2.
gcloud auth application-default login
(док)
Похоже, выяснилось, что я не включил API использования службы (console.cloud.google.com/apis/api/serviceusage.googleapis.com/…), где мне предлагается включить его при запуске gcloud auth application-default login
. Однако после его включения (и ожидания нескольких минут) он все равно выдает ту же ошибку. В нашей переписке по электронной почте я вижу, что конечная точка работает для вас - тогда с моей стороны должна быть проблема с разрешением
Подождав около часа, кажется, это сработало. СПАСИБО!
Для контекста для других: ADC: cloud.google.com/docs/authentication/provide-credentials-adc
Привет, Холт! Рад услышать ваш ответ. При запуске я получаю следующий ответ
gsutil ls ...
:gs://multi-modal-assets/videos/sample/dog_jumping_short.mp4
, который указывает на то, что он может найти файл при аутентификации.