Uç noktaları sunan özel model oluşturma

Bu makalede, Databricks Model Sunma kullanılarak özel modellere hizmet veren model sunma uç noktalarının nasıl oluşturulacağı açıklanmaktadır.

Model Sunma, uç nokta oluşturmaya hizmet vermek için aşağıdaki seçenekleri sağlar:

  • Sunucu Kullanıcı Arabirimi
  • REST API
  • MLflow Dağıtımları SDK'sı

Yapay zeka modellerine hizmet veren uç noktalar oluşturmak için bkz. Uç noktaları sunan temel model oluşturma.

Gereksinimler

  • Çalışma alanınız desteklenen bir bölgede olmalıdır.
  • Modelinizde özel veya bir yansıtma sunucusundan alınmış kitaplıklar kullanıyorsanız, model uç noktasını oluşturmadan önce Özel Python kitaplıklarını Model Sunma ile kullanma yönergelerine bakın.
  • MLflow Dağıtımları SDK'sını kullanarak uç noktalar oluşturmak için MLflow Dağıtım istemcisini yüklemeniz gerekir. Yüklemek için şunu çalıştırın:
import mlflow.deployments

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

Kimlik ve erişim

Uç noktaya hizmet veren bir model oluşturmak veya güncelleştirmek için hem çağıranın hem de uç noktanın kayıtlı oluşturucusunun şunları yapması gerekir:

  • Çalışma alanının üyesi olun.
  • Yetkilendirmeyi workspace-access kaldır.

Yaratıcı kimliği

Bir uç nokta oluşturduğunuzda Databricks çağrı kimliğini uç noktanın oluşturucusu olarak kaydeder. Bu kimlik (genellikle bir hizmet sorumlusu) uç nokta adına Unity Kataloğu kaynaklarına erişmek için kullanılır ve oluşturulduktan sonra değiştirilemez.

Kaydedilen oluşturucu gerekli Unity Kataloğu izinlerinden yoksunsa veya çalışma alanından kaldırılmışsa, uç noktayı silip gerekli izinlere sahip ve geçerli bir çalışma alanı üyesi olan bir hizmet sorumlusu altında yeniden oluşturmanız gerekir.

Yapılandırma ve sunulan öğe güncellemeleri, kayıtlı oluşturucunun çalışma alanı üyeliğini ve yetkilendirmelerini yeniden değerlendirir. Kayıtlardaki oluşturucu artık çalışma alanının bir üyesi değilse, çağrıyı yapanın geçerli izinleri olsa bile güncelleştirmeler PERMISSION_DENIED ile başarısız olur.

Sunulan varlık izinleri

Kayıtlı oluşturucu, hizmet verilen her varlık için aşağıdaki izinlere sahip olmalıdır. Uç nokta oluşturma veya güncelleştirme sırasında doğrulanan izinler, eksikse isteğin başarısız olmasına PERMISSION_DENIED neden olur. Sorgu zamanında gereken izinler önceden doğrulanmaz; eksik izinler uç nokta trafiğe hizmet ettiğinde çalışma zamanı hatalarına neden olur.

Kaynak türü Gerekli izin Doğrulandığında
Unity Kataloğu modeli USE CATALOG katalogda, USE SCHEMA şemada, EXECUTE modelde Uç nokta oluşturma veya güncelleştirme

Uyarı

Unity Kataloğu modeli geçişli işlev bağımlılıklarını bildirirse, kaydedilen oluşturucunun bu yukarı akış işlevlerine de ihtiyacı vardır EXECUTE .

Uç nokta erişimini yönetme

Model sunma uç noktaları için erişim denetimi seçeneklerini anlamak üzere bkz. Bir model sunma uç noktasındaki izinleri yönetme.

Uç nokta oluşturma

Kullanıcı arabirimi sunma

Sunum Kullanıcı Arabirimi ile model sunma için bir uç nokta oluşturabilirsiniz.

  1. Kenar çubuğunda Hizmet'e tıklayarak Hizmet UI'sini görüntüleyin.

  2. Sunum uç noktası oluştur'a tıklayın.

    Databricks kullanıcı arabiriminde model sunma bölmesi

Unity Kataloğu (önerilen) veya eski Çalışma Alanı Modeli Kayıt Defteri'ndeki modeller için:

  1. Ad alanında uç noktanız için bir ad girin.

    • Uç nokta adları ön eki kullanamaz databricks- . Bu ön ek, Databricks önceden yapılandırılmış uç noktalar için ayrılmıştır.
  2. Sunulan varlıklar bölümünde

    1. Sunulan varlığı seçin formunu açmak için Varlık alanına tıklayın.
    2. Modelinizin kaydedildiği yere göre Modellerim- Unity Kataloğu veya Modellerim- Model Kayıt Defteri'ni seçin. Form, seçiminize göre dinamik olarak güncelleştirilir.
    3. Hangi modele ve model sürümüne hizmet vermek istediğinizi seçin.
    4. Hizmet sunulan modelinize yönlendirecek trafik yüzdesini seçin.
    5. Kullanılacak boyut hesaplamasını seçin. İş yükleriniz için CPU veya GPU işlemleri kullanabilirsiniz. Kullanılabilir iş yükü türleri için, standart türünden daha fazla belleğe ihtiyaç duyan modeller için sunulan CPU_MEDIUM ve CPU_LARGE seçenekleri de dahil olmak üzere, CPU bölümüne bakın. GPU kodu örnekleri için bkz. GPU iş yükü türleri.
    6. İşlem Ölçeği Genişletme'nin altında, bu sunulan modelin aynı anda işleyebileceği istek sayısına karşılık gelen işlem ölçeği genişletme boyutunu seçin. Bu sayı yaklaşık olarak QPS x model çalışma süresine eşit olmalıdır. Müşteri tanımlı işlem ayarları için bkz. model sunma sınırları.
      1. Kullanılabilir boyutlar 0-4 istekler için Küçük , Orta 8-16 istekleri ve 16-64 istekler için Büyük'tür .
    7. Uç noktanın kullanımda değilken sıfıra ölçeklendirilmesi gerekip gerekmediğini belirtin. Kapasite sıfıra ölçeklendirildiğinde garanti edilmediğinden üretim uç noktaları için sıfıra ölçeklendirme önerilmez. Uç nokta sıfıra ölçeklendirildiğinde, uç nokta istekleri sunmak için ölçeği artırdığında soğuk başlangıç olarak da adlandırılan ek gecikme süresi olur.
    8. Gelişmiş yapılandırma'nın altında şunları yapabilirsiniz:
      • Uç noktada nasıl görüneceğini özelleştirmek için sunulan varlığı yeniden adlandırın.
      • Uç noktanızın kaynaklara bağlanmak için ortam değişkenleri ekleyin veya özellik arama DataFrame'inizi uç noktanın çıkarım tablosuna kaydedin. Özellik arama DataFrame'ini günlüklemek için MLflow 2.14.0 veya üzeri gereklidir.
    9. (İsteğe bağlı) Uç noktanıza başka hizmet varlıkları eklemek için Sunulan varlık ekle'ye tıklayın ve yukarıdaki yapılandırma adımlarını yineleyin. Tek bir uç noktadan birden çok modele veya model sürümüne hizmet verebilir ve aralarındaki trafiğin bölünmesini denetleyebilirsiniz. Daha fazla bilgi için bkz. Birden çok model sunma.
  3. Rota iyileştirme bölümünde uç noktanız için yol iyileştirmeyi etkinleştirebilirsiniz. Yüksek QPS ve aktarım hızı gereksinimleri olan uç noktalar için yol iyileştirmesi önerilir. Bkz. Hizmet uç noktaları üzerinde yol iyileştirme.

  4. AI Gateway bölümünde, uç noktanızda hangi idare özelliklerini etkinleştirebileceğinizi seçebilirsiniz. Bkz. Unity AI Gateway ile yapay zeka idaresi.

  5. Oluştur'a tıklayın. Sunum uç noktaları sayfası, Sunum uç noktası durumu Hazır Değil olarak gösterilir.

    Uç nokta sunan bir model oluşturma

REST API

REST API kullanarak uç noktalar oluşturabilirsiniz. Uç nokta yapılandırma parametreleri için bkz. POST /api/2.0/serving-endpoints .

Aşağıdaki örnek, Unity Kataloğu modeli kayıt defterinde kayıtlı my-ads-model modelinin üçüncü sürümüne hizmet veren bir uç nokta oluşturur. Unity Kataloğu'ndan bir model belirtmek için, üst katalog ve catalog.schema.example-modelgibi şema da dahil olmak üzere tam model adını sağlayın. Bu örnekte min_provisioned_concurrency ve max_provisioned_concurrency ile özel tanımlı eşzamanlılık kullanılır. Eşzamanlılık değerleri 4'ün katları olmalıdır.


POST /api/2.0/serving-endpoints

{
  "name": "uc-model-endpoint",
  "config":
  {
    "served_entities": [
      {
        "name": "ads-entity",
        "entity_name": "catalog.schema.my-ads-model",
        "entity_version": "3",
        "min_provisioned_concurrency": 4,
        "max_provisioned_concurrency": 12,
        "scale_to_zero_enabled": false
      }
    ]
  }
}

Aşağıda örnek bir yanıt verilmiştir. Uç noktanın durumu config_update ve sunulan model NOT_UPDATING durumundadır.

{
  "name": "uc-model-endpoint",
  "creator": "user@email.com",
  "creation_timestamp": 1700089637000,
  "last_updated_timestamp": 1700089760000,
  "state": {
    "ready": "READY",
    "config_update": "NOT_UPDATING"
  },
  "config": {
    "served_entities": [
      {
        "name": "ads-entity",
        "entity_name": "catalog.schema.my-ads-model",
        "entity_version": "3",
        "min_provisioned_concurrency": 4,
        "max_provisioned_concurrency": 12,
        "scale_to_zero_enabled": false,
        "workload_type": "CPU",
        "state": {
          "deployment": "DEPLOYMENT_READY",
          "deployment_state_message": ""
        },
        "creator": "user@email.com",
        "creation_timestamp": 1700089760000
      }
    ],
    "config_version": 1
  },
  "tags": [
    {
      "key": "team",
      "value": "data science"
    }
  ],
  "id": "e3bd3e471d6045d6b75f384279e4b6ab",
  "permission_level": "CAN_MANAGE",
  "route_optimized": false
}

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

MLflow Dağıtımları oluşturma, güncelleştirme ve silme görevleri için bir API sağlar. Bu görevlerin API'leri, uç noktaların sunulması için REST API ile aynı parametreleri kabul eder. Uç nokta yapılandırma parametreleri için bkz. POST /api/2.0/serving-endpoints .

Aşağıdaki örnek, Unity Kataloğu modeli kayıt defterinde kayıtlı my-ads-model modelinin üçüncü sürümüne hizmet veren bir uç nokta oluşturur. Ana katalog ve şema, örneğin catalog.schema.example-modelgibi, dahil olmak üzere tam model adını sağlamanız gerekir. Bu örnekte min_provisioned_concurrency ve max_provisioned_concurrency ile özel tanımlı eşzamanlılık kullanılır. Eşzamanlılık değerleri 4'ün katları olmalıdır.

import mlflow
from mlflow.deployments import get_deploy_client

mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")

endpoint = client.create_endpoint(
    name="unity-catalog-model-endpoint",
    config={
        "served_entities": [
            {
                "name": "ads-entity",
                "entity_name": "catalog.schema.my-ads-model",
                "entity_version": "3",
                "min_provisioned_concurrency": 4,
                "max_provisioned_concurrency": 12,
                "scale_to_zero_enabled": False
            }
        ]
    }
)

Çalışma Alanı İstemcisi

Aşağıdaki örnekte Databricks Çalışma Alanı İstemci SDK'sını kullanarak bir uç noktanın nasıl oluşturulacağı gösterilmektedir.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

w = WorkspaceClient()

w.serving_endpoints.create(
    name="uc-model-endpoint",
    config=EndpointCoreConfigInput(
        served_entities=[
            ServedEntityInput(
                name="ads-entity",
                entity_name="catalog.schema.my-ads-model",
                entity_version="3",
                workload_size="Small",
                scale_to_zero_enabled=False
            )
        ]
    )
)

Aşağıdakileri de yapabilirsiniz:

Model sunma kimlik bilgilerini depolamak için ortam değişkenleri de ekleyebilirsiniz. Bkz . Model sunum uç noktalarındaki kaynaklara erişimi yapılandırma

GPU iş yükü türleri

GPU dağıtımı aşağıdaki paket sürümleriyle uyumludur:

  • PyTorch 1.13.0 - 2.0.1
  • TensorFlow 2.5.0 - 2.13.0
  • MLflow 2.4.0 ve üzeri

Aşağıdaki örneklerde farklı yöntemler kullanarak GPU uç noktalarının nasıl oluşturulacağı gösterilmektedir.

Kullanıcı arabirimi sunma

Sunum Kullanıcı Arabirimi ile GPU iş yükleri için uç noktanızı yapılandırmak için, uç noktanızı oluştururken İşlem Türü açılan listesinden istediğiniz GPU türünü seçin. Uç nokta oluşturma bölümünde aynı adımları izleyin, ancak CPU yerine bir GPU iş yükü türü seçin.

REST API

Modellerinizi GPU'ları kullanarak dağıtmak için alanı uç nokta yapılandırmanıza ekleyin workload_type .

POST /api/2.0/serving-endpoints

{
  "name": "gpu-model-endpoint",
  "config": {
    "served_entities": [{
      "entity_name": "catalog.schema.my-gpu-model",
      "entity_version": "1",
      "workload_type": "GPU_SMALL",
      "workload_size": "Small",
      "scale_to_zero_enabled": false
    }]
  }
}

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

Aşağıdaki örnekte, MLflow Dağıtımları SDK'sını kullanarak GPU uç noktasının nasıl oluşturulacağı gösterilmektedir.

import mlflow
from mlflow.deployments import get_deploy_client

mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")

endpoint = client.create_endpoint(
    name="gpu-model-endpoint",
    config={
        "served_entities": [{
            "entity_name": "catalog.schema.my-gpu-model",
            "entity_version": "1",
            "workload_type": "GPU_SMALL",
            "workload_size": "Small",
            "scale_to_zero_enabled": False
        }]
    }
)

Çalışma Alanı İstemcisi

Aşağıdaki örnekte Databricks Çalışma Alanı İstemci SDK'sını kullanarak GPU uç noktasının nasıl oluşturulacağı gösterilmektedir.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

w = WorkspaceClient()

w.serving_endpoints.create(
    name="gpu-model-endpoint",
    config=EndpointCoreConfigInput(
        served_entities=[
            ServedEntityInput(
                entity_name="catalog.schema.my-gpu-model",
                entity_version="1",
                workload_type="GPU_SMALL",
                workload_size="Small",
                scale_to_zero_enabled=False
            )
        ]
    )
)

Aşağıdaki tabloda özetlenen şekilde, kullanılabilir GPU iş yükü türleri bulut sağlayıcınıza bağlıdır.

GPU iş yükü türü GPU örneği GPU belleği
GPU_SMALL 1xT4 16 GB
GPU_LARGE 1xA100 80 GB
GPU_LARGE_2 2xA100 160 GB
GPU_LARGE_4 4xA100 320 GB

GPU uç noktaları için eşzamanlılık değeri modelinize hizmet vermek için ayrılan çoğaltma sayısını belirler. Replika sayısı, eşzamanlılık değerinin 4'e bölünmüş hâline eşittir. Örneğin, min_provisioned_concurrency değerini 12 olarak ayarlamak 3 replika sağlar.

Özel model uç noktasını değiştirme

Özel model uç noktasını etkinleştirdikten sonra işlem yapılandırmasını istediğiniz gibi güncelleştirebilirsiniz. Modeliniz için ek kaynaklara ihtiyacınız varsa bu yapılandırma özellikle yararlıdır. İş yükü boyutu ve işlem yapılandırması, modelinize hizmet etmek için hangi kaynakların ayrıldığında önemli bir rol oynar.

Uyarı

Yapılandırma ve sunulan varlık güncelleştirmeleri, uç noktanın kayıtlı oluşturucu çalışma alanı üyeliğini ve sunulan varlık başına izinleri yeniden doğrular. Güncelleştirme göndermeden önce her ikisinin de beklemede olduğunu onaylayın; bkz. Kimlik ve erişim.

Güncelleştirme hatalarını önlemek için:

  • Uç nokta oluşturucusu olarak ekibinizin sahip olduğu uzun süreli bir hizmet sorumlusu kullanın.
  • Daha sonra devre dışı bırakılacak veya çalışma alanından kaldırılacak kişisel bir kullanıcı hesabı kullanmayın.
  • Kaydedilen oluşturucu, uç noktanın ömrü boyunca çalışma alanı üyesi olarak kalmalıdır.

Uyarı

Uç nokta yapılandırması güncelleştirmeleri başarısız olabilir. Hatalar oluştuğunda mevcut etkin yapılandırma, güncelleştirme gerçekleşmemiş gibi etkin kalır.

Uç noktanızın durumunu gözden geçirerek güncelleştirmenin başarıyla uygulandığını doğrulayın.

Yeni yapılandırma hazır olana kadar eski yapılandırma, tahmin trafiği sunmaya devam eder. Devam eden bir güncelleştirme olsa da başka bir güncelleştirme yapılamaz. Ancak devam eden bir güncelleştirmeyi Sunma kullanıcı arabiriminden iptal edebilirsiniz.

Kullanıcı arabirimi sunma

Model uç noktasını etkinleştirdikten sonra uç noktanızın işlem yapılandırmasını değiştirmek için Uç noktayı düzenle'yi seçin.

Uç noktayı düzenle düğmesi

Uç nokta adı ve belirli sabit özellikler dışında uç nokta yapılandırmasının çoğu yönünü değiştirebilirsiniz.

Devam eden bir yapılandırma güncelleştirmesini, uç noktanın ayrıntılar sayfasında güncelleştirmeyi iptal et'i seçerek iptal edebilirsiniz.

REST API

Rest API'yi kullanan bir uç nokta yapılandırma güncelleştirme örneği aşağıda verilmiştir. Bkz. PUT /api/2.0/serving-endpoints/{name}/config.


PUT /api/2.0/serving-endpoints/{name}/config

{
  "name": "unity-catalog-model-endpoint",
  "config":
  {
    "served_entities": [
      {
        "entity_name": "catalog.schema.my-ads-model",
        "entity_version": "5",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      }
    ],
    "traffic_config":
    {
      "routes": [
        {
          "served_model_name": "my-ads-model-5",
          "traffic_percentage": 100
        }
      ]
    }
  }
}

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

MLflow Dağıtımları SDK'sı REST API ile aynı parametreleri kullanır. İstek ve yanıt şeması ayrıntıları için put /api/2.0/serving-endpoints/{name}/config bakın.

Aşağıdaki kod örneği Unity Kataloğu model kayıt defterinden bir model kullanır:

import mlflow
from mlflow.deployments import get_deploy_client

mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")

endpoint = client.update_endpoint_config(
  endpoint=f"{endpointname}",
  config={
    "served_entities": [
        {
            "entity_name": f"{catalog}.{schema}.{model_name}",
            "entity_version": "1",
            "workload_size": "Small",
            "scale_to_zero_enabled": True
        }
    ],
    "traffic_config": {
        "routes": [
            {
                "served_model_name": f"{model_name}-1",
                "traffic_percentage": 100
            }
        ]
    }
  }
)

Model uç noktasını puanlama

Modelinizi puanlamak için model sunum uç noktasına istek gönderin.

Ek kaynaklar

Defter örnekleri

Aşağıdaki not defterleri, model sunma uç noktaları ile çalışmaya başlamak için kullanabileceğiniz farklı Databricks kayıtlı modelleri içerir. Ek örnekler için bkz . Öğretici: Özel model dağıtma ve sorgulama.

Model örnekleri , Not defterini içeri aktarma yönergelerini izleyerek çalışma alanına aktarılabilir. Örneklerden birini seçip oluşturduktan sonra modeli Unity Kataloğu'na kaydedin ve model sunma için kullanıcı arabirimi iş akışı adımlarını izleyin.

Model hizmet defteri için scikit-learn modelini eğitin ve kaydedin

Not defterini alma

Not defteri sunan model için HuggingFace modelini eğitin ve kaydedin

Not defterini alma