¿Qué son las canalizaciones de Azure Machine Learning?
Una canalización de Azure Machine Learning es un flujo de trabajo ejecutable independiente de una tarea de aprendizaje automático completa. Una canalización de Azure Machine Learning le permite estandarizar los procedimientos recomendados de producción de un modelo de aprendizaje automático; igualmente, permite que el equipo se ejecute a escala y mejore la eficiencia de la creación del modelo.
¿Por qué son necesarias las canalizaciones de Azure Machine Learning?
El núcleo de una canalización de aprendizaje automático consiste en dividir una tarea de aprendizaje automático completa en un flujo de trabajo de varios pasos. Cada paso es un componente administrable que se puede desarrollar, optimizar, configurar y automatizar individualmente. Los pasos se conectan a través de interfaces bien definidas. El servicio de canalización de Azure Machine Learning organiza automáticamente todas las dependencias entre los pasos de la canalización. Este enfoque modular aporta dos ventajas clave:
- Estandarización de la práctica de operaciones de aprendizaje automático y admisión de una colaboración en equipo escalable
- Eficiencia del entrenamiento y reducción de costos
Estandarización de la práctica de MLOps y admisión de una colaboración en equipo escalable
La operación de aprendizaje automático (MLOP) automatiza el proceso de creación de los modelos de aprendizaje automático y el proceso para llevar el modelo a producción. Se trata de un proceso complejo. Normalmente requiere la colaboración de diferentes equipos con diferentes aptitudes. Una canalización de aprendizaje automático bien definida puede abstraer este proceso complejo en un flujo de trabajo de varios pasos, asignando cada paso a una tarea específica para que cada equipo pueda trabajar de forma independiente.
Por ejemplo, un proyecto de aprendizaje automático típico incluye los pasos de recopilación de datos, preparación de datos, entrenamiento de modelos, evaluación de modelos e implementación de modelos. Normalmente, los ingenieros de datos se centran en los pasos de datos, los científicos de datos dedican más tiempo a entrenar y evaluar modelos y los ingenieros de aprendizaje automático se centran en la implementación del modelo y la automatización de todo el flujo de trabajo. Al aprovechar la canalización de aprendizaje automático, cada equipo solo necesita trabajar en la creación de sus propios pasos. La mejor manera de crear pasos es usar el componente de Azure Machine Learning (v2), que es un fragmento de código independiente que realiza un paso en una canalización de aprendizaje automático. Todos estos pasos creados por distintos usuarios se integran finalmente en un flujo de trabajo a través de la definición de la canalización. La canalización es una herramienta de colaboración para todos los usuarios del proyecto. El proceso de definición de una canalización y todos sus pasos se puede estandarizar mediante la práctica DevOps preferida de cada empresa. La canalización puede tener versiones adicionales y automatizarse. Si los proyectos de ML se describen como una canalización, entonces es que ya se aplica el procedimiento recomendado de MLOps.
Eficiencia del entrenamiento y reducción de costos
Además de ser la herramienta para poner MLOps en práctica, la canalización de aprendizaje automático también mejora la eficiencia del entrenamiento de modelos de gran tamaño y reduce el costo. Tome como ejemplo el entrenamiento moderno del modelo de lenguaje natural. Requiere procesar de antemano grandes cantidades de datos y realizar un entrenamiento de modelos de transformadores intensivos de GPU. Se tarda horas o días en entrenar un modelo cada vez. Cuando se compila el modelo, el científico de datos quiere probar diferentes códigos de entrenamiento o hiperparámetros y ejecutar el entrenamiento muchas veces para obtener el mejor rendimiento del modelo. En la mayoría de estos entrenamientos, normalmente hay pequeños cambios de un entrenamiento a otro. Esto supone un desperdicio significativo si cada vez se lleva a cabo el entrenamiento completo del procesamiento de datos para el entrenamiento del modelo. Al usar la canalización de aprendizaje automático, puede calcular automáticamente qué resultado de los pasos no se ha modificado y reutilizar los resultados del entrenamiento anterior. Además, la canalización de aprendizaje automático admite la ejecución de cada paso en recursos de cálculo diferentes. De modo que, el procesamiento de datos con gran cantidad de memoria funciona y se ejecuta en máquinas CPU de memoria alta, y el entrenamiento intensivo de procesos puede ejecutarse en costosas máquinas GPU. Al elegir correctamente qué paso ejecutar en qué tipo de máquinas, el costo del entrenamiento se puede reducir significativamente.
Procedimientos recomendados de introducción
En función de los elementos que ya tenga un proyecto de aprendizaje automático, el punto de partida de la creación de una canalización de aprendizaje automático puede variar. Existen algunos enfoques típicos para crear una canalización.
El primer enfoque se aplica normalmente al equipo que no ha usado la canalización antes y quiere aprovechar algunas ventajas de esta, como MLOps. En esta situación, los científicos de datos suelen desarrollar algunos modelos de aprendizaje automático en su entorno local mediante sus herramientas favoritas. Los ingenieros de aprendizaje automático deben usar los resultados de los científicos de datos en producción. Este trabajo implica limpiar algún código innecesario del cuaderno original o del código de Python, cambiar la entrada de entrenamiento de datos locales a valores con parámetros, dividir el código de entrenamiento en varios pasos según sea necesario, realizar pruebas unitarias de cada paso y, por último, encapsular todos los pasos en una canalización.
Una vez que los equipos estén familiarizados con las canalizaciones y quieran realizar más proyectos de aprendizaje automático mediante estas, encontrarán que el primer enfoque es difícil de escalar. El segundo enfoque consiste en configurar algunas plantillas de canalización, y cada equipo intenta resolver un problema de aprendizaje automático específico. La plantilla predefine la estructura de la canalización, incluidos cuántos pasos, las entradas y salidas de cada paso y su conectividad. Para iniciar un nuevo proyecto de aprendizaje automático, el equipo bifurca primero un repositorio de plantillas. A continuación, el líder del equipo asigna a los miembros el paso en el que necesitan trabajar. Los científicos de datos y los ingenieros de datos realizan su trabajo normal. Cuando estén satisfechos con su resultado, estructuran su código para ajustarse a los pasos predefinidos. Una vez protegidos los códigos estructurados, la canalización se puede ejecutar o automatizar. Si hay algún cambio, cada miembro solo necesita trabajar en su fragmento de código sin tocar el resto del código de canalización.
Una vez que un equipo ha creado una colección de canalizaciones de aprendizaje automático y componentes reutilizables, puede empezar a compilar la canalización de aprendizaje automático a partir de la clonación de una canalización anterior o vincular un componente reutilizable existente. En esta fase, la productividad general del equipo mejorará significativamente.
Azure Machine Learning ofrece diferentes métodos para compilar una canalización. Para los usuarios que están familiarizados con las prácticas de DevOps, se recomienda usar la CLI. Para los científicos de datos que están familiarizados con Python, se recomienda escribir una canalización mediante el SDK de Azure Machine Learning v2. Para los usuarios que prefieren usar la interfaz de usuario, pueden usar el diseñador para compilar las canalizaciones mediante componentes registrados.
¿Qué tecnología de canalización de Azure se debe usar?
La nube de Azure proporciona varios tipos de canalizaciones, cada una con una finalidad diferente. En la tabla siguiente se enumeran las diferentes canalizaciones y para qué se usan:
Escenario | Rol principal | Oferta de Azure | Oferta de OSS | Canalización canónica | Puntos destacados |
---|---|---|---|---|---|
Orquestación de modelo (aprendizaje automático) | Científico de datos | Canalizaciones de Azure Machine Learning | Canalizaciones de Kubeflow | Datos -> Modelo | Distribución, almacenamiento en caché, Code First, reutilización |
Orquestación de datos (preparación de datos) | Ingeniero de datos | Canalizaciones de Azure Data Factory | Airflow de Apache | Datos -> Datos | Actividades centradas en datos y movimiento fuertemente tipado |
Orquestación de códigos y aplicaciones (CI/CD) | Desarrollo/operaciones de aplicaciones | Azure Pipelines | Jenkins | Código + Modelo -> Aplicación o servicio | Compatibilidad con la mayoría de las actividades abiertas y flexibles, colas de aprobación, fases con restricción de acceso |
Pasos siguientes
Las canalizaciones de Azure Machine Learning constituyen un potente recurso que ya comienza a ofrecer valor en las primeras fases del desarrollo.
- Definición de canalizaciones con la CLI de Azure Machine Learning v2
- Definición de canalizaciones con el SDK de Azure Machine Learning v2
- Definición de canalizaciones con el Diseñador
- Pruebe el ejemplo de canalización de la CLI v2.
- Pruebe el ejemplo de canalización del SDK de Python v2.
- Obtenga información sobre las expresiones SDK y CLI v2 que se pueden usar en una canalización.