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

ПитонPyPI

Введение

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

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

Учить больше

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

Шаг за шагом

Вы постепенно создадите свой конвейер, работая шаг за шагом, следуя типичному процессу разработки машинного обучения. Вот шаги:

  1. Настройте свою среду
  2. Поднимите первоначальный скелет конвейера
  3. Погрузитесь в свои данные
  4. Разработка функций
  5. Подготовка
  6. Анализ производительности модели
  7. Готов к производству

Предпосылки

  • Линукс / МакОС
  • Виртуалэнв
  • Питон 3.5+
  • Гит

Требуемые пакеты

В зависимости от вашей среды вам может потребоваться установить несколько пакетов:

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

Если вы используете Python 3.6, вам следует установить python3.6-dev:

sudo apt-get install python3.6-dev

Если вы используете Python 3.7, вам следует установить python3.7-dev:

sudo apt-get install python3.7-dev

Кроме того, если ваша система имеет версию GCC < 7, вам следует обновить GCC. В противном случае вы увидите ошибки при запуске airflow webserver . Вы можете проверить текущую версию с помощью:

gcc --version

Если вам нужно обновить GCC, вы можете запустить это:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

Среда MacOS

Если у вас еще не установлены Python 3 и git, вы можете установить их с помощью менеджера пакетов Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git

В MacOS иногда возникают проблемы с разветвлением потоков при запуске Airflow, в зависимости от конфигурации. Чтобы избежать этих проблем, вы должны отредактировать файл ~/.bash_profile и добавить следующую строку в конец файла:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Учебные материалы

Код для этого руководства доступен по адресу: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop .

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

Учебные файлы включают в себя как упражнение, так и решение упражнения на случай, если вы застрянете.

Упражнение

  • такси_трубопровод.py
  • такси_utils.py
  • такси ДАГ

Решение

  • Taxi_pipeline_solution.py
  • такси_utils_solution.py
  • такси_решение DAG

Что ты делаешь

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

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

Вы следуете типичному процессу разработки машинного обучения

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

Добавление кода для каждого шага

Учебник разработан таким образом, что весь код включен в файлы, но весь код для шагов 3-7 закомментирован и помечен встроенными комментариями. Встроенные комментарии указывают, к какому шагу относится строка кода. Например, код шага 3 отмечен комментарием # Step 3 .

Код, который вы будете добавлять для каждого шага, обычно делится на 3 области кода:

  • импорт
  • Конфигурация группы обеспечения доступности баз данных
  • Список, возвращаемый вызовом create_pipeline()
  • Вспомогательный код в tax_utils.py

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

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

ТаксиЧикаго такси

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

Подробнее о наборе данных можно прочитать в Google BigQuery . Изучите полный набор данных в пользовательском интерфейсе BigQuery .

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

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

Шаг 1. Настройте среду

Сценарий установки ( setup_demo.sh ) устанавливает TFX и Airflow и настраивает Airflow таким образом, чтобы с ним было легко работать в этом руководстве.

В оболочке:

cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate

git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh

Вы должны просмотреть setup_demo.sh , чтобы увидеть, что он делает.

Шаг 2: Поднимите первоначальный скелет конвейера

Привет, мир

В оболочке:

# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080

# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler

# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook

На этом шаге вы запустили блокнот Jupyter. Позже вы будете запускать блокноты в этой папке.

В браузере:

  • Откройте браузер и перейдите по адресу http://127.0.0.1:8080.

Исправление проблем

Если у вас возникли проблемы с загрузкой консоли Airflow в веб-браузере или возникли какие-либо ошибки при запуске airflow webserver , возможно, у вас запущено другое приложение на порту 8080. Это порт по умолчанию для Airflow, но вы можете изменить его. на любой другой пользовательский порт, который не используется. Например, чтобы запустить Airflow на порту 7070, вы можете запустить:

airflow webserver -p 7070

Кнопки просмотра DAG

Кнопки DAG

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

Кнопка обновления графика

Интерфейс командной строки воздушного потока

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

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

# trigger
airflow trigger_dag <your DAG name>

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

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

Пока у вас есть только компонент CsvExampleGen в нашем конвейере, поэтому вам нужно подождать, пока он станет темно-зеленым (~ 1 минута).

Настройка завершена

Шаг 3. Изучите свои данные

Первая задача в любом проекте по науке о данных или машинному обучению — понять и очистить данные.

  • Понимание типов данных для каждой функции
  • Ищите аномалии и пропущенные значения
  • Разберитесь с дистрибутивами для каждой функции

Составные части

Компоненты данныхКомпоненты данных

  • ExampleGen принимает и разбивает входной набор данных.
  • StatisticsGen вычисляет статистику для набора данных.
  • SchemaGen SchemaGen проверяет статистику и создает схему данных.
  • ExampleValidator ищет аномалии и отсутствующие значения в наборе данных.

В редакторе:

  • В ~/airflow/dags раскомментируйте строки с пометкой Step 3 в taxi_pipeline.py
  • Найдите минутку, чтобы просмотреть код, который вы раскомментировали.

В браузере:

  • Вернитесь на страницу списка DAG в Airflow, щелкнув ссылку «DAG» в верхнем левом углу.
  • Нажмите кнопку обновления справа для такси DAG.
    • Вы должны увидеть «ДАГ [такси] теперь свеж, как ромашка».
  • Триггерное такси
  • Дождитесь завершения конвейера
    • Все темно-зеленые
    • Использовать обновление справа или обновить страницу

Погрузитесь в данные

Вернемся к Юпитеру:

Ранее вы запускали jupyter notebook , который открывал сеанс Jupyter на вкладке браузера. Теперь вернитесь на эту вкладку в браузере.

  • Откройте step3.ipynb
  • Следите за блокнотом

Погрузитесь в данные

Более сложный пример

Представленный здесь пример на самом деле предназначен только для того, чтобы вы начали. Более продвинутый пример см. в TensorFlow Data Validation Colab .

Дополнительные сведения об использовании TFDV для изучения и проверки набора данных см. в примерах на сайте tensorflow.org .

Шаг 4: Разработка функций

Вы можете повысить прогностическое качество ваших данных и/или уменьшить размерность с помощью разработки признаков.

  • Характерные кресты
  • Словари
  • Вложения
  • СПС
  • Категориальное кодирование

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

Составные части

Трансформировать

В редакторе:

  • В ~/airflow/dags раскомментируйте строки, помеченные как Step 4 , как в taxi_pipeline.py так и в taxi_utils.py
  • Найдите минутку, чтобы просмотреть код, который вы раскомментировали.

В браузере:

  • Вернуться на страницу списка DAG в Airflow
  • Нажмите кнопку обновления справа для такси DAG.
    • Вы должны увидеть «ДАГ [такси] теперь свеж, как ромашка».
  • Триггерное такси
  • Дождитесь завершения конвейера
    • Все темно-зеленые
    • Использовать обновление справа или обновить страницу

Разработка функций

Вернемся к Юпитеру:

Вернитесь на вкладку Jupyter в браузере.

  • Откройте step4.ipynb
  • Следите за блокнотом

Более сложный пример

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

Шаг 5: Обучение

Обучите модель TensorFlow с вашими красивыми, чистыми, преобразованными данными.

  • Включите преобразования из шага 4, чтобы они применялись последовательно
  • Сохраните результаты как SavedModel для производства.
  • Визуализируйте и исследуйте процесс обучения с помощью TensorBoard
  • Также сохраните EvalSavedModel для анализа производительности модели.

Составные части

В редакторе:

  • В ~/airflow/dags раскомментируйте строки, помеченные как Step 5 , как в taxi_pipeline.py так и в taxi_utils.py
  • Найдите минутку, чтобы просмотреть код, который вы раскомментировали.

В браузере:

  • Вернуться на страницу списка DAG в Airflow
  • Нажмите кнопку обновления справа для такси DAG.
    • Вы должны увидеть «ДАГ [такси] теперь свеж, как ромашка».
  • Триггерное такси
  • Дождитесь завершения конвейера
    • Все темно-зеленые
    • Использовать обновление справа или обновить страницу

Обучение модели

Вернемся к Юпитеру:

Вернитесь на вкладку Jupyter в браузере.

  • Откройте step5.ipynb
  • Следите за блокнотом

Обучение модели

Более сложный пример

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

Шаг 6: Анализ производительности модели

Понимание не только метрик верхнего уровня.

  • Пользователи испытывают производительность модели только для своих запросов
  • Низкая производительность на срезах данных может быть скрыта метриками верхнего уровня.
  • Справедливость модели важна
  • Часто ключевые подмножества пользователей или данных очень важны и могут быть небольшими.
    • Производительность в критических, но необычных условиях
    • Производительность для ключевых аудиторий, таких как влиятельные лица
  • Если вы заменяете модель, которая в настоящее время находится в производстве, сначала убедитесь, что новая модель лучше.
  • Evaluator сообщает компоненту Pusher, в порядке ли модель

Составные части

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

В редакторе:

  • В ~/airflow/dags раскомментируйте строки, помеченные как Step 6 , как в taxi_pipeline.py
  • Найдите минутку, чтобы просмотреть код, который вы раскомментировали.

В браузере:

  • Вернуться на страницу списка DAG в Airflow
  • Нажмите кнопку обновления справа для такси DAG.
    • Вы должны увидеть «ДАГ [такси] теперь свеж, как ромашка».
  • Триггерное такси
  • Дождитесь завершения конвейера
    • Все темно-зеленые
    • Использовать обновление справа или обновить страницу

Анализ производительности модели

Вернемся к Юпитеру:

Вернитесь на вкладку Jupyter в браузере.

  • Откройте step6.ipynb
  • Следите за блокнотом

Анализ производительности модели

Более сложный пример

Представленный здесь пример на самом деле предназначен только для того, чтобы вы начали. Для более сложного примера см. Учебник TFMA Chicago Taxi Tutorial .

Шаг 7: Готов к производству

Если новая модель готова, сделайте так.

  • Pusher развертывает SavedModels в хорошо известных местах.

Цели развертывания получают новые модели из хорошо известных мест.

  • Обслуживание TensorFlow
  • ТензорФлоу Лайт
  • ТензорФлоу JS
  • Концентратор TensorFlow

Составные части

  • Pusher развертывает модель в обслуживающей инфраструктуре.

В редакторе:

  • В ~/airflow/dags раскомментируйте строки, помеченные как Step 7 , как в taxi_pipeline.py
  • Найдите минутку, чтобы просмотреть код, который вы раскомментировали.

В браузере:

  • Вернуться на страницу списка DAG в Airflow
  • Нажмите кнопку обновления справа для такси DAG.
    • Вы должны увидеть «ДАГ [такси] теперь свеж, как ромашка».
  • Триггерное такси
  • Дождитесь завершения конвейера
    • Все темно-зеленые
    • Использовать обновление справа или обновить страницу

Готов к производству

Следующие шаги

Теперь вы обучили и проверили свою модель и экспортировали файл SavedModel в каталог ~/airflow/saved_models/taxi . Теперь ваша модель готова к производству. Теперь вы можете развернуть свою модель в любой из целей развертывания TensorFlow, включая:

  • TensorFlow Serving для обслуживания вашей модели на сервере или ферме серверов и обработки запросов вывода REST и/или gRPC.
  • TensorFlow Lite для включения вашей модели в собственное мобильное приложение Android или iOS или в приложение Raspberry Pi, IoT или микроконтроллер.
  • TensorFlow.js для запуска вашей модели в веб-браузере или приложении Node.JS.