MLOps es la práctica de aplicar prácticas de DevOps para ayudar a automatizar, administrar y auditar flujos de trabajo de aprendizaje automático (ML). Los flujos de trabajo de ML incluyen pasos para:
- Preparar, analizar y transformar datos.
- Entrenar y evaluar un modelo.
- Implemente modelos entrenados en producción.
- Realice un seguimiento de los artefactos de ML y comprenda sus dependencias.
Administrar estos pasos de manera ad hoc puede ser difícil y llevar mucho tiempo.
TFX facilita la implementación de MLOps al proporcionar un conjunto de herramientas que lo ayuda a orquestar su proceso de ML en varios orquestadores, como: Apache Airflow, Apache Beam y Kubeflow Pipelines. Al implementar su flujo de trabajo como una canalización TFX, puede:
- Automatice su proceso de ML, lo que le permite volver a entrenar, evaluar e implementar su modelo con regularidad.
- Utilice recursos informáticos distribuidos para procesar grandes conjuntos de datos y cargas de trabajo.
- Aumente la velocidad de la experimentación ejecutando una canalización con diferentes conjuntos de hiperparámetros.
Esta guía describe los conceptos básicos necesarios para comprender las canalizaciones de TFX.
Artefacto
Las salidas de los pasos en una canalización TFX se denominan artefactos . Los pasos subsiguientes en su flujo de trabajo pueden usar estos artefactos como entradas. De esta forma, TFX le permite transferir datos entre pasos de flujo de trabajo.
Por ejemplo, el componente estándar ExampleGen
emite ejemplos serializados, que componentes como el componente estándar StatisticsGen
utilizan como entradas.
Los artefactos deben estar fuertemente tipados con un tipo de artefacto registrado en el almacén de metadatos de ML . Obtenga más información sobre los conceptos utilizados en los metadatos de ML .
Los tipos de artefactos tienen un nombre y definen un esquema de sus propiedades. Los nombres de tipos de artefactos deben ser únicos en su almacén de metadatos de ML. TFX proporciona varios tipos de artefactos estándar que describen tipos de datos y tipos de valores complejos, como: cadena, entero y flotante. Puede reutilizar estos tipos de artefactos o definir tipos de artefactos personalizados que se derivan de Artifact
.
Parámetro
Los parámetros son entradas a las canalizaciones que se conocen antes de que se ejecute su canalización. Los parámetros le permiten cambiar el comportamiento de una canalización, o una parte de una canalización, a través de la configuración en lugar del código.
Por ejemplo, puede usar parámetros para ejecutar una canalización con diferentes conjuntos de hiperparámetros sin cambiar el código de la canalización.
El uso de parámetros le permite aumentar la velocidad de la experimentación al facilitar la ejecución de su canalización con diferentes conjuntos de parámetros.
Obtenga más información sobre la clase RuntimeParameter .
Componente
Un componente es una implementación de una tarea de ML que puede usar como un paso en su canalización de TFX. Los componentes están compuestos por:
- Una especificación de componente, que define los artefactos de entrada y salida del componente y los parámetros necesarios del componente.
- Un ejecutor, que implementa el código para realizar un paso en su flujo de trabajo de ML, como ingerir y transformar datos o entrenar y evaluar un modelo.
- Una interfaz de componente, que empaqueta la especificación y el ejecutor del componente para su uso en una canalización.
TFX proporciona varios componentes estándar que puede usar en sus canalizaciones. Si estos componentes no satisfacen sus necesidades, puede crear componentes personalizados. Obtenga más información sobre los componentes personalizados .
Tubería
Una canalización TFX es una implementación portátil de un flujo de trabajo de ML que se puede ejecutar en varios orquestadores, como: Apache Airflow, Apache Beam y Kubeflow Pipelines. Una canalización se compone de instancias de componentes y parámetros de entrada.
Las instancias de componentes producen artefactos como salidas y normalmente dependen de artefactos producidos por instancias de componentes aguas arriba como entradas. La secuencia de ejecución de las instancias de los componentes se determina mediante la creación de un gráfico acíclico dirigido de las dependencias de los artefactos.
Por ejemplo, considere una canalización que hace lo siguiente:
- Ingiere datos directamente desde un sistema propietario utilizando un componente personalizado.
- Calcula estadísticas para los datos de entrenamiento utilizando el componente estándar StatisticsGen.
- Crea un esquema de datos utilizando el componente estándar SchemaGen.
- Comprueba los datos de entrenamiento en busca de anomalías mediante el componente estándar ExampleValidator.
- Realiza la ingeniería de características en el conjunto de datos mediante el componente estándar Transform.
- Entrena un modelo utilizando el componente estándar Entrenador.
- Evalúa el modelo entrenado mediante el componente Evaluator.
- Si el modelo pasa su evaluación, la canalización pone en cola el modelo entrenado en un sistema de implementación patentado mediante un componente personalizado.
Para determinar la secuencia de ejecución de las instancias de los componentes, TFX analiza las dependencias de los artefactos.
- El componente de ingesta de datos no tiene dependencias de artefactos, por lo que puede ser el primer nodo del gráfico.
- StatisticsGen depende de los ejemplos producidos por la ingesta de datos, por lo que debe ejecutarse después de la ingesta de datos.
- SchemaGen depende de las estadísticas creadas por StatisticsGen, por lo que debe ejecutarse después de StatisticsGen.
- ExampleValidator depende de las estadísticas creadas por StatisticsGen y el esquema creado por SchemaGen, por lo que debe ejecutarse después de StatisticsGen y SchemaGen.
- Transform depende de los ejemplos producidos por la ingesta de datos y el esquema creado por SchemaGen, por lo que debe ejecutarse después de la ingesta de datos y SchemaGen.
- Trainer depende de los ejemplos producidos por la ingestión de datos, el esquema creado por SchemaGen y el modelo guardado producido por Transform. Trainer solo se puede ejecutar después de la ingestión de datos, SchemaGen y Transform.
- Evaluator depende de los ejemplos producidos por la ingesta de datos y el modelo guardado producido por Trainer, por lo que debe ejecutarse después de la ingesta de datos y Trainer.
- El implementador personalizado depende del modelo guardado producido por el Entrenador y los resultados del análisis creados por el Evaluador, por lo que el implementador debe ejecutarse después del Entrenador y el Evaluador.
Según este análisis, un orquestador ejecuta:
- Las instancias de los componentes de ingesta de datos, StatisticsGen y SchemaGen de forma secuencial.
- Los componentes ExampleValidator y Transform pueden ejecutarse en paralelo ya que comparten dependencias de artefactos de entrada y no dependen de la salida de cada uno.
- Una vez que se completa el componente Transformar, las instancias del componente Entrenador, Evaluador y Implementador personalizado se ejecutan secuencialmente.
Obtenga más información sobre cómo crear una canalización de TFX .
Plantilla de canalización TFX
Las plantillas de canalización de TFX facilitan el inicio del desarrollo de canalización al proporcionar una canalización preconstruida que puede personalizar para su caso de uso.
Obtenga más información sobre cómo personalizar una plantilla de canalización TFX .
Ejecución de canalización
Una ejecución es una sola ejecución de una canalización.
orquestador
Un orquestador es un sistema en el que puede ejecutar ejecuciones de canalización. TFX admite orquestadores como: Apache Airflow , Apache Beam y Kubeflow Pipelines . TFX también usa el término DagRunner para referirse a una implementación que admite un orquestador.