다음을 통해 공유


엔드포인트를 제공하는 사용자 지정 모델 만들기

이 문서에서는 Databricks 모델 서비스를 사용하여 사용자 지정 모델을 제공하는 엔드포인트를 제공하는 모델을 만드는 방법을 설명합니다.

모델 제공은 엔드포인트 만들기를 제공하기 위한 다음 옵션을 제공합니다.

  • 서비스 UI
  • REST API
  • MLflow 배포 SDK

생성 AI 기본 모델을 제공하는 엔드포인트를 만들려면 엔드포인트를 제공하는 생성 AI 모델 만들기를 참조 하세요.

요구 사항

  • 작업 영역은 지원되는 지역에 있어야 합니다.
  • 모델과 함께 프라이빗 미러 서버의 사용자 지정 라이브러리 또는 라이브러리를 사용하는 경우 모델 엔드포인트를 만들기 전에 모델 제공과 함께 사용자 지정 Python 라이브러리 사용을 참조하세요.
  • MLflow 배포 SDK를 사용하여 엔드포인트를 만들려면 MLflow 배포 클라이언트를 설치해야 합니다. 설치하려면 다음을 실행합니다.
import mlflow.deployments

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

Access Control

엔드포인트 관리를 위해 엔드포인트를 제공하는 모델에 대한 액세스 제어 옵션을 이해하려면 엔드포인트를 제공하는 모델에 대한 권한 관리를 참조하세요.

환경 변수를 추가하여 모델 제공을 위한 자격 증명을 저장할 수도 있습니다. 엔드포인트를 제공하는 모델에서 리소스에 대한 액세스 구성을 참조 하세요.

엔드포인트 만들기

서비스 UI

서비스 UI를 사용하여 모델 서비스용 엔드포인트를 만들 수 있습니다.

  1. 사이드바에서 [서비스]를 클릭하여 서비스 UI를 표시합니다.

  2. 서비스 엔드포인트 만들기를 클릭합니다.

    Databricks UI의 모델 서비스 창

작업 영역 모델 레지스트리 또는 Unity 카탈로그의 모델에 등록된 모델의 경우:

  1. 이름 필드에서 엔드포인트의 이름을 제공합니다.

  2. 제공된 엔터티 섹션에서

    1. 엔터티 필드를 클릭하여 제공된 엔터티 선택 양식을 엽니다.
    2. 제공하려는 모델 유형을 선택합니다. 선택한 항목에 따라 양식이 동적으로 업데이트됩니다.
    3. 제공하려는 모델 및 모델 버전을 선택합니다.
    4. 제공된 모델로 라우팅할 트래픽의 비율을 선택합니다.
    5. 사용할 크기 컴퓨팅을 선택합니다. 워크로드에 CPU 또는 GPU 컴퓨팅을 사용할 수 있습니다. 사용 가능한 GPU 컴퓨팅에 대한 자세한 내용은 GPU 워크로드 유형을 참조하세요.
    6. 컴퓨팅 스케일 아웃에서 이 제공된 모델이 동시에 처리할 수 있는 요청 수에 해당하는 컴퓨팅 스케일 아웃의 크기를 선택합니다. 이 숫자는 QPS x 모델 런타임과 거의 같아야 합니다.
      1. 사용 가능한 크기는 0-4개 요청의 경우 작 음, 중간 8-16개 요청, 16~64개 요청의 경우 큼 입니다.
    7. 사용하지 않을 때 엔드포인트의 크기를 0으로 조정할지 지정합니다.
  3. 만들기를 클릭합니다. 서비스 엔드포인트 페이지는 준비되지 않음으로 표시된 서비스 엔드포인트 상태로 표시됩니다.

    엔드포인트를 제공하는 모델 만들기

REST API

REST API를 사용하여 엔드포인트를 만들 수 있습니다. 엔드포인트 구성 매개 변수는 POST /api/2.0/serving-endpoints를 참조하세요.

다음 예제에서는 모델 레지스트리에 등록된 모델의 첫 번째 버전을 ads1 제공하는 엔드포인트를 만듭니다. Unity 카탈로그에서 모델을 지정하려면 부모 카탈로그 및 스키마(예: catalog.schema.example-model.)를 포함한 전체 모델 이름을 제공합니다.


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

다음은 응답 예입니다. 엔드포인트의 config_update 상태가 NOT_UPDATING 고 제공된 모델이 상태에 있습니다 READY .

{
  "name": "workspace-model-endpoint",
  "creator": "[email protected]",
  "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": "[email protected]",
      "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 배포 SDK

MLflow 배포는 만들기, 업데이트 및 삭제 작업을 위한 API를 제공합니다. 이러한 작업에 대한 API는 엔드포인트를 제공하기 위한 REST API와 동일한 매개 변수를 허용합니다. 엔드포인트 구성 매개 변수는 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
                }
            ]
        }
    }
)

다음도 가능합니다.

GPU 워크로드 유형

GPU 배포는 다음 패키지 버전과 호환됩니다.

  • Pytorch 1.13.0 - 2.0.1
  • TensorFlow 2.5.0 - 2.13.0
  • MLflow 2.4.0 이상

GPU를 사용하여 모델을 배포하려면 엔드포인트를 만드는 동안 또는 API를 사용하여 엔드포인트 구성 업데이트로 엔드포인트 구성에 필드를 포함합니다workload_type. 서비스 UI를 사용하여 GPU 워크로드에 대한 엔드포인트를 구성하려면 컴퓨팅 유형 드롭다운에서 원하는 GPU 유형을 선택합니다.

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

다음 표에서는 지원되는 사용 가능한 GPU 워크로드 유형을 요약합니다.

GPU 워크로드 유형 GPU 인스턴스 GPU 메모리
GPU_SMALL 1xT4 16GB
GPU_LARGE 1xA100 80GB
GPU_LARGE_2 2xA100 160GB

사용자 지정 모델 엔드포인트 수정

사용자 지정 모델 엔드포인트를 사용하도록 설정한 후 컴퓨팅 구성을 원하는 대로 업데이트할 수 있습니다. 이 구성은 모델에 추가 리소스가 필요한 경우에 특히 유용합니다. 워크로드 크기 및 컴퓨팅 구성은 모델 제공을 위해 할당된 리소스에 대해 중요한 역할을 수행합니다.

새 구성이 준비될 때까지 이전 구성은 예측 트래픽을 계속 제공합니다. 업데이트가 진행 중이지만 다른 업데이트는 수행할 수 없습니다. 그러나 서비스 UI에서 진행 중인 업데이트를 취소할 수 있습니다.

서비스 UI

모델 엔드포인트를 사용하도록 설정한 후 엔드포인트 편집을 선택하여 엔드포인트 의 컴퓨팅 구성을 수정합니다.

다음을 수행할 수 있습니다.

  • 몇 가지 워크로드 크기 중에서 선택하면 자동 크기 조정이 워크로드 크기 내에서 자동으로 구성됩니다.
  • 사용하지 않을 때 엔드포인트를 0으로 축소해야 하는지 지정합니다.
  • 제공된 모델로 라우팅할 트래픽의 백분율을 수정합니다.

엔드포인트 세부 정보 페이지의 오른쪽 위에서 업데이트 취소를 선택하여 진행 중인 구성 업데이트를 취소할 수 있습니다. 이 기능은 서비스 UI에서만 사용할 수 있습니다.

REST API

다음은 REST API를 사용하는 엔드포인트 구성 업데이트 예제입니다. 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 배포 SDK

MLflow 배포 SDK는 REST API와 동일한 매개 변수를 사용합니다. 요청 및 응답 스키마 세부 정보는 PUT /api/2.0/serving-endpoints/{name}/config를 참조하세요.

다음 코드 샘플에서는 Unity 카탈로그 모델 레지스트리의 모델을 사용합니다.

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
            }
        ]
    }
  }
)

모델 엔드포인트 점수 매기기

모델의 점수를 매기려면 엔드포인트를 제공하는 모델에 요청을 보냅니다.

  • 사용자 지정 모델에 대한 쿼리 서비스 엔드포인트를 참조 하세요.
  • 쿼리 기본 모델을 참조하세요.

추가 리소스

Notebook 예제

다음 Notebook에는 엔드포인트를 제공하는 모델을 시작하고 실행하는 데 사용할 수 있는 다양한 Databricks 등록 모델이 포함됩니다.

모델 예는 Notebook 가져오기의 지침에 따라 작업 영역으로 가져올 수 있습니다. 예제 중 하나에서 모델을 선택하고 만든 후 MLflow 모델 레지스트리에 등록한 다음, 모델 서비스 제공을 위한 UI 워크플로 단계를 따릅니다.

모델 서비스 제공 Notebook을 위한 scikit-learn 모델 학습 및 등록

전자 필기장 가져오기

모델 서비스 제공 Notebook을 위한 HuggingFace 모델 학습 및 등록

전자 필기장 가져오기