Ошибка «Крайний срок» при встраивании видео с помощью мультимодального модального встраивания Google Vertex AI

В настоящее время я использую мультимодальную модель внедрения 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

Я использую не учетную запись службы, а учетную запись пользователя.

Кто-нибудь знает, что я могу здесь сделать?

Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
0
192
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Весь код выглядит правильно. Это может быть проблема со службой или что-то связанное с файлом в GCS.

Возникает ли эта ошибка с каким-либо видео, отправленным в API мультимодального внедрения из вашего проекта, или только с этим конкретным? Можете ли вы попробовать использовать это видео в общедоступной корзине GCS gs://cloud-samples-data/video/animals.mp4.

Привет, Холт! Рад услышать ваш ответ. При запуске я получаю следующий ответ gsutil ls ...: gs://multi-modal-assets/videos/sample/dog_jumping_short.mp4, который указывает на то, что он может найти файл при аутентификации.

theGreenCabbage 03.06.2024 20:09

Я также пытаюсь встроить этот общедоступный URL-адрес видео: https://storage.googleapis.com/test-public-bucket-123/dog_ju‌​mping_short.mp4, и все еще получаю ту же ошибку.

theGreenCabbage 03.06.2024 20:15

Возможно, это не основная причина, но можете ли вы запустить это, чтобы убедиться, что объект существует в 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

theGreenCabbage 03.06.2024 20:17

Я мог бы успешно запустить ваш скрипт, заменив project_id собственным проектом и video_path общедоступным ресурсом gs://test-public-bucket-123/dog_jumping_short.mp4

Deleplace 04.06.2024 11:56

Хм! Может быть, тогда проблемы возникают из-за настроек моего проекта? Я использую корпоративную учетную запись (под своей компанией), так что проблема может быть в этом!

theGreenCabbage 04.06.2024 17:23

Я попробовал это также в своем личном аккаунте, но все равно получил ту же ошибку. Не могли бы вы рассказать, как выглядят ваши разрешения? Может быть, дело в конфигурации, разрешениях или API, которые я не включил?

theGreenCabbage 04.06.2024 18:31
Ответ принят как подходящий

Это может быть связано с несоответствием между «текущим проектом» gcloud и «учетными данными приложения по умолчанию». Это может сбить с толку, поскольку точный порядок этих команд имеет значение.

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

1.

gcloud config set project MY_PROJECT_ID

(док)

2.

gcloud auth application-default login

(док)

  1. Запустите программу Python (или команду cuRL)

Похоже, выяснилось, что я не включил API использования службы (console.cloud.google.com/apis/api/serviceusage.googleapis.c‌​om/…), где мне предлагается включить его при запуске gcloud auth application-default login. Однако после его включения (и ожидания нескольких минут) он все равно выдает ту же ошибку. В нашей переписке по электронной почте я вижу, что конечная точка работает для вас - тогда с моей стороны должна быть проблема с разрешением

theGreenCabbage 13.06.2024 18:04

Подождав около часа, кажется, это сработало. СПАСИБО!

theGreenCabbage 13.06.2024 18:59

Для контекста для других: ADC: cloud.google.com/docs/authentication/provide-credentials-adc

theGreenCabbage 13.06.2024 19:20

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

Можно ли точно настроить предварительно обученную модель встраивания слов, например vec2word?
Ошибка размера тензора при создании вложений для документов с использованием предварительно обученных моделей HuggingFace
ModuleNotFoundError: нет модуля с именем «llama_index.embeddings.langchain»
Почему можно использовать OpenAI Embeddings вместе с моделью Anthropic Claude?
Tensorflow UnknownError: ошибка выполнения графика: сбой компиляции JIT. [Oп:__inference_restored_function_body_9127]
Предварительная обработка корпуса для различных алгоритмов встраивания слов
ValueError: недопустимый вектор в строке 440902 | при загрузке wiki.ar.vec с помощью функции gensim.models.keyedvectors.word2vec()
Разберитесь со словом из словарного запаса с помощью предварительно обученной перчатки Gensim
Как использовать мой собственный корпус в модели встраивания слов BERT
Классический пример короля - мужчина + женщина = королева с предварительно обученным встраиванием слов и пакетом word2vec в R