MLflow-modell som hanterar Azure Databricks

Viktigt

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Med MLflow-modellen kan du vara värd för Machine Learning-modeller från modell registret som REST-slutpunkter som uppdateras automatiskt baserat på tillgängligheten för modell versioner och deras steg.

När du aktiverar modell hantering för en viss registrerad modell skapar Azure Databricks automatiskt ett unikt kluster med en nod för modellen och distribuerar alla icke-arkiverade versioner av modellen i klustret. Azure Databricks startar om klustret om ett fel inträffar, och avslutar klustret när du inaktiverar modell hantering för modellen. Modell som hanterar automatisk synkronisering med modell registret och distribuerar nya registrerade modell versioner. Distribuerade modell versioner kan frågas med standard REST API-begäran. Azure Databricks autentiserar begär anden till modellen med standardautentiseringen.

Även om den här tjänsten är i för hands version rekommenderar Databricks användning för låg genom strömning och icke-kritiska program. Mål data flödet är 20 frågor per sekund och mål tillgängligheten är 99,5%, men ingen garanti görs på något av dem. Det finns dessutom en storleks gräns på 16 MB per begäran i nytto lasten.

Varje modell version distribueras med MLflow modell distribution och körs i en Conda-miljö som anges av dess beroenden.

Anteckning

Klustret upprätthålls så länge betjäna är aktiverat, även om det inte finns någon aktiv modell version. Om du vill avsluta servar klustret inaktiverar du modell för den registrerade modellen.

Krav

MLflow Model Serving är tillgängligt för Python MLflow-modeller. Alla modell beroenden måste deklareras i Conda-miljön.

Aktivera och inaktivera modell betjäning

Du aktiverar en modell för att betjäna från den registrerade modell sidan.

  1. Klicka på fliken servar . Om modellen inte redan är aktive rad för att betjäna visas knappen Aktivera betjäning .
  2. Klicka på Aktivera betjäning. Fliken servar visas med statusen väntande. Efter några minuter ändras statusen till klar.

Om du vill inaktivera en modell för att betjäna det klickar du på stoppa.

Modell som hanterar från modell registret

Du aktiverar betjäning av en registrerad modell i användar gränssnittet för modell registret.

Aktivera betjäning

Modell versions-URI: er

Varje distribuerad modell version tilldelas en eller flera unika URI: er. Varje modell version tilldelas till minst en URI-konstruerad på följande sätt:

<databricks-instance>/model/<registered-model-name>/<model-version>/invocations

Om du till exempel vill anropa version 1 av en modell som registrerats som iris-classifier använder du denna URI:

https://<databricks-instance>/model/iris-classifier/1/invocations

Du kan också anropa en modell version med hjälp av dess steg. Om t. ex. version 1 är i produktions fasen kan den också användas med denna URI:

https://<databricks-instance>/model/iris-classifier/Production/invocations

Listan över tillgängliga modell-URI: er visas överst på fliken modell versioner på sidan servar.

Hantera förtjänade versioner

Alla aktiva (icke-arkiverade) modell versioner distribueras, och du kan fråga dem med hjälp av URI: er. Azure Databricks distribuerar automatiskt nya modell versioner när de är registrerade och tar automatiskt bort gamla versioner när de arkiveras.

Anteckning

Alla distribuerade versioner av en registrerad modell delar samma kluster.

Hantera åtkomst rättigheter för modell

Åtkomst behörigheterna för modellen ärvs från modell registret. Att aktivera eller inaktivera funktionen för att betjäna kräver behörighet att hantera för den registrerade modellen. Alla med Läs behörighet kan visa alla distribuerade versioner.

Modell versioner för poängen som distribueras

Om du vill ange en distribuerad modell kan du använda användar gränssnittet eller skicka en REST API begäran till modell-URI: n.

Poäng via användar gränssnitt

Detta är det enklaste och snabbaste sättet att testa modellen. Du kan infoga data för modell indata i JSON-format och klicka på skicka begäran. Om modellen har loggats med ett inmatat exempel (som visas i bilden ovan) klickar du på Läs in exempel för att läsa in exemplet.

Poäng via REST API begäran

Du kan skicka en poängsättnings förfrågan via REST API med standard-Databricks-autentisering. I exemplen nedan demonstreras autentisering med hjälp av en personlig åtkomsttoken.

MODEL_VERSION_URI https://<databricks-instance>/model/iris-classifier/Production/invocations <databricks-instance> Här följer några exempel på ett som liknar (där är namnet på din Databricks-instans) och en Databricks REST API token DATABRICKS_API_TOKEN . Här följer några exempel på fragment som du kan använda för att fråga en hanterad modell:

Bash

curl -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
  -H 'Content-Type: application/json; format=pandas-records' \
  -d '[
    {
      "sepal_length": 5.1,
      "sepal_width": 3.5,
      "petal_length": 1.4,
      "petal_width": 0.2
    }
  ]'

Python

import requests

def score_model(model_uri, databricks_token, data):
  headers = {
    "Authorization": f"Bearer {databricks_token}",
    "Content-Type": "application/json; format=pandas-records",
  }
  data_json = data if isinstance(data, list) else data.to_dict(orient="records")
  response = requests.request(method='POST', headers=headers, url=model_uri, json=data_json)
  if response.status_code != 200:
      raise Exception(f"Request failed with status {response.status_code}, {response.text}")
  return response.json()

data = [{
  "sepal_length": 5.1,
  "sepal_width": 3.5,
  "petal_length": 1.4,
  "petal_width": 0.2
}]
score_model(MODEL_VERSION_URI, DATABRICKS_API_TOKEN, data)

# can also score DataFrames
import pandas as pd
score_model(MODEL_VERSION_URI, DATABRICKS_API_TOKEN, pd.DataFrame(data))

PowerBI

Du kan räkna med en data uppsättning i Power BI Desktop med hjälp av följande steg:

  1. Öppna data uppsättning som du vill räkna.

  2. Gå till transformera data.

  3. Högerklicka på den vänstra panelen och välj Skapa ny fråga.

  4. Gå till visa > avancerad redigerare.

  5. Ersätt frågans brödtext med kodfragmentet nedan efter att ha fyllt i lämplig DATABRICKS_API_TOKEN och MODEL_VERSION_URI .

    (dataset as table ) as table =>
    let
      call_predict = (dataset as table ) as list =>
      let
        apiToken = DATABRICKS_API_TOKEN,
        modelUri = MODEL_VERSION_URI,
        responseList = Json.Document(Web.Contents(modelUri,
          [
            Headers = [
              #"Content-Type" = "application/json; format=pandas-records",
              #"Authorization" = Text.Format("Bearer #{0}", {apiToken})
            ],
            Content = Json.FromValue(dataset)
          ]
        ))
      in
        responseList,
      predictionList = List.Combine(List.Transform(Table.Split(dataset, 256), (x) => call_predict(x))),
      predictionsTable = Table.FromList(predictionList, (x) => {x}, {"Prediction"}),
      datasetWithPrediction = Table.Join(
        Table.AddIndexColumn(predictionsTable, "index"), "index",
        Table.AddIndexColumn(dataset, "index"), "index")
    in
      datasetWithPrediction
    
  6. Namnge frågan med önskat modell namn.

  7. Öppna den avancerade Frågeredigeraren för din data uppsättning och tillämpa modell funktionen.

Mer information om indata-format som accepteras av servern (till exempel Pandas Split-orienterad form) finns i MLflow-dokumentationen.

Övervaka hanterade modeller

Sidan betjänar visar status indikatorer för att betjäna klustret samt enskilda modell versioner. Dessutom kan du använda följande för att få ytterligare information:

  • Om du vill kontrol lera status för det servar klustret använder du fliken modell händelser som visar en lista över alla betjänande händelser för den här modellen.
  • Om du vill kontrol lera statusen för en enda modell version använder du flikarna loggar eller versions händelser på fliken modell versioner .

Versions status

Modell händelser