Développement R interactif
S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)
Cet article explique comment utiliser R dans Azure Machine Learning studio, sur une instance de calcul qui exécute un noyau R dans un notebook Jupyter.
L’IDE RStudio populaire fonctionne également. Vous pouvez installer RStudio ou Posit Workbench dans un conteneur personnalisé sur une instance de calcul. Toutefois, il présente des limitations en lecture et en écriture dans votre espace de travail Azure Machine Learning.
Important
Le code présenté dans cet article fonctionne sur une instance de calcul Azure Machine Learning. L’instance de calcul dispose d’un environnement et d’un fichier de configuration nécessaires à la bonne exécution du code.
Prérequis
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning dès aujourd’hui
- Un espace de travail Azure Machine Learning et une instance de calcul
- Compréhension de base de l’utilisation de notebooks Jupyter dans Azure Machine Learning studio. Consultez la ressource Développement de modèle sur une station de travail cloud pour plus d’informations.
Exécuter R dans un notebook dans le studio
Vous allez utiliser un notebook dans votre espace de travail Azure Machine Learning, sur une instance de calcul.
Connectez-vous à Azure Machine Learning Studio.
Ouvrez votre espace de travail s’il n’est pas déjà ouvert.
Dans le volet de navigation de gauche, sélectionnez Notebooks.
Créez un notebook nommé RunR.ipynb.
Conseil
Si vous ne savez pas comment créer et utiliser des notebooks dans le studio, consultez Exécuter des notebooks Jupyter dans votre espace de travail
Sélectionnez le notebook.
Dans la barre d’outils du notebook, vérifiez que votre instance de calcul est en cours d’exécution. Si ce n’est pas le cas, démarrez-la.
Dans la barre d’outils du notebook, basculez le noyau sur R.
Votre notebook est maintenant prêt pour l’exécution de commandes R.
Accéder aux données
Vous pouvez charger des fichiers dans la ressource de stockage de fichiers de votre espace de travail, puis accéder à ces fichiers dans R. Toutefois, pour les fichiers stockés dans des ressources de données Azure ou des données provenant de magasins de données, vous devez installer des packages.
Cette section explique comment utiliser Python et le package reticulate
pour charger vos ressources de données et vos magasins de données dans R à partir d’une session interactive. Vous utilisez le package Python azureml-fsspec
et le package R reticulate
pour lire les données tabulaires en tant que DataFrames Pandas. Cette section inclut également un exemple de lecture de ressources de données et de magasins de données dans un data.frame
R.
Pour installer ces packages :
Créez un fichier sur l’instance de calcul, appelé setup.sh.
Copiez ce code dans le fichier :
#!/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
Sélectionnez Enregistrer et exécuter le script dans le terminal pour exécuter le script.
Le script d’installation s’occupe des étapes suivantes :
- Installation par
pip
deazureml-fsspec
dans l’environnement conda par défaut pour l’instance de calcul - Installation du package R
reticulate
si nécessaire (version 1.26 ou ultérieure)
Lire des données tabulaires à partir de ressources de données ou de magasins de données inscrits
Pour des données stockées dans une ressource de données créée dans Azure Machine Learning, suivez ces étapes pour lire ce fichier tabulaire dans un DataFrame Pandas ou un data.frame
R :
Notes
La lecture d’un fichier avec reticulate
fonctionne uniquement avec des données tabulaires.
Vérifiez que vous disposez de la version correcte de
reticulate
. Pour une version antérieure à 1.26, essayez d’utiliser une instance de calcul plus récente.packageVersion("reticulate")
Chargez
reticulate
et définissez l’environnement conda oùazureml-fsspec
a été installé.library(reticulate) use_condaenv("azureml_py310_sdkv2") print("Environment is set")
Recherchez le chemin d’URI du fichier de données.
Tout d’abord, obtenez un handle pour votre espace de travail.
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")
Pour récupérer la ressource, utilisez ce code : Veillez à remplacer
<MY_NAME>
et<MY_VERSION>
par le nom et le numéro de votre ressource de données.Conseil
Dans le volet de navigation de gauche de studio, sélectionnez Données pour rechercher le nom et le numéro de version de votre ressource de données.
# 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"
Pour récupérer l’URI, exécutez le code.
py_run_string(py_code) print(paste("URI path is", py$data_uri))
Utilisez les fonctions de lecture Pandas pour lire le ou les fichiers dans l’environnement R.
pd <- import("pandas") cc <- pd$read_csv(py$data_uri) head(cc)
Vous pouvez aussi utiliser un URI de magasin de données pour accéder à divers fichiers sur un magasin de données inscrit et lire ces ressources dans un data.frame
R.
Dans ce format, créez un URI de magasin de données en utilisant vos propres valeurs :
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)
Conseil
Au lieu de mémoriser le format d’URI du magasin de données, vous pouvez copier-coller l’URI du magasin de données à partir de l’interface utilisateur Studio, si vous savez dans quel magasin de données se trouve votre fichier :
- Accédez au fichier/dossier que vous souhaitez lire dans R
- Sélectionnez les points de suspension (...) à côté de celui-ci.
- Sélectionnez dans le menu Copier l’URI.
- Sélectionnez l’URI du magasin de données à copier dans votre notebook/script.
Notez que vous devez créer une variable pour
<path>
dans le code.
Créez un objet filestore à l’aide de l’URI mentionné précédemment :
fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
- Lecture dans 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)
Installer des packages R
Une instance de calcul a de nombreux packages R préinstallés.
Pour installer d’autres packages, vous devez préciser explicitement l’emplacement et les dépendances.
Conseil
Lorsque vous créez ou utilisez une autre instance de calcul, vous devez réinstaller les packages que vous avez installés.
Par exemple, pour installer le package tsibble
:
install.packages("tsibble",
dependencies = TRUE,
lib = "/home/azureuser")
Notes
Si vous installez des packages au cours d’une session R s’exécutant dans un notebook Jupyter, dependencies = TRUE
est nécessaire. Sinon, les packages dépendants ne s’installeront pas automatiquement. L’emplacement lib doit également être installé à l’emplacement correct de l’instance de calcul.
Charger des bibliothèques R
Ajoutez /home/azureuser
au chemin de la bibliothèque R.
.libPaths("/home/azureuser")
Conseil
Mettez à jour .libPaths
dans chaque script R interactif pour accéder aux bibliothèques installées par l’utilisateur. Ajoutez ce code en haut de chaque script ou notebook R interactif.
Une fois libPath mis à jour, chargez les bibliothèques comme d’habitude.
library('tsibble')
Utiliser R dans le notebook
Au-delà des problèmes décrits précédemment, utilisez R comme vous le feriez dans n’importe quel autre environnement, tel que votre station de travail locale. Dans votre notebook ou votre script, vous pouvez lire et écrire sur le chemin où le notebook/script est stocké.
Notes
- À partir d’une session R interactive, vous pouvez uniquement écrire dans le système de fichiers de l’espace de travail.
- À partir d’une session R interactive, vous ne pouvez pas interagir avec MLflow (comme modèle de journal ou registre de requêtes).