Код моего конвейера имеет следующую форму:
Код: Выделить всё
# 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')
Мои первоначальные компоненты предварительной обработки и обучения, кажется, работают нормально (модель загружена в реестр, задание по обучению выполнено успешно, предварительно обработанные данные появляются в сегментах GCS по мере по-видимому необходимых). Однако мой конвейер не завершается на этапе пакетного прогнозирования.
Журнал ошибок завершается следующей ошибкой:
Код: Выделить всё
ValueError: Job failed with value error in error state: 5.

Предположительно, эта ошибка находится в пределах действия метода 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/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"
}
}
]
}
}
Изменить 3 (10 мая 2023 г.)
У меня нет решения пока нет, но у меня есть еще одно представление о том, что происходит. Все мои пакетные прогнозы истекают через 18-20 минут (огромная разница, ну да ладно). Я думаю, что модель на самом деле правильно выполняет пакетные прогнозы, но она не может записать прогнозы в целевой сегмент. Это имеет смысл, поскольку задание пакетного прогнозирования завершается сбоем через 20 минут при каждом запуске. Я думаю, что какой бы код ни записывал прогнозы в корзину, у него недостаточно прав для выполнения этой записи.
Единственная проблема сейчас заключается в том, что я до сих пор не знаю, где мне следует предоставить соответствующие учетные данные для выполнения этой записи после завершения пакетного прогнозирования.
Подробнее здесь: https://stackoverflow.com/questions/762 ... or-state-5