Присоединяйтесь к сообществу SIG TFX-Addons и помогите сделать TFX еще лучше!

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

Вступление

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

TFX 1.0

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

Монтаж

PythonPyPI

pip install tfx

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

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

pip install -i https://pypi-nightly.tensorflow.org/simple --pre tfx

Это установит ночные пакеты для основных зависимостей TFX, таких как TensorFlow Model Analysis (TFMA), TensorFlow Data Validation (TFDV), TensorFlow Transform (TFT), TFX Basic Shared Libraries (TFX-BSL), ML Metadata (MLMD).

О TFX

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

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

    Узнайте больше о TFX трубопроводов .

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

    Подробнее о стандартных компонентах TFX .

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

    Подробнее о библиотеках TFX .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Эта диаграмма иллюстрирует поток данных между этими компонентами:

Компонент Flow

Библиотеки 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 Metadata (TFMD) предоставляет стандартные представления для метаданных , которые являются полезными при обучении машинного обучения модели с TensorFlow. Метаданные могут создаваться вручную или автоматически во время анализа входных данных и могут использоваться для проверки, исследования и преобразования данных. Форматы сериализации метаданных включают:

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

Вспомогательные технологии

необходимые

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

По желанию

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

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

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

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

TFX предназначен для портативных в различные среды и рамки оркестровки, включая Apache Airflow , Apache Beam и Kubeflow . Кроме того , портативный различные вычислительные платформы, в том числе на предпосылке, и облачные платформы , такие как Google Cloud Platform (GCP) . В частности, TFX Взаимодействует с Serveral управляемых GCP услуг, таких как облако AI платформы для обучения и прогнозирования , а также Cloud DataFlow для распределенных обработки данных для нескольких других аспектов жизненного цикла ML.

Модель против SavedModel

Модель

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

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

SavedModel

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

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

Схема

Некоторые компоненты TFX использовать описание входных данных называется схемой. Схема является экземпляром schema.proto . Схемы представляют собой тип буфера протокола , как правило , более известный как «Protobuf». Схема может указывать типы данных для значений функций, необходимость присутствия функции во всех примерах, допустимые диапазоны значений и другие свойства. Одним из преимуществ использования 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 Data Validation генерирует схему, которая используется другими компонентами.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При работе с моделями на основе оценщика последний раздел кода моделирования должен сохранять вашу модель как 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)

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

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

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

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

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

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

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

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

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

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

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

Инфра Валидация

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

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

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

Компонент Flow

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

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

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

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

TensorFlow Lite представляет собой набор инструментов , который предназначен для разработчиков помогают использовать их обученное TensorFlow Модель в нативных мобильных и ИТНЫ приложениях. Он использует те же SavedModels, что и TensorFlow Serving, и применяет такие оптимизации, как квантование и сокращение, чтобы оптимизировать размер и производительность получаемых моделей для задач работы на мобильных устройствах и устройствах Интернета вещей. См. Документацию TensorFlow Lite для получения дополнительной информации об использовании TensorFlow Lite.

Вывод в JavaScript: TensorFlow JS

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

Создание конвейера TFX с воздушным потоком

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

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

Настраивать

Kubeflow требуется кластер Kubernetes для масштабирования конвейеров. См руководящего принципа РазВЕРТЫВаНИя Kubeflow , что руководство по опциям для развертывания кластера Kubeflow.

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

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

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

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