엔드포인트를 제공하는 사용자 지정 모델 만들기
이 문서에서는 Databricks 모델 서비스를 사용하여 사용자 지정 모델을 제공하는 엔드포인트를 제공하는 모델을 만드는 방법을 설명합니다.
모델 제공은 엔드포인트 만들기를 제공하기 위한 다음 옵션을 제공합니다.
- 서비스 UI
- REST API
- MLflow 배포 SDK
생성 AI 모델을 위한 엔드포인트를 만들려면 기본 모델 서빙 엔드포인트 생성을 참조하세요.
요구 사항
- 작업 영역은 지원되는 지역에 속해야 합니다.
- 모델과 함께 프라이빗 미러 서버의 사용자 지정 라이브러리 또는 라이브러리를 사용하는 경우 모델 엔드포인트를 만들기 전에 모델 서비스와 함께 사용자 지정 Python 라이브러리 사용을 참조하세요.
- MLflow 배포 SDK를 사용하여 엔드포인트를 만들려면 MLflow 배포 클라이언트를 설치해야 합니다. 설치하려면 다음을 실행합니다.
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Access Control
엔드포인트 관리를 위해 엔드포인트를 제공하는 모델에 대한 액세스 제어 옵션을 이해하려면 엔드포인트를 제공하는 모델에 대한 권한 관리를 참조하세요.
환경 변수를 추가하여 모델 서비스를 위해 credentials을 저장할 수도 있습니다. 엔드포인트를 제공하는 모델에서 리소스에 대한 액세스 구성을 참조하세요
엔드포인트 만들기
서비스 UI
서비스 제공 UI를 사용하여 모델 제공을 위한 엔드포인트를 만들 수 있습니다.
사이드바에서 서비스를 클릭하여 서비스 UI를 표시합니다.
엔드포인트 만들기를 클릭합니다.
작업 영역 모델 레지스트리에 등록된 모델 또는 Unity Catalog모델의 경우:
이름 필드에서 엔드포인트의 이름을 입력합니다.
제공된 엔터티 섹션에서
- 엔터티 필드를 클릭하여 Select 제공된 엔터티 양식을 엽니다.
- Select 제공하려는 모델의 형식. 선택한 항목에 따라 양식이 동적으로 업데이트됩니다.
- Select 제공하려는 모델과 모델 버전은 어떤 것입니까?
- 모델로 전달할 트래픽의 백분율을 Select으로 설정하세요.
- 어떤 크기의 컴퓨트를 사용할지 Select. 워크로드에 CPU 또는 GPU 컴퓨팅을 사용할 수 있습니다. 사용 가능한 GPU 컴퓨팅에 대한 자세한 내용은 GPU 워크로드 유형을 참조하세요.
- 어떤 크기의 컴퓨트를 사용할지 Select. 워크로드에 CPU 또는 GPU 컴퓨팅을 사용할 수 있습니다. 사용 가능한 GPU 컴퓨팅에 대한 자세한 내용은 GPU 워크로드 유형을 참조하세요.
-
컴퓨팅 스케일 아웃에서, 이 제공된 모델이 동시에 처리할 수 있는 요청 수에 해당하는 컴퓨팅 스케일 아웃의 크기를 select. 이 숫자는 QPS x 모델 런타임과 거의 같아야 합니다.
- 사용 가능한 크기는 0-4개 요청이 작음, 8-16개 요청이 중간, 16-64개 요청이 큼입니다.
- 사용하지 않을 때 엔드포인트의 크기를 0으로 조정할지 지정합니다.
만들기를 클릭합니다. 서비스 엔드포인트 페이지는 준비되지 않음으로 표시된 서비스 엔드포인트 상태로 표시됩니다.
REST API
REST API를 사용하여 엔드포인트를 만들 수 있습니다. 엔드포인트 구성 을(를) 보려면 parameters 을 참조하세요.
다음 예제에서는 Unity ads1
모델 레지스트리에 등록된 Catalog 모델의 첫 번째 버전을 제공하는 엔드포인트를 만듭니다. Unity Catalog모델을 지정하려면 부모 catalog 및 schema를 포함한 전체 모델 이름을 입력하십시오. 예를 들어, catalog.schema.example-model
과 같은 이름을 제공합니다.
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",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "catalog.schema.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": "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-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": "catalog.schema.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 배포 만들기, update 및 삭제 작업을 위한 API를 제공합니다. 이러한 작업을 위한 API는 엔드포인트를 제공하는 REST API와 동일한 parameters를 수용합니다. 엔드포인트 구성 을(를) 보려면 parameters 을 참조하세요.
다음 예제에서는 Unity my-ads-model
모델 레지스트리에 등록된 Catalog 모델의 세 번째 버전을 제공하는 엔드포인트를 만듭니다. 전체 모델 이름에는 부모 catalog 및 schema을 포함해야 하며, 예를 들어 catalog.schema.example-model
와 같이 제공해야 합니다.
from mlflow.deployments import get_deploy_client
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",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
}
}
)
다음도 가능합니다.
추론 tables을(를) 사용하도록 설정하여 모델 서빙 엔드포인트의 들어오는 요청과 나가는 응답을 자동으로 캡처합니다.
GPU 워크로드 유형
GPU 배포는 다음 패키지 버전과 호환됩니다.
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 이상
GPU를 사용하여 모델을 배포하려면 workload_type
동안 엔드포인트 구성에 필드를 포함하거나 API를 사용하는 엔드포인트 구성 update 포함됩니다.
서비스 UI를 사용하여 GPU 워크로드에 대한 엔드포인트를 구성하려면 select 드롭다운에서 원하는 GPU 유형을 .
{
"served_entities": [{
"entity_name": "catalog.schema.ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
다음 table 지원되는 사용 가능한 GPU 워크로드 유형을 요약합니다.
GPU 워크로드 유형 | GPU 인스턴스 | GPU 메모리 |
---|---|---|
GPU_SMALL |
1xT4 | 16GB |
GPU_LARGE |
1xA100 | 80GB |
GPU_LARGE_2 |
2xA100 | 160GB |
사용자 지정 모델 엔드포인트 수정
사용자 지정 모델 엔드포인트를 사용하도록 설정한 후 컴퓨팅 구성을 원하는 대로 update 수 있습니다. 이 구성은 모델에 추가 리소스가 필요한 경우에 특히 유용합니다. 워크로드 크기 및 컴퓨팅 구성은 모델 제공을 위해 할당된 리소스에 대해 중요한 역할을 수행합니다.
새 구성이 준비될 때까지 이전 구성은 예측 트래픽을 계속 제공합니다. 진행 중인 update가 있는 동안, 다른 update을 만들 수 없습니다. 그러나 서빙 UI에서 진행 중인 update을 취소할 수 있습니다.
서비스 UI
모델 엔드포인트를 사용하도록 설정한 후, 엔드포인트의 컴퓨팅 구성을 수정하려면 select엔드포인트 편집을(를) 사용합니다.
다음을 수행할 수 있습니다.
- 일부 워크로드 크기 중에서 선택하고 자동 확장은 워크로드 크기 내에서 자동으로 구성됩니다.
- 사용하지 않을 때 엔드포인트를 0으로 축소해야 하는지 지정합니다.
- 제공된 모델로 라우팅할 트래픽의 백분율을 수정합니다.
엔드포인트 세부 정보 페이지의 오른쪽 위에서 update 선택하여 진행 중인 구성 취소할 수 있습니다. 이 기능은 서비스 UI에서만 사용할 수 있습니다.
REST API
다음은 REST API를 사용하는 엔드포인트 구성 update 예제입니다. 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 배포 SDK
MLflow 배포 SDK는 REST API와 동일한 parameters 사용합니다. 요청 및 응답 세부 정보는 schema 참조하세요.
다음 코드 샘플에서는 Unity Catalog 모델 레지스트리의 모델을 사용합니다.
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
}
]
}
}
)
모델 엔드포인트 점수 매기기
모델의 점수를 매기려면 엔드포인트를 제공하는 모델에 요청을 보냅니다.
- 사용자 지정 모델에 대한 서비스 엔드포인트 쿼리를 참조하세요.
- Query의 기본 모델을참조하세요.
추가 리소스
- 엔드포인트를 제공하는 모델을 관리합니다.
- Mosaic AI 모델 서비스 내의 외부 모델.
- Python을 사용하는 것을 선호한다면 Databricks 실시간 제공 Python SDK를 사용할 수 있습니다.
Notebook 예제
다음 Notebook에는 엔드포인트를 제공하는 모델을 사용하여 get 실행하는 데 사용할 수 있는 다양한 Databricks 등록 모델이 포함됩니다. 추가 예제는 자습서: 사용자 지정 모델배포 및 쿼리를 참조하세요.
모델 예는 Notebook 가져오기의 지침에 따라 작업 영역으로 가져올 수 있습니다. 예제 중 하나에서 모델을 선택하고 생성한 후 Unity Catalog등록하고, 모델 서빙을 위한 UI 워크플로 단계를 따릅니다.