Crear componentes

Completado

Los componentes permiten crear scripts reutilizables que se pueden compartir fácilmente entre los usuarios dentro del mismo área de trabajo de Azure Machine Learning. También puede usar componentes para compilar una canalización de Azure Machine Learning.

Uso de un componente

Hay dos razones principales por las que usaría componentes:

  • Para compilar una canalización.
  • Para compartir código listo para usar.

Querrás crear componentes al preparar tu código para la escalabilidad. Cuando haya terminado de experimentar y desarrollar, y esté listo para mover el modelo a producción.

En Azure Machine Learning, puede crear un componente para almacenar código (en el lenguaje preferido) dentro del área de trabajo. Lo ideal es diseñar un componente para realizar una acción específica que sea pertinente en el flujo de trabajo de aprendizaje automático.

Por ejemplo, un componente puede constar de un script de Python que normaliza los datos, entrena un modelo de aprendizaje automático o evalúa un modelo.

Los componentes se pueden compartir fácilmente con otros usuarios de Azure Machine Learning, que pueden reutilizar componentes en sus propias canalizaciones de Azure Machine Learning.

Captura de pantalla de los componentes disponibles en el área de trabajo de Azure Machine Learning.

Crear un componente

Un componente consta de tres partes:

  • Metadatos: incluye el nombre, la versión, etc. del componente.
  • Interfaz: incluye los parámetros de entrada esperados (como un conjunto de datos o hiperparámetros) y la salida esperada (como métricas y artefactos).
  • Comando, código y entorno: especifica cómo ejecutar el código.

Para crear un componente, necesita dos archivos:

  • Script que contiene el flujo de trabajo que desea ejecutar.
  • Un archivo YAML para definir los metadatos, la interfaz y el comando, el código y el entorno del componente.

Puede crear el archivo YAML o usar la función command_component() como decorador para crear el archivo YAML.

Sugerencia

Aquí nos centraremos en la creación de un archivo YAML para crear un componente. Como alternativa, obtenga más información sobre cómo crear componentes mediante command_component().

Por ejemplo, puede tener un script de Python prep.py que prepare los datos quitando los valores que faltan y normalizando los datos:

# import libraries
import argparse
import pandas as pd
import numpy as np
from pathlib import Path
from sklearn.preprocessing import MinMaxScaler

# setup arg parser
parser = argparse.ArgumentParser()

# add arguments
parser.add_argument("--input_data", dest='input_data',
                    type=str)
parser.add_argument("--output_data", dest='output_data',
                    type=str)

# parse args
args = parser.parse_args()

# read the data
df = pd.read_csv(args.input_data)

# remove missing values
df = df.dropna()

# normalize the data    
scaler = MinMaxScaler()
num_cols = ['feature1','feature2','feature3','feature4']
df[num_cols] = scaler.fit_transform(df[num_cols])

# save the data as a csv
output_df = df.to_csv(
    (Path(args.output_data) / "prepped-data.csv"), 
    index = False
)

Para crear un componente para el script prep.py, necesitará un archivo YAML prep.yml:

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: prep_data
display_name: Prepare training data
version: 1
type: command
inputs:
  input_data: 
    type: uri_file
outputs:
  output_data:
    type: uri_file
code: ./src
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
command: >-
  python prep.py 
  --input_data ${{inputs.input_data}}
  --output_data ${{outputs.output_data}}

Observe que el archivo YAML hace referencia al script prep.py, que se almacena en la carpeta src. Puede cargar el componente con el código siguiente:

from azure.ai.ml import load_component
parent_dir = ""

loaded_component_prep = load_component(source=parent_dir + "./prep.yml")

Cuando haya cargado el componente, puede usarlo en una canalización o registrar el componente.

Registro de un componente

Para usar componentes en una canalización, necesitará el script y el archivo YAML. Para que los componentes sean accesibles para otros usuarios del área de trabajo, también puede registrar componentes en el área de trabajo de Azure Machine Learning.

Puede registrar un componente con el código siguiente:

prep = ml_client.components.create_or_update(prepare_data_component)