Développement R interactif

S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (actuelle)

Cet article explique comment utiliser R sur une instance de calcul dans Azure Machine Learning studio, 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

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.

  1. Connectez-vous à Azure Machine Learning Studio.

  2. Ouvrez votre espace de travail s’il n’est pas déjà ouvert.

  3. Dans le volet de navigation de gauche, sélectionnez Notebooks.

  4. 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

  5. Sélectionnez le notebook.

  6. 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.

  7. Dans la barre d’outils du notebook, basculez le noyau sur R.

    Screenshot: Switch the notebook kernel to use 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 :

  1. Créez un fichier sur l’instance de calcul, appelé setup.sh.

  2. 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
    
  3. 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 de azureml-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.

  1. 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")
    
  2. 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")
  3. Recherchez le chemin d’URI du fichier de données.

    1. 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")
    2. 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"
    3. Exécutez le code pour récupérer l’URI.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. 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.

  1. 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 :

    1. Accédez au fichier/dossier que vous souhaitez lire dans R
    2. Sélectionnez les points de suspension (...) à côté de celui-ci.
    3. Sélectionnez dans le menu Copier l’URI.
    4. 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. Screenshot highlighting the copy of the datastore URI.
  2. Créez un objet filestore à l’aide de l’URI susmentionné :

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. 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).

Étapes suivantes