Aracılığıyla paylaş


Özel modeller için sorgu sunma uç noktaları

Bu makalede, sunulan modeliniz için puanlama isteklerini biçimlendirmeyi ve bu istekleri model sunum uç noktasına göndermeyi öğrenin. Bu kılavuz, Databricks'in MLflow biçiminde paketlenmiş geleneksel ML modelleri veya özelleştirilmiş Python modelleri olarak tanımladığı özel modelleri sunmayla ilgilidir. Bunlar Unity Kataloğu'na veya çalışma alanı modeli kayıt defterine kaydedilebilir. Örnek olarak scikit-learn, XGBoost, PyTorch ve Hugging Face transformatör modelleri verilebilir. Bu işlevsellik ve desteklenen model kategorileri hakkında daha fazla bilgi için bkz . Azure Databricks ile model sunma.

Yapay zeka ve LLM iş yüklerine yönelik sorgu istekleri için bkz . Sorgu temeli modelleri.

Gereksinim -leri

  • nokta sunan bir model.
  • MLflow Dağıtım SDK'sı için MLflow 2.9 veya üzeri gereklidir.
  • kabul edilen biçimde puanlama isteği.
  • REST API veya MLflow Dağıtım SDK'sı aracılığıyla puanlama isteği göndermek için Databricks API belirtecine sahip olmanız gerekir.

Önemli

Databricks, üretim senaryoları için en iyi güvenlik uygulaması olarak üretim sırasında kimlik doğrulaması için makineden makineye OAuth belirteçleri kullanmanızı önerir.

Databricks, test ve geliştirme için çalışma alanı kullanıcıları yerine hizmet sorumlularına ait bir kişisel erişim belirteci kullanılmasını önerir. Hizmet sorumlularına yönelik belirteçler oluşturmak için bkz . Hizmet sorumlusu için belirteçleri yönetme.

Yöntemleri ve örnekleri sorgulama

Databricks Model Sunma, sunulan modellere puanlama istekleri göndermek için aşağıdaki seçenekleri sağlar:

Yöntem Ayrıntılar
Kullanıcı arabirimi sunma Databricks çalışma alanınızdaki Sunum uç noktası sayfasından Sorguuç noktası'nı seçin. JSON biçim modeli giriş verilerini ekleyin ve İstek Gönder'e tıklayın. Modelin günlüğe kaydedilmiş bir giriş örneği varsa, yüklemek için Örneği Göster'i kullanın.
REST API REST API kullanarak modeli çağırın ve sorgular. Ayrıntılar için post /serving-endpoints/{name}/invocations bölümüne bakın. Birden çok model sunan uç noktalara yönelik istekleri puanlama için bkz . Bir uç noktanın arkasındaki tek tek modelleri sorgulama.
MLflow Dağıtımları SDK'sı Modeli sorgulamak için MLflow Dağıtımları SDK'sının predict() işlevini kullanın.
SQL işlevi SQL işlevini kullanarak model çıkarımını doğrudan SQL'den çağırın ai_query . Bkz. ai_query() ile sunulan modeli sorgulama.

Pandas DataFrame puanlama örneği

Aşağıdaki örnekte, gibi olduğu MODEL_VERSION_URI varsayılır; burada <databricks-instance> Databricks örneğinizin adı ve adlı DATABRICKS_API_TOKENbir Databricks REST API belirteci bulunur.https://<databricks-instance>/model/iris-classifier/Production/invocations

Bkz . Desteklenen puanlama biçimleri.

Rest API

Veri çerçevesi bölünmüş giriş biçimini kabul eden bir modeli puanlama.

curl -X POST -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
  -H 'Content-Type: application/json' \
  -d '{"dataframe_split": [{
     "columns": ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"],
     "data": [[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2]]
    }]
  }'

Tensor girişlerini kabul eden bir modeli puanlama. Tensor girişleri, TensorFlow Hizmeti'nin API belgelerinde açıklandığı gibi biçimlendirilmelidir.

curl -X POST -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
   -H 'Content-Type: application/json' \
   -d '{"inputs": [[5.1, 3.5, 1.4, 0.2]]}'

Mlflow dağıtımları sdk'sı

Önemli

Aşağıdaki örnek, MLflow Dağıtımları SDK'sından API'yi kullanırpredict().


import mlflow.deployments

export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

response = client.predict(
            endpoint="test-model-endpoint",
            inputs={"dataframe_split": {
                    "index": [0, 1],
                    "columns": ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"],
                    "data": [[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2]]
                    }
                }
           )

SQL

Önemli

Aşağıdaki örnek, ai_query yerleşik SQL işlevini kullanır. Bu işlev Genel Önizlemedir ve tanım değişebilir. Bkz. ai_query() ile sunulan modeli sorgulama.

Aşağıdaki örnek, veri kümesiyle text uç noktanın sentiment-analysis arkasındaki modeli sorgular ve isteğin dönüş türünü belirtir.

SELECT text, ai_query(
    "sentiment-analysis",
    text,
    returnType => "STRUCT<label:STRING, score:DOUBLE>"
  ) AS predict
FROM
  catalog.schema.customer_reviews

Powerbi

Aşağıdaki adımları kullanarak Power BI Desktop'ta bir veri kümesini puanlayabilirsiniz:

  1. Puanlamak istediğiniz veri kümesini açın.

  2. Verileri Dönüştür'e gidin.

  3. Sol panele sağ tıklayın ve Yeni Sorgu Oluştur'u seçin.

  4. Gelişmiş Düzenleyici Görüntüle'ye >gidin.

  5. Uygun DATABRICKS_API_TOKEN ve MODEL_VERSION_URIdeğerini doldurduktan sonra sorgu gövdesini aşağıdaki kod parçacığıyla değiştirin.

    (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",
              #"Authorization" = Text.Format("Bearer #{0}", {apiToken})
            ],
            Content = {"dataframe_records": 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. Sorguyu istediğiniz model adıyla adlandırın.

  7. Veri kümeniz için gelişmiş sorgu düzenleyicisini açın ve model işlevini uygulayın.

Tensor giriş örneği

Aşağıdaki örnek, tensor girişlerini kabul eden bir modeli puanlar. Tensor girişleri, TensorFlow Hizmeti'nin API belgelerinde açıklandığı gibi biçimlendirilmelidir. Bu örnekte, gibi https://<databricks-instance>/model/iris-classifier/Production/invocationsbir MODEL_VERSION_URI olduğu varsayılır; burada <databricks-instance> Databricks örneğinizin adı ve adlı DATABRICKS_API_TOKENbir Databricks REST API belirteci bulunur.

curl -X POST -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
    -H 'Content-Type: application/json' \
    -d '{"inputs": [[5.1, 3.5, 1.4, 0.2]]}'

Desteklenen puanlama biçimleri

Özel modeller için Model Sunma, Pandas DataFrame veya Tensor girişinde puanlama isteklerini destekler.

Pandas DataFrame

İstekler, desteklenen anahtarlardan birine ve giriş biçimine karşılık gelen bir JSON nesnesine sahip bir JSON serileştirilmiş Pandas DataFrame oluşturularak gönderilmelidir.

  • (Önerilen)dataframe_split biçimi, yönlendirmedeki JSON serileştirilmiş Pandas DataFrame'dir split .

    {
      "dataframe_split": {
        "index": [0, 1],
        "columns": ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"],
        "data": [[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2]]
      }
    }
    
  • dataframe_records yönlendirmede JSON serileştirilmiş Pandas DataFrame'dir records .

    Not

    Bu biçim, sütun sıralamanın korunmasını garanti etmez ve split biçim, biçim yerine records tercih edilir.

    {
      "dataframe_records": [
      {
        "sepal length (cm)": 5.1,
        "sepal width (cm)": 3.5,
        "petal length (cm)": 1.4,
        "petal width (cm)": 0.2
      },
      {
        "sepal length (cm)": 4.9,
        "sepal width (cm)": 3,
        "petal length (cm)": 1.4,
        "petal width (cm)": 0.2
      },
      {
        "sepal length (cm)": 4.7,
        "sepal width (cm)": 3.2,
        "petal length (cm)": 1.3,
        "petal width (cm)": 0.2
      }
      ]
    }
    

Uç noktadan gelen yanıt, modelinizin JSON ile seri hale getirilmiş ve bir predictions anahtara sarmalanmış çıkışını içerir.

{
  "predictions": [0,1,1,1,0]
}

Tensor girişi

Modeliniz TensorFlow veya Pytorch modeli gibi tensorlar beklediğinde, istek göndermek için desteklenen iki biçim seçeneği vardır: instances ve inputs.

Satır başına birden çok adlandırılmış tensor'larınız varsa, her satır için her tensordan birine sahip olmanız gerekir.

  • instances , satır biçiminde tensor kabul eden tensor tabanlı bir biçimdir. Tüm giriş tensorları aynı 0. boyuta sahipse bu biçimi kullanın. Kavramsal olarak, örnek listesindeki her tensor, modelin tam giriş tensorunu oluşturmak üzere listenin geri kalanında aynı adı taşıyan diğer tensorlarla birleştirilebilir ve bu da yalnızca tüm tensorların aynı 0. boyuta sahip olması durumunda mümkün olabilir.

    {"instances": [ 1, 2, 3 ]}
    

    Aşağıdaki örnekte birden çok adlandırılmış tensor belirtme gösterilmektedir.

    {
    "instances": [
      {
       "t1": "a",
       "t2": [1, 2, 3, 4, 5],
       "t3": [[1, 2], [3, 4], [5, 6]]
      },
      {
       "t1": "b",
       "t2": [6, 7, 8, 9, 10],
       "t3": [[7, 8], [9, 10], [11, 12]]
      }
    ]
    }
    
  • inputs sütun biçiminde tensor içeren sorgular gönderin. Ve değerinden farklı sayıda (3) t3t1 tensor örneği t2 olduğundan bu istek farklıdır, bu nedenle bu girişi biçiminde instances temsil etmek mümkün değildir.

    {
    "inputs": {
      "t1": ["a", "b"],
      "t2": [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]],
      "t3": [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]]
    }
    }
    

Uç noktadan gelen yanıt aşağıdaki biçimdedir.

{
  "predictions": [0,1,1,1,0]
}

Not defteri örneği

Python modeliyle Model Sunma uç noktanızı test etme örneği için aşağıdaki not defterine bakın:

Test Modeli Sunma uç nokta not defteri

Not defterini alma

Ek kaynaklar