Мониторинг и оповещение являются важными частями любой производственной системы. Если ваша система не работает должным образом, вы хотите узнать об этом первым! Системы машинного обучения (ML) ничем не отличаются. Оповещения могут быть особенно полезны для систем машинного обучения; для длительных заданий вы не хотите сидеть, наблюдая за прогрессом!

Vertex AI интегрирован с Google Cloud Monitoring, поэтому ваш статус Vertex Pipeline автоматически регистрируется для вас, и вы можете легко создавать оповещения поверх этого.

В приведенном ниже примере я покажу, как вы можете настроить оповещения по электронной почте, чтобы вы знали, когда в вашем проекте произошел сбой Vertex Pipeline. Вы также можете настроить оповещения по разным каналам связи — SMS, Slack, PagerDuty и другие.

Давайте погрузимся!

Во-первых, мы должны создать канал уведомлений, чтобы Google Cloud знал, куда отправлять наши оповещения по электронной почте. В консоли Google Cloud перейдите на страницу предупреждений и нажмите ИЗМЕНИТЬ КАНАЛЫ УВЕДОМЛЕНИЙ.

Рядом с Электронная почта нажмите ДОБАВИТЬ НОВЫЙ. Введите адрес электронной почты, который будет использоваться для оповещений, и отображаемое имя канала электронной почты. Если вы хотите отправлять оповещения на несколько адресов, вы можете либо создать группу Google с несколькими пользователями, либо настроить несколько каналов уведомлений (по одному для каждого адреса).

(Остерегайтесь эффекта стороннего наблюдателя! Предупреждение нескольких человек может привести к распределению ответственности, когда никто не реагирует на предупреждение, потому что знает, что другие также были уведомлены, и каждый предполагает, что кто-то другой решит проблему!)

Теперь, когда мы добавили канал уведомлений, давайте перейдем к Проводнику журналов в консоли Google Cloud.

С правой стороны переключите переключатель Показать запрос, чтобы открыть окно запроса. В поле запроса вставьте следующий запрос:

resource.type="aiplatform.googleapis.com/PipelineJob"
jsonPayload.state="PIPELINE_STATE_FAILED"

Нажмите Создать оповещение. Справа отобразится боковая панель под названием Создать политику предупреждений на основе журналов.

Это приведет вас к шагу 1. Дайте вашей политике имя и добавьте собственное сообщение в поле Документация. Пользовательское сообщение поддерживает переменные, а некоторые каналы уведомлений поддерживают синтаксис Markdown. Подробнее о том, как их использовать, вы можете узнать в документации. Ниже приведен пример, который вы можете использовать для предоставления ссылки на сломанный конвейер в консоли:

# Vertex Pipeline failed
The pipeline ${resource.label.pipeline_job_id} has failed. Click [here](https://console.cloud.google.com/vertex-ai/locations/${resource.label.location}/pipelines/runs/${resource.label.pipeline_job_id}?project=${project}) to view in the console

Нажмите ДАЛЕЕ, чтобы перейти к шагу 2: Выберите журналы для включения в оповещение. Это уже должно быть заполнено запросом, который вы использовали ранее.

Нажмите ДАЛЕЕ, чтобы перейти к шагу 3: Установите частоту уведомлений и продолжительность автоматического закрытия. Укажите параметры здесь: Время между уведомлениями описывает минимальное время между уведомлениями (чтобы вас не засыпало большим количеством уведомлений одновременно!). Существует минимальное значение 5 минут, и это то, что мы рекомендуем при сбоях конвейера. Продолжительность автозакрытия инцидента указывает, как долго система должна ждать, чтобы автоматически закрыть инцидент, если соответствующие записи в журнале отсутствуют.

Нажмите ДАЛЕЕ, чтобы перейти к шагу 4: Кто должен получать уведомления? В раскрывающемся списке выберите канал уведомлений, который мы настроили ранее для уведомлений по электронной почте. Наконец, нажмите СОХРАНИТЬ.

Теперь мы настроили нашу политику оповещения, давайте попробуем!

На нашей локальной машине давайте установим некоторые зависимости Python:

pip install kfp==1.8.12 google-cloud-aiplatform==1.14.0

Далее давайте создадим очень простой Vertex Pipeline, который всегда будет давать сбой:

Как и ожидалось, когда мы запускаем этот скрипт, конвейер компилируется и отправляется в Vertex AI, который затем дает сбой из-за возбужденного нами исключения.

Ой, пришло уведомление на почту!

Если мы нажмем ПРОСМОТР ПРОИСШЕСТВИЯ, мы вернемся к консоли, где увидим, что инцидент был создан. У нас есть возможность ПОДТВЕРЖДИТЬ ИНЦИДЕНТ или ЗАВЕРШИТЬ ИНЦИДЕНТ. Подтвердите инцидент, чтобы другие знали, что вы изучаете проблему. После того, как вы решили проблему, вы можете закрыть инцидент.

Вот и все! Теперь вы можете безопасно запускать свои Vertex Pipelines, зная, что если возникнут какие-либо проблемы, вы узнаете об этом первыми. Не забудьте подписаться на нас на Medium, чтобы узнать больше советов и рекомендаций Vertex AI и многое другое!

Datatonic является Партнером года в области машинного обучения Google Cloud с богатым опытом разработки и развертывания эффективных моделей машинного обучения и сборок платформы MLOps. Нужна помощь в разработке модели машинного обучения или быстром развертывании моделей машинного обучения? Посмотрите наш вебинар MLOps 101, на котором наши эксперты расскажут вам, как начать масштабное машинное обучение, или свяжитесь с вами, чтобы обсудить ваши требования к машинному обучению или MLOps!