Есть ли способ получать уведомления об изменениях статуса в учебных заданиях Google AI Platform без опроса REST API? - PullRequest
0 голосов
/ 24 января 2020

Прямо сейчас я отслеживаю свои отправленные вакансии на Google AI Platform (ранее - механизм ml), опрашивая job REST API . Мне не нравится это решение по нескольким причинам:

  1. Осведомленность об изменениях состояния часто задерживается или вообще пропускается, если интервал между изменениями состояния меньше, чем частота опроса мониторинга
  2. Множество ненужных сетевых трафиков c
  3. Множество ненужных вызовов функций

Я хотел бы получить уведомление, как только мои учебные задания завершатся. Было бы замечательно, если бы был какой-то способ назначать перехватчики или обратные вызовы для запуска при изменении статуса задания.

Я также рассмотрел возможность добавления вызовов к облачным функциям непосредственно в пакете обучающей задачи python, который выполняется на платформе AI. Однако я не думаю, что эти вызовы функций будут происходить в тех случаях, когда учебное задание неожиданно завершается, например, когда GCP отменяет или принудительно завершает задание.

Есть ли лучший способ go об этом?

1 Ответ

1 голос
/ 27 января 2020

Вы можете использовать приемник Stackdriver для чтения журналов и отправки его в Pub / Sub. Из Pub / Sub вы можете подключиться к группе других провайдеров:

1. Настройте паб / дополнительный приемник

Убедитесь, что у вас есть доступ к журналам и publi sh права на топи c, которые вы хотите , прежде чем вы получите начал. Следуйте инструкциям по настройке Stackdriver -> Pub / Sub раковина. Вы захотите использовать этот запрос, чтобы ограничить события только обучающими заданиями:

resource.type = "ml_job"
resource.labels.task_name = "service"

Обратите внимание, что Stackdriver может дополнительно ограничить запрос . Например, вы можете ограничиться определенным заданием, добавив условие, например resource.labels.job_id = "...", или определенное событие с фильтром, подобным jsonPayload.message: "..."

2. Ответ на сообщение Pub / Sub

Чтобы узнать, что изменилось, получатель сообщения Pub / Sub может либо запросить статус задания из API ml.googleapis.com, либо прочитать текст сообщения

Состояние чтения с ml.googleapis.com

Когда вы получите сообщение, позвоните по номеру https://ml.googleapis.com/v1/<project_id>/jobs/<job_id>, чтобы получить информацию о вакансии, заменив [project_id] и [job_id] в URL на значения resource.label.project_id и resource.label.job_id из сообщения Pub / Sub соответственно.

Возвращенный объект Job содержит поле state, которое, естественно, сообщает статус работы.

Чтение состояния из текста сообщения

Сообщение Pub / Sub будет содержать строку, сообщающую, что произошло с заданием. Вы, вероятно, хотите поведение, когда работа заканчивается. Найдите эти строки в файле jsonPayload.message:

  • «Задание успешно выполнено».
  • «Задание отменено.»
  • «Задание не выполнено».
...