Учебное пособие по воздушному потоку TFX

Обзор

Обзор

Это руководство призвано помочь вам научиться создавать собственные конвейеры машинного обучения, используя TensorFlow Extended (TFX) и Apache Airflow в качестве оркестратора. Он работает на Vertex AI Workbench и демонстрирует интеграцию с TFX и TensorBoard, а также взаимодействие с TFX в среде Jupyter Lab.

Что ты будешь делать?

Вы узнаете, как создать конвейер машинного обучения с помощью TFX.

  • Конвейер TFX представляет собой направленный ациклический граф или «DAG». Мы часто будем называть конвейеры DAG.
  • Конвейеры TFX подходят, когда вы собираетесь развертывать производственное приложение ML.
  • Конвейеры TFX подходят, когда наборы данных большие или могут вырасти до больших размеров.
  • Конвейеры TFX подходят, когда важна последовательность обучения/обслуживания.
  • Конвейеры TFX подходят, когда важно управление версиями для вывода.
  • Google использует конвейеры TFX для производственного машинного обучения

Дополнительную информацию см. в руководстве пользователя TFX .

Вы будете следовать типичному процессу разработки ML:

  • Получение, понимание и очистка наших данных
  • Разработка функций
  • Обучение
  • Анализ производительности модели
  • Вспенить, промыть, повторить
  • Готов к производству

Apache Airflow для оркестровки конвейеров

Оркестраторы TFX отвечают за планирование компонентов конвейера TFX на основе зависимостей, определенных конвейером. TFX предназначен для переносимости в различные среды и платформы оркестрации. Одним из оркестраторов по умолчанию, поддерживаемых TFX, является Apache Airflow . В этой лабораторной работе показано использование Apache Airflow для оркестровки конвейера TFX. Apache Airflow — это платформа для программного создания, планирования и мониторинга рабочих процессов. TFX использует Airflow для создания рабочих процессов в виде направленных ациклических графов (DAG) задач. Богатый пользовательский интерфейс позволяет легко визуализировать рабочие конвейеры, отслеживать ход выполнения и устранять проблемы, когда это необходимо. Рабочие процессы Apache Airflow определяются как код. Это делает их более удобными в сопровождении, версиями, тестируемыми и пригодными для совместной работы. Apache Airflow подходит для конвейеров пакетной обработки. Он легкий и простой в освоении.

В этом примере мы собираемся запустить конвейер TFX на экземпляре, вручную настроив Airflow.

Другими оркестраторами по умолчанию, поддерживаемыми TFX, являются Apache Beam и Kubeflow. Apache Beam может работать на нескольких серверах обработки данных (Beam Ruunners). Cloud Dataflow — один из таких средств управления лучами, который можно использовать для запуска конвейеров TFX. Apache Beam можно использовать как для потоковой, так и для пакетной обработки.
Kubeflow — это платформа машинного обучения с открытым исходным кодом, призванная сделать развертывание рабочих процессов машинного обучения (ML) в Kubernetes простым, портативным и масштабируемым. Kubeflow можно использовать в качестве оркестратора конвейеров TFFX, когда их необходимо развернуть в кластерах Kubernetes. Кроме того, вы также можете использовать собственный оркестратор для запуска конвейера TFX.

Подробнее об Airflow можно прочитать здесь .

Набор данных такси Чикаго

такси.jpg

Чикаго.png

Вы будете использовать набор данных Taxi Trips , опубликованный властями города Чикаго.

Цель модели — двоичная классификация

Будет ли клиент давать чаевые больше или меньше 20%?

Настройте проект Google Cloud

Прежде чем нажать кнопку «Начать лабораторию», прочтите эти инструкции. Лабораторные работы рассчитаны по времени, и вы не можете приостановить их. Таймер, который запускается при нажатии кнопки «Начать лабораторию» , показывает, как долго ресурсы Google Cloud будут вам доступны.

Эта практическая лабораторная работа позволяет вам выполнять лабораторные работы самостоятельно в реальной облачной среде, а не в симуляционной или демонстрационной среде. Для этого вам будут предоставлены новые временные учетные данные, которые вы будете использовать для входа и доступа к Google Cloud на время лабораторной работы.

Что вам понадобится Для выполнения этой лабораторной работы вам понадобится:

  • Доступ к стандартному интернет-браузеру (рекомендуется браузер Chrome).
  • Пора завершить лабораторию.

Как запустить лабораторию и войти в консоль Google Cloud 1. Нажмите кнопку «Начать лабораторию» . Если вам нужно оплатить лабораторную работу, откроется всплывающее окно, в котором вы сможете выбрать способ оплаты. Слева находится панель, заполненная временными учетными данными, которые вы должны использовать для этой лабораторной работы.

qwiksetup1.png

  1. Скопируйте имя пользователя и нажмите «Открыть консоль Google» . Лаборатория запускает ресурсы, а затем открывает другую вкладку, на которой отображается страница входа .

qwiksetup2.png

Совет: Открывайте вкладки в отдельных окнах рядом.

qwiksetup3.png

  1. На странице входа вставьте имя пользователя, скопированное с левой панели. Затем скопируйте и вставьте пароль.
  1. Пролистывайте последующие страницы:
  2. Примите условия.
  • Не добавляйте параметры восстановления или двухфакторную аутентификацию (потому что это временная учетная запись).

  • Не подписывайтесь на бесплатные пробные версии.

Через несколько секунд на этой вкладке откроется Cloud Console.

qwiksetup4.png

Активировать Cloud Shell

Cloud Shell — это виртуальная машина, на которой загружены инструменты разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в облаке Google. Cloud Shell обеспечивает доступ к вашим ресурсам Google Cloud из командной строки.

В Cloud Console на верхней правой панели инструментов нажмите кнопку «Активировать Cloud Shell» .

qwiksetup5.png

Нажмите Продолжить .

qwiksetup6.png

Подготовка среды и подключение к ней занимает несколько минут. Когда вы подключены, вы уже прошли аутентификацию, и для проекта установлен ваш _PROJECT ID . Например:

qwiksetup7.png

gcloud — это инструмент командной строки для Google Cloud. Он предварительно установлен в Cloud Shell и поддерживает завершение табуляции.

Вы можете указать имя активной учетной записи с помощью этой команды:

gcloud auth list

(Выход)

АКТИВНЫЙ: * АККАУНТ: студент-01-xxxxxxxxxxxx@qwiklabs.net Чтобы установить активную учетную запись, запустите: $ gcloud config set account ACCOUNT

Вы можете указать идентификатор проекта с помощью этой команды: gcloud config list project (Выход)

[основной] проект =

(Пример вывода)

[основной] проект = qwiklabs-gcp-44776a13dea667a6

Полную документацию по gcloud см. в обзоре инструмента командной строки gcloud .

Включить облачные сервисы Google

  1. В Cloud Shell используйте gcloud, чтобы включить службы, используемые в лаборатории. gcloud services enable notebooks.googleapis.com

Развертывание экземпляра Vertex Notebook

  1. Нажмите на меню навигации и перейдите к Vertex AI , затем к Workbench .

vertex-ai-workbench.png

  1. На странице «Экземпляры блокнота» нажмите «Новый блокнот» .

  2. В меню «Настроить экземпляр» выберите TensorFlow Enterprise и выберите версию TensorFlow Enterprise 2.x (с LTS) > «Без графических процессоров» .

vertex-notebook-create-2.png

  1. В диалоговом окне «Новый экземпляр блокнота» щелкните значок карандаша, чтобы изменить свойства экземпляра.

  2. В поле «Имя экземпляра» введите имя вашего экземпляра.

  3. В поле «Регион» выберите us-east1 , а в поле «Зона» выберите зону в пределах выбранного региона.

  4. Прокрутите вниз до раздела «Конфигурация машины» и выберите e2-standard-2 в поле «Тип машины».

  5. Оставьте для остальных полей значения по умолчанию и нажмите «Создать» .

Через несколько минут консоль Vertex AI отобразит имя вашего экземпляра, а затем Open Jupyterlab .

  1. Нажмите «Открыть JupyterLab» . Окно JupyterLab откроется в новой вкладке.

Настройка среды

Клонировать репозиторий лаборатории

Далее вы клонируете репозиторий tfx в своем экземпляре JupyterLab. 1. В JupyterLab щелкните значок «Терминал» , чтобы открыть новый терминал.

Примечание. При появлении запроса нажмите Cancel для параметра «Рекомендуется сборка».

  1. Чтобы клонировать репозиторий tfx Github, введите следующую команду и нажмите Enter .
git clone https://github.com/tensorflow/tfx.git
  1. Чтобы подтвердить, что вы клонировали репозиторий, дважды щелкните каталог tfx и убедитесь, что вы можете видеть его содержимое.

репо-каталог.png

Установите лабораторные зависимости

  1. Выполните следующую команду, чтобы перейти в папку tfx/tfx/examples/airflow_workshop/taxi/setup/ , затем запустите ./setup_demo.sh для установки лабораторных зависимостей:
cd ~/tfx/tfx/examples/airflow_workshop/taxi/setup/
./setup_demo.sh

Приведенный выше код будет

  • Установите необходимые пакеты.
  • Создайте папку airflow в домашней папке.
  • Скопируйте папку dags из tfx/tfx/examples/airflow_workshop/taxi/setup/ в папку ~/airflow/ .
  • Скопируйте файл csv из tfx/tfx/examples/airflow_workshop/taxi/setup/data в ~/airflow/data .

airflow-home.png

Настройка сервера Airflow

Создайте правило брандмауэра для доступа к серверу Airflow в браузере.

  1. Перейдите на <a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a> и убедитесь, что название проекта выбрано правильно
  2. Нажмите кнопку CREATE FIREWALL RULE вверху.

firewall-rule.png

В диалоговом окне «Создание брандмауэра» выполните действия, перечисленные ниже.

  1. В поле «Имя» укажите airflow-tfx .
  2. Для Приоритета выберите 1 .
  3. В поле «Цели» выберите All instances in the network .
  4. Для диапазонов исходных IPv4 выберите 0.0.0.0/0
  5. В разделе «Протоколы и порты» нажмите tcp и введите 7000 в поле рядом с tcp
  6. Нажмите Create .

create-firewall-dialog.png

Запустите сервер воздушного потока из своей оболочки

В окне терминала Jupyter Lab перейдите в домашний каталог и запустите команду airflow users create , чтобы создать пользователя-администратора для Airflow:

cd
airflow users  create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin

Затем запустите команду airflow webserver и airflow scheduler , чтобы запустить сервер. Выберите порт 7000 поскольку он разрешен через брандмауэр.

nohup airflow webserver -p 7000 &> webserver.out &
nohup airflow scheduler &> scheduler.out &

Получите свой внешний IP

  1. В Cloud Shell используйте gcloud , чтобы получить внешний IP-адрес.
gcloud compute instances list

gcloud-экземпляр-ip.png

Запуск DAG/конвейера

В браузере

Откройте браузер и перейдите по адресу http:// :7000

  • На странице входа введите имя пользователя ( admin ) и пароль ( admin ), которые вы выбрали при запуске команды airflow users create .

airflow-login.png

Airflow загружает DAG из исходных файлов Python. Он берет каждый файл и выполняет его. Затем он загружает все объекты DAG из этого файла. Все файлы .py , определяющие объекты DAG, будут указаны как конвейеры на домашней странице airflow.

В этом руководстве Airflow сканирует папку ~/airflow/dags/ на наличие объектов DAG.

Если вы откроете ~/airflow/dags/taxi_pipeline.py и прокрутите вниз, вы увидите, что он создает и сохраняет объект DAG в переменной с именем DAG . Следовательно, он будет указан как трубопровод на домашней странице воздушного потока, как показано ниже:

даг-дом-full.png

Если вы нажмете на такси, вы будете перенаправлены на представление сетки DAG. Вы можете нажать кнопку Graph вверху, чтобы получить графическое представление группы обеспечения доступности баз данных.

airflow-dag-graph.png

Запустить конвейер такси

На главной странице вы можете увидеть кнопки, которые можно использовать для взаимодействия с группой обеспечения доступности баз данных.

dag-buttons.png

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

На странице такси DAG используйте кнопку справа, чтобы обновить состояние графического представления DAG во время работы конвейера. Кроме того, вы можете включить автоматическое обновление , чтобы дать Airflow указание автоматически обновлять представление графика при изменении состояния.

даг-кнопка-обновить.png

Вы также можете использовать интерфейс командной строки Airflow в терминале для включения и запуска групп DAG:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

Ожидание завершения конвейера

После запуска конвейера в представлении DAG вы можете наблюдать за ходом работы конвейера во время его работы. По мере запуска каждого компонента цвет контура компонента на графике DAG будет меняться, показывая его состояние. Когда компонент завершит обработку, контур станет темно-зеленым, показывая, что обработка завершена.

даг-step7.png

Понимание компонентов

Теперь мы подробно рассмотрим компоненты этого конвейера и индивидуально рассмотрим результаты, получаемые на каждом этапе конвейера.

  1. В JupyterLab перейдите в ~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/

  2. Откройте блокнот.ipynb. ноутбук-ipynb.png

  3. Продолжайте лабораторную работу в блокноте и запускайте каждую ячейку, нажимая кнопку «Выполнить» ( кнопка запуска.png ) в верхней части экрана. Альтернативно вы можете выполнить код в ячейке с помощью SHIFT + ENTER .

Прочтите повествование и убедитесь, что вы понимаете, что происходит в каждой ячейке.