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ågonpython_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
- Installera MLflow med .
pip install mlflow
- 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
På arbetsytan väljer du Skapa > MLflow-experiment.
I fältet Namn anger du
Tutorial
.Klicka på Skapa. Observera experiment-ID:t. I det här exemplet är det
14622565
.
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:
MLFLOW_TRACKING_URI
Ange miljövariabeln till Azure Databricks-arbetsytan.export MLFLOW_TRACKING_URI=databricks
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 ===
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
Öppna url:en som du kopierade i föregående steg i en webbläsare för att visa azure Databricks-jobbkörningens utdata:
Steg 4: Visa experiment- och MLflow-körningsinformation
Gå till experimentet på din Azure Databricks-arbetsyta.
Klicka på experimentet.
Om du vill visa körningsinformation klickar du på en länk i kolumnen Datum.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för