Entrenamiento de modelos con Azure Machine Learning

SE APLICA A: SDK de Python azure-ai-ml v2 (actual)

Azure Machine Learning proporciona varias maneras de entrenar los modelos, desde soluciones en las que se da prioridad al código con el SDK hasta soluciones con poco código, como el aprendizaje automático automatizado y el diseñador visual. Use la lista siguiente para determinar el método de entrenamiento adecuado para usted:

  • SDK de Azure Machine Learning para Python: el SDK de Python proporciona varias maneras de entrenar modelos, cada una con distintas funcionalidades.

    Método de entrenamiento Descripción
    command() Una manera típica de entrenar modelos es enviar una función comando() que incluya un script de entrenamiento, un entorno e información de proceso.
    Aprendizaje automático automatizado El aprendizaje automático automatizado el permite entrenar modelos sin un amplio conocimiento de programación ni de ciencia de datos. En el caso de las personas con conocimientos de programación y de ciencia de datos, proporciona una manera de ahorrar tiempo y recursos mediante la automatización de la selección de algoritmos y la optimización de los hiperparámetros. No tiene que preocuparse de definir una configuración de ejecución al usar el aprendizaje automático automatizado.
    Canalización de aprendizaje automático Las canalizaciones no son un método de entrenamiento distinto, sino una manera de definir un flujo de trabajo con pasos modulares y reutilizables, que puede incluir el entrenamiento como parte del flujo de trabajo. Las canalizaciones de aprendizaje automático admiten el uso de aprendizaje automático automatizado y configuración de ejecución para entrenar modelos. Como las canalizaciones no se centran específicamente en el entrenamiento, las razones para usar una canalización son más variadas que los demás métodos de entrenamiento. Por lo general, puede usar una canalización cuando:
    * Quiere programar procesos desatendidos, como trabajos de entrenamiento de larga duración o la preparación de los datos.
    * Use varios pasos coordinados entre ubicaciones de almacenamiento y recursos de proceso heterogéneos.
    * Use la canalización como una plantilla reutilizable para escenarios específicos, como el reentrenamiento o la puntuación por lotes.
    * Haga seguimiento y realice versiones de sus orígenes de datos, entradas y salidas del flujo de trabajo.
    * El flujo de trabajo lo implementan distintos equipos que trabajan en pasos específicos de manera independiente. Luego, los pasos se pueden reunir en una canalización para implementar el flujo de trabajo.
  • Diseñador: el diseñador de Azure Machine Learning proporciona un punto de entrada sencillo al aprendizaje automático para crear una prueba de conceptos o para los usuarios que no tengan mucha experiencia en la codificación. Permite entrenar modelos mediante una interfaz de usuario basada en web de arrastrar y colocar. Puede usar el código de Python como parte del diseño o entrenar modelos sin necesidad de escribir nada de código.

  • CLI de Azure: la CLI de Machine Learning proporciona comandos para tareas comunes con Azure Machine Learning y se usa a menudo para las tareas de script y automatización. Por ejemplo, una vez que haya creado una canalización o un script de entrenamiento, puede usar la CLI de Azure para iniciar un trabajo de entrenamiento según una programación o cuando se actualicen los archivos de datos usados para el entrenamiento. En el caso de los modelos de entrenamiento, proporciona comandos que envían trabajos de entrenamiento. Puede enviar trabajos mediante configuraciones de ejecución o canalizaciones.

Cada uno de estos métodos de entrenamiento puede usar distintos tipos de recursos de proceso para el entrenamiento. En conjunto, estos recursos se conocen como destinos de proceso. Un destino de proceso puede ser una máquina local o un recurso de nube, como una instancia de proceso de Azure Machine Learning, Azure HDInsight o una máquina virtual remota.

SDK de Python

El SDK de Azure Machine Learning para Python permite compilar y ejecutar flujos de trabajo de aprendizaje automático con Azure Machine Learning. Puede interactuar con el servicio desde una sesión de Python interactiva, instancias de Jupyter Notebook, Visual Studio Code u otro IDE.

Envío de un comando

Se puede definir un trabajo de entrenamiento genérico con Azure Machine Learning mediante la función command(). A continuación, se usa el comando junto con los scripts de entrenamiento para entrenar sobre el destino de proceso especificado.

Puede empezar con un comando para el equipo local y, luego, cambiar a uno para un destino de proceso basado en la nube, según sea necesario. Al cambiar el destino de proceso, solo se cambia el parámetro de proceso en el comando que se usa. Una ejecución también registra información sobre el trabajo de entrenamiento, como las entradas, las salidas y los registros.

Automated Machine Learning

Defina las iteraciones, la configuración de hiperparámetros, la caracterización y otras opciones. Durante el entrenamiento, Azure Machine Learning intenta diferentes algoritmos y parámetros en paralelo. El entrenamiento se detiene una vez que alcanza los criterios de salida definidos.

Sugerencia

Además del SDK de Python, también puede usar el aprendizaje automático automatizado a través de Azure Machine Learning Studio.

Canalización de aprendizaje automático

Las canalizaciones de aprendizaje automático pueden usar los métodos de entrenamiento mencionados anteriormente. Las canalizaciones tienen más que ver con la creación de un flujo de trabajo, por lo que abarcan algo más que solo el entrenamiento de los modelos.

Descripción de lo que ocurre cuando se envía un trabajo de entrenamiento

El ciclo de vida de entrenamiento de Azure consta de los pasos siguientes:

  1. Compresión de los archivos en la carpeta del proyecto y carga en la nube.

    Sugerencia

    Para evitar que se incluyan archivos innecesarios en la instantánea, cree un archivo ignore (.gitignore o .amlignore) en el directorio. Agregue los archivos y directorios que se van a excluir a este archivo. Para obtener más información sobre la sintaxis que se debe usar dentro de este archivo, vea sintaxis y patrones para .gitignore. El archivo .amlignore usa la misma sintaxis. Si ambos archivos existen, el archivo .amlignore se usa y el archivo .gitignore, no.

  2. Escalar el clúster de proceso (o proceso sin servidor)

  3. Compilar o descargar el Dockerfile en el nodo de proceso

    1. El sistema calcula un valor de hash de:
    2. El sistema utiliza este valor de hash como clave en una búsqueda de la instancia de Azure Container Registry (ACR) del área de trabajo.
    3. Si no la encuentra, busca una coincidencia en la instancia de ACR global.
    4. Si no existe, el sistema genera una imagen (que se almacenará en la memoria caché y se registrará en la instancia de ACR del área de trabajo).
  4. Descargar el archivo de proyecto comprimido en el almacenamiento temporal del nodo de proceso.

  5. Descomprimir el archivo de proyecto.

  6. El nodo de proceso que ejecuta python <entry script> <arguments>.

  7. Guardar registros, archivos de modelo y otros archivos escritos en ./outputs en la cuenta de almacenamiento asociada con el área de trabajo.

  8. Reducir verticalmente el proceso, incluida la eliminación del almacenamiento temporal.

Diseñador de Azure Machine Learning

El diseñador permite entrenar modelos mediante una interfaz de arrastrar y colocar en el explorador web.

Azure CLI

La CLI de Machine Learning es una extensión para la CLI de Azure. Proporciona comandos de la CLI multiplataforma para trabajar con Azure Machine Learning. Por lo general, se usa la CLI para automatizar las tareas, como entrenar un modelo de aprendizaje automático.

Código de VS

Puede usar la extensión de VS Code para ejecutar y administrar los trabajos de entrenamiento. Visite la guía paso a paso sobre la administración de recursos de VS Code para obtener más información.

Pasos siguientes

Consulte el Tutorial: Creación de canalizaciones de ML de producción con el SDK v2 de Python en un cuaderno de Jupyter Notebook.