Sviluppo R interattivo

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

Questo articolo illustra come usare R in Studio di Azure Machine Learning in un'istanza di ambiente di calcolo che esegue un kernel R in un Jupyter Notebook.

Funziona anche l'IDE RStudio di uso comune. È possibile installare RStudio o Posit Workbench in un contenitore personalizzato in un'istanza di ambiente di calcolo. Tuttavia, ciò presenta limitazioni per la lettura e la scrittura in un'area di lavoro di Azure Machine Learning.

Importante

Il codice riportato in questo articolo funziona su un'istanza di ambiente di calcolo di Azure Machine Learning. L'istanza di ambiente di calcolo include un file di ambiente e di configurazione necessario per l'esecuzione corretta del codice.

Prerequisiti

Eseguire R in un notebook in Studio

Verrà usato un notebook nell'area di lavoro di Azure Machine Learning in un’istanza di ambiente di calcolo.

  1. Accedere ad Azure Machine Learning Studio

  2. Aprire l'area di lavoro, se non è ancora aperta

  3. Nel riquadro di spostamento a sinistra selezionare Notebook

  4. Creare un nuovo notebook denominato RunR.ipynb

    Suggerimento

    In caso di dubbi sulla creazione e l’uso dei notebook in Studio, esaminare Eseguire notebook Jupyter in un'area di lavoro

  5. Selezionare il notebook.

  6. Nella barra degli strumenti del notebook, accertarsi che l'istanza di ambiente di calcolo sia in esecuzione. In caso contrario, avviarla ora.

  7. Nella barra degli strumenti del notebook, impostare il kernel su R.

    Screenshot: cambiare il kernel del notebook per usare R.

A questo punto, il notebook è pronto per l’esecuzione dei comandi R.

Accedere ai dati

È possibile caricare file nella risorsa di archiviazione file dell'area di lavoro, quindi accedere a tali file in R. Tuttavia, per i file archiviati in asset di dati di Azure o dati da archivi dati, è necessario installare alcuni pacchetti.

Questa sezione descrive come usare Python e il pacchetto reticulate per caricare gli asset di dati e gli archivi dati in R da una sessione interattiva. Usare il pacchetto Python azureml-fsspec e il pacchetto R reticulate per leggere i dati tabulari come dataframe Pandas. Questa sezione include anche un esempio di lettura di asset di dati e archivi dati in un data.frame R.

Per installare questi pacchetti:

  1. Creare un nuovo file nell'istanza di ambiente di calcolo denominato setup.sh.

  2. Copiare questo codice nel file:

    #!/bin/bash
    
    set -e
    
    # Installs azureml-fsspec in default conda environment 
    # Does not need to run as sudo
    
    eval "$(conda shell.bash hook)"
    conda activate azureml_py310_sdkv2
    pip install azureml-fsspec
    conda deactivate
    
    # Checks that version 1.26 of reticulate is installed (needs to be done as sudo)
    
    sudo -u azureuser -i <<'EOF'
    R -e "if (packageVersion('reticulate') >= 1.26) message('Version OK') else install.packages('reticulate')"
    EOF
    
  3. Selezionare Salva ed esegui script nel terminale per eseguire lo script

Lo script di installazione gestisce questi passaggi:

  • pip installa azureml-fsspec nell'ambiente conda predefinito per l'istanza di ambiente di calcolo
  • Installa il pacchetto R reticulate, se necessario (la versione deve essere 1.26 o successiva)

Leggere dati tabulari da archivi dati o asset di dati registrati

Per i dati archiviati in un asset di dati creato in Azure Machine Learning, seguire questa procedura per leggere tale file tabulare in un dataframe Pandas o in un data.frame R:

Nota

La lettura di un file con reticulate funziona solo con dati tabulari.

  1. Accertarsi che la versione di reticulate sia quella corretta. Per una versione precedente alla 1.26, provare a usare un'istanza di ambiente di calcolo più recente.

    packageVersion("reticulate")
    
  2. Caricare reticulate e impostare l'ambiente conda in cui è stato installato azureml-fsspec

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Trovare il percorso URI del file di dati.

    1. Prima di tutto, ottenere un handle per la propria area di lavoro

      py_code <- "from azure.identity import DefaultAzureCredential
      from azure.ai.ml import MLClient
      credential = DefaultAzureCredential()
      ml_client = MLClient.from_config(credential=credential)"
      
      py_run_string(py_code)
      print("ml_client is configured")
    2. Usare questo codice per recuperare l’asset. Assicurarsi di sostituire <MY_NAME> e <MY_VERSION> con il nome e il numero del proprio asset di dati.

      Suggerimento

      In Studio selezionare Data nel riquadro di spostamento a sinistra per trovare il nome e il numero di versione del proprio asset di dati.

      # Replace <MY_NAME> and <MY_VERSION> with your values
      py_code <- "my_name = '<MY_NAME>'
      my_version = '<MY_VERSION>'
      data_asset = ml_client.data.get(name=my_name, version=my_version)
      data_uri = data_asset.path"
    3. Eseguire il codice per recuperare l'URI.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Usare le funzioni di lettura di Pandas per leggere il file o i file nell'ambiente R.

    pd <- import("pandas")
    cc <- pd$read_csv(py$data_uri)
    head(cc)

È anche possibile usare un URI dell'archivio dati per accedere a file diversi in un archivio dati registrato e leggere queste risorse in un data.frame R.

  1. In questo formato, creare un URI dell'archivio dati usando i propri valori:

    subscription <- '<subscription_id>'
    resource_group <- '<resource_group>'
    workspace <- '<workspace>'
    datastore_name <- '<datastore>'
    path_on_datastore <- '<path>'
    
    uri <- paste0("azureml://subscriptions/", subscription, "/resourcegroups/", resource_group, "/workspaces/", workspace, "/datastores/", datastore_name, "/paths/", path_on_datastore)
    

    Suggerimento

    Invece di ricordare il formato dell'URI dell'archivio dati, è possibile copiare e incollare l'URI dell’archivio dati dall'interfaccia utente di Studio, se è noto l’archivio dati in cui è collocato il file:

    1. Passare al file o alla cartella da leggere in R
    2. Selezionare i puntini di sospensione (...) accanto al file.
    3. Dal menu selezionare Copia URI.
    4. Selezionare l'URI dell'archivio dati da copiare nel notebook o nello script. Tenere presente che è necessario creare una variabile per <path> nel codice. Screenshot che evidenzia la copia dell'URI dell'archivio dati.
  2. Creare un oggetto filestore usando l'URI indicato in precedenza:

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. Leggere in un data.frame R:
df <- with(fs$open("<path>)", "r") %as% f, {
 x <- as.character(f$read(), encoding = "utf-8")
 read.csv(textConnection(x), header = TRUE, sep = ",", stringsAsFactors = FALSE)
})
print(df)

Installare i pacchetti R

Un'istanza di ambiente di calcolo include numerosi pacchetti R preinstallati.

Per installare altri pacchetti, è necessario indicare in modo esplicito il percorso e le dipendenze.

Suggerimento

Quando si crea o si usa un'istanza di ambiente di calcolo diversa, è necessario reinstallare tutti i pacchetti installati.

Ad esempio, per installare il pacchetto tsibble:

install.packages("tsibble", 
                 dependencies = TRUE,
                 lib = "/home/azureuser")

Nota

Se si installano pacchetti all'interno di una sessione di R eseguita in un notebook Jupyter, è necessario dependencies = TRUE. In caso contrario, i pacchetti dipendenti non verranno installati automaticamente. Il percorso lib è necessario anche per l'installazione nel percorso corretto dell'istanza di ambiente di calcolo.

Caricare librerie di R

Aggiungere /home/azureuser al percorso della libreria di R.

.libPaths("/home/azureuser")

Suggerimento

Per accedere alle librerie installate dall'utente, è necessario aggiornare .libPaths in ogni script di R interattivo. Aggiungere questo codice all'inizio di ogni notebook o script di R interattivo.

Dopo aver aggiornato libPath, caricare le librerie come di consueto.

library('tsibble')

Usare R nel notebook

Oltre ai problemi descritti in precedenza, usare R come in qualunque altro ambiente, inclusa la propria workstation locale. Nel notebook o nello script è possibile leggere e scrivere nel percorso in cui è archiviato il notebook o lo script.

Nota

  • Da una sessione di R interattiva, la scrittura è possibile solo nel file system dell'area di lavoro.
  • Da una sessione di R interattiva non è possibile interagire con MLflow, ad esempio il modello di log o il registro di query.

Passaggi successivi