Canalizaciones de Azure Machine Learning

Completado

Como científico de datos, trabajará principalmente con Azure Machine Learning para entrenar y administrar modelos. Después de experimentar, debe convertir su trabajo en código de Python de producción para permitir la automatización con Azure Pipelines (DevOps) o Acciones de GitHub.

Experimentación en Azure Machine Learning

Azure Machine Learning proporciona un conjunto de características que le ayudan a organizar el trabajo. Por ejemplo, con Azure Machine Learning, puede hacer lo siguiente:

  • Registre conjuntos de datos para reutilizar fácilmente los datos almacenados en un lago de datos.
  • Entrene un modelo en instancias o clústeres de proceso remotos en función de sus requisitos.
  • Realice un seguimiento de todos sus scripts ejecutados con experimentos para comparar fácilmente su trabajo.
  • Registre modelos entrenados e implemente un modelo para el consumo por lotes o en tiempo real.

La mayor parte de su trabajo como científico de datos consistirá en experimentar, es decir, probar diferentes configuraciones para entrenar un modelo y revisar las métricas de rendimiento para decidir qué modelo implementar en producción.

Suponiendo que experimente en un cuaderno de Jupyter Notebook (archivos .ipynb), le interesará convertir el experimento en código de Python de producción. Para ello, deberá hacer lo siguiente:

  • Eliminar todo el código no esencial.
  • Refactorizar el código en funciones.
  • Combinar funciones relacionadas en scripts de Python (archivos .py).
  • Crear pruebas unitarias para cada script de Python.
  • Crear una canalización para agrupar scripts en un flujo de trabajo que se pueda automatizar.

Una vez que el código esté listo para producción, puede automatizar la ejecución de scripts con canalizaciones de Azure Machine Learning.

Creación de canalizaciones de Azure Machine Learning

El concepto de canalización se encuentra en varias herramientas y suele ofrecer una manera de agrupar tareas en un orden determinado. La principal ventaja de una canalización es que puede programarla o desencadenarla para que se ejecute.

Las canalizaciones de Azure Machine Learning se crean en el área de trabajo de Azure Machine Learning. Para crear una canalización, puede definir los pasos con scripts de Python.

Opcionalmente, puede crear una canalización con componentes de Azure Machine Learning. Cuando cree un componente, el script se almacenará con metadatos como el entorno necesario en el área de trabajo de Azure Machine Learning. Cualquier persona que esté en la misma área de trabajo puede compartir y usar los componentes, lo que hace que a los usuarios les resulte más fácil crear otras canalizaciones basándose en el trabajo que usted ha llevado a cabo.

Para crear una canalización que se pueda usar para la automatización, se recomienda definir un trabajo de canalización en YAML que se pueda desencadenar mediante un comando de la CLI (v2).

El archivo YAML que define la canalización debe especificar la información siguiente:

  • Qué ejecutar: los pasos definidos como scripts o componentes de Python.
  • Cómo ejecutarlo: Cualquier entrada o salida que los pasos puedan esperar.
  • Dónde ejecutarlo: el proceso necesario para ejecutar el código (normalmente un clúster de proceso de Azure Machine Learning).

Por ejemplo, una canalización que toma datos sin procesar como entrada, los transforma y entrena un modelo se puede definir en un archivo pipeline-job.yml:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc-taxi-pipeline-example
experiment_name: nyc-taxi-pipeline-example
jobs:

  transform-job:
    type: command
      raw_data: 
          type: uri_folder 
          path: ./data
    outputs:
      transformed_data:
        mode: rw_mount
    code: src/transform
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python transform.py 
      --raw_data ${{inputs.raw_data}} 
      --transformed_data ${{outputs.transformed_data}}
  
  train-job:
    type: command
    inputs:
      training_data: ${{parent.jobs.transform-job.outputs.transformed_data}}
    outputs:
      model_output: 
        mode: rw_mount
      test_data: 
        mode: rw_mount
    code: src/train
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python train.py 
      --training_data ${{inputs.training_data}} 
      --test_data ${{outputs.test_data}} 
      --model_output ${{outputs.model_output}}

Para ejecutar la canalización en Azure Machine Learning, usaría el siguiente comando de la CLI:

az ml job create --file pipeline-job.yml

Una vez que la canalización haya acabado de ejecutarse, puede revisar la canalización y los pasos ejecutados en el área de trabajo de Azure Machine Learning.

Al convertir las cargas de trabajo de aprendizaje automático en tareas de grupo y scripts de Python dentro de una canalización, el modelo estará listo para producción. El hecho de definir la canalización en un archivo YAML permite automatizar el entrenamiento y el reentrenamiento mediante el desencadenamiento de la ejecución de la canalización con la CLI (v2). Puede ejecutar un comando de la CLI que haga referencia al archivo YAML de canalización desde Azure Pipelines (DevOps) o Acciones de GitHub.