Вопросы о TFX? Присоединяйтесь к нам на Google I / O!
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Учебное пособие по TFX Airflow

Python PyPI

Вступление

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

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

Учить больше

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

Шаг за шагом

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

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

Предпосылки

  • Linux / MacOS
  • Virtualenv
  • Python 3.5+
  • Git

Необходимые пакеты

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

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

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

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

Упражнение

  • taxi_pipeline.py
  • taxi_utils.py
  • такси DAG

Решение

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы можете узнать больше о наборе данных в 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 Airflow возникли какие-либо ошибки, то у вас может быть другое приложение, работающее на порту 8080. Это порт по умолчанию для Airflow, но вы можете его изменить. к любому другому пользовательскому порту, который не используется. Например, чтобы запустить Airflow на порту 7070, вы можете запустить:

airflow webserver -p 7070

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

Кнопки DAG

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

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

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

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

# 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 такси.
    • Вы должны увидеть «DAG [такси] теперь свежо, как ромашка»
  • Триггер такси
  • Дождитесь завершения конвейера
    • Все темно-зеленые
    • Используйте обновление справа или обновите страницу

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

Вернемся к Jupyter:

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

  • Откройте step3.ipynb
  • Следуй за записной книжкой

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

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

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

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

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

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

  • Кресты с признаками
  • Словари
  • Вложения
  • PCA
  • Категориальная кодировка

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

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

Преобразовать

  • Transform выполняет проектирование функций в наборе данных.

В редакторе:

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

В браузере:

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

Функциональная инженерия

Вернемся к Jupyter:

Вернитесь на вкладку 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 такси.
    • Вы должны увидеть «DAG [такси] теперь свежо, как ромашка»
  • Триггер такси
  • Дождитесь завершения конвейера
    • Все темно-зеленые
    • Используйте обновление справа или обновите страницу

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

Вернемся к Jupyter:

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

  • Откройте step5.ipynb
  • Следуй за записной книжкой

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

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

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

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

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

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

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

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

В редакторе:

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

В браузере:

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

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

Вернемся к Jupyter:

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

  • Откройте step6.ipynb
  • Следуй за записной книжкой

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

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

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

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

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

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

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

  • Обслуживание TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

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

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

В редакторе:

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

В браузере:

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

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

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

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

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