Interaktive R-Entwicklung

GILT FÜR:Azure CLI-ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

In diesem Artikel erfahren Sie, wie Sie R auf einer Compute-Instanz im Azure Machine Learning Studio verwenden und einen R-Kernel in einer Jupyter Notebook-Instanz ausführen.

Die beliebte RStudio-IDE funktioniert ebenfalls. Sie können RStudio oder Posit Workbench in einem benutzerdefinierten Container in einer Compute-Instanz installieren. Es gibt jedoch Einschränkungen hinsichtlich Lese- und Schreibvorgängen in Ihrem Azure Machine Learning-Arbeitsbereich.

Wichtig

Der in diesem Artikel gezeigte Code kann in einer Azure Machine Learning-Compute-Instanz verwendet werden. Die Compute-Instanz verfügt über eine Umgebung und über eine Konfigurationsdatei, die erforderlich sind, um den Code erfolgreich ausführen zu können.

Voraussetzungen

Ausführen von R in einem Notebook im Studio

Sie verwenden ein Notebook in Ihrem Azure Machine Learning-Arbeitsbereich in einer Computeinstanz.

  1. Melden Sie sich bei Azure Machine Learning Studio an.

  2. Öffnen Sie Ihren Arbeitsbereich, sofern er noch nicht geöffnet ist.

  3. Wählen Sie im Navigationsbereich auf der linken Seite die Option Notebooks aus.

  4. Erstellen Sie ein neues Notebook mit dem Namen RunR.ipynb.

    Tipp

    Wenn Sie nicht sicher sind, wie Sie Notebooks im Studio erstellen und verwenden, helfen Ihnen die Informationen unter Ausführen von Jupyter Notebook-Instanzen auf Ihrer Arbeitsstation weiter.

  5. Wählen Sie das Notebook aus.

  6. Vergewissern Sie sich auf der Symbolleiste des Notebooks, dass Ihre Compute-Instanz ausgeführt wird. Falls nicht, starten Sie sie jetzt.

  7. Legen Sie auf der Symbolleiste des Notebooks den Kernel auf R fest.

    Screenshot: Switch the notebook kernel to use R.

Ihr Notebook ist jetzt für die Ausführung von R-Befehlen bereit.

Zugreifen auf Daten

Sie können Dateien in Ihre Dateispeicherressource Ihres Arbeitsbereichs hochladen und in R auf diese Dateien zugreifen. Doch für gespeicherte Dateien in Azure-Datenressourcen oder Daten aus Datenspeichern müssen zunächst einige Pakete installiert werden.

In diesem Abschnitt wird beschrieben, wie Sie Python und das Paket reticulate verwenden, um Ihre Datenressourcen und Datenspeicher aus einer interaktiven Sitzung in R zu laden. Tabellendaten werden mithilfe des Python-Pakets azureml-fsspec und des R-Pakets reticulate als Pandas-Datenrahmen (DataFrames) gelesen. Dieser Abschnitt enthält auch ein Beispiel für das Lesen von Datenressourcen und Datenspeichern in einen R data.frame.

Installieren Sie diese Pakete wie folgt:

  1. Erstellen Sie in der Compute-Instanz eine neue Datei namens setup.sh.

  2. Kopieren Sie diesen Code in die Datei:

    #!/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. Wählen Sie Skript speichern und im Terminal ausführen aus, um das Skript auszuführen.

Das Installationsskript führt die folgenden Schritte aus:

  • pip installiert azureml-fsspec in der Conda-Standardumgebung für die Compute-Instanz.
  • Bei Bedarf wird mindestens die Version 1.26 des R-Pakets reticulate installiert.

Lesen von Tabellendaten aus registrierten Datenressourcen oder Datenspeichern

Für Daten, die in einer in Azure Machine Learning erstellten Datenressource gespeichert werden, verwenden Sie die folgenden Schritte, um die tabellarische Datei in einen Pandas DataFrame oder einen R-data.frame zu lesen:

Hinweis

Das Lesen einer Datei mit reticulate funktioniert nur mit Tabellendaten.

  1. Vergewissern Sie sich, dass Sie die korrekte Version von reticulate verwenden. Ist die Version niedriger als 1.26, verwenden Sie nach Möglichkeit eine neuere Compute-Instanz.

    packageVersion("reticulate")
    
  2. Laden Sie reticulate, und legen Sie die Conda-Umgebung fest, in der azureml-fsspec installiert wurde.

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Ermitteln Sie den URI-Pfad zur Datendatei.

    1. Rufen Sie als Erstes ein Handle für Ihren Arbeitsbereich ab.

      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. Verwenden Sie den folgenden Code, um die Ressource abzurufen. Ersetzen Sie <MY_NAME> und <MY_VERSION> durch den Namen und die Nummer Ihrer Datenressource.

      Tipp

      Wählen Sie im Studio im linken Navigationsbereich die Option Daten aus, um den Namen und die Versionsnummer Ihrer Datenressource zu ermitteln.

      # 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. Führen Sie den Code aus, um den URI abzurufen.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Verwenden Sie Pandas-Lesefunktionen, um die Dateien in die R-Umgebung zu lesen.

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

Sie können auch einen Datenspeicher-URI verwenden, um auf verschiedene Dateien in einem registrierten Datenspeicher zuzugreifen und diese Ressourcen in einen R-data.frame zu lesen.

  1. Erstellen Sie in diesem Format einen Datenspeicher-URI mit Ihren eigenen Werten:

    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)
    

    Tipp

    Anstatt sich das Format des Datenspeicher-URI zu merken, können Sie den Datenspeicher-URI von der Studio-Benutzeroberfläche kopieren und einfügen, wenn Sie den Datenspeicher kennen, in dem sich Ihre Datei befindet:

    1. Navigieren Sie zu der Datei/dem Ordner, die/den Sie in R einlesen möchten
    2. Wählen Sie die Auslassungspunkte (...) daneben aus.
    3. Wählen Sie im Menü URI kopieren eine Option aus.
    4. Wählen Sie den Datenspeicher-URI aus, der in Ihr Notebook/Skript kopiert werden soll. Beachten Sie, dass Sie eine Variable für <path> im Code erstellen müssen. Screenshot highlighting the copy of the datastore URI.
  2. Erstellen Sie ein Dateispeicherobjekt mithilfe des oben genannten URI:

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

Installieren von R-Paketen

Eine Compute-Instanz verfügt über viele vorinstallierte R-Pakete.

Um weitere Pakete zu installieren, müssen Sie den Speicherort und die Abhängigkeiten explizit angeben.

Tipp

Wenn Sie eine andere Compute-Instanz erstellen oder verwenden, müssen Sie alle von Ihnen installierten Pakete erneut installieren.

Gehen Sie beispielsweise wie folgt vor, um das Paket tsibble zu installieren:

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

Hinweis

Wenn Sie Pakete innerhalb einer R-Sitzung installieren, die in einer Jupyter Notebook-Instanz ausgeführt wird, ist dependencies = TRUE erforderlich. Andernfalls werden abhängige Pakete nicht automatisch installiert. Der Speicherort „lib“ ist ebenfalls erforderlich, damit die Installation am richtigen Speicherort der Compute-Instanz durchgeführt wird.

Laden von R-Bibliotheken

Fügen Sie dem R-Bibliothekspfad /home/azureuser hinzu.

.libPaths("/home/azureuser")

Tipp

Sie müssen .libPaths in jedem interaktiven R-Skript aktualisieren, um auf von Benutzern installierte Bibliotheken zuzugreifen. Fügen Sie diesen Code am Anfang jedes interaktiven R-Skripts oder Notebooks hinzu.

Nach dem Aktualisieren von „libPath“ können Bibliotheken wie gewohnt geladen werden.

library('tsibble')

Verwenden von R im Notebook

Abgesehen von den oben beschriebenen Problemen können Sie R wie in jeder anderen Umgebung verwenden, einschließlich Ihres lokalen Arbeitsplatzes. In Ihrem Notebook oder Skript können Sie Lese- und Schreibvorgänge für den Pfad ausführen, an dem das Notebook bzw. Skript gespeichert ist.

Hinweis

  • Im Rahmen einer interaktiven R-Sitzung können nur Daten in das Dateisystem des Arbeitsbereichs geschrieben werden.
  • In einer interaktiven R-Sitzung können Sie nicht mit MLflow interagieren, um beispielsweise ein Modell zu protokollieren oder die Registrierung abzufragen.

Nächste Schritte