Bagikan melalui


Mengelola titik akhir penyajian model

Artikel ini menjelaskan cara mengelola model yang melayani titik akhir menggunakan Antarmuka Pengguna Penyajian dan REST API. Lihat Menyajikan titik akhir dalam referensi REST API.

Untuk membuat titik akhir penyajian model, gunakan salah satu hal berikut:

Mendapatkan status titik akhir model

Di Antarmuka pengguna Penyajian, Anda dapat memeriksa status titik akhir dari indikator Status titik akhir penyajian di bagian atas halaman detail titik akhir Anda.

Anda dapat menggunakan periksa status dan detail titik akhir secara terprogram menggunakan REST API atau MLflow Deployments SDK

REST API

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

Contoh berikut mendapatkan detail titik akhir yang melayani versi ads1 pertama model yang terdaftar dalam registri model. Untuk menentukan model dari Unity Catalog, berikan nama model lengkap termasuk katalog dan skema induk seperti, catalog.schema.example-model.

Dalam contoh respons berikut, state.ready bidangnya adalah "SIAP", yang berarti titik akhir siap untuk menerima lalu lintas. Bidang state.update_state ini dan NOT_UPDATINGpending_config tidak lagi dikembalikan karena pembaruan berhasil diselesaikan.

{
  "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"
}

SDK Penyebaran MLflow

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",
}

Menghapus titik akhir penyajian model

Untuk menonaktifkan penayangan untuk model, Anda dapat menghapus titik akhir tempat model ditayangkan.

Anda dapat menghapus titik akhir dari halaman detail titik akhir di antarmuka pengguna Penyajian.

  1. Klik Sajikan di bilah samping.
  2. Klik titik akhir yang ingin Anda hapus.
  3. Klik menu kebab di bagian atas dan pilih Hapus.

Atau, Anda dapat menghapus titik akhir penyajian secara terprogram menggunakan REST API atau MLflow Deployments SDK

REST API

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

SDK Penyebaran MLflow

from mlflow.deployments import get_deploy_client

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

Men-debug titik akhir penyajian model Anda

Untuk men-debug masalah apa pun dengan titik akhir, Anda dapat mengambil:

  • Log build kontainer server model
  • Log server model

Log ini juga dapat diakses dari antarmuka pengguna Titik Akhir di tab Log .

Untuk log build untuk model yang dilayani, Anda dapat menggunakan permintaan berikut:


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

Untuk log server model untuk model layanan, Anda dapat menggunakan permintaan berikut:


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

{
  “config_version”: 1  // optional
}

Mengelola izin pada titik akhir penyajian model Anda

Anda harus memiliki setidaknya izin CAN MANAGE pada titik akhir penyajian untuk mengubah izin. Untuk informasi selengkapnya tentang tingkat izin, lihat Menyajikan ACL titik akhir.

Dapatkan daftar izin pada titik akhir penyajian.

databricks permissions get servingendpoints <endpoint-id>

Beri pengguna jsmith@example.com izin CAN QUERY pada titik akhir penyajian.

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

Anda juga dapat memodifikasi izin titik akhir penyajian menggunakan API Izin.

Mendapatkan model yang melayani skema titik akhir

Penting

Dukungan untuk melayani skema kueri titik akhir ada di Pratinjau Umum. Fungsionalitas ini tersedia di wilayah Model Serving.

Skema kueri titik akhir penyajian adalah deskripsi formal tentang titik akhir penyajian menggunakan spesifikasi OpenAPI standar dalam format JSON. Ini berisi informasi tentang titik akhir termasuk jalur titik akhir, detail untuk mengkueri titik akhir seperti format isi permintaan dan respons, dan jenis data untuk setiap bidang. Informasi ini dapat membantu untuk skenario reproduksi atau ketika Anda memerlukan informasi tentang titik akhir, tetapi bukan pembuat atau pemilik titik akhir asli.

Untuk mendapatkan model yang melayani skema titik akhir, model yang dilayani harus memiliki tanda tangan model yang dicatat dan titik akhir harus dalam keadaan READY .

Contoh berikut menunjukkan cara mendapatkan model yang melayani skema titik akhir secara terprogram menggunakan REST API. Untuk fitur yang melayani skema titik akhir, lihat Apa itu Penyajian Fitur Databricks?.

Skema yang dikembalikan oleh API dalam format objek JSON yang mengikuti spesifikasi OpenAPI.


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"

Detail respons skema

Responsnya adalah spesifikasi OpenAPI dalam format JSON, biasanya termasuk bidang seperti openapi, info, servers dan paths. Karena respons skema adalah objek JSON, Anda dapat mengurainya menggunakan bahasa pemrograman umum, dan menghasilkan kode klien dari spesifikasi menggunakan alat pihak ketiga. Anda juga dapat memvisualisasikan spesifikasi OpenAPI menggunakan alat pihak ketiga seperti Swagger Editor.

Bidang utama respons meliputi:

  • Bidang info.title memperlihatkan nama titik akhir penyajian.
  • Bidang servers selalu berisi satu objek, biasanya url bidang yang merupakan url dasar titik akhir.
  • Objek paths dalam respons berisi semua jalur yang didukung untuk titik akhir. Kunci dalam objek adalah URL jalur. Masing-masing path dapat mendukung beberapa format input. Input ini tercantum di oneOf bidang .

Berikut ini adalah contoh respons skema titik akhir:


{
  "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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}