1. Введение
Kubeflow — это набор инструментов машинного обучения для Kubernetes . Цель проекта — сделать развертывание рабочих процессов машинного обучения (ML) в Kubernetes простым, портативным и масштабируемым. Цель состоит в том, чтобы предоставить простой способ развертывания лучших в своем классе систем с открытым исходным кодом для машинного обучения в различных инфраструктурах. |
Как выглядит развертывание Kubeflow?
Развертывание Kubeflow — это:
- Портативный — работает в любом кластере Kubernetes, независимо от того, находится ли он на Google Cloud Platform (GCP), локально или между поставщиками.
- Масштабируемость — может использовать переменные ресурсы и ограничивается только количеством ресурсов, выделенных кластеру Kubernetes.
- Composable — улучшено с помощью сервисных работников для работы в автономном режиме или в сетях низкого качества.
Это средство организации слабосвязанных микросервисов как единого целого и их развертывания в различных местах, будь то ноутбук или облако.
В этой лаборатории кода вы узнаете, как создать собственное развертывание Kubeflow с помощью MiniKF и запустить рабочий процесс Kubeflow Pipelines из Jupyter Notebook.
Что ты построишь
В этой лаборатории кода вы создадите сложный конвейер обработки данных с помощью Kubeflow Pipelines без использования каких-либо команд CLI или SDK. Вам не нужно иметь никаких знаний Kubernetes или Docker. По завершении ваша инфраструктура будет содержать:
- Виртуальная машина MiniKF (Mini Kubeflow), которая автоматически устанавливает:
- Kubernetes (с использованием Minikube)
- Кубефлоу
- Kale , инструмент для преобразования блокнотов Jupyter общего назначения в рабочие процессы Kubeflow Pipelines ( GitHub )
- Arrikto Rok для управления версиями и воспроизводимости данных
Что вы узнаете
- Как установить Kubeflow с MiniKF
- Как преобразовать блокноты Jupyter в конвейеры Kubeflow без использования команд CLI или SDK
- Как запустить Kubeflow Pipelines из ноутбука одним нажатием кнопки
- Как автоматически версионировать ваши данные в блокноте и на каждом этапе конвейера
Что вам понадобится
- Активный проект GCP , для которого у вас есть разрешения владельца.
Это продвинутая лаборатория кода, ориентированная на Kubeflow. Дополнительную информацию и введение в платформу см. в документации «Введение в Kubeflow» . Нерелевантные концепции и блоки кода замалчиваются и предоставляются для простого копирования и вставки.
2. Настройте среду
Установите идентификатор проекта GCP и имя кластера.
Чтобы найти идентификатор вашего проекта, посетите домашнюю панель консоли GCP, расположенную в меню-гамбургере в левом верхнем углу. Если экран пуст, нажмите «Да» в ответ на запрос, чтобы создать панель мониторинга.
Если проект еще не выбран, нажмите « Выбрать проект» :
И выберите свой проект. У вас должен быть только один:
3. Установите МиниКФ
Создать экземпляр Compute
На GCP Marketplace найдите «MiniKF».
Выберите виртуальную машину MiniKF от Arrikto.
Нажмите кнопку «Запустить в Compute Engine» и выберите свой проект.
В окне «Настройка и развертывание » выберите имя для своего экземпляра MiniKF и оставьте параметры по умолчанию. Затем нажмите кнопку «Развернуть» .
Подождите, пока загрузится экземпляр MiniKF Compute.
Войдите в МиниКФ
Когда виртуальная машина MiniKF заработает, подключитесь и войдите в систему, нажав кнопку SSH. Следуйте инструкциям на экране, чтобы запустить команду minikf
, которая запустит развертывание Minikube, Kubeflow и Rok. Это займет несколько минут.
Войдите в Kubeflow
После завершения установки и готовности всех модулей посетите панель управления MiniKF. Войдите в Kubeflow, используя имя пользователя и пароль MiniKF.
Пользователи Chrome увидят этот экран:
Пользователи Firefox увидят этот экран:
Пользователи Safari увидят этот экран:
Войти в Рок
После входа в Kubeflow откройте левое меню, щелкнув значок гамбургера. Перейдите в хранилище снимков и войдите в 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
.
Изучите код ML испытания «Титаник»
Запускайте блокнот шаг за шагом. Обратите внимание, что код не работает, поскольку библиотека отсутствует.
Вернитесь в Терминал и установите недостающую библиотеку.
pip3 install --user seaborn
Перезапустите ядро ноутбука, щелкнув значок «Обновить» .
Запустите ячейку еще раз с установленными правильными библиотеками и наблюдайте за ее успехом.
Превратите свой ноутбук в конвейер Kubeflow
Включите Kale, щелкнув значок Kubeflow на левой панели.
Изучите зависимости для каждой ячейки. Узнайте, как несколько ячеек могут быть частью одного шага конвейера и как шаг конвейера может зависеть от предыдущих шагов.
Нажмите кнопку «Компилировать и запустить» .
Следите за ходом создания снимка.
Следите за ходом прохождения трубопровода.
Щелкните ссылку, чтобы перейти в пользовательский интерфейс Kubeflow Pipelines и просмотреть выполнение.
Подождите, пока оно завершится.
Поздравляем! Вы только что запустили сквозной конвейер Kubeflow, начиная со своего ноутбука!
5. Воспроизводимость с помощью объемных снимков
Изучите результаты
Просмотрите журналы предпоследнего шага конвейера. Результаты . Обратите внимание, что все предикторы показывают оценку 100%. Опытный специалист по данным сразу счел бы это подозрительным. Это хороший признак того, что наши модели не обобщают, а вместо этого подгоняют набор обучающих данных. Вероятно, это вызвано проблемой с данными, используемыми моделями.
Воспроизвести предыдущее состояние
К счастью, Rok заботится об управлении версиями данных и воспроизведении всей среды, как это было в тот момент, когда вы нажали кнопку «Компилировать и запустить» . Таким образом, у вас есть машина времени для ваших данных и кода. Итак, давайте возобновим состояние конвейера перед обучением одной из моделей и посмотрим, что происходит. Взгляните на шаг случайного леса , затем нажмите «Артефакты» .
Следуйте инструкциям в Markdown , т.е. просмотрите снимок в Rok UI, нажав на соответствующую ссылку.
Скопируйте URL-адрес Rok.
Перейдите по ссылке Серверы ноутбуков .
Нажмите «Новый сервер» .
Вставьте URL-адрес Rok, который вы скопировали ранее, и нажмите кнопку «Автозаполнение» .
Укажите имя для вашего блокнота.
Убедитесь, что вы выбрали это изображение:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
Нажмите «Запустить» , чтобы создать сервер ноутбука.
Когда сервер ноутбука станет доступен, нажмите «Подключиться» , чтобы подключиться к нему.
Обратите внимание, что записная книжка открывается именно в той ячейке созданного вами шага конвейера.
В фоновом режиме Кале возобновил состояние Блокнота, импортировав все библиотеки и загрузив переменные из предыдущих шагов.
Отладка предыдущего состояния
Добавьте команду печати в эту ячейку:
print(acc_random_forest)
Запустите активную ячейку, нажав Shift + Return , чтобы переобучить случайный лес и распечатать оценку. Это 100.
Теперь пришло время посмотреть, есть ли что-то странное в обучающих данных. Чтобы изучить и устранить эту проблему, добавьте ячейку над уценкой случайного леса, выбрав предыдущую ячейку и щелкнув значок плюса (+) .
Добавьте следующий текст и выполните ячейку, чтобы распечатать обучающий набор.
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-discuss@googlegroups.com
- Общественный звонок по вторникам