Guía del usuario de TFX

Introducción

TFX es una plataforma de aprendizaje automático a escala de producción de Google basada en TensorFlow. Proporciona un marco de trabajo de configuración y bibliotecas compartidas para integrar componentes comunes que se necesitan para definir, lanzar y supervisar un sistema de aprendizaje automático.

Instalación

Python PyPI

pip install tensorflow
pip install tfx

Conceptos básicos

Canalizaciones de TFX

Una canalización de TFX define un flujo de datos a través de varios componentes, con el objetivo de implementar una tarea de AA particular (p. ej., compilar e implementar un modelo de regresión para datos específicos). Los componentes de la canalización se crean a partir de las bibliotecas de TFX. El resultado de una canalización es un destino o servicio de implementación de TFX de una solicitud de inferencia.

Artefactos

En una canalización, un artefacto es una unidad de datos que se transfiere entre componentes. En general, los componentes tienen al menos un artefacto de entrada y uno de salida. Todos los artefactos deben tener metadatos asociados, que definen el tipo y las propiedades del artefacto. Los artefactos deben estar fuertemente tipificados con un tipo de artefacto registrado en la colección de metadatos de AA. Los conceptos de artefacto y tipo de artefacto se originan a partir del modelo de datos que los metadatos de AA definen, como se describe en este documento. TFX define e implementa su propia ontología de tipo de artefacto para obtener su funcionalidad de nivel superior. A partir de TFX 0.15, se definen y usan 11 tipos de artefactos conocidos en todo el sistema de TFX.

Un tipo de artefacto tiene un nombre único y un esquema de propiedades de sus instancias. TFX utiliza el tipo de artefacto según la forma en que los componentes de la canalización lo usan, pero no necesariamente para determinar cuál es el contenido físico del artefacto en un sistema de archivos.

Por ejemplo, el tipo de artefacto Example puede representar ejemplos materializados de búfer de protocolo, CSV, JSON o cualquier otro formato físico del tensorflow::Example de TFRecord. Independientemente de esto, la forma en que se usan los ejemplos en una canalización es exactamente la misma: se analizan para generar estadísticas, se validan en comparación con el esquema previsto, se procesan con anticipación al entrenamiento y se proporcionan a un entrenador para entrenar modelos, etc. Del mismo modo, el tipo de artefacto Model puede representar objetos de modelos entrenados y exportados en varios formatos físicos, como un modelo guardado de TensorFlow, ONNX, PMML o PKL (de entre varios tipos de objetos de modelos en Python). En cualquier caso, los modelos siempre se deben evaluar, analizar e implementar para la deriva en canalizaciones.

NOTA: A partir de TFX 0.15, las implementaciones de componentes de TFX presuponen que el artefacto Examples es un búfer de protocolo tensorflow::Example en formato TFRecord comprimido en gzip. Del mismo modo, se asume que el artefacto Model es un modelo guardado de TensorFlow. Es posible que las versiones futuras de TFX amplíen estos tipos de artefactos para que sean compatibles con más variantes.

Para diferenciar las posibles variantes de un mismo tipo de artefacto, los metadatos de AA definen un conjunto de propiedades del artefacto. Por ejemplo, una de las propiedades de artefacto para un artefacto de Examples podría ser formato, con valores como TFRecord, JSON, CSV, etc. Los artefactos del tipo Examples siempre se pueden pasar a un componente que esté diseñado para tomar ejemplos como artefacto de entrada (por ejemplo, un entrenador). Sin embargo, la implementación real del componente consumidor podría ajustar su comportamiento en respuesta a un valor particular de la propiedad formato o simplemente generar un error del entorno de ejecución si no tiene implementación para procesar el formato particular de los ejemplos.

En resumen, los tipos de artefacto definen la ontología de los artefactos en todo el sistema de canalización de TFX, mientras que las propiedades del artefacto definen la ontología específica de un tipo de artefacto. Los usuarios del sistema de canalización pueden optar por ampliar dicha ontología de manera local en sus aplicaciones de canalización definiendo y propagando nuevas propiedades personalizadas. Los usuarios también pueden optar por extender la ontología a nivel global para todo el sistema mediante la incorporación de nuevos tipos de artefactos o la modificación de propiedades de tipos predefinidas, en cuyo caso la extensión se devolvería al repositorio principal del sistema de canalización (el repositorio de TFX).

Componentes de canalización de TFX

Una canalización de TFX es una secuencia de componentes que implementa una canalización de AA, la cual está diseñada específicamente para tareas de aprendizaje automático escalables y de alto rendimiento. Esto incluye la creación de modelos, el entrenamiento, la inferencia y la administración de implementaciones para destinos en línea, nativos para dispositivos móviles y de JavaScript.

Por lo general, una canalización de TFX incluye los siguientes componentes:

  • ExampleGen es el componente de entrada inicial de una canalización que transfiere y, de forma opcional, divide el conjunto de datos de entrada.

  • StatisticsGen calcula las estadísticas del conjunto de datos.

  • SchemaGen analiza las estadísticas y crea un esquema de datos.

  • ExampleValidator busca anomalías y valores faltantes en el conjunto de datos.

  • Transform realiza la ingeniería de atributos en el conjunto de datos.

  • Trainer entrena el modelo.

  • Evaluator realiza un análisis profundo de los resultados del entrenamiento y te ayuda a validar los modelos exportados, lo que garantiza la calidad para que se envíen a la producción.

  • Pusher implementa el modelo en una infraestructura de deriva.

El diagrama que sigue ilustra el flujo de datos entre estos componentes:

Flujo de componentes

Anatomía de un componente

Los componentes de TFX constan de tres elementos principales:

  • Controlador
  • Ejecutor
  • Publicador

Anatomía de los componentes

Controlador y publicador

El controlador proporciona metadatos al ejecutor mediante una consulta en la colección de metadatos, mientras que el publicador acepta los resultados del ejecutor y los almacena en metadatos. Como desarrollador, por lo general, no tendrás que interactuar con el controlador y el publicador, pero los mensajes que registren pueden serte útiles durante la depuración. Consulta la sección de solución de problemas.

Ejecutor

El ejecutor es el elemento en el cual un componente realiza el procesamiento. Como desarrollador, escribes código que se ejecuta en el ejecutor, según los requisitos de las clases que implementan el tipo de componente con el que estás trabajando. Por ejemplo, cuando trabajes con un componente Transform, deberás desarrollar un preprocessing_fn.

Bibliotecas de TFX

TFX incluye bibliotecas y componentes de canalización. El diagrama que sigue ilustra las relaciones entre las bibliotecas de TFX y los componentes de canalización:

Bibliotecas y componentes

TFX proporciona varios paquetes de Python que son las bibliotecas empleadas para crear componentes de canalización. Utilizarás estas bibliotecas para crear los componentes de las canalizaciones de modo que el código pueda enfocarse en los aspectos específicos de la canalización.

Las bibliotecas de TFX incluyen lo siguiente:

  • TensorFlow Data Validation (TFDV) es una biblioteca para analizar y validar datos de aprendizaje automático. Se diseñó para ser altamente escalable y funcionar correctamente con TensorFlow y TFX. TFDV incluye lo siguiente:

    • Cálculo escalable de estadísticas resumidas de los datos de entrenamiento y prueba
    • Integración con un visor de estadísticas y distribuciones de datos, además de una comparación por facetas de pares de conjuntos de datos (Facets)

    • Generación automática de esquemas de datos para describir las expectativas sobre datos como valores, rangos y vocabularios requeridos

    • Visor de esquemas para inspeccionar el esquema en cuestión

    • Detección de anomalías, como atributos faltantes, valores fuera de rango o tipos de atributos incorrectos, entre otros

    • Visor de anomalías para conocer qué atributos tienen anomalías y obtener más información que permita corregirlas

  • TensorFlow Transform (TFT) es una biblioteca para procesamiento previo de datos con TensorFlow. TensorFlow Transform es útil para datos que requieren un pase completo, como los siguientes:

    • Normalizar un valor de entrada mediante desviación promedio y estándar
    • Convertir strings en números enteros mediante la generación de un vocabulario sobre todos los valores de entrada
    • Convertir números de punto flotante en números enteros mediante su asignación a depósitos según la distribución de datos observada
  • TensorFlow se usa para entrenar modelos con TFX. Transfiere datos de entrenamiento y código de modelado, y crea un resultado de modelo guardado. También integra una canalización de ingeniería de atributos que crea TensorFlow Transform para el procesamiento previo de datos de entrada.

  • TensorFlow Model Analysis (TFMA) es una biblioteca diseñada para evaluar modelos de TensorFlow. Se usa junto con TensorFlow para crear un EvalSavedModel, que se convierte en la base del análisis. Permite a los usuarios evaluar sus modelos con grandes cantidades de datos de manera distribuida, empleando las mismas métricas definidas en su entrenador. Estas métricas pueden calcularse para diferentes porciones de datos y visualizarse en los notebooks de Jupyter.

  • TensorFlow Metadata (TFMD) proporciona representaciones estándar para los metadatos, que son útiles cuando se entrenan modelos de aprendizaje automático con TensorFlow. Los metadatos pueden generarse de forma manual o automática durante el análisis de datos de entrada y consumirse para la validación, la exploración y la transformación de los datos. Los formatos de serialización de metadatos incluyen los siguientes:

    • Esquema que describe datos tabulares (p. ej., tf.Examples)
    • Colección de estadísticas resumidas sobre esos conjuntos de datos
  • ML Metadata (MLMD) es una biblioteca para registrar y recuperar metadatos asociados con flujos de trabajo de desarrolladores de AA y científicos de datos. En la mayoría de los casos, los metadatos usan representaciones de TFMD. La biblioteca MLMD gestiona la persistencia mediante SQL-Lite, MySQL y otros almacenes de datos similares.

Tecnologías de apoyo

Obligatorio

  • Apache Beam es un modelo unificado de código abierto que se usa para definir canalizaciones de procesamiento paralelo de lotes y de datos de transmisiones. TFX usa Apache Beam para implementar canalizaciones de datos paralelos. Luego, la canalización se ejecuta en uno de los backends de procesamiento distribuido compatibles de Beam, entre los que se incluyen Apache Flink, Apache Spark, Google Cloud Dataflow y otros.

Opcional

Los organizadores, como Apache Airflow y Kubeflow, facilitan la configuración, la operación, la supervisión y el mantenimiento de las canalizaciones de AA.

  • Apache Airflow es una plataforma para crear, programar y supervisar flujos de trabajo de manera programática. TFX usa Airflow para crear flujos de trabajo como grafos acíclicos dirigidos (DAG) de tareas. El programador de Airflow ejecuta sus tareas en un arreglo de trabajadores mientras sigue las dependencias especificadas. Las utilidades de líneas de comandos enriquecidas hacen que realizar modificaciones complejas en DAG sea muy fácil. La interfaz de usuario enriquecida facilita la visualización de canalizaciones que se estén ejecutando en producción, la supervisión del progreso y la solución de problemas cuando sea necesario. Cuando los flujos de trabajo se definen como código, se torna más fácil mantenerlos, controlar las versiones y verificarlos, y son más colaborativos.

  • Kubeflow se dedica a hacer que las implementaciones de flujos de trabajo de aprendizaje automático (AA) en Kubernetes sean simples, portables y escalables. El objetivo de Kubeflow no es recrear otros servicios, sino proporcionar una forma directa de implementar sistemas de código abierto de primer nivel para el AA en diferentes infraestructuras. Las canalizaciones de Kubeflow permiten la composición y la ejecución de flujos de trabajo reproducibles en Kubeflow, integrados con la experimentación y las experiencias con notebooks. Los servicios de canalizaciones de Kubeflow en Kubernetes incluyen el almacenamiento de metadatos alojado, el motor de organización de contenedores, el servidor de notebooks y la IU para ayudar a los usuarios a desarrollar, ejecutar y administrar canalizaciones de AA complejas a gran escala. El SDK de canalizaciones de Kubeflow permite la creación y el uso compartido de componentes, y la composición de canalizaciones de manera programática.

Portabilidad e interoperabilidad

TFX se diseñó para que pueda adaptarse a varios entornos y marcos de trabajo de organización, incluidos Apache Airflow, Apache Beam y Kubeflow. También puede portarse a diferentes plataformas de procesamiento, tanto locales como en la nube, por ejemplo, Google Cloud Platform (GCP). En particular, TFX interopera con varios servicios administrados de GCP, como Cloud AI Platform para el entrenamiento y la predicción y Cloud Dataflow para el procesamiento de datos distribuidos asociado a otros aspectos del ciclo de vida del AA.

Comparación entre "modelo" y "modelo guardado"

Modelo

Un modelo es el resultado del proceso de entrenamiento. Es el registro serializado de los pesos que se aprendieron durante el proceso de entrenamiento. Estos pesos se pueden usar luego para calcular predicciones para nuevos ejemplos de entrada. Para TFX y TensorFlow, el término "modelo" hace referencia a los puntos de control que contienen los pesos aprendidos hasta ese momento.

Ten en cuenta que "modelo" también puede referirse a la definición del grafo de cálculo de TensorFlow (es decir, un archivo de Python) que expresa cómo se procesará una predicción. Los dos significados se pueden usar indistintamente según el contexto.

Modelo guardado

  • Un modelo guardado es una serialización universal neutral con respecto al lenguaje, hermética y recuperable de un modelo de TensorFlow.
  • ¿Por qué es importante? Porque permite que los sistemas de nivel superior generen, transformen y consuman modelos de TensorFlow usando una sola abstracción.

El modelo guardado es el formato de serialización recomendado para derivar un modelo de TensorFlow en producción o exportar un modelo entrenado a una aplicación nativa para dispositivos móviles o de JavaScript. Por ejemplo, para convertir un modelo en un servicio de REST y hacer predicciones, puedes serializar el modelo como un modelo guardado y derivarlo con TensorFlow Serving. Para obtener más información, consulta cómo derivar un modelo de TensorFlow.

Esquema

Algunos componentes de TFX usan una descripción de tus datos de entrada llamada esquema. El esquema es una instancia de schema.proto. Los esquemas son un tipo de búfer de protocolo, más conocido como "protobuf". Un esquema puede especificar tipos de datos para valores de atributos, por ejemplo, si un atributo debe estar presente en todos los ejemplos, qué rangos de valores se permiten y otras propiedades. Uno de los beneficios de usar TensorFlow Data Validation (TFDV) es que este genera automáticamente un esquema mediante la inferencia de tipos, categorías y rangos a partir de los datos de entrenamiento.

A continuación se muestra un extracto de un protobuf de esquema:

...
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
  }
}
...

Los siguientes componentes usan el esquema:

  • TensorFlow Data Validation
  • TensorFlow Transform

En una canalización de TFX típica, TensorFlow Data Validation genera un esquema que los otros componentes consumen.

Desarrollo con TFX

TFX proporciona una plataforma potente para cada fase de un proyecto de aprendizaje automático, desde la investigación, la experimentación y el desarrollo en tu máquina local hasta la implementación. Para evitar la duplicación de código y eliminar la posibilidad de desviación entre el entrenamiento y la deriva, es recomendable que implementes tu canalización de TFX tanto para el entrenamiento como para la implementación de modelos entrenados, y que uses componentes Transform para el entrenamiento y la inferencia, ya que aprovechan la biblioteca de TensorFlow Transform. De esta forma, usarás el mismo código de procesamiento previo y análisis de forma coherente, y evitarás diferencias entre los datos utilizados para el entrenamiento y los datos enviados a tus modelos entrenados durante la producción; como ventaja adicional, solo tendrás que escribir el código una vez.

Exploración, visualización y limpieza de datos

Exploración, visualización y limpieza de datos

Las canalizaciones de TFX suelen comenzar con un componente ExampleGen, que acepta datos de entrada y los formatea como tf.Examples. A menudo esto se hace después de dividir los datos en conjuntos de datos de entrenamiento y evaluación, de modo que realmente haya dos copias de los componentes ExampleGen, una para entrenamiento y otra para evaluación. Por lo general, sigue un componente de StatisticsGen y uno de SchemaGen, que examinarán tus datos e inferirán un esquema de datos y estadísticas. Un componente ExampleValidator consumirá el esquema y las estadísticas, y buscará anomalías, valores faltantes y tipos de datos incorrectos. Todos estos componentes aprovechan las capacidades de la biblioteca de TensorFlow Data Validation.

TensorFlow Data Validation (TFDV) es una herramienta valiosa para la exploración, visualización y limpieza iniciales de tu conjunto de datos. TFDV examina los datos e infiere los tipos de datos, las categorías y los rangos y, luego, ayuda a identificar las anomalías y los valores faltantes automáticamente. También proporciona herramientas de visualización que pueden ayudarte a examinar y comprender tu conjunto de datos. Una vez que se complete la canalización, podrás leer los metadatos de MLMD y usar las herramientas de visualización de TFDV en un notebook de Jupyter para analizar tus datos.

Después del entrenamiento y la implementación del modelo inicial, TFDV se puede usar para supervisar datos nuevos de solicitudes de inferencia enviadas a los modelos implementados y detectar anomalías o desviaciones. Esto es especialmente útil para los datos de series temporales que cambian con el tiempo como resultado de tendencias o temporadas, y puede ayudar a informar si hay problemas con los datos o cuándo es necesario volver a entrenar modelos con datos nuevos.

Visualización de datos

Después de completar la primera ejecución de datos mediante la sección de la canalización que usa TFDV (por lo general, StatisticsGen, SchemaGen y ExampleValidator), puedes visualizar los resultados en un notebook de Jupyter. Para ejecuciones adicionales, puedes comparar estos resultados a medida que realizas ajustes, hasta que los datos sean óptimos para tu modelo y aplicación.

Primero, consulta los ML Metadata (MLMD) para ubicar los resultados de las ejecuciones de estos componentes y, luego, usa la API de visualización en TFDV para crear las visualizaciones en tu notebook. Esto incluye tfdv.load_statistics() y tfdv.visualize_statistics(). Con esta visualización, podrás comprender mejor las características del conjunto de datos y, si es necesario, modificarlo.

Desarrollo y entrenamiento de modelos

Ingeniería de atributos

Una canalización típica de TFX incluye un componente Transform, que se encarga de la ingeniería de atributos aprovechando las capacidades de la biblioteca TensorFlow Transform (TFT). Un componente Transform consume el esquema que crea un componente SchemaGen y aplica transformaciones de datos para crear, combinar y transformar las funciones que se usarán para entrenar el modelo. La limpieza de valores faltantes y la conversión de tipos se deben realizar además en el componente Transform si existe alguna posibilidad de que estos valores también estén presentes en los datos enviados para solicitudes de inferencia. Cuando se diseña el código de TensorFlow para el entrenamiento en TFX, deben tenerse en cuenta algunas consideraciones importantes.

Modelado y entrenamiento

El resultado de un componente Transform es un modelo guardado que se importará y usará en tu código de modelado en TensorFlow, durante un componente Trainer. Este modelo guardado incluye todas las transformaciones de ingeniería de datos que se crearon en el componente Transform; de esta forma, las transformaciones idénticas se realizan con el mismo código durante el entrenamiento y la inferencia. Con el código de modelado, incluido el modelo guardado del componente Transform, puedes consumir los datos de entrenamiento y evaluación, y entrenar tu modelo.

Durante la última sección del código de modelado, debes guardar el modelo como modelo guardado y como EvalSavedModel. Para guardarlo como EvalSavedModel, deberás importar y aplicar la biblioteca de TensorFlow Model Analysis (TFMA) en el componente 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)

Análisis y comprensión del rendimiento de modelos

Análisis de modelos

Después del desarrollo y entrenamiento inicial del modelo, es importante analizar y comprender cabalmente su rendimiento. Una canalización de TFX típica incluirá un componente Evaluator, que aprovecha las capacidades de la biblioteca de TensorFlow Model Analysis (TFMA). Esta biblioteca proporciona un gran conjunto de herramientas para esta fase de desarrollo. Un componente Evaluator consume el componente EvalSavedModel que exportaste antes y te permite especificar una lista de SliceSpecs que puedes usar cuando visualizas y analizas el rendimiento de tu modelo. Cada SliceSpec define una porción de los datos de entrenamiento que deseas examinar, como categorías específicas para atributos categóricos o rangos específicos para atributos numéricos.

Por ejemplo, esto puede ser importante para comprender el rendimiento de tu modelo según diferentes segmentos de clientes, que se podrían segmentar por compras anuales, datos geográficos, edad o género. También puede ser de gran ayuda para los conjuntos de datos con colas largas, donde el rendimiento de un grupo dominante puede enmascarar el rendimiento inaceptable de grupos importantes pero más pequeños. Por ejemplo, es posible que tu modelo tenga un buen rendimiento para los empleados promedio, pero no para el personal ejecutivo, y puede que esta información sea importante para ti.

Análisis y visualización de modelos

Después de completar la primera ejecución de datos mediante el entrenamiento del modelo y la ejecución del componente Evaluator (que aprovecha TFMA) en los resultados del entrenamiento, puedes visualizar los resultados en un notebook de Jupyter. En las ejecuciones adicionales, puedes comparar los resultados a medida que realizas ajustes, hasta que sean óptimos para tu modelo y aplicación.

Primero, consulta ML Metadata (MLMD) para ubicar los resultados de las ejecuciones de estos componentes y, luego, usa la API de visualización en TFMA para crear las visualizaciones en el notebook. Esto incluye tfma.load_eval_results() y tfma.view.render_slicing_metrics(). Con esta visualización, podrás comprender mejor las características del conjunto de datos y, si es necesario, modificarlo.

Destinos de implementación

Una vez que hayas desarrollado y entrenado un modelo que te satisfaga, es momento de implementarlo en uno o más destinos de implementación, en los que recibirá solicitudes de inferencia. TFX es compatible con la implementación en tres clases de destinos. Los modelos entrenados que se exportaron como modelos guardados se pueden implementar en cualquiera de estos destinos de implementación o en todos ellos.

Flujo de componentes

Inferencia: TensorFlow Serving

TensorFlow Serving (TFS) es un sistema de deriva flexible y de alto rendimiento para modelos de aprendizaje automático, diseñado para entornos de producción. Consume un modelo guardado y acepta solicitudes de inferencia a través de interfaces REST o gRPC. Se ejecuta como un conjunto de procesos en uno o más servidores de red, mediante una de varias arquitecturas avanzadas para controlar la sincronización y el procesamiento distribuido. Para obtener más información sobre el desarrollo y la implementación de soluciones de TFS, consulta la documentación de TFS.

En una canalización típica, un componente Pusher consumirá los modelos guardados que se hayan entrenado en un componente Trainer y los implementará en tu infraestructura de TFS. Esto incluye el manejo de varias versiones y actualizaciones de modelos.

Inferencia en aplicaciones nativas para dispositivos móviles y de IoT: TensorFlow Lite

TensorFlow Lite es un conjunto de herramientas específicas para ayudar a los desarrolladores a usar sus modelos entrenados de TensorFlow en aplicaciones nativas para dispositivos móviles y de IoT. Consume los mismos modelos guardados que TensorFlow Serving y aplica optimizaciones como la cuantización y la reducción a fin de optimizar el tamaño y el rendimiento de los modelos resultantes para las condiciones particulares de la ejecución en dispositivos móviles y de IoT. Para obtener más información sobre el uso de TensorFlow Lite, consulta la documentación de TensorFlow Lite.

Inferencia en JavaScript: TensorFlow JS

TensorFlow JS es una biblioteca de JavaScript para entrenar e implementar modelos de AA en navegadores y en Node.js. Consume los mismos modelos guardados que TensorFlow Serving y TensorFlow Lite, y los convierte al formato de TensorFlow.js para la Web. Para obtener más información sobre cómo usar TensorFlow JS, consulta la documentación correspondiente.

Cea una canalización de TFX con Airflow

Para obtener más información, consulta el taller de Airflow.

Crea una canalización de TFX con Kubeflow

Configuración

Kubeflow requiere un clúster de Kubernetes para ejecutar las canalizaciones a gran escala. Consulta la guía de implementación de Kubeflow, que brinda orientación sobre las opciones para implementar el clúster de Kubeflow.

Configura y ejecuta la canalización de TFX

Sigue el instructivo de TFX sobre canalizaciones de Cloud AI Platform para ejecutar la canalización de ejemplo de TFX en Kubeflow. Los componentes de TFX se ejecutaron en contenedores para crear la canalización de Kubeflow. El ejemplo muestra la capacidad de configurar la canalización para que esta lea un conjunto de datos público extenso y ejecute pasos de entrenamiento y procesamiento de datos a gran escala en la nube.

Interfaz de línea de comandos para acciones de canalización

TFX proporciona una CLI (interfaz de línea de comandos) unificada que permite realizar una amplia gama de acciones de canalización, como crear, actualizar, ejecutar, listar y borrar canalizaciones en varios organizadores, incluidos Apache Airflow, Apache Beam y Kubeflow. Para obtener más información, consulta estas instrucciones.