엔드포인트를 제공하는 생성형 AI 모델 만들기
이 문서에서는 생성 AI 모델을 배포하고 제공하는 엔드포인트를 제공하는 모델을 만드는 방법을 알아봅니다.
Mosaic AI 모델 서비스 지원 모델은 다음과 같습니다.
외부 모델. Databricks 외부에서 호스트되는 생성 모델입니다. 외부 모델을 제공하는 엔드포인트는 중앙에서 제어할 수 있으며 고객은 속도 제한 및 액세스 제어를 설정할 수 있습니다. 예를 들어 OpenAI의 GPT-4, Anthropic's Claude 등과 같은 생성 AI 모델이 있습니다.
파운데이션 모델 API에서 사용할 수 있는 최첨단 오픈 파운데이션 모델입니다. 이러한 모델은 최적화된 유추를 지원하는 큐레이팅된 파운데이션 모델 아키텍처입니다. Meta-Llama-3.1-70B-Instruct, GTE-Large 및 Mistral-7B와 같은 기본 모델은 토큰당 종량제 가격 책정에 즉시 사용할 수 있습니다. 기본 또는 미세 조정된 모델을 사용하는 프로덕션 워크로드는 프로비전된 처리량을 사용하여 성능 보장을 통해 배포할 수 있습니다.
모델 제공은 엔드포인트 만들기를 제공하는 모델에 대해 다음과 같은 옵션을 제공합니다.
- 서비스 UI
- REST API
- MLflow 배포 SDK
기존 ML 또는 Python 모델을 제공하는 엔드포인트를 만들려면 엔드포인트를 제공하는 사용자 지정 모델 만들기를 참조하세요.
요구 사항
- 지원되는 지역의 Databricks 작업 영역입니다.
- MLflow 배포 SDK를 사용하여 엔드포인트를 만들려면 MLflow 배포 클라이언트를 설치해야 합니다. 설치하려면 다음을 실행합니다.
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
엔드포인트를 제공하는 파운데이션 모델 만들기
파운데이션 모델 API 프로비전된 처리량을 사용하여 사용할 수 있는 파운데이션 모델의 미세 조정된 변형을 제공하는 엔드포인트를 만들 수 있습니다. REST API를 사용하여 프로비전된 처리량 엔드포인트 만들기를 참조하세요.
파운데이션 모델 API 토큰당 종량제로 사용할 수 있는 파운데이션 모델의 경우 Databricks는 Databricks 작업 영역에서 지원되는 모델에 액세스하기 위한 특정 엔드포인트를 자동으로 제공합니다. 액세스하려면 작업 영역의 왼쪽 사이드바에서 서비스 탭을 선택합니다. 파운데이션 모델 API는 엔드포인트 목록 보기의 맨 위에 있습니다.
이러한 엔드포인트를 쿼리하려면 생성 AI 모델 쿼리를 참조 하세요.
엔드포인트를 제공하는 외부 모델 만들기
다음은 Databricks 외부 모델을 사용하여 사용할 수 있는 생성 AI 모델을 제공하는 엔드포인트를 만드는 방법을 설명합니다.
서비스 UI
- 이름 필드에서 엔드포인트의 이름을 입력합니다.
- 제공된 엔터티 섹션에서
- 엔터티 필드를 클릭하여 제공된 엔터티 선택 양식을 엽니다.
- 외부 모델을 선택합니다.
- 사용하기 원하는 모델 제공자를 선택합니다.
- 확인을 클릭합니다.
- 사용하려는 외부 모델의 이름을 입력합니다. 선택한 항목에 따라 양식이 동적으로 업데이트됩니다. 사용 가능한 외부 모델을 참조하세요.
- 작업 유형을 선택합니다. 사용 가능한 작업은 채팅, 완료 및 포함입니다.
- 선택한 모델 공급자에 액세스하기 위한 구성 세부 정보를 제공합니다. 일반적으로 엔드포인트가 이 모델에 액세스하는 데 사용할 개인 액세스 토큰을 참조하는 비밀입니다.
- 만들기를 클릭합니다. 서비스 엔드포인트 페이지는 준비되지 않음으로 표시된 서비스 엔드포인트 상태로 표시됩니다.
REST API
Important
외부 모델을 제공하는 서비스 엔드포인트를 만들기 위한 REST API 매개 변수는 공개 미리 보기로 제공됩니다.
다음 예제에서는 OpenAI에서 제공하는 text-embedding-ada-002
모델의 첫 번째 버전을 제공하는 엔드포인트를 만듭니다.
엔드포인트 구성 매개 변수는 POST /api/2.0/serving-endpoints를 참조하세요.
{
"name": "openai_endpoint",
"config":
{
"served_entities":
[
{
"name": "openai_embeddings",
"external_model":{
"name": "text-embedding-ada-002",
"provider": "openai",
"task": "llm/v1/embeddings",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
},
"rate_limits": [
{
"calls": 100,
"key": "user",
"renewal_period": "minute"
}
],
"tags": [
{
"key": "team",
"value": "gen-ai"
}
]
}
다음은 응답 예입니다.
{
"name": "openai_endpoint",
"creator": "user@email.com",
"creation_timestamp": 1699617587000,
"last_updated_timestamp": 1699617587000,
"state": {
"ready": "READY"
},
"config": {
"served_entities": [
{
"name": "openai_embeddings",
"external_model": {
"provider": "openai",
"name": "text-embedding-ada-002",
"task": "llm/v1/embeddings",
"openai_config": {
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
},
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1699617587000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "openai_embeddings",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "gen-ai"
}
],
"id": "69962db6b9db47c4a8a222d2ac79d7f8",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
MLflow 배포 SDK
다음은 OpenAI text-embedding-ada-002
를 사용하여 포함할 엔드포인트를 만듭니다.
외부 모델 엔드포인트의 경우 사용하려는 모델 공급자에 대한 API 키를 제공해야 합니다. 요청 및 응답 스키마 세부 정보는 REST API의 POST /api/2.0/serving-endpoints를 참조하세요. 단계별 가이드는 자습서: OpenAI 모델을 쿼리하는 외부 모델 엔드포인트 만들기를 참조하세요.
구성 external_model
섹션의 task
필드에 지정된 대로 완료 및 채팅 작업에 대한 엔드포인트를 만들 수도 있습니다. 각 작업에 대해 지원되는 모델 및 공급자는 Mosaic AI 모델 서비스 내의 외부 모델을 참조하세요.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="chat",
config={
"served_entities": [
{
"name": "completions",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
모델 서비스 엔드포인트 업데이트
모델 엔드포인트를 활성화한 후에는 원하는 대로 컴퓨팅 구성을 설정할 수 있습니다. 이 구성은 모델에 추가 리소스가 필요한 경우에 특히 유용합니다. 워크로드 크기 및 컴퓨팅 구성은 모델 제공을 위해 할당된 리소스에 대해 중요한 역할을 수행합니다.
새 구성이 준비될 때까지 이전 구성은 예측 트래픽을 계속 제공합니다. 업데이트가 진행 중이지만 다른 업데이트는 수행할 수 없습니다. 서비스 UI에서 엔드포인트 세부 정보 페이지의 오른쪽 위에 있는 업데이트 취소를 선택하여 진행 중인 구성 업데이트를 취소할 수 있습니다. 이 기능은 서비스 UI에서만 사용할 수 있습니다.
external_model
이 엔드포인트 구성에 있는 경우 제공된 엔터티 목록에는 하나의 served_entity 개체만 있을 수 있습니다. external_model
을 포함한 기존 엔드포인트에 external_model
이 더 이상 없도록 업데이트할 수 없습니다. 엔드포인트에 external_model
가 없는 경우 엔드포인트를 업데이트하여 external_model
를 추가할 수 없습니다.
REST API
엔드포인트를 업데이트하려면 요청 및 응답 스키마 세부 정보에 대한 REST API 업데이트 구성 설명서를 참조하세요.
{
"name": "openai_endpoint",
"served_entities":
[
{
"name": "openai_chat",
"external_model":{
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
}
MLflow 배포 SDK
엔드포인트를 업데이트하려면 요청 및 응답 스키마 세부 정보에 대한 REST API 업데이트 구성 설명서를 참조하세요.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.update_endpoint(
endpoint="chat",
config={
"served_entities": [
{
"name": "chats",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chats",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
rate_limits = client.update_endpoint(
endpoint="chat",
config={
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
},
)
assert rate_limits == {
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
}