Понимание конвейеров TFX

MLOps — это практика применения методов DevOps для автоматизации, управления и аудита рабочих процессов машинного обучения (ML). Рабочие процессы машинного обучения включают в себя следующие шаги:

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

Управление этими шагами в режиме ad-hoc может быть трудным и трудоемким.

TFX упрощает реализацию MLOps, предоставляя набор инструментов, который помогает организовать процесс машинного обучения на различных оркестраторах, таких как Apache Airflow, Apache Beam и Kubeflow Pipelines. Реализуя свой рабочий процесс в виде конвейера TFX, вы можете:

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

В этом руководстве описываются основные понятия, необходимые для понимания конвейеров TFX.

Артефакт

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

Например, стандартный компонент ExampleGen сериализованные примеры, которые такие компоненты, как стандартный компонент StatisticsGen , используют в качестве входных данных.

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

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

Параметр

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

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

Использование параметров позволяет увеличить скорость экспериментирования, упрощая запуск конвейера с различными наборами параметров.

Узнайте больше о классе RuntimeParameter .

Составная часть

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

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

TFX предоставляет несколько стандартных компонентов , которые вы можете использовать в своих пайплайнах. Если эти компоненты не соответствуют вашим потребностям, вы можете создать собственные компоненты. Узнайте больше о пользовательских компонентах .

Трубопровод

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

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

Например, рассмотрим конвейер, который делает следующее:

  • Получает данные непосредственно из проприетарной системы с помощью пользовательского компонента.
  • Вычисляет статистику для обучающих данных с помощью стандартного компонента StatisticsGen.
  • Создает схему данных с помощью стандартного компонента SchemaGen.
  • Проверяет обучающие данные на наличие аномалий с помощью стандартного компонента ExampleValidator.
  • Выполняет проектирование признаков в наборе данных с помощью стандартного компонента Transform.
  • Обучает модель, используя стандартный компонент Trainer.
  • Оценивает обученную модель с помощью компонента Evaluator.
  • Если модель проходит оценку, конвейер ставит обученную модель в очередь на проприетарную систему развертывания с помощью пользовательского компонента.

Чтобы определить последовательность выполнения экземпляров компонентов, TFX анализирует зависимости артефактов.

  • Компонент приема данных не имеет зависимостей от артефактов, поэтому он может быть первым узлом в графе.
  • StatisticsGen зависит от примеров , созданных при приеме данных, поэтому он должен выполняться после приема данных.
  • SchemaGen зависит от статистики , созданной StatisticsGen, поэтому он должен выполняться после StatisticsGen.
  • ExampleValidator зависит от статистики , созданной StatisticsGen, и схемы , созданной SchemaGen, поэтому он должен выполняться после StatisticsGen и SchemaGen.
  • Преобразование зависит от примеров , созданных при приеме данных, и схемы , созданной SchemaGen, поэтому оно должно выполняться после приема данных и SchemaGen.
  • Trainer зависит от примеров , созданных при приеме данных, схемы , созданной SchemaGen, и сохраненной модели , созданной Transform. Trainer может быть запущен только после приема данных, SchemaGen и Transform.
  • Оценщик зависит от примеров , созданных при приеме данных, и сохраненной модели , созданной инструктором, поэтому он должен выполняться после приема данных и инструктора.
  • Пользовательский деплойер зависит от сохраненной модели , созданной тренером, и результатов анализа , созданных оценщиком, поэтому деплойер должен выполняться после тренера и оценщика.

На основе этого анализа оркестратор запускает:

  • Прием данных, StatisticsGen, экземпляры компонентов SchemaGen последовательно.
  • Компоненты ExampleValidator и Transform могут работать параллельно, поскольку они совместно используют зависимости входных артефактов и не зависят от выходных данных друг друга.
  • После завершения компонента преобразования экземпляры компонента Trainer, Evaluator и пользовательского компонента развертывания запускаются последовательно.

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

Шаблон конвейера TFX

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

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

Конвейерный запуск

Запуск — это однократное выполнение конвейера.

Оркестратор

Orchestrator — это система, в которой вы можете запускать конвейеры. TFX поддерживает оркестраторы, такие как: Apache Airflow , Apache Beam и Kubeflow Pipelines . TFX также использует термин DagRunner для обозначения реализации, поддерживающей оркестратор.