Ausführen eines R-Auftrags zum Trainieren eines Modells

GILT FÜRAzure CLI-ML-Erweiterung v2 (aktuell)

In diesem Artikel wird erläutert, wie Sie das R-Skript, das Sie für die Ausführung in der Produktion angepasst haben, für die Ausführung als R-Auftrag mithilfe der Azure Machine Learning CLI v2 einrichten.

Hinweis

Zwar bezieht sich der Titel dieses Artikels auf das Trainieren eines Modells, tatsächlich können Sie jede Art von R-Skript ausführen, solange es die im Artikel über die Anpassung aufgeführten Anforderungen erfüllt.

Voraussetzungen

Erstellen eines Ordners mit dieser Struktur

Erstellen Sie diese Ordnerstruktur für Ihr Projekt:

📁 r-job-azureml
├─ src
│  ├─ azureml_utils.R
│  ├─ r-source.R
├─ job.yml

Wichtig

Der gesamte Quellcode wird im Verzeichnis src abgelegt.

  • Die Datei r-source.R ist das R-Skript, das Sie für die Ausführung in der Produktion angepasst haben. Befolgen Sie unbedingt die Schritte zum Erstellen und Protokollieren Ihres Modells in diesem Skript.
  • Die Datei azureml_utils.R ist erforderlich. Verwenden Sie diesen Quellcode für den Inhalt der Datei.

Vorbereiten des Auftrags-YAML-Schemas

Die Azure Machine Learning CLI v2 weist unterschiedliche YAML-Schemas für unterschiedliche Vorgänge auf. Sie verwenden das YAML-Auftragsschema, um einen Auftrag in der job.yml-Datei zu übermitteln, die Teil dieses Projekts ist.

Sie müssen bestimmte Informationen sammeln und in das YAML-Schema einfügen:

  • Den Namen der registrierten Datenressource, die Sie als Dateneingabe verwenden (mit Version): azureml:<REGISTERED-DATA-ASSET>:<VERSION>
  • Den Namen der Umgebung, die Sie erstellt haben (mit Version): azureml:<R-ENVIRONMENT-NAME>:<VERSION>
  • Den Namen des Computeclusters: azureml:<COMPUTE-CLUSTER-NAME>

Tipp

Bei Azure Machine Learning-Artefakten, die Versionen erfordern (Datenobjekte, Umgebungen), können Sie den Verknüpfungs-URI azureml:<AZUREML-ASSET>@latest verwenden, um die neueste Version dieses Artefakts abzurufen, wenn Sie keine bestimmte Version festlegen müssen.

YAML-Beispielschema zum Übermitteln eines Auftrags

Bearbeiten Sie die Datei job.yml so, dass sie Folgendes enthält. Ersetzen Sie die angezeigten Werte <IN-BRACKETS-AND-CAPS>, und entfernen Sie die Klammern.

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
# the Rscript command goes in the command key below. Here you also specify 
# which parameters are passed into the R script and can reference the input
# keys and values further below
# Modify any value shown below <IN-BRACKETS-AND-CAPS> (remove the brackets)
command: >
Rscript <NAME-OF-R-SCRIPT>.R
--data_file ${{inputs.datafile}}  
--other_input_parameter ${{inputs.other}}
code: src   # this is the code directory
inputs:
  datafile: # this is a registered data asset
    type: uri_file
    path: azureml:<REGISTERED-DATA-ASSET>@latest
  other: 1  # this is a sample parameter, which is the number 1 (as text)
environment: azureml:<R-ENVIRONMENT-NAME>@latest
compute: azureml:<COMPUTE-CLUSTER-OR-INSTANCE-NAME>
experiment_name: <NAME-OF-EXPERIMENT>
description: <DESCRIPTION>

Übermitteln des Auftrags

In den folgenden Befehlen in diesem Abschnitt müssen Sie möglicherweise Folgendes wissen:

  • Der Name des Azure Machine Learning-Arbeitsbereichs
  • Den Namen der Ressourcengruppe, in der sich der Arbeitsbereich befindet
  • Das Abonnement, in dem sich der Arbeitsbereich befindet

Sie finden diese Werte in Azure Machine Learning Studio:

  1. Melden Sie sich an, und öffnen Sie Ihren Arbeitsbereich.
  2. Wählen Sie auf der oben rechts angezeigten Azure Machine Learning Studio-Symbolleiste den Namen Ihres Arbeitsbereichs aus.
  3. Sie können die Werte aus dem angezeigten Abschnitt kopieren.

Screenshot: Suchen Sie nach den Werten, die in Ihrem CLI-Befehl verwendet werden sollen.

Führen Sie die folgenden Befehle in einem Terminalfenster aus, um den Auftrag zu übermitteln:

  1. Ändern Sie Verzeichnisse in r-job-azureml.

    cd r-job-azureml
    
  2. Melden Sie sich bei Azure an. Wenn Sie dies über eine Azure Machine Learning-Compute-Instanz ausführen, verwenden Sie Folgendes:

    az login --identity
    

    Wenn Sie keine Compute-Instanz verwenden, lassen Sie --identity weg, und folgen Sie der Aufforderung, ein Browserfenster zur Authentifizierung zu öffnen.

  3. Stellen Sie sicher, dass Sie über die neuesten Versionen der CLI und der Erweiterung ml verfügen:

    az upgrade
    
  4. Wenn Sie über mehrere Azure-Abonnements verfügen, legen Sie das aktive Abonnement auf das Abonnement fest, das Sie für Ihren Arbeitsbereich verwenden. (Sie können diesen Schritt überspringen, wenn Sie nur Zugriff auf ein einzelnes Abonnement haben.) Ersetzen Sie <SUBSCRIPTION-NAME> durch Ihren Abonnementnamen. Entfernen Sie auch die Klammern <>.

    az account set --subscription "<SUBSCRIPTION-NAME>"
    
  5. Verwenden Sie jetzt die CLI, um den Auftrag zu übermitteln. Wenn Sie diesen Schritt für eine Compute-Instanz in Ihrem Arbeitsbereich ausführen, können Sie Umgebungsvariablen für den Namen Ihres Arbeitsbereichs und die Ressourcengruppe nutzen, wie im folgenden Code gezeigt. Wenn Sie keine Compute-Instanz verwenden, ersetzen Sie diese Werte durch den Namen Ihres Arbeitsbereichs und Ihre Ressourcengruppe.

    az ml job create -f job.yml  --workspace-name $CI_WORKSPACE --resource-group $CI_RESOURCE_GROUP
    

Nachdem Sie den Auftrag übermittelt haben, können Sie den Status und die Ergebnisse in Studio überprüfen:

  1. Melden Sie sich bei Azure Machine Learning Studio an.
  2. Wählen Sie Ihren Arbeitsbereich aus, wenn er noch nicht geladen ist.
  3. Wählen Sie im linken Navigationsbereich Aufträge aus.
  4. Wählen Sie den Experimentnamen aus, den Sie zum Trainieren Ihres Modells verwendet haben.
  5. Wählen Sie den Anzeigenamen des Auftrags aus, um Details und Artefakte des Auftrags anzuzeigen. Dazu gehören Metriken, Images, untergeordnete Aufträge, Ausgaben, Protokolle und Code, der im Auftrag verwendet wird.

Registrieren des Modells

Sobald der Trainingsauftrag abgeschlossen ist, registrieren Sie Ihr Modell, falls Sie es bereitstellen möchten. Beginnen Sie in Studio auf der Seite mit Ihren Auftragsdetails.

  1. Wenn Ihr Auftrag abgeschlossen ist, wählen Sie Ausgaben + Protokolle aus, um die Ausgaben des Auftrags anzuzeigen.

  2. Öffnen Sie den Ordner models, um zu überprüfen, ob crate.bin und MLmodel vorhanden sind. Falls nicht, überprüfen Sie die Protokolle, um festzustellen, ob ein Fehler aufgetreten ist.

  3. Wählen Sie auf der Symbolleiste oben + Modell registrieren aus.

    Screenshot: Abschnitt „Auftrag“ in Studio mit geöffnetem Abschnitt „Ausgaben“

  4. Verwenden Sie den MLflow-Modelltyp nicht, obwohl er erkannt wird. Ändern Sie Modelltyp vom standardmäßigen MLflow-Typ in nicht angegeben. Wenn Sie ihn als MLflow belassen, wird ein Fehler generiert.

  5. Wählen Sie für Auftragsausgabe die Option models aus. Das ist der Ordner, der das Modell enthält.

  6. Wählen Sie Weiter aus.

  7. Geben Sie den Namen an, den Sie für das Modell verwenden möchten. Fügen Sie bei Bedarf Beschreibung, Version und Tags hinzu.

  8. Wählen Sie Weiter aus.

  9. Überprüfe die Informationen.

  10. Wählen Sie Registrieren.

Oben auf der Seite wird eine Bestätigung angezeigt, dass das Modell registriert wurde. Die Bestätigung sieht wie folgt aus:

Screenshot: Beispiel für eine erfolgreiche Registrierung

Wählen Sie Klicken Sie hier, um zu diesem Modell zu wechseln. aus, wenn Sie die Details zum registrierten Modell anzeigen möchten.

Nächste Schritte

Nachdem Sie nun über ein registriertes Modell verfügen, informieren Sie sich über das Bereitstellen eines R-Modells in einem Onlineendpunkt (Echtzeit).