Aracılığıyla paylaş


Model sunma uç noktalarını yönetme

Bu makalede, Sunum Kullanıcı Arabirimi ve REST API'sini kullanarak model sunum uç noktalarının nasıl yönetileceğini açıklar. Bkz . REST API başvurusunda uç noktaları sunma.

Model sunma uç noktaları oluşturmak için aşağıdakilerden birini kullanın:

Model uç noktasının durumunu alma

Sunum kullanıcı arabiriminde, uç noktanızın ayrıntılar sayfasının üst kısmındaki Sunum uç noktası durumu göstergesinden uç noktanın durumunu de kontrol edebilirsiniz.

REST API veya MLflow Dağıtımları SDK'sını kullanarak program aracılığıyla uç noktanın durumunu ve ayrıntılarını denetlemeyi kullanabilirsiniz

REST API

GET /api/2.0/serving-endpoints/{name}

Aşağıdaki örnek, model kayıt defterinde kayıtlı olan modelin ilk sürümüne ads1 hizmet veren bir uç noktanın ayrıntılarını alır. Unity Kataloğu'ndan bir model belirtmek için, üst katalog ve şema gibi catalog.schema.example-modeltam model adını sağlayın.

Aşağıdaki örnek yanıtta state.ready , alan "HAZIR" şeklindedir ve bu da uç noktanın trafiği almaya hazır olduğu anlamına gelir. Güncelleştirme state.update_state başarıyla tamamlandığından alan ve NOT_UPDATINGpending_config artık döndürülmüyor.

{
  "name": "workspace-model-endpoint",
  "creator": "customer@example.com",
  "creation_timestamp": 1666829055000,
  "last_updated_timestamp": 1666829055000,
  "state": {
    "ready": "READY",
    "update_state": "NOT_UPDATING"
  },
  "config": {
    "served_entities": [
      {
        "name": "ads1-1",
        "entity_name": "ads1",
        "entity_version": "1",
        "workload_size": "Small",
        "scale_to_zero_enabled": false,
        "state": {
          "deployment": "DEPLOYMENT_READY",
          "deployment_state_message": ""
        },
        "creator": "customer@example.com",
        "creation_timestamp": 1666829055000
      }
    ],
    "traffic_config": {
      "routes": [
        {
          "served_model_name": "ads1-1",
          "traffic_percentage": 100
        }
      ]
    },
    "config_version": 1
  },
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "permission_level": "CAN_MANAGE"
}

MLflow Dağıtımları SDK'sı

from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="chat")
assert endpoint == {
    "name": "chat",
    "creator": "alice@company.com",
    "creation_timestamp": 0,
    "last_updated_timestamp": 0,
    "state": {...},
    "config": {...},
    "tags": [...],
    "id": "88fd3f75a0d24b0380ddc40484d7a31b",
}

Model sunma uç noktasını silme

Modelin sunulmasını devre dışı bırakmak için, hizmet veren uç noktayı silebilirsiniz.

Hizmet Sunma kullanıcı arabirimindeki uç noktanın ayrıntılar sayfasından bir uç noktayı silebilirsiniz.

  1. Kenar çubuğundaKi Hizmet'e tıklayın.
  2. Silmek istediğiniz uç noktaya tıklayın.
  3. Üstteki kebap menüsüne tıklayın ve Sil'i seçin.

Alternatif olarak, REST API veya MLflow Dağıtımları SDK'sını kullanarak program aracılığıyla bir sunum uç noktasını silebilirsiniz

REST API

DELETE /api/2.0/serving-endpoints/{name}

MLflow Dağıtımları SDK'sı

from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")

Model sunum uç noktanızda hata ayıklama

Uç noktayla ilgili sorunlarda hata ayıklamak için şunları getirebilirsiniz:

  • Model sunucusu kapsayıcısı derleme günlükleri
  • Model sunucusu günlükleri

Bu günlüklere Günlükler sekmesindeki Uç Noktalar kullanıcı arabiriminden de erişilebilir.

Sunulan bir modelin derleme günlükleri için aşağıdaki isteği kullanabilirsiniz:


GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
  “config_version”: 1  // optional
}

Bir hizmet modelinin model sunucusu günlükleri için aşağıdaki isteği kullanabilirsiniz:


GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs

{
  “config_version”: 1  // optional
}

Model sunum uç noktanızdaki izinleri yönetme

İzinleri değiştirmek için hizmet sunma uç noktasında en azından CAN MANAGE iznine sahip olmanız gerekir. İzin düzeyleri hakkında daha fazla bilgi için bkz . Uç nokta ACL'lerini sunma.

Sunum uç noktası üzerindeki izinlerin listesini alın.

databricks permissions get servingendpoints <endpoint-id>

Kullanıcıya jsmith@example.com sunum uç noktasında CAN QUERY izni verin.

databricks permissions update servingendpoints <endpoint-id> --json '{
  "access_control_list": [
    {
      "user_name": "jsmith@example.com",
      "permission_level": "CAN_QUERY"
    }
  ]
}'

İzinler API'sini kullanarak uç nokta izinlerinin sunulmasını da değiştirebilirsiniz.

Uç nokta şeması sunan bir model alma

Önemli

Uç nokta sorgu şemalarını sunma desteği Genel Önizleme aşamasındadır. Bu işlev Model Sunma bölgelerinde kullanılabilir.

Sunum uç noktası sorgu şeması, JSON biçiminde standart OpenAPI belirtimi kullanılarak sunulan uç noktanın resmi bir açıklamasıdır. Uç nokta yolu, istek ve yanıt gövdesi biçimi gibi uç noktayı sorgulama ayrıntıları ve her alan için veri türü dahil olmak üzere uç nokta hakkında bilgi içerir. Bu bilgiler, yeniden üretilebilirlik senaryolarında veya uç nokta hakkında bilgiye ihtiyacınız olduğunda yararlı olabilir, ancak özgün uç nokta oluşturucusu veya sahibi değildir.

Hizmet veren modelin uç nokta şemasını almak için, sunulan modelin günlüğe kaydedilmiş bir model imzası olması ve uç noktanın bir durumda olması READY gerekir.

Aşağıdaki örnekler, REST API kullanarak uç nokta şeması sunan modelin program aracılığıyla nasıl alınduğunu gösterir. Uç nokta şemalarını sunan özellik için bkz . Databricks Özellik Sunma nedir?.

API tarafından döndürülen şema, OpenAPI belirtimini izleyen bir JSON nesnesi biçimindedir.


ACCESS_TOKEN="<endpoint-token>"
ENDPOINT_NAME="<endpoint name>"

curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"

Şema yanıtı ayrıntıları

Yanıt, genellikle , infoservers ve pathsgibi openapialanlar da dahil olmak üzere JSON biçiminde bir OpenAPI belirtimidir. Şema yanıtı bir JSON nesnesi olduğundan, bunu ortak programlama dillerini kullanarak ayrıştırabilir ve üçüncü taraf araçları kullanarak belirtimden istemci kodu oluşturabilirsiniz. OpenAPI belirtimini Swagger Editor gibi üçüncü taraf araçları kullanarak da görselleştirebilirsiniz.

Yanıtın ana alanları şunlardır:

  • alanında info.title , sunum uç noktasının adı gösterilir.
  • Alanı servers her zaman bir nesne içerir; genellikle url uç noktanın temel URL'si olan alan.
  • Yanıttaki paths nesne, bir uç nokta için desteklenen tüm yolları içerir. Nesnedeki anahtarlar yol URL'leridir. Her path biri birden çok giriş biçimi destekleyebilir. Bu girişler alanda oneOf listelenir.

Aşağıda örnek bir uç nokta şeması yanıtı verilmiştir:


{
  "openapi": "3.1.0",
  "info": {
    "title": "example-endpoint",
    "version": "2"
  },
  "servers": [{ "url": "https://example.databricks.com/serving-endpoints/example-endpoint"}],
  "paths": {
    "/served-models/vanilla_simple_model-2/invocations": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "dataframe_split": {
                        "type": "object",
                        "properties": {
                          "columns": {
                            "description": "required fields: int_col",
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "int_col",
                                "float_col",
                                "string_col"
                              ]
                            }
                          },
                          "data": {
                            "type": "array",
                            "items": {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "integer",
                                  "format": "int64"
                                },
                                {
                                  "type": "number",
                                  "format": "double"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          }
                        }
                      },
                      "params": {
                        "type": "object",
                        "properties": {
                          "sentiment": {
                            "type": "number",
                            "format": "double",
                            "default": "0.5"
                          }
                        }
                      }
                    },
                    "examples": [
                      {
                        "columns": [
                          "int_col",
                          "float_col",
                          "string_col"
                        ],
                        "data": [
                          [
                            3,
                            10.4,
                            "abc"
                          ],
                          [
                            2,
                            20.4,
                            "xyz"
                          ]
                        ]
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "dataframe_records": {
                        "type": "array",
                        "items": {
                          "required": [
                            "int_col",
                            "float_col",
                            "string_col"
                          ],
                          "type": "object",
                          "properties": {
                            "int_col": {
                              "type": "integer",
                              "format": "int64"
                            },
                            "float_col": {
                              "type": "number",
                              "format": "double"
                            },
                            "string_col": {
                              "type": "string"
                            },
                            "becx_col": {
                              "type": "object",
                              "format": "unknown"
                            }
                          }
                        }
                      },
                      "params": {
                        "type": "object",
                        "properties": {
                          "sentiment": {
                            "type": "number",
                            "format": "double",
                            "default": "0.5"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "predictions": {
                      "type": "array",
                      "items": {
                        "type": "number",
                        "format": "double"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}