Aracılığıyla paylaş


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:

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

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

Gereksinim -leri

  • Çalışma alanınız desteklenen bir bölgede olmalıdır.
  • Modelinizle özel bir yansıtma sunucusundan özel kitaplıklar veya kitaplıklar kullanıyorsanız, model uç noktasını oluşturmadan önce bkz . Model Sunma ile özel Python kitaplıklarını kullanma.
  • 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")

Erişim denetimi

Uç nokta yönetimi için model sunum uç noktalarına yönelik erişim denetimi seçeneklerini anlamak için bkz . Model sunum uç noktanızdaki izinleri yönetme.

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

Uç nokta oluşturma

Kullanıcı arabirimi sunma

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

  1. Hizmet Verme kullanıcı arabirimini görüntülemek için kenar çubuğunda Sunma'ya tıklayın.

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

    Databricks kullanıcı arabiriminde model sunma bölmesi

Çalışma Alanı model kayıt defterine kaydedilmiş modeller veya Unity Kataloğu'ndaki modeller için:

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

  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. Hizmet vermek istediğiniz model türünü 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 GPU işlemleri hakkında daha fazla bilgi 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.
      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.
  3. 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, model kayıt defterinde kayıtlı olan modelin ilk sürümüne ads1 hizmet veren bir uç nokta oluşturur. Unity Kataloğu'ndan bir model belirtmek için, üst katalog ve şema gibi catalog.schema.example-modeltam model adını sağlayın.


POST /api/2.0/serving-endpoints

{
  "name": "workspace-model-endpoint",
  "config":{
    "served_entities": [
      {
        "name": "ads-entity"
        "entity_name": "my-ads-model",
        "entity_version": "3",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      },
      {
        "entity_name": "my-ads-model",
        "entity_version": "4",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      }
    ],
    "traffic_config":{
      "routes": [
        {
          "served_model_name": "my-ads-model-3",
          "traffic_percentage": 100
        },
        {
          "served_model_name": "my-ads-model-4",
          "traffic_percentage": 20
        }
      ]
    }
  },
  "tags": [
    {
      "key": "team",
      "value": "data science"
    }
  ]
}

Aşağıda örnek bir yanıt verilmiştir. Uç noktanın config_update durumu ve NOT_UPDATING sunulan modelin durumudur READY .

{
  "name": "workspace-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": "my-ads-model-3",
        "entity_version": "3",
        "workload_size": "Small",
        "scale_to_zero_enabled": true,
        "workload_type": "CPU",
      "state": {
        "deployment": "DEPLOYMENT_READY",
        "deployment_state_message": ""
      },
      "creator": "user@email.com",
      "creation_timestamp": 1700089760000
      }
    ],
    "traffic_config": {
      "routes": [
        {
          "served_model_name": "my-ads-model-3",
          "traffic_percentage": 100
        }
      ]
    },
    "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 .


from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
    name="workspace-model-endpoint",
    config={
        "served_entities": [
            {
                "name": "ads-entity"
                "entity_name": "my-ads-model",
                "entity_version": "3",
                "workload_size": "Small",
                "scale_to_zero_enabled": true
            }
        ],
        "traffic_config": {
            "routes": [
                {
                    "served_model_name": "my-ads-model-3",
                    "traffic_percentage": 100
                }
            ]
        }
    }
)

Aşağıdakileri de yapabilirsiniz:

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

Modellerinizi GPU'lar kullanarak dağıtmak için, alanı uç nokta oluşturma sırasında uç nokta yapılandırmanıza veya API'yi kullanan bir uç nokta yapılandırma güncelleştirmesi olarak ekleyinworkload_type. Sunum Kullanıcı Arabirimi ile GPU iş yükleri için uç noktanızı yapılandırmak için İşlem Türü açılan listesinden istediğiniz GPU türünü seçin.

{
  "served_entities": [{
    "name": "ads1",
    "entity_version": "2",
    "workload_type": "GPU_LARGE",
    "workload_size": "Small",
    "scale_to_zero_enabled": false,
  }]
}

Aşağıdaki tabloda desteklenen kullanılabilir GPU iş yükü türleri özetlenmektedir.

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

Ö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.

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.

Aşağıdakileri yapabilirsiniz:

  • Birkaç iş yükü boyutu arasından seçim yapın; otomatik ölçeklendirme iş yükü boyutu içinde otomatik olarak yapılandırılır.
  • Uç noktanızın kullanımda değilken ölçeğinin sıfıra düşürülmesi gerekip gerekmediğini belirtin.
  • Sunulan modelinize yönlendirmek için trafiğin yüzdesini değiştirin.

Devam eden bir yapılandırma güncelleştirmesini, uç noktanın ayrıntılar sayfasının sağ üst kısmındaki Güncelleştirmeyi iptal et'i seçerek iptal edebilirsiniz. Bu işlev yalnızca Sunum Kullanıcı Arabirimi'nde kullanılabilir.

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": "workspace-model-endpoint",
  "config":{
    "served_entities": [
      {
        "name": "ads-entity"
        "entity_name": "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 bölümüne 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.create_endpoint(
  name=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

Not defteri örnekleri

Aşağıdaki not defterleri, uç noktaları sunan modellerle çalışmaya başlamak için kullanabileceğiniz farklı Databricks kayıtlı modellerini içerir.

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

Not defteri sunan model 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