Eseguire un processo R per eseguire il training di un modello

SI APPLICA A: estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)

Questo articolo spiega come eseguire lo script R idoneo per l'esecuzione nell'ambiente di produzione e come configurarne l'esecuzione come processo R usando l'interfaccia della riga di comando di Azure Machine Learning V2.

Nota

Anche se il titolo di questo articolo si riferisce al training di un modello, è possibile eseguire qualsiasi tipo di script R purché soddisfi i requisiti elencati nell'articolo sull'adattamento.

Prerequisiti

Creare una cartella con questa struttura

Creare questa struttura di cartelle per il progetto:

📁 r-job-azureml
├─ src
│  ├─ azureml_utils.R
│  ├─ r-source.R
├─ job.yml

Importante

Tutto il codice sorgente viene inserito nella directory src.

  • Il file r-source.R è lo script R adattato per l'esecuzione nell'ambiente di produzione. Assicurarsi di seguire la procedura per creare e registrare il modello in questo script.
  • Il file azureml_utils.R è necessario. Usare questo codice sorgente per il contenuto del file.

Preparare lo schema YAML del processo

L'interfaccia della riga di comando di Azure Machine Learning v2 ha schemi YAML diversi per operazioni distinte. Usare lo schema YAML del processo per inviare un processo nel file job.yml che fa parte di questo progetto.

È necessario raccogliere informazioni specifiche da inserire nello schema YAML:

  • Nome dell'asset di dati registrato che viene usato come input di dati (con versione): azureml:<REGISTERED-DATA-ASSET>:<VERSION>
  • Nome dell'ambiente creato (con versione): azureml:<R-ENVIRONMENT-NAME>:<VERSION>
  • Nome del cluster di elaborazione: azureml:<COMPUTE-CLUSTER-NAME>

Suggerimento

Per gli artefatti di Azure Machine Learning che richiedono versioni (asset di dati, ambienti), è possibile usare l'URI di scelta rapida azureml:<AZUREML-ASSET>@latest per ottenere la versione più recente di tale artefatto se non è necessario impostare una versione specifica.

Schema YAML di esempio per inviare un processo

Modificare il file job.yml in modo che contenga quanto segue. Assicurarsi di sostituire i valori visualizzati <IN-BRACKETS-AND-CAPS> e rimuovere le parentesi quadre.

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
# the Rscript command goes in the command key below. Here you also specify 
# which parameters are passed into the R script and can reference the input
# keys and values further below
# Modify any value shown below <IN-BRACKETS-AND-CAPS> (remove the brackets)
command: >
Rscript <NAME-OF-R-SCRIPT>.R
--data_file ${{inputs.datafile}}  
--other_input_parameter ${{inputs.other}}
code: src   # this is the code directory
inputs:
  datafile: # this is a registered data asset
    type: uri_file
    path: azureml:<REGISTERED-DATA-ASSET>@latest
  other: 1  # this is a sample parameter, which is the number 1 (as text)
environment: azureml:<R-ENVIRONMENT-NAME>@latest
compute: azureml:<COMPUTE-CLUSTER-OR-INSTANCE-NAME>
experiment_name: <NAME-OF-EXPERIMENT>
description: <DESCRIPTION>

Inviare il processo

Nei comandi seguenti in questa sezione potrebbe essere necessario conoscere le seguenti informazioni:

  • Nome dell'area di lavoro di Azure Machine Learning
  • Nome del gruppo di risorse in cui si trova l'area di lavoro
  • Sottoscrizione in cui si trova l'area di lavoro

Trovare questi valori nello studio di Azure Machine Learning:

  1. Eseguire l'accesso e aprire l'area di lavoro.
  2. In alto a destra nella barra degli strumenti dello studio di Azure Machine Learning selezionare il nome dell'area di lavoro.
  3. È possibile copiare i valori dalla sezione visualizzata.

Screenshot: trovare i valori da usare nel comando dell'interfaccia della riga di comando.

Per inviare il processo, eseguire i comandi seguenti in una finestra del terminale:

  1. Modificare le directory in r-job-azureml.

    cd r-job-azureml
    
  2. Accedere ad Azure. Se si esegue questa operazione da un'istanza di ambiente di calcolo di Azure Machine Learning, usare:

    az login --identity
    

    Se non si usa l'istanza di ambiente calcolo, omettere --identity e seguire la richiesta di aprire una finestra del browser per l'autenticazione.

  3. Assicurarsi di avere le versioni più recenti dell'interfaccia della riga di comando e l'estensione ml:

    az upgrade
    
  4. Se si hanno più sottoscrizioni di Azure, impostare la sottoscrizione attiva su quella usata per l'area di lavoro. È possibile ignorare questo passaggio se si ha accesso solo a una sottoscrizione singola. Sostituire <SUBSCRIPTION-NAME> con il nome della sottoscrizione. Rimuovere anche le parentesi quadre <>.

    az account set --subscription "<SUBSCRIPTION-NAME>"
    
  5. Usare ora l'interfaccia della riga di comando per inviare il processo. Se si esegue questa operazione in un'istanza di ambiente di calcolo nell'area di lavoro, è possibile usare le variabili di ambiente per il nome e il gruppo di risorse dell'area di lavoro, come illustrato nel codice seguente. Se non si usa un'istanza di ambiente di calcolo, sostituire questi valori con il nome dell'area di lavoro e il gruppo di risorse.

    az ml job create -f job.yml  --workspace-name $CI_WORKSPACE --resource-group $CI_RESOURCE_GROUP
    

Dopo aver inviato il processo, è possibile controllare lo stato e i risultati nello studio:

  1. Accedere ad Azure Machine Learning Studio.
  2. Selezionare l'area di lavoro, se non è già caricata.
  3. Nel riquadro di spostamento a sinistra selezionare Processi.
  4. In Nome esperimento selezionare il nome dell'esperimento usato per eseguire il training del modello.
  5. Selezionare il nome visualizzato del processo per visualizzare i relativi dettagli e artefatti, tra cui metriche, immagini, processi figlio, output, log e codice usati nel processo.

Registrazione del modello

Infine, al termine del processo di training, registrare il modello se si vuole distribuirlo. Iniziare nello studio dalla pagina che mostra i dettagli del processo.

  1. Al termine del processo, selezionare Output e log per visualizzare gli output del processo.

  2. Aprire la cartella models per verificare la presenza di crate.bin e MLmodel. In caso contrario, controllare i log per verificare se si è verificato un errore.

  3. Nella barra degli strumenti in alto selezionare + Registra modello.

    Screenshot che mostra la sezione Processo di Studio con la sezione Output aperta.

  4. Non usare il tipo di modello MLflow, anche se viene rilevato. Modificare Tipo di modello dal valore predefinito da MLflow a Tipo non specificato. Se lo si lascia come MLflow si genererà un errore.

  5. In Output processo selezionare models, ovvero la cartella contenente il modello.

  6. Selezionare Avanti.

  7. Specificare il nome da usare per il modello. Aggiungere un valore in Descrizione, Versione e Tag, se lo si desidera.

  8. Selezionare Avanti.

  9. Rivedere le informazioni.

  10. Selezionare Registra.

Nella parte superiore della pagina verrà visualizzata la conferma della registrazione del modello. La conferma è simile alla seguente:

Screenshot che mostra un esempio di registrazione riuscita.

Selezionare Fare clic qui per passare a questo modello per visualizzare i dettagli del modello registrato.

Passaggi successivi

Dopo aver registrato un modello, vedere Come distribuire un modello R in un endpoint online (in tempo reale).