Конвейеры Vertex AI. Пакетное прогнозирование «Состояние ошибки: 5».Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Конвейеры Vertex AI. Пакетное прогнозирование «Состояние ошибки: 5».

Сообщение Anonymous »

Я пытался запустить конвейер Vertex AI, используя Kubeflow Pipelines и библиотеку google-cloud-pipeline-comments. Конвейер полностью представляет собой пользовательские компоненты контейнера, за исключением пакетных прогнозов.
Код моего конвейера имеет следующую форму:

Код: Выделить всё

# GCP infrastructure resources
from google.cloud import aiplatform, storage
from google_cloud_pipeline_components import aiplatform as gcc_aip

# kubeflow resources
import kfp
from kfp.v2 import dsl, compiler
from kfp.v2.dsl import component, pipeline

train_container_uri = ''

@pipeline(name="
", pipeline_root=pipeline_root_path)
def my_ml_pipeline():
# run the preprocessing workflow using a custom kfp component and get the outputs

preprocess_op = preprocess_component()

train_path, test_path =  preprocess_op.outputs['Train Data'], preprocess_op.outputs['Test Data']

# path to string for gcs uri containing train data
train_path_text = preprocess_op.outputs['Train Data GCS Path']

# create training dataset on Vertex AI from the preprocessing outputs
train_set_op = gcc_aip.TabularDatasetCreateOp(
project='',
display_name='', location='us-west1',
gcs_source = train_path_text
)

train_set = train_set_op.outputs['dataset']

# custom training op
training_op = gcc_aip.CustomContainerTrainingJobRunOp(
project='',
display_name='',
location='us-west1',
dataset=train_set,
container_uri=train_container_uri,
staging_bucket=bucket_name,
model_serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/tf2-gpu.2-11:latest',
model_display_name='',
machine_type='n1-standard-4')

model_output = training_op.outputs['model']

# batch prediction op
batch_prediction_op = gcc_aip.ModelBatchPredictOp(
project='',
job_display_name='',
location='us-west1',
model=model_output,
gcs_source_uris=['gs:////name_of_file.csv'],
instances_format='csv',
gcs_destination_output_uri_prefix='gs:////',
machine_type='n1-standard-4',
accelerator_count=2,
accelerator_type='NVIDIA_TESLA_P100')

(Из соображений безопасности и неразглашения я не могу вводить какие-либо конкретные пути или проекты gcp, просто поверьте, что я ввел их правильно)
Мои первоначальные компоненты предварительной обработки и обучения, кажется, работают нормально (модель загружена в реестр, задание по обучению выполнено успешно, предварительно обработанные данные появляются в сегментах GCS по мере по-видимому необходимых). Однако мой конвейер не завершается на этапе пакетного прогнозирования.
Журнал ошибок завершается следующей ошибкой:

Код: Выделить всё

ValueError: Job failed with value error in error state: 5.
Кроме того, у меня есть изображение журналов (обратная трассировка содержит только ссылки на библиотеку google-cloud-pipeline-comments, а не мой конкретный код ). Это видно здесь:
Изображение
Предположительно, эта ошибка находится в пределах действия метода ModelBatchPredictOp().
Я даже не знаю, с чего начать, но может ли кто-нибудь дать что-нибудь указатели на то, что означает состояние ошибки 5? Я знаю, что это ValueError, поэтому он, должно быть, получил недопустимое значение либо в методе, либо в модели. Однако я запускал модель локально с тем же набором данных, поэтому предполагаю, что это недопустимый ввод в метод. Однако я проверил все входные данные в ModelBatchPredictOp(). Кто-нибудь получал это состояние ошибки раньше? Любая помощь приветствуется.
Использование google-cloud-pipeline-comComponents==1.0.42, google-cloud-aiplatform==1.24.1, kfp ==1.8.18. Моя модель обучена на TensorFlow 2.11.1, Python 3.10 как в моих собственных образах докера, так и в скрипте, используемом для запуска конвейера. Заранее спасибо!
Изменить 1 (10 мая 2023 г.):
Я посмотрел репозиторий GitHub, кажется, что мой ValueError имеет следующее описание:

Код: Выделить всё

 // Some requested entity (e.g., file or directory) was not found.
//
// Note to server developers: if a request is denied for an entire class
// of users, such as gradual feature rollout or undocumented allowlist,
// `NOT_FOUND` may be used. If a request is denied for some users within
// a class of users, such as user-based access control, `PERMISSION_DENIED`
// must be used.
//
// HTTP Mapping: 404 Not Found
NOT_FOUND = 5;
(Код ошибки подробно описан здесь https://github.com/googleapis/googleapi ... code.proto)
(Исключение, приводящее к моему сообщению об ошибке, было обнаружено здесь https://github.com/kubeflow/pipelines/b ... _runner.py)
Теперь вопрос: где в моем ModelBatchPredictOp() отсутствует файл или каталог? Я проверил, чтобы убедиться, что все введенные мной пути gcs верны и ведут к ожидаемым местам. Есть еще мысли?
Редактировать 2 (10 мая 2023 г.):
Я заметил, что вывод Компонент ModelBatchPredictOp() выдает мне json с подробным описанием некоторых ошибок. Вот текст ошибки:

Код: Выделить всё

{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "CREDENTIALS_MISSING",
"domain": "googleapis.com",
"metadata": {
"service": "aiplatform.googleapis.com",
"method": "google.cloud.aiplatform.v1.JobService.GetBatchPredictionJob"
}
}
]
}
}
Однако я предоставил необходимые роли IAM каждому соответствующему сервисному агенту/аккаунту (согласно этому: https://cloud.google.com/vertex-ai/docs/general/ контроль доступа). Итак, я все еще пытаюсь выяснить, где в моем конвейере отсутствуют учетные данные. Однако это соответствует исходному коду ошибки. Поскольку состояние ошибки: 5. означает, что каталог/файл не может быть найден, имеет смысл, что отсутствие учетных данных приведет к этому состоянию ошибки. Однако я не знаю, какие роли/разрешения IAM отсутствуют в моей учетной записи/агентах службы. Скоро ожидается еще одно обновление.
Изменить 3 (10 мая 2023 г.)
У меня нет решения пока нет, но у меня есть еще одно представление о том, что происходит. Все мои пакетные прогнозы истекают через 18-20 минут (огромная разница, ну да ладно). Я думаю, что модель на самом деле правильно выполняет пакетные прогнозы, но она не может записать прогнозы в целевой сегмент. Это имеет смысл, поскольку задание пакетного прогнозирования завершается сбоем через 20 минут при каждом запуске. Я думаю, что какой бы код ни записывал прогнозы в корзину, у него недостаточно прав для выполнения этой записи.
Единственная проблема сейчас заключается в том, что я до сих пор не знаю, где мне следует предоставить соответствующие учетные данные для выполнения этой записи после завершения пакетного прогнозирования.

Подробнее здесь: https://stackoverflow.com/questions/762 ... or-state-5
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как выполнить пакетное прогнозирование с помощью модели Vertex AI Gemini на Python?
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Получить состояние активации мониторинга моей конечной точки Vertex AI Vertex AI GCP с Python?
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Получить состояние активации мониторинга моей конечной точки Vertex AI Vertex AI GCP с Python?
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Именованные конвейеры C# – неправильная кодировка?
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Конвейеры Azure DevOps: развертывание проектов Java как зависимостей maven для других проектов.
    Anonymous » » в форуме JAVA
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»