#google-cloud-platform #google-cloud-build #gcp-ai-platform-training
# #google-cloud-platform #google-cloud-build #gcp-ai-platform-training
Вопрос:
У меня есть довольно стандартный CI
конвейер, используемый Cloud Build
для моей модели обучения машинному обучению на основе контейнера:
- проверьте ошибку python с помощью flake8
- проверьте проблему с синтаксисом и стилем, используя pylint, pydocstyle…
- создайте базовый контейнер (CPU / GPU)
- создайте специализированный контейнер ML для моей модели
- проверьте уязвимость установленных пакетов
- модули запуска тестов
Теперь в машинном обучении невозможно проверить модель, не протестировав ее на реальных данных. Обычно мы добавляем 2 дополнительные проверки:
- Исправьте все случайные начальные данные и запустите тестовые данные, чтобы увидеть, найдем ли мы точно такие же результаты
- Обучите модель в пакете и посмотрите, сможем ли мы подогнать и свести потери к нулю
Это позволяет выявлять проблемы внутри кода модели. В моей настройке у меня есть мой Cloud Build
GCP
проект сборки, а данные — в другом GCP
проекте.
Q1: удалось ли кому-нибудь использовать AI Platform training
сервис Cloud Build
для обучения на данных, находящихся в другом GCP
проекте?
Q2: как сообщить облачной сборке подождать, пока AI Platform training
задание не будет завершено, и проверить, каков статус (успешно / неудачно)? Кажется, что единственный вариант при просмотре документации связать его с использованием --stream-logs
, но он кажется неоптимальным (используя такой вариант, я увидел огромную задержку)
Ответ №1:
При отправке задания на обучение платформе ИИ вы можете указать адрес электронной почты учетной записи службы для использования.
Убедитесь, что учетная запись службы имеет достаточную авторизацию в другом проекте для использования данных оттуда.
Для вашего второго вопроса у вас есть 2 решения
- Используйте
--stream-logs
, как вы упомянули. Если вам не нужны журналы в вашей облачной сборке, вы можете перенаправить стандартный вывод и / или стандартный вывод на/dev/null
- name: name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args:
- -c
- |
gcloud ai-platform jobs submit training <your params> --stream-logs >/dev/null 2>/dev/null
Или вы можете создать бесконечный цикл, который проверяет статус
- name: name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args:
- -c
- |
JOB_NAME=<UNIQUE Job NAME>
gcloud ai-platform jobs submit training ${JOB_NAME} <your params>
# test the job status every 60 seconds
while [ -z "$(gcloud ai-platform jobs describe ${JOB_NAME} | grep SUCCEEDED)" ]; do sleep 60; done
Здесь мой тест прост, но вы можете настроить тесты состояния так, как хотите, в соответствии с вашими требованиями
Не забудьте установить ожидаемое время ожидания.