Помогают защитить Большой Барьерный Риф с TensorFlow на Kaggle Присоединяйтесь вызов

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

PythonPyPI

Введение

Это руководство предназначено для ознакомления с 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 - 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 и мерзавец уже установлена, вы можете установить их с помощью 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 подходят, когда вы будете развертывать производственное приложение машинного обучения.
  • Конвейеры TFX подходят для больших наборов данных
  • Конвейеры TFX подходят, когда важна последовательность обучения / обслуживания
  • Конвейеры TFX подходят, когда важно управление версиями для вывода
  • Google использует конвейеры TFX для производства машинного обучения

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

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

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

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

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

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

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

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

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

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

Вы можете узнать больше о наборе данных в Google BigQuery . Исследуйте полный набор данных в BigQuery UI .

Модель Цель - Бинарная классификация

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

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

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

airflow webserver -p 7070

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

Кнопки DAG

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

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

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

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

В редакторе:

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

В браузере:

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

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

Вернемся к Jupyter:

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

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

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

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

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

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

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

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

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

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

Компоненты

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

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

В редакторе:

  • В ~ / воздушный поток / пантов раскомментировать линии отмечены 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 для анализа производительности модели.

Компоненты

В редакторе:

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

В браузере:

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

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

Вернемся к Jupyter:

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

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

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

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

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

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

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

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

Компоненты

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

В редакторе:

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

В браузере:

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

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

Вернемся к Jupyter:

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

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

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

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

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

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

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

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

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

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

Компоненты

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

В редакторе:

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

В браузере:

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

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

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

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

  • TensorFlow сервировки , для обслуживания вашей модели на сервере или ферме серверов и обработки REST и / или запросов логического вывода КПГР.
  • TensorFlow Lite , для включения модели в качестве нативного мобильного приложения Android или IOS, или в Raspberry Pi, ВГД или микроконтроллер приложения.
  • TensorFlow.js , для запуска модели в веб - браузере или приложения Node.js.