Creare componenti
I componenti consentono di creare script riutilizzabili che possono essere facilmente condivisi tra gli utenti nella stessa area di lavoro di Azure Machine Learning. È anche possibile usare i componenti per creare una pipeline di Azure Machine Learning.
Usare un componente
Esistono due motivi principali per cui si usano i componenti:
- Per compilare una pipeline.
- Per condividere codice pronto per l'uso.
È consigliabile creare componenti durante la preparazione del codice per la scalabilità. Quando le attività di sperimentazione e sviluppo sono state completate e si è pronti a spostare il modello nell'ambiente di produzione.
All'interno di Azure Machine Learning, è possibile creare un componente per archiviare codice nel linguaggio preferito all'interno dell'area di lavoro. In teoria, si progetta un componente per eseguire un'azione specifica pertinente per il flusso di lavoro di Machine Learning.
Ad esempio, un componente può contenere uno script di Python che normalizza i dati, esegue il training di un modello di Machine Learning o lo valuta.
I componenti possono essere facilmente condivisi con altri utenti di Azure Machine Learning, che possono riutilizzarli nelle loro pipeline di Azure Machine Learning.
Crea un componente
Un componente è costituito da tre parti:
- Metadati: includono il nome del componente, la versione e così via.
- Interfaccia: include i parametri di input previsti (ad esempio un set di dati o un iperparametro) e l'output previsto (ad esempio metriche e artefatti).
- Comando, codice e ambiente: specificano come eseguire il codice.
Per creare un componente, sono necessari due file:
- Uno script che contiene il flusso di lavoro da eseguire.
- Un file YAML per definire i metadati, l'interfaccia e il comando, codice e ambiente del componente.
È possibile creare il file YAML oppure usare la funzione command_component() come elemento Decorator per crearlo.
Suggerimento
In questa unità verrà esaminata la creazione di un file YAML per creare un componente. In alternativa, vedere altre informazioni su come creare componenti usando command_component().
Ad esempio, è possibile avere uno script prep.py di Python che prepara i dati rimuovendo i valori mancanti e normalizzando i dati:
# 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
)
Per creare un componente per lo script prep.py, è necessario un file 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}}
Si noti che il file YAML fa riferimento allo script prep.py archiviato nella cartella src. È possibile caricare il componente con il codice seguente:
from azure.ai.ml import load_component
parent_dir = ""
loaded_component_prep = load_component(source=parent_dir + "./prep.yml")
Dopo aver caricato il componente, è possibile usarlo in una pipeline o registrarlo.
Registrare un componente
Per usare i componenti in una pipeline, sono necessari lo script e il file YAML. Per rendere i componenti accessibili ad altri utenti nell'area di lavoro, è anche possibile registrare i componenti nell'area di lavoro di Azure Machine Learning.
È possibile registrare un componente con il codice seguente:
prep = ml_client.components.create_or_update(prepare_data_component)