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
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. Provare la versione gratuita o a pagamento di Azure Machine Learning oggi stesso
- Un'area di lavoro di Azure Machine Learning e un'istanza di ambiente di calcolo
- Una conoscenza basilare dell’uso dei notebook Jupyter in Azure Machine Learning Studio. Per altre informazioni, vedere la risorsa Sviluppo di modelli in una workstation cloud.
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.
Accedere ad Azure Machine Learning Studio
Aprire l'area di lavoro, se non è ancora aperta
Nel riquadro di spostamento a sinistra selezionare Notebook
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
Selezionare il notebook.
Nella barra degli strumenti del notebook, accertarsi che l'istanza di ambiente di calcolo sia in esecuzione. In caso contrario, avviarla ora.
Nella barra degli strumenti del notebook, impostare il kernel su 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:
Creare un nuovo file nell'istanza di ambiente di calcolo denominato setup.sh.
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
Selezionare Salva ed esegui script nel terminale per eseguire lo script
Lo script di installazione gestisce questi passaggi:
pip
installaazureml-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.
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")
Caricare
reticulate
e impostare l'ambiente conda in cui è stato installatoazureml-fsspec
library(reticulate) use_condaenv("azureml_py310_sdkv2") print("Environment is set")
Trovare il percorso URI del file di dati.
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")
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"
Eseguire il codice per recuperare l'URI.
py_run_string(py_code) print(paste("URI path is", py$data_uri))
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.
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:
- Passare al file o alla cartella da leggere in R
- Selezionare i puntini di sospensione (...) accanto al file.
- Dal menu selezionare Copia URI.
- Selezionare l'URI dell'archivio dati da copiare nel notebook o nello script.
Tenere presente che è necessario creare una variabile per
<path>
nel codice.
Creare un oggetto filestore usando l'URI indicato in precedenza:
fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
- 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.