Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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

Введение

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

Монтаж

Python PyPI

pip install tfx

О TFX

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 ищет аномалии и отсутствующие значения в наборе данных.

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

  • Тренер обучает модель.

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

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

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

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

  • 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 Model Analysis (TFMA) - это библиотека для оценки моделей TensorFlow. Он используется вместе с TensorFlow для создания модели EvalSavedModel, которая становится основой для ее анализа. Это позволяет пользователям оценивать свои модели на больших объемах данных распределенным образом, используя те же метрики, которые определены в их обучающем модуле. Эти метрики могут быть вычислены для разных фрагментов данных и визуализированы в записных книжках Jupyter.

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

    • Схема, описывающая табличные данные (например, tf.Examples).
    • Сбор сводной статистики по таким наборам данных.
  • Метаданные машинного обучения (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 включают размещенное хранилище метаданных, механизм оркестрации на основе контейнеров, сервер записной книжки и пользовательский интерфейс, чтобы помочь пользователям разрабатывать, запускать и управлять сложными конвейерами машинного обучения в любом масштабе. Пакет SDK Kubeflow Pipelines позволяет программно создавать и совместно использовать компоненты и состав конвейеров.

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

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

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

Модель

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

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

SavedModel

  • Что такое 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 Data Validation генерирует схему, которая используется другими компонентами.

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

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

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

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

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

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

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

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

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

Сначала вы запросите метаданные машинного обучения (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, вы можете использовать данные обучения и оценки и обучить свою модель.

В последнем разделе кода моделирования вы должны сохранить свою модель как SavedModel, так и EvalSavedModel. Сохранение как 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 Model Analysis (TFMA) , которая предоставляет мощный набор инструментов для этого этапа разработки. Компонент Evaluator использует EvalSavedModel, который вы экспортировали выше, и позволяет вам указать список SliceSpecs который вы можете использовать при визуализации и анализе производительности вашей модели. Каждый SliceSpec определяет фрагмент ваших обучающих данных, который вы хотите исследовать, например, определенные категории для категориальных функций или определенные диапазоны для числовых функций.

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

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

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

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

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

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

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

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

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

Компонент Flow

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

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

В типичном конвейере SavedModel, который был обучен в компоненте Trainer , сначала должен пройти инфра-валидацию в компоненте InfraValidator . InfraValidator запускает сервер модели Canary 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 с помощью воздушного потока

Подробности см. В мастерской по обслуживанию воздушных потоков.

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

Настроить

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

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

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

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

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