1. Введение
| Kubeflow — это набор инструментов для машинного обучения в Kubernetes . Проект посвящен упрощению, переносимости и масштабируемости развертывания рабочих процессов машинного обучения (ML) в Kubernetes. Цель — предоставить простой способ развертывания лучших в своем классе систем с открытым исходным кодом для машинного обучения на различных инфраструктурах. |
Как выглядит развертывание Kubeflow?
Развертывание Kubeflow выглядит следующим образом:
- Портативный — работает на любом кластере Kubernetes, независимо от того, находится ли он на платформе Google Cloud Platform (GCP), локально или у разных провайдеров.
- Масштабируемость — может использовать изменяющиеся ресурсы и ограничена только количеством ресурсов, выделенных кластеру Kubernetes.
- Композитный — расширен возможностями сервисных работников для работы в автономном режиме или в сетях с низким качеством связи.
Это способ организации слабо связанных микросервисов в единое целое и их развертывания в различных местах, будь то ноутбук или облако.
В этом практическом занятии вы узнаете, как создать собственное развертывание Kubeflow с помощью MiniKF и запустить рабочий процесс Kubeflow Pipelines из блокнота Jupyter.
Что вы построите
В этом практическом занятии вы создадите сложный конвейер обработки данных с помощью Kubeflow Pipelines, не используя команды CLI или SDK. Вам не понадобятся знания Kubernetes или Docker. По завершении ваша инфраструктура будет включать в себя:
- Виртуальная машина MiniKF (Mini Kubeflow), которая автоматически устанавливает:
- Kubernetes (с использованием Minikube)
- Kubeflow
- Kale — инструмент для преобразования универсальных блокнотов Jupyter в рабочие процессы Kubeflow Pipelines ( GitHub )
- Аррикто Рок отвечает за версионирование и воспроизводимость данных.
Что вы узнаете
- Как установить Kubeflow с MiniKF
- Как преобразовать ваши Jupyter Notebooks в конвейеры Kubernetes без использования команд CLI или SDK.
- Как запустить конвейеры Kubeflow из блокнота одним нажатием кнопки
- Как автоматически версионировать данные в блокноте и на каждом этапе конвейера обработки данных
Что вам понадобится
- Активный проект GCP, для которого у вас есть права владельца.
Это продвинутый практический урок, посвященный Kubeflow. Для получения более подробной информации и ознакомления с платформой см. документацию «Введение в Kubeflow» . Несущественные концепции и блоки кода опущены и предоставлены для простого копирования и вставки.
2. Настройка среды
Укажите идентификатор вашего проекта GCP и имя кластера.
Чтобы найти идентификатор своего проекта, перейдите на главную страницу консоли GCP, расположенную в меню-гамбургере в левом верхнем углу. Если экран пуст, нажмите «Да» в появившемся запросе, чтобы создать панель мониторинга.

Если проект еще не выбран, нажмите «Выбрать проект» :

И выберите свой проект. У вас должен быть только один:

3. Установите MiniKF
Создайте экземпляр вычислительных ресурсов.
В GCP Marketplace найдите "MiniKF".
Выберите виртуальную машину MiniKF от Arrikto.

Нажмите кнопку «Запустить на Compute Engine» и выберите свой проект.

В окне «Настройка и развертывание» выберите имя для вашего экземпляра MiniKF и оставьте параметры по умолчанию. Затем нажмите кнопку «Развернуть» .

Дождитесь загрузки экземпляра MiniKF Compute.

Войдите в MiniKF
После запуска виртуальной машины MiniKF подключитесь и войдите в систему, нажав кнопку SSH. Следуйте инструкциям на экране, чтобы выполнить команду minikf , которая запустит развертывание Minikube, Kubeflow и Rok. Это займет несколько минут.

Войдите в Kubeflow
После завершения установки и подготовки всех модулей перейдите на панель управления MiniKF. Войдите в Kubeflow, используя имя пользователя и пароль MiniKF.


Пользователи Chrome увидят следующий экран:

Пользователи Firefox увидят следующий экран:

Пользователи Safari увидят следующий экран:

Войдите в Rok
После входа в Kubeflow откройте левое меню, щелкнув значок гамбургера. Перейдите в Snapshot Store и войдите в Rok, используя имя пользователя и пароль MiniKF.


Поздравляем! Вы успешно развернули MiniKF в GCP! Теперь вы можете создавать блокноты, писать код машинного обучения и запускать конвейеры Kubeflow. Используйте Rok для версионирования данных и обеспечения воспроизводимости результатов.
4. Запустите конвейер из своего блокнота.
В этом разделе вы запустите пример с «Титаником» — соревнование на Kaggle, которое предсказывает, какие пассажиры выжили после крушения «Титаника».
Создайте сервер ноутбуков
Перейдите по ссылке «Серверы ноутбуков» на центральной панели управления Kubeflow.

Нажмите «Новый сервер» .

Укажите имя для вашего сервера ноутбуков.

Убедитесь, что вы выбрали это изображение:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
Создайте новый пустой том данных размером 5 ГБ и назовите его data .

Нажмите «Запустить» , чтобы создать сервер блокнотов.

Когда сервер ноутбуков станет доступен, нажмите «Подключиться» , чтобы установить с ним соединение.

Скачайте данные и блокнот.
Откроется новая вкладка с главной страницей JupyterLab. Создайте новый терминал в JupyterLab.

В окне Терминала выполните следующие команды, чтобы перейти в папку с данными и загрузить блокнот и данные, которые вы будете использовать до конца лабораторной работы.
cd data/ git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples
В этом репозитории собрана серия тщательно отобранных примеров с данными и аннотированными блокнотами. Перейдите в папку data/examples/titanic-ml-dataset/ на боковой панели и откройте блокнот titanic_dataset_ml.ipynb .

Изучите код машинного обучения, использованный в проекте «Титаник».
Запустите ноутбук пошагово. Обратите внимание, что код выдает ошибку из-за отсутствия необходимой библиотеки.

Вернитесь в Терминал и установите недостающую библиотеку.
pip3 install --user seaborn

Перезапустите ядро ноутбука, нажав на значок «Обновить» .

Запустите ячейку еще раз, установив необходимые библиотеки, и убедитесь в ее успешном выполнении.
Преобразуйте свой ноутбук в конвейер Kubernetes.
Чтобы включить Kale, нажмите на значок Kubeflow в левой панели.

Изучите зависимости между отдельными ячейками. Узнайте, как несколько ячеек могут быть частью одного этапа конвейера и как этап конвейера может зависеть от предыдущих этапов.

Нажмите кнопку «Компилировать и запустить» .

Следите за процессом создания снимка.

Следите за ходом работ по прокладке трубопровода.

Перейдите по ссылке, чтобы открыть пользовательский интерфейс Kubeflow Pipelines и просмотреть результат выполнения.

Дождитесь завершения процесса.


Поздравляем! Вы только что запустили сквозной конвейер Kubeflow, начиная с вашего ноутбука!
5. Воспроизводимость с помощью снимков тома.
Изучите результаты.
Взгляните на логи предпоследнего шага конвейера — «Результаты» . Обратите внимание, что все предикторы показывают оценку 100%. Опытный специалист по анализу данных сразу бы счёл это подозрительным. Это хороший признак того, что наши модели не обобщают данные и вместо этого переобучаются на обучающем наборе данных. Вероятно, это вызвано проблемой с данными, используемыми моделями.

Воспроизвести предыдущее состояние
К счастью, Rok позаботится о версионировании данных и воспроизведении всей среды в том виде, в котором вы нажали кнопку «Компилировать и запустить» . Таким образом, у вас есть машина времени для ваших данных и кода. Давайте вернемся к состоянию конвейера перед обучением одной из моделей и посмотрим, что происходит. Взгляните на шаг randomforest , затем нажмите «Артефакты» .

Следуйте инструкциям в Markdown , то есть просмотрите снимок в пользовательском интерфейсе Rok, щелкнув по соответствующей ссылке.

Скопируйте URL-адрес Rok.

Перейдите по ссылке «Серверы ноутбуков» .

Нажмите «Новый сервер» .

Вставьте скопированный ранее URL-адрес Rok и нажмите кнопку «Автозаполнение» .

Укажите название для своего блокнота.

Убедитесь, что вы выбрали это изображение:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
Нажмите «Запустить» , чтобы создать сервер блокнотов.

Когда сервер ноутбуков станет доступен, нажмите «Подключиться» , чтобы установить с ним соединение.

Обратите внимание, что блокнот открывается точно в той ячейке, которая соответствует этапу конвейера, который вы запустили.

В фоновом режиме Kale восстановил состояние блокнота, импортировав все библиотеки и загрузив переменные из предыдущих шагов.
Отладка предыдущего состояния
Добавьте в эту ячейку команду печати:
print(acc_random_forest)
Запустите активную ячейку, нажав Shift + Return , чтобы переобучить случайный лес и вывести результат. Он равен 100.

Теперь давайте проверим, нет ли чего-нибудь странного в обучающих данных. Чтобы изучить и исправить эту проблему, добавьте ячейку над разметкой Random Forest, выбрав предыдущую ячейку и нажав значок плюса (+) .

Добавьте следующий текст и выполните команду в ячейке, чтобы распечатать обучающий набор данных.
train_df

Ой! Столбец с обучающими метками ("Выжили") ошибочно включен в качестве входных признаков! Модель научилась фокусироваться на признаке "Выжили" и игнорировать остальные, загрязняя входные данные. Этот столбец точно соответствует цели модели и отсутствует во время прогнозирования, поэтому его необходимо удалить из обучающего набора данных, чтобы модель могла учиться на основе других признаков.
Добавить исправление ошибки
Чтобы удалить этот столбец, отредактируйте ячейку и добавьте следующую команду:
train_df.drop('Survived', axis=1, inplace=True)
train_df

Включите Kale и убедитесь, что ячейка, удаляющая метки " Выжившие" , является частью этапа конвейера проектирования объектов (она должна иметь тот же цвет контура).
Запустите конвейер еще раз, нажав кнопку «Компилировать и запустить» .
Перейдите по ссылке, чтобы открыть пользовательский интерфейс Kubeflow Pipelines и просмотреть результат выполнения.
Дождитесь завершения этапа обработки результатов и просмотрите журналы, чтобы увидеть окончательные результаты. Теперь у вас есть реалистичные прогнозные оценки!

6. Уборка
Уничтожьте виртуальную машину MiniKF.
Перейдите в раздел «Диспетчер развертывания» в консоли GCP и удалите развертывание minikf-1 .
7. Поздравляем!
Поздравляем, вы успешно выполнили сквозной рабочий процесс анализа данных с использованием Kubeflow (MiniKF), Kale и Rok!
Что дальше?
Присоединяйтесь к сообществу Kubeflow:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- Общественные собрания проходят по вторникам.
