Usare i parametri in un processo di comando

Completato

È possibile aumentare la flessibilità degli script usando i parametri. Si supponga di aver creato uno script che esegue il training di un modello di Machine Learning. È possibile usare lo stesso script per eseguire il training di un modello in set di dati diversi o usando vari valori degli iperparametri.

Uso degli argomenti di script

Per usare i parametri in uno script, è necessario usare una libreria, argparse ad esempio per leggere gli argomenti passati allo script e assegnarli alle variabili.

Ad esempio, lo script seguente legge un argomento denominato training_data, che specifica il percorso dei dati di training.

# import libraries
import argparse
import pandas as pd
from sklearn.linear_model import LogisticRegression

def main(args):
    # read data
    df = get_data(args.training_data)

# function that reads the data
def get_data(path):
    df = pd.read_csv(path)
    
    return df

def parse_args():
    # setup arg parser
    parser = argparse.ArgumentParser()

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

    # parse args
    args = parser.parse_args()

    # return args
    return args

# run script
if __name__ == "__main__":

    # parse args
    args = parse_args()

    # run main function
    main(args)

Tutti i parametri previsti devono essere definiti nello script. Nello script è possibile specificare il tipo di valore previsto per ogni parametro e se si vuole impostare un valore predefinito.

Passaggio di argomenti a uno script

Per passare i valori dei parametri a uno script, è necessario specificare il valore dell'argomento nel comando .

Ad esempio, se si passa un valore di parametro quando si esegue uno script in un terminale, usare il comando seguente:

python train.py --training_data diabetes.csv

Nell'esempio è diabetes.csv un file locale. In alternativa, è possibile specificare il percorso di un asset di dati creato nell'area di lavoro di Azure Machine Learning.

Analogamente, quando si vuole passare un valore di parametro a uno script che si vuole eseguire come processo di comando, specificare i valori nel comando:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python train.py --training_data diabetes.csv",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute="aml-cluster",
    display_name="train-model",
    experiment_name="train-classification-model"
    )

Dopo aver inviato un processo di comando, è possibile esaminare i parametri di input e output specificati.