На этой неделе мы со Славой выступали на Big Things Conference в Испании. Название доклада было таким же, как у сообщения в блоге, мы не хотели использовать термин MLOps с записными книжками или MLOps с ____, поскольку мы думаем, что термин MLOps в настоящее время является перегруженным термином. Да, говорю, перегружено и раскручено, объясню почему.
Работая в Google, у меня есть доступ к очень сложному программному обеспечению, инструментам и инфраструктуре, которые определенно понравятся любому специалисту по данным, инженеру по данным, исследователю машинного обучения. Но не каждая компания - это Google, ____ и т. Д., И если вы недавно начали внедрять машинное обучение в свой бизнес, вы поняли, что ML - непростая задача. Давайте поговорим конкретно о путешествии от записной книжки от экспериментов до развертывания модели.
Большинство путешествий по машинному обучению начинается с записной книжки Jupyter. Здесь специалисты по данным исследуют свои данные с помощью Python и разрабатывают модели с использованием различных фреймворков машинного обучения, таких как TensorFlow, PyTorch, xgboost и т. Д. Мы определим 3 уровня с точки зрения того, как вы можете перейти от экспериментов к модели, развернутой и отслеживаемой в производственной среде. окружающая обстановка.
Уровень 0. Все, что у вас есть, - это записная книжка, а остальные шаги, обучение модели, обслуживание и мониторинг выполняются вручную.
Уровень 1. Если вы добавляете репозиторий Git и автоматизируете задачу выполнения записной книжки после отправки PR или фиксации, мы называем этот уровень 1. Репозиторий git можно настроить с помощью действий GitHub, Дженкинс , Cloud Build и т. Д. Для эффективного выполнения записной книжки после отправки. Вот некоторые из проблем:
- Гарантируйте, что зависимости в ваших записных книжках такие же, как и в новой среде, в которой будет работать блокнот. Пример: вы используете тот же numpy, pandas, операционную систему, версию TensorFlow и т. Д.
- Гарантируйте, что Оборудование такое же или похожее на то, которое вы используете.
- Проверяйте статус каждой фиксации после завершения выполнения. Коммит - зеленый или красный?
Когда вы используете AI Platform Notebooks, каждый раз, когда вы сохраняете записную книжку, информация о среде в метаданных записной книжки сохраняется.
В этом случае вы можете видеть, что пользователь использовал AI Platform Notebooks TensorFlow 2.3 с поддержкой графического процессора в DLVM версии 59.
Вышеупомянутый URI соответствует Контейнерам глубокого обучения в облаке Google. Это означает, что вы можете создать новую записную книжку, используя ту же среду, или запустить файл записной книжки (.ipynb) и забыть об использовании тех же версий библиотек, что и исходная среда.
Уровень 2. Как только вы сможете автоматизировать выпуск модели в производство, вы достигнете этого уровня.
Уровень 3. I Если вы можете отслеживать развернутую модель с помощью непрерывного мониторинга, мы будем говорить об уровне 3. Подумайте о мониторинге ваших прогнозов, точности прогнозов, времени отклика и проверках работоспособности модели.
Но подождите ... это не совсем то, что вы видели во многих официальных документах, книгах, документации и т. Д.:
Я даю вам очень упрощенный взгляд на мир? Я слишком упрощаю очень сложную концепцию? Может… может, нет. Приведенная выше диаграмма определенно необходима как «Полярная звезда» и справочная информация, но поскольку новые команды начинают создавать свою инфраструктуру машинного обучения, в которой у вас нет ничего, кроме некоторой исправленной и хакерской реализации, вам необходимо следовать модульному и гибкому подходу, а не подходу Waterfall и эта архитектура определенно является подходом водопада. Почему? Потому что, пока вы не получите прогнозы, вы действительно можете начать зарабатывать или экономить деньги.
- Примечание. Если вы уже какое-то время занимались MLOps и инфраструктурой инфраструктуры, это будет примерно так, как выглядит ваша фактическая инфраструктура:
Вы, наверное, уже видели конвейеры KubeFlow раньше, у KubeFlow Pipelines есть SDK, который можно использовать из записных книжек, поэтому теоретически, поскольку у вас есть записные книжки, вы должны легко перейти с уровня 0 на уровень 3, верно?
Итак, я могу перейти с уровня 0 на уровень 3, просто используя конвейеры KubeFlow? Здесь часто приходит на помощь второе предположение. Это предположение простое: «Если инструмент X можно использовать из записной книжки, это означает, что инструмент X можно использовать с записными книжками».
Есть ли в этом смысл??? Мне все еще нужно переписать свой код полностью с нуля, мне нужно будет изучить новые API и, возможно, перепроектировать много кода ...
Итак, теперь вы видите проблему, не так ли?
Чтобы реализовать конвейер CI с Jupyter Notebooks на GCP, давайте определим набор принципов:
- Следуйте установленным передовым методам разработки программного обеспечения.
- Контроль версий ваших ноутбуков.
- Воспроизводимые записные книжки.
- Непрерывная интеграция (CI)
- Блокноты с параметризацией
- Непрерывная доставка (CD)
- Автоматически регистрировать все эксперименты
В этом сообщении в блоге я покажу вам, как построить что-то вроде этого:
В решении задействованы следующие продукты:
- Блокноты платформы AI
- Обучение платформе AI
- Контейнеры глубокого обучения AI-платформы
- Действия GitHub
- Https://github.com/gclouduniverse/notebook_training эту утилиту разработал мой коллега Юрий
Поток следующий:
- Пользователь сохраняет блокнот в блокнотах платформы AI
- Используя расширение Git в блокнотах AI Platform, пользователь фиксирует изменения блокнотов в GitHub
- GitHub настроен с рабочим процессом действий GitHub
- Рабочий процесс действий GitHub использует https://github.com/gclouduniverse/notebook_training для запуска измененных записных книжек .ipynb и создания нового задания обучения AI Platform для каждой записной книжки.
В GitHub мы подключаемся к Google Cloud Platform с помощью этого плагина: GoogleCloudPlatform / github-actions / setup-gcloud @ master
Мы определяем в GitHub Secrets следующие переменные среды:
- PROJECT_ID: ваш идентификатор проекта Google Cloud.
- GCP_SERVICE_ACCOUNT: ключ вашей учетной записи службы в формате json, сохраненный как base64. Пример:
base64 service-account.json
5. Используя метаданные Notebook, мы можем извлечь правильный URI и использовать версию Deep Learning Container, когда мы начинаем работу по обучению AI Platform.
6. Записная книжка запускается, и после завершения результат записной книжки сохраняется в корзине GCS.
7. Если выполнение завершится успешно, пользователь увидит зеленый флажок в репозитории GitHub.
Вы можете найти образец репо здесь: https://github.com/gogasca/bigthingsconference2020
Как видите, мы сосредоточились на путешествии, сфокусировались на уровнях 0–3 и в конечном итоге добрались до архитектуры Полярной звезды, используя строительные блоки и принципы, которые обсуждались ранее.
Следующие несколько недель я буду работать, чтобы предоставить решение для выполнения развертывания модели непосредственно из ноутбука. AI Platform Prediction в настоящее время поддерживает прогнозирование модели с использованием настраиваемых Контейнеров.
Сообщите нам, что вы думаете и что хотели бы увидеть.