Dela via


Interaktiv R-utveckling

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Den här artikeln visar hur du använder R i Azure Machine Learning-studio på en beräkningsinstans som kör en R-kernel i en Jupyter Notebook.

Den populära RStudio IDE fungerar också. Du kan installera RStudio eller Posit Workbench i en anpassad container på en beräkningsinstans. Detta har dock begränsningar när det gäller att läsa och skriva till din Azure Machine Learning-arbetsyta.

Viktigt!

Koden som visas i den här artikeln fungerar på en Azure Machine Learning-beräkningsinstans. Beräkningsinstansen har en miljö och konfigurationsfil som krävs för att koden ska kunna köras.

Förutsättningar

Kör R i en anteckningsfil i studiomiljö

Du använder en notebook i din Azure Machine Learning-arbetsyta på en beräkningsinstans.

  1. Logga in på Azure Machine Learning-studio

  2. Öppna arbetsytan om den inte redan är öppen

  3. I det vänstra navigeringsfönstret väljer du Notebooks

  4. Skapa en ny notebook-fil med namnet RunR.ipynb

    Tips

    Om du inte är säker på hur du skapar och arbetar med notebook-filer i Studio kan du läsa Köra Jupyter-notebook-filer i din arbetsyta

  5. Välj anteckningsboken.

  6. Kontrollera att beräkningsinstansen körs i notebook-verktygsfältet. Om inte, starta det nu.

  7. I notebook-verktygsfältet växlar du kerneln till R.

    Skärmbild: Växla notebook-kerneln så att den använder R.

Anteckningsboken är nu redo att köra R-kommandon.

Åtkomst till data

Du kan ladda upp filer till arbetsytans fillagringsresurs och sedan komma åt filerna i R. Men för filer som lagras i Azure-datatillgångar eller data från datalager måste du installera vissa paket.

I det här avsnittet beskrivs hur du använder Python och reticulate paketet för att läsa in dina datatillgångar och datalager i R från en interaktiv session. Du använder Python-paketet azureml-fsspec och reticulate R-paketet för att läsa tabelldata som Pandas DataFrames. Det här avsnittet innehåller också ett exempel på hur du läser datatillgångar och datalager i en R data.frame.

Så här installerar du följande paket:

  1. Skapa en ny fil på beräkningsinstansen med namnet setup.sh.

  2. Kopiera den här koden till filen:

    #!/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. Välj Spara och kör skript i terminalen för att köra skriptet

Installationsskriptet hanterar följande steg:

  • pip azureml-fsspec installerar i conda-standardmiljön för beräkningsinstansen
  • Installerar R-paketet reticulate om det behövs (versionen måste vara 1.26 eller senare)

Läsa tabelldata från registrerade datatillgångar eller datalager

För data som lagras i en datatillgång som skapats i Azure Machine Learning använder du dessa steg för att läsa tabellfilen i en Pandas DataFrame eller en R data.frame:

Kommentar

Läsning av en fil med reticulate fungerar bara med tabelldata.

  1. Kontrollera att du har rätt version av reticulate. För en version som är mindre än 1,26 kan du försöka använda en nyare beräkningsinstans.

    packageVersion("reticulate")
    
  2. Läs in reticulate och ange conda-miljön där azureml-fsspec installerades

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Hitta URI-sökvägen till datafilen.

    1. Börja med att hämta ett handtag till din arbetsyta

      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. Använd den här koden för att hämta tillgången. Ersätt <MY_NAME> och <MY_VERSION> med namnet och numret på datatillgången.

      Tips

      I Studio väljer du Data i det vänstra navigeringsfältet för att hitta namnet och versionsnumret för din datatillgång.

      # 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. Kör koden för att hämta URI:n.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Använd Pandas-läsfunktioner för att läsa filen eller filerna i R-miljön.

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

Installera R-paket

En beräkningsinstans har många förinstallerade R-paket.

Om du vill installera andra paket måste du uttryckligen ange plats och beroenden.

Tips

När du skapar eller använder en annan beräkningsinstans måste du installera om alla paket som du har installerat.

Om du till exempel vill installera tsibble paketet:

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

Kommentar

Om du installerar paket i en R-session som körs i en Jupyter-anteckningsbok dependencies = TRUE krävs. Annars installeras inte beroende paket automatiskt. Lib-platsen krävs också för att installera på rätt plats för beräkningsinstansen.

Ladda R-bibliotek

Lägg till /home/azureuser i R-bibliotekets sökväg.

.libPaths("/home/azureuser")

Tips

Du måste uppdatera .libPaths i varje interaktivT R-skript för att få åtkomst till användarinstallerade bibliotek. Lägg till den här koden överst i varje interaktiv R-skript eller notebook-fil.

När libPath har uppdaterats läser du in bibliotek som vanligt.

library('tsibble')

Använd R i anteckningsboken

Utöver de problem som beskrevs tidigare använder du R på samma sätt som i andra miljöer, inklusive din lokala arbetsstation. I ditt dokument eller skript kan du läsa och skriva till sökvägen där dokumentet/skriptet lagras.

Kommentar

  • Från en interaktiv R-session kan du bara skriva till arbetsytans filsystem.
  • Från en interaktiv R-session kan du inte interagera med MLflow (till exempel loggmodell eller frågeregister).