Share via


Köra MLflow-projekt på Azure Databricks

Ett MLflow-projekt är ett format för att paketera datavetenskapskod på ett återanvändbart och reproducerbart sätt. MLflow Projects-komponenten innehåller ett API och kommandoradsverktyg för att köra projekt, som också integreras med komponenten Spårning för att automatiskt registrera parametrarna och git-incheckningen av källkoden för reproducerbarhet.

I den här artikeln beskrivs formatet för ett MLflow-projekt och hur du fjärrkör ett MLflow-projekt i Azure Databricks-kluster med hjälp av MLflow CLI, vilket gör det enkelt att skala datavetenskapskoden lodrätt.

MLflow-projektformat

Alla lokala kataloger eller Git-lagringsplatser kan behandlas som ett MLflow-projekt. Följande konventioner definierar ett projekt:

  • Projektets namn är namnet på katalogen.
  • Programvarumiljön anges i python_env.yaml, om den finns. Om det inte finns någon python_env.yaml fil använder MLflow en virtualenv-miljö som endast innehåller Python (specifikt den senaste Python som är tillgänglig för virtualenv) när projektet körs.
  • Alla .py eller .sh filer i projektet kan vara en startpunkt, utan att några parametrar uttryckligen har deklarerats. När du kör ett sådant kommando med en uppsättning parametrar skickar MLflow varje parameter på kommandoraden med hjälp av --key <value> syntax.

Du anger fler alternativ genom att lägga till en MLproject-fil, som är en textfil i YAML-syntaxen. Ett exempel på en MLproject-fil ser ut så här:

name: My Project

python_env: python_env.yaml

entry_points:
  main:
    parameters:
      data_file: path
      regularization: {type: float, default: 0.1}
    command: "python train.py -r {regularization} {data_file}"
  validate:
    parameters:
      data_file: path
    command: "python validate.py {data_file}"

Köra ett MLflow-projekt

Om du vill köra ett MLflow-projekt på ett Azure Databricks-kluster på standardarbetsytan använder du kommandot:

mlflow run <uri> -b databricks --backend-config <json-new-cluster-spec>

där <uri> är en Git-lagringsplats-URI eller mapp som innehåller ett MLflow-projekt och <json-new-cluster-spec> är ett JSON-dokument som innehåller en new_cluster struktur. Git-URI:n ska vara av formatet: https://github.com/<repo>#<project-folder>.

Ett exempel på klusterspecifikation är:

{
  "spark_version": "7.3.x-scala2.12",
  "num_workers": 1,
  "node_type_id": "Standard_DS3_v2"
}

Om du behöver installera bibliotek på arbetaren använder du formatet "klusterspecifikation". Observera att Python-hjulfiler måste laddas upp till DBFS och anges som pypi beroenden. Till exempel:

{
  "new_cluster": {
    "spark_version": "7.3.x-scala2.12",
    "num_workers": 1,
    "node_type_id": "Standard_DS3_v2"
  },
  "libraries": [
    {
      "pypi": {
        "package": "tensorflow"
      }
    },
    {
      "pypi": {
         "package": "/dbfs/path_to_my_lib.whl"
      }
    }
  ]
}

Viktigt!

  • .egg och .jar beroenden stöds inte för MLflow-projekt.
  • Körning för MLflow-projekt med Docker-miljöer stöds inte.
  • Du måste använda en ny klusterspecifikation när du kör ett MLflow-projekt på Databricks. Det går inte att köra projekt mot befintliga kluster.

Använda SparkR

För att kunna använda SparkR i en MLflow Project-körning måste projektkoden först installera och importera SparkR på följande sätt:

if (file.exists("/databricks/spark/R/pkg")) {
    install.packages("/databricks/spark/R/pkg", repos = NULL)
} else {
    install.packages("SparkR")
}

library(SparkR)

Projektet kan sedan initiera en SparkR-session och använda SparkR som vanligt:

sparkR.session()
...

Exempel

Det här exemplet visar hur du skapar ett experiment, kör MLflow-självstudieprojektet i ett Azure Databricks-kluster, visar jobbkörningens utdata och visar körningen i experimentet.

Krav

  1. Installera MLflow med .pip install mlflow
  2. Installera och konfigurera Databricks CLI. Databricks CLI-autentiseringsmekanismen krävs för att köra jobb i ett Azure Databricks-kluster.

Steg 1: Skapa ett experiment

  1. På arbetsytan väljer du Skapa > MLflow-experiment.

  2. I fältet Namn anger du Tutorial.

  3. Klicka på Skapa. Observera experiment-ID:t. I det här exemplet är det 14622565.

    Experiment-ID

Steg 2: Kör MLflow-självstudieprojektet

Följande steg konfigurerar MLFLOW_TRACKING_URI miljövariabeln och kör projektet, registrerar träningsparametrarna, måtten och den tränade modellen till experimentet som noterades i föregående steg:

  1. MLFLOW_TRACKING_URI Ange miljövariabeln till Azure Databricks-arbetsytan.

    export MLFLOW_TRACKING_URI=databricks
    
  2. Kör MLflow-självstudieprojektet och träna en vinmodell. Ersätt <experiment-id> med experiment-ID:t som du antecknade i föregående steg.

    mlflow run https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine -b databricks --backend-config cluster-spec.json --experiment-id <experiment-id>
    
    === Fetching project from https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine into /var/folders/kc/l20y4txd5w3_xrdhw6cnz1080000gp/T/tmpbct_5g8u ===
    === Uploading project to DBFS path /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ===
    === Finished uploading project to /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ===
    === Running entry point main of project https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine on Databricks ===
    === Launched MLflow run as Databricks job run with ID 8651121. Getting run status page URL... ===
    === Check the run's status at https://<databricks-instance>#job/<job-id>/run/1 ===
    
  3. Kopiera URL:en https://<databricks-instance>#job/<job-id>/run/1 på den sista raden i MLflow-körningens utdata.

Steg 3: Visa Azure Databricks-jobbkörningen

  1. Öppna url:en som du kopierade i föregående steg i en webbläsare för att visa azure Databricks-jobbkörningens utdata:

    Utdata för jobbkörning

Steg 4: Visa experiment- och MLflow-körningsinformation

  1. Gå till experimentet på din Azure Databricks-arbetsyta.

    Gå till experiment

  2. Klicka på experimentet.

    Visa experiment

  3. Om du vill visa körningsinformation klickar du på en länk i kolumnen Datum.

    Körningsinformation

Du kan visa loggar från körningen genom att klicka på länken Loggar i fältet Jobbutdata.

Resurser

Exempel på MLflow-projekt finns i MLflow-appbiblioteket, som innehåller en lagringsplats med färdiga projekt som gör det enkelt att inkludera ML-funktioner i koden.