Присоединяйтесь к TensorFlow на Google I/O, 11-12 мая Зарегистрируйтесь сейчас

Руководство пользователя TFX

Вступление

TFX — это платформа машинного обучения (ML) в масштабе производства Google, основанная на TensorFlow. Он предоставляет структуру конфигурации и общие библиотеки для интеграции общих компонентов, необходимых для определения, запуска и мониторинга вашей системы машинного обучения.

ТФХ 1.0

Мы рады сообщить о доступности TFX 1.0.0 . Это первый пост-бета-выпуск TFX, который предоставляет стабильные общедоступные API и артефакты. Вы можете быть уверены, что ваши будущие конвейеры TFX будут продолжать работать после обновления в пределах области совместимости, определенной в этом RFC .

Установка

ПитонPyPI

pip install tfx

Ночные пакеты

TFX также размещает ночные пакеты на https://pypi-nightly.tensorflow.org в Google Cloud. Чтобы установить последний ночной пакет, используйте следующую команду:

pip install --extra-index-url https://pypi-nightly.tensorflow.org/simple --pre tfx

Это установит ночные пакеты для основных зависимостей TFX, таких как анализ моделей TensorFlow (TFMA), проверка данных TensorFlow (TFDV), преобразование TensorFlow (TFT), базовые общие библиотеки TFX (TFX-BSL), метаданные ML (MLMD).

О ТФХ

TFX — это платформа для создания и управления рабочими процессами машинного обучения в производственной среде. TFX обеспечивает следующее:

  • Набор инструментов для построения пайплайнов машинного обучения. Конвейеры TFX позволяют организовать рабочий процесс машинного обучения на нескольких платформах, таких как Apache Airflow, Apache Beam и Kubeflow Pipelines.

    Узнайте больше о конвейерах TFX .

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

    Узнайте больше о стандартных компонентах TFX .

  • Библиотеки, обеспечивающие базовую функциональность многих стандартных компонентов. Вы можете использовать библиотеки TFX, чтобы добавить эту функциональность к своим собственным компонентам или использовать их отдельно.

    Узнайте больше о библиотеках TFX .

TFX — это набор инструментов для машинного обучения в масштабах Google, основанный на TensorFlow. Он предоставляет структуру конфигурации и общие библиотеки для интеграции общих компонентов, необходимых для определения, запуска и мониторинга вашей системы машинного обучения.

Стандартные компоненты TFX

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

Конвейер TFX обычно включает следующие компоненты:

  • ExampleGen — это начальный входной компонент конвейера, который принимает и при необходимости разбивает входной набор данных.

  • StatisticsGen вычисляет статистику для набора данных.

  • SchemaGen анализирует статистику и создает схему данных.

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

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

  • Тренер тренирует модель.

  • Тюнер настраивает гиперпараметры модели.

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

  • InfraValidator проверяет, действительно ли модель обслуживается инфраструктурой, и предотвращает отправку неверных моделей.

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

  • BulkInferrer выполняет пакетную обработку модели с непомеченными запросами на вывод.

На этой диаграмме показан поток данных между этими компонентами:

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

TFX-библиотеки

TFX включает в себя как библиотеки, так и компоненты конвейера. На этой диаграмме показаны взаимосвязи между библиотеками TFX и компонентами конвейера:

Библиотеки и компоненты

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

Библиотеки TFX включают:

  • TensorFlow Data Validation (TFDV) — это библиотека для анализа и проверки данных машинного обучения. Он разработан с высокой масштабируемостью и хорошо работает с TensorFlow и TFX. TFDV включает в себя:

    • Масштабируемый расчет сводной статистики обучающих и тестовых данных.
    • Интеграция со вьювером для распределения данных и статистики, а также фасетного сравнения пар наборов данных (Facets).
    • Автоматическое создание схемы данных для описания ожиданий от таких данных, как требуемые значения, диапазоны и словари.
    • Средство просмотра схемы, которое поможет вам проверить схему.
    • Обнаружение аномалий для выявления аномалий, таких как отсутствующие объекты, значения вне диапазона или неправильные типы объектов, и это лишь некоторые из них.
    • Средство просмотра аномалий, чтобы вы могли видеть, какие функции имеют аномалии, и узнавать больше, чтобы исправить их.
  • TensorFlow Transform (TFT) — это библиотека для предварительной обработки данных с помощью TensorFlow. Преобразование TensorFlow полезно для данных, требующих полного прохода, таких как:

    • Нормируйте входное значение по среднему и стандартному отклонению.
    • Преобразование строк в целые числа путем создания словаря для всех входных значений.
    • Преобразуйте числа с плавающей запятой в целые числа, назначив их сегментам на основе наблюдаемого распределения данных.
  • TensorFlow используется для обучения моделей с помощью TFX. Он принимает обучающие данные и код моделирования и создает результат SavedModel. Он также интегрирует конвейер проектирования функций, созданный TensorFlow Transform для предварительной обработки входных данных.

    KerasTuner используется для настройки гиперпараметров модели.

  • Анализ моделей TensorFlow (TFMA) — это библиотека для оценки моделей TensorFlow. Он используется вместе с TensorFlow для создания EvalSavedModel, который становится основой для его анализа. Это позволяет пользователям оценивать свои модели на больших объемах данных распределенным образом, используя те же метрики, которые определены в их тренере. Эти метрики можно вычислять по разным фрагментам данных и визуализировать в блокнотах Jupyter.

  • Метаданные TensorFlow (TFMD) предоставляют стандартные представления метаданных, которые полезны при обучении моделей машинного обучения с помощью TensorFlow. Метаданные могут создаваться вручную или автоматически во время анализа входных данных и могут использоваться для проверки, исследования и преобразования данных. Форматы сериализации метаданных включают:

    • Схема, описывающая табличные данные (например, tf.Examples).
    • Коллекция сводной статистики по таким наборам данных.
  • ML Metadata (MLMD) — это библиотека для записи и извлечения метаданных, связанных с рабочими процессами разработчиков машинного обучения и специалистов по данным. Чаще всего метаданные используют представления TFMD. MLMD управляет сохраняемостью с помощью SQL-Lite , MySQL и других подобных хранилищ данных.

Поддерживающие технологии

Необходимый

  • Apache Beam — это унифицированная модель с открытым исходным кодом для определения конвейеров параллельной обработки как пакетных, так и потоковых данных. TFX использует Apache Beam для реализации параллельных конвейеров данных. Затем конвейер выполняется одним из поддерживаемых серверов распределенной обработки Beam, включая Apache Flink, Apache Spark, Google Cloud Dataflow и другие.

Необязательный

Оркестраторы, такие как Apache Airflow и Kubeflow, упрощают настройку, эксплуатацию, мониторинг и обслуживание конвейера машинного обучения.

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

  • Kubeflow предназначен для простого, переносимого и масштабируемого развертывания рабочих процессов машинного обучения (ML) в Kubernetes. Цель Kubeflow — не воссоздавать другие сервисы, а предоставить простой способ развертывания лучших в своем классе систем с открытым исходным кодом для машинного обучения в различных инфраструктурах. Конвейеры Kubeflow позволяют создавать и выполнять воспроизводимые рабочие процессы в Kubeflow, интегрированные с экспериментами и опытом на основе ноутбуков. Сервисы Kubeflow Pipelines в Kubernetes включают в себя размещенное хранилище метаданных, механизм оркестрации на основе контейнеров, сервер ноутбуков и пользовательский интерфейс, помогающие пользователям разрабатывать, запускать и управлять сложными конвейерами машинного обучения в масштабе. Kubeflow Pipelines SDK позволяет программно создавать и совместно использовать компоненты и композицию конвейеров.

Портативность и совместимость

TFX предназначен для переноса в несколько сред и сред оркестровки, включая Apache Airflow , Apache Beam и Kubeflow . Его также можно переносить на различные вычислительные платформы, включая локальные, и облачные платформы, такие как Google Cloud Platform (GCP) . В частности, TFX взаимодействует с серверными управляемыми сервисами GCP, такими как Cloud AI Platform for Training and Prediction и Cloud Dataflow для распределенной обработки данных для некоторых других аспектов жизненного цикла машинного обучения.

Модель против сохраненной модели

Модель

Модель – это результат процесса обучения. Это сериализованная запись весов, которые были изучены в процессе обучения. Эти веса впоследствии можно использовать для вычисления прогнозов для новых входных примеров. Для TFX и TensorFlow «модель» относится к контрольным точкам, содержащим веса, изученные до этого момента.

Обратите внимание, что «модель» может также относиться к определению графа вычислений TensorFlow (т. е. к файлу Python), который описывает, как будет вычисляться прогноз. Эти два смысла могут использоваться взаимозаменяемо в зависимости от контекста.

Сохраненная модель

  • Что такое SavedModel : универсальная, не зависящая от языка, герметичная, восстанавливаемая сериализация модели TensorFlow.
  • Почему это важно : он позволяет системам более высокого уровня создавать, преобразовывать и использовать модели TensorFlow, используя единую абстракцию.

SavedModel — это рекомендуемый формат сериализации для обслуживания модели TensorFlow в рабочей среде или экспорта обученной модели для собственного мобильного приложения или приложения JavaScript. Например, чтобы превратить модель в службу REST для создания прогнозов, вы можете сериализовать модель как SavedModel и обслуживать ее с помощью TensorFlow Serving. Дополнительные сведения см. в разделе Обслуживание модели TensorFlow .

Схема

Некоторые компоненты TFX используют описание ваших входных данных, называемое схемой . Схема является экземпляром schema.proto . Схемы — это тип буфера протокола , более известный как «протобуфер». Схема может указывать типы данных для значений признаков, необходимость присутствия признака во всех примерах, допустимые диапазоны значений и другие свойства. Одним из преимуществ использования TensorFlow Data Validation (TFDV) является то, что он автоматически генерирует схему, выявляя типы, категории и диапазоны из обучающих данных.

Вот выдержка из схемы protobuf:

...
feature {
  name: "age"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
feature {
  name: "capital-gain"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
...

Следующие компоненты используют схему:

  • Проверка данных TensorFlow
  • Преобразование TensorFlow

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

Разработка с TFX

TFX предоставляет мощную платформу для каждого этапа проекта машинного обучения, от исследований, экспериментов и разработки на вашем локальном компьютере до развертывания. Чтобы избежать дублирования кода и устранить возможность перекоса обучения/обслуживания , настоятельно рекомендуется реализовать конвейер TFX как для обучения модели, так и для развертывания обученных моделей, а также использовать компоненты Transform , которые используют библиотеку TensorFlow Transform как для обучения, так и для логического вывода. Поступая таким образом, вы будете последовательно использовать один и тот же код предварительной обработки и анализа и избежите различий между данными, используемыми для обучения, и данными, передаваемыми в ваши обученные модели в производственной среде, а также получите выгоду от однократного написания этого кода.

Исследование данных, визуализация и очистка

Исследование данных, визуализация и очистка

Конвейеры TFX обычно начинаются с компонента ExampleGen , который принимает входные данные и форматирует их как tf.Examples. Часто это делается после того, как данные были разделены на наборы данных для обучения и оценки, так что на самом деле есть две копии компонентов ExampleGen, по одной для обучения и оценки. Обычно за ним следуют компоненты StatisticsGen и SchemaGen , которые изучают ваши данные и выводят схему данных и статистику. Схема и статистика будут использоваться компонентом ExampleValidator , который будет искать аномалии, отсутствующие значения и неправильные типы данных в ваших данных. Все эти компоненты используют возможности библиотеки проверки данных TensorFlow .

Проверка данных TensorFlow (TFDV) — ценный инструмент при первоначальном исследовании, визуализации и очистке набора данных. TFDV проверяет ваши данные и делает выводы о типах данных, категориях и диапазонах, а затем автоматически помогает выявить аномалии и пропущенные значения. Он также предоставляет инструменты визуализации, которые могут помочь вам изучить и понять ваш набор данных. После завершения конвейера вы можете читать метаданные из MLMD и использовать инструменты визуализации TFDV в блокноте Jupyter для анализа данных.

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

Визуализация данных

После того, как вы завершили свой первый прогон данных через раздел конвейера, использующий TFDV (обычно это StatisticsGen, SchemaGen и ExampleValidator), вы можете визуализировать результаты в блокноте в стиле Jupyter. Для дополнительных прогонов вы можете сравнивать эти результаты по мере внесения корректировок, пока ваши данные не станут оптимальными для вашей модели и приложения.

Сначала вы запросите метаданные ML (MLMD) , чтобы найти результаты выполнения этих компонентов, а затем используйте API поддержки визуализации в TFDV для создания визуализаций в своем блокноте. Сюда входят tfdv.load_statistics() и tfdv.visualize_statistics(). Используя эту визуализацию, вы можете лучше понять характеристики вашего набора данных и, при необходимости, изменить его по мере необходимости.

Разработка и обучение моделей

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

Типичный конвейер TFX будет включать компонент Transform , который будет выполнять разработку функций, используя возможности библиотеки TensorFlow Transform (TFT) . Компонент Transform использует схему, созданную компонентом SchemaGen, и применяет преобразования данных для создания, объединения и преобразования функций, которые будут использоваться для обучения вашей модели. Очистка отсутствующих значений и преобразование типов также должны выполняться в компоненте Transform, если когда-либо существует вероятность того, что они также будут присутствовать в данных, отправляемых для запросов на вывод. Есть несколько важных соображений при разработке кода TensorFlow для обучения TFX.

Моделирование и обучение

Результатом компонента Transform является SavedModel, который будет импортирован и использован в вашем коде моделирования в TensorFlow во время компонента Trainer . Эта SavedModel включает в себя все преобразования инженерии данных, которые были созданы в компоненте Transform, поэтому идентичные преобразования выполняются с использованием одного и того же кода как во время обучения, так и во время вывода. Используя код моделирования, включая SavedModel из компонента Transform, вы можете использовать данные обучения и оценки и обучать свою модель.

При работе с моделями на основе Estimator последний раздел вашего кода моделирования должен сохранять вашу модель как SavedModel и EvalSavedModel. Сохранение в качестве EvalSavedModel гарантирует, что метрики, используемые во время обучения, также будут доступны во время оценки (обратите внимание, что это не требуется для моделей на основе keras). Для сохранения EvalSavedModel необходимо импортировать библиотеку анализа моделей TensorFlow (TFMA) в компонент Trainer.

import tensorflow_model_analysis as tfma
...

tfma.export.export_eval_savedmodel(
        estimator=estimator,
        export_dir_base=eval_model_dir,
        eval_input_receiver_fn=receiver_fn)

Необязательный компонент Tuner может быть добавлен перед Trainer для настройки гиперпараметров (например, количества слоев) модели. С заданной моделью и пространством поиска гиперпараметров алгоритм настройки найдет лучшие гиперпараметры на основе цели.

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

Анализ модели

После первоначальной разработки модели и обучения важно проанализировать и действительно понять производительность вашей модели. Типичный конвейер TFX будет включать компонент Evaluator , который использует возможности библиотеки анализа моделей TensorFlow (TFMA) , которая предоставляет набор мощных инструментов для этого этапа разработки. Компонент Evaluator использует модель, которую вы экспортировали выше, и позволяет указать список tfma.SlicingSpec , который вы можете использовать при визуализации и анализе производительности вашей модели. Каждая SlicingSpec определяет срез обучающих данных, который вы хотите изучить, например, определенные категории для категориальных признаков или определенные диапазоны для числовых признаков.

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

Анализ модели и визуализация

После того, как вы завершили свой первый запуск данных путем обучения модели и запуска компонента Evaluator (который использует TFMA ) для результатов обучения, вы можете визуализировать результаты в блокноте в стиле Jupyter. Для дополнительных запусков вы можете сравнивать эти результаты по мере внесения корректировок, пока ваши результаты не станут оптимальными для вашей модели и приложения.

Сначала вы запросите метаданные ML (MLMD) , чтобы найти результаты выполнения этих компонентов, а затем используйте API поддержки визуализации в TFMA для создания визуализаций в своей записной книжке. Сюда входят tfma.load_eval_results и tfma.view.render_slicing_metrics. Используя эту визуализацию, вы можете лучше понять характеристики вашей модели и при необходимости изменить ее.

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

В рамках анализа производительности модели вам может потребоваться проверить производительность по сравнению с базовым уровнем (например, текущей моделью). Проверка модели выполняется путем передачи как модели-кандидата, так и базовой модели компоненту Evaluator . Оценщик вычисляет метрики (например, AUC, потери) как для кандидата, так и для базового уровня вместе с соответствующим набором отличных метрик. Затем можно применить пороговые значения и использовать их для запуска ваших моделей в производство.

Проверка возможности показа модели

Инфра-валидация

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

Цели развертывания

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

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

Вывод: обслуживание TensorFlow

TensorFlow Serving (TFS) — это гибкая высокопроизводительная система обслуживания моделей машинного обучения, разработанная для производственных сред. Он использует SavedModel и будет принимать запросы на вывод через интерфейсы REST или gRPC. Он работает как набор процессов на одном или нескольких сетевых серверах, используя одну из нескольких передовых архитектур для обработки синхронизации и распределенных вычислений. Дополнительные сведения о разработке и развертывании решений TFS см. в документации по TFS.

В типичном конвейере SavedModel, который был обучен в компоненте Trainer , сначала проходит внутреннюю проверку в компоненте InfraValidator . InfraValidator запускает канареечный сервер модели TFS для фактического обслуживания SavedModel. Если проверка прошла успешно, компонент Pusher , наконец, развернет SavedModel в вашей инфраструктуре TFS. Это включает в себя обработку нескольких версий и обновлений модели.

Вывод в собственных мобильных приложениях и приложениях IoT: TensorFlow Lite

TensorFlow Lite — это набор инструментов, призванный помочь разработчикам использовать их обученные модели TensorFlow в нативных мобильных приложениях и приложениях IoT. Он использует те же SavedModels, что и TensorFlow Serving, и применяет такие оптимизации, как квантование и сокращение, чтобы оптимизировать размер и производительность результирующих моделей для решения задач, связанных с работой на мобильных устройствах и устройствах IoT. См. документацию TensorFlow Lite для получения дополнительной информации об использовании TensorFlow Lite.

Вывод в JavaScript: TensorFlow JS

TensorFlow JS — это библиотека JavaScript для обучения и развертывания моделей машинного обучения в браузере и на Node.js. Он использует те же SavedModels, что и TensorFlow Serving и TensorFlow Lite, и преобразует их в веб-формат TensorFlow.js. Дополнительные сведения об использовании TensorFlow JS см. в документации по TensorFlow JS.

Создание конвейера TFX с помощью Airflow

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

Создание конвейера TFX с помощью Kubeflow

Настраивать

Kubeflow требует, чтобы кластер Kubernetes запускал конвейеры в масштабе. См. руководство по развертыванию Kubeflow, в котором описаны варианты развертывания кластера Kubeflow.

Настроить и запустить конвейер TFX

Следуйте руководству по TFX on Cloud AI Platform Pipeline , чтобы запустить пример конвейера TFX в Kubeflow. Компоненты TFX были помещены в контейнеры для создания конвейера Kubeflow, и пример иллюстрирует возможность настройки конвейера для чтения большого общедоступного набора данных и выполнения шагов обучения и обработки данных в масштабе облака.

Интерфейс командной строки для действий конвейера

TFX предоставляет унифицированный интерфейс командной строки, который помогает выполнять весь спектр действий конвейера, таких как создание, обновление, запуск, перечисление и удаление конвейеров на различных оркестраторах, включая Apache Airflow, Apache Beam и Kubeflow. Для получения подробной информации следуйте этим инструкциям .