Interactieve R-ontwikkeling

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel wordt beschreven hoe u R gebruikt op een rekenproces in Azure Machine Learning-studio, waarmee een R-kernel wordt uitgevoerd in een Jupyter-notebook.

De populaire RStudio IDE werkt ook. U kunt RStudio of Posit Workbench installeren in een aangepaste container op een rekenproces. Dit heeft echter beperkingen bij het lezen en schrijven naar uw Azure Machine Learning-werkruimte.

Belangrijk

De code die in dit artikel wordt weergegeven, werkt op een Azure Machine Learning-rekenproces. Het rekenproces heeft een omgevings- en configuratiebestand dat nodig is om de code te kunnen uitvoeren.

Vereisten

R uitvoeren in een notebook in studio

U gebruikt een notebook in uw Azure Machine Learning-werkruimte op een rekenproces.

  1. Meld u aan bij Azure Machine Learning-studio

  2. Open uw werkruimte als deze nog niet is geopend

  3. Selecteer notitieblokken in het linkernavigatievenster

  4. Maak een nieuw notebook met de naam RunR.ipynb

    Tip

    Als u niet zeker weet hoe u notebooks maakt en gebruikt in studio, bekijkt u Jupyter-notebooks uitvoeren in uw werkruimte

  5. Selecteer het notitieblok.

  6. Controleer op de notebookwerkbalk of uw rekenproces wordt uitgevoerd. Zo niet, start het nu.

  7. Schakel op de notebookwerkbalk de kernel over naar R.

    Screenshot: Switch the notebook kernel to use R.

Uw notebook is nu klaar om R-opdrachten uit te voeren.

Toegang tot gegevens

U kunt bestanden uploaden naar de opslagresource voor werkruimtebestanden en deze bestanden vervolgens openen in R. Voor bestanden die zijn opgeslagen in Azure-gegevensassets of gegevens uit gegevensarchieven, moet u echter enkele pakketten installeren.

In deze sectie wordt beschreven hoe u Python en het reticulate pakket gebruikt om uw gegevensassets en gegevensarchieven vanuit een interactieve sessie in R te laden. U gebruikt het azureml-fsspec Python-pakket en het reticulate R-pakket om tabelgegevens te lezen als Pandas DataFrames. Deze sectie bevat ook een voorbeeld van het lezen van gegevensassets en gegevensarchieven in een R data.frame.

Ga als volgt te werk om deze pakketten te installeren:

  1. Maak een nieuw bestand op het rekenproces met de naam setup.sh.

  2. Kopieer deze code naar het bestand:

    #!/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. Selecteer Opslaan en script uitvoeren in terminal om het script uit te voeren

Het installatiescript verwerkt deze stappen:

  • pip wordt azureml-fsspec geïnstalleerd in de standaardconda-omgeving voor het rekenproces
  • Installeert het R-pakket reticulate indien nodig (versie moet 1.26 of hoger zijn)

Tabelgegevens lezen uit geregistreerde gegevensassets of gegevensarchieven

Voor gegevens die zijn opgeslagen in een gegevensasset die is gemaakt in Azure Machine Learning, gebruikt u deze stappen om dat tabellaire bestand te lezen in een Pandas DataFrame of een R data.frame:

Notitie

Het lezen van een bestand met reticulate alleen tabelgegevens werkt.

  1. Zorg ervoor dat u de juiste versie van reticulate. Probeer voor een versie kleiner dan 1.26 een nieuwer rekenproces te gebruiken.

    packageVersion("reticulate")
    
  2. De Conda-omgeving laden reticulate en instellen waar azureml-fsspec deze is geïnstalleerd

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Zoek het URI-pad naar het gegevensbestand.

    1. Haal eerst een ingang op voor uw werkruimte

      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. Gebruik deze code om de asset op te halen. Zorg ervoor dat u de naam en het nummer van uw gegevensasset vervangt <MY_NAME> en <MY_VERSION> vervangt.

      Tip

      Selecteer in studio Gegevens in de linkernavigatiebalk om de naam en het versienummer van uw gegevensasset te vinden.

      # 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. Voer de code uit om de URI op te halen.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Pandas-leesfuncties gebruiken om de bestanden in de R-omgeving te lezen

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

U kunt ook een gegevensarchief-URI gebruiken om toegang te krijgen tot verschillende bestanden in een geregistreerde gegevensopslag en deze resources te lezen in een R data.frame.

  1. Maak in deze indeling een gegevensarchief-URI met uw eigen waarden:

    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)
    

    Tip

    In plaats van de URI-indeling van het gegevensarchief te onthouden, kunt u de URI voor het gegevensarchief kopiëren en plakken vanuit de gebruikersinterface van Studio, als u de gegevensopslag kent waar het bestand zich bevindt:

    1. Navigeer naar het bestand/de map die u wilt lezen in R
    2. Selecteer het beletselteken (...) ernaast.
    3. Selecteer in het menu URI kopiëren.
    4. Selecteer de gegevensarchief-URI die u wilt kopiëren naar uw notebook/script. Houd er rekening mee dat u een variabele moet maken voor <path> in de code. Screenshot highlighting the copy of the datastore URI.
  2. Maak een filestore-object met behulp van de bovengenoemde URI:

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. Inlezen in een R data.frame:
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)

R-pakketten installeren

Een rekenproces heeft veel vooraf geïnstalleerde R-pakketten.

Als u andere pakketten wilt installeren, moet u expliciet de locatie en afhankelijkheden instellen.

Tip

Wanneer u een ander rekenproces maakt of gebruikt, moet u alle pakketten die u hebt geïnstalleerd, opnieuw installeren.

Als u bijvoorbeeld het tsibble pakket wilt installeren:

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

Notitie

Als u pakketten installeert in een R-sessie die wordt uitgevoerd in een Jupyter-notebook, dependencies = TRUE is dit vereist. Anders worden afhankelijke pakketten niet automatisch geïnstalleerd. De lib-locatie is ook vereist om te installeren op de juiste locatie van het rekenproces.

R-bibliotheken laden

Toevoegen /home/azureuser aan het R-bibliotheekpad.

.libPaths("/home/azureuser")

Tip

U moet het .libPaths in elk interactief R-script bijwerken om toegang te krijgen tot door de gebruiker geïnstalleerde bibliotheken. Voeg deze code toe aan het begin van elk interactief R-script of notebook.

Zodra het libPath is bijgewerkt, laadt u bibliotheken zoals gewoonlijk.

library('tsibble')

R gebruiken in het notebook

Gebruik R net als in elke andere omgeving, met inbegrip van uw lokale werkstation, buiten de eerder beschreven problemen. In uw notebook of script kunt u lezen en schrijven naar het pad waar het notebook/script is opgeslagen.

Notitie

  • Vanuit een interactieve R-sessie kunt u alleen schrijven naar het bestandssysteem van de werkruimte.
  • Vanuit een interactieve R-sessie kunt u niet communiceren met MLflow (zoals logboekmodel of queryregister).

Volgende stappen