Databricks 모델 서비스 내의 외부 모델

Important

이 문서의 코드 예제에서는 공개 미리 보기 MLflow 배포 CRUD API를 사용하는 방법을 보여 줍니다.

이 문서에서는 지원되는 모델 공급자 및 제한 사항을 포함하여 Databricks 모델 서비스 내의 외부 모델에 대해 설명합니다.

외부 모델이란?

외부 모델은 Databricks 외부에서 호스트되는 타사 모델입니다. 모델 제공에서 지원하는 외부 모델을 사용하면 조직 내에서 OpenAI 및 Anthropic과 같은 다양한 LLM(대규모 언어 모델) 공급자의 사용 및 관리를 간소화할 수 있습니다. Databricks 모델 서비스를 공급자로 사용하여 해당 엔드포인트에 대한 속도 제한을 제공하는 사용자 지정 모델을 제공할 수도 있습니다. 이 지원의 일환으로 Model Serving는 특정 LLM 관련 요청을 처리하는 통합 엔드포인트를 제공하여 이러한 서비스와의 상호 작용을 간소화하는 고급 인터페이스를 제공합니다.

또한 외부 모델에 대한 Azure Databricks 지원은 중앙 집중식 자격 증명 관리를 제공합니다. 조직은 API 키를 하나의 안전한 위치에 저장함으로써 시스템 전체에서 중요한 API 키의 노출을 최소화하여 보안 태세를 향상시킬 수 있습니다. 또한 코드 내에서 이러한 키를 노출하거나 최종 사용자가 키를 안전하게 관리하도록 요구하는 것을 방지할 수 있습니다.

자습서 : 외부 모델 엔드포인트 만들기 및 MLflow 배포 SDK를 사용하여 해당 엔드포인트에서 제공하는 지원되는 모델 쿼리에 대한 단계별 지침을 위해 OpenAI 모델을 쿼리하는 외부 모델 엔드포인트 만들기 서비스 UI 및 REST API를 사용하는 방법에 대한 지침은 다음 가이드를 참조하세요.

요구 사항

  • 모델 공급자에 대한 API 키입니다.
  • 외부 모델 지원 지역의 Databricks 작업 영역 입니다.

모델 공급자

모델 서비스 내의 외부 모델은 다양한 모델 공급자를 지원하도록 설계되었습니다. 공급자는 OpenAI, Anthropic 등과 같은 기계 학습 모델의 원본을 나타냅니다. 각 공급자에는 외부 모델 엔드포인트 구성의 필드 내에 external_model 캡슐화된 특정 특성 및 구성있습니다.

지원되는 공급자는 다음과 같습니다.

  • openai: AAD와 함께 Azure OpenAIAzure OpenAI에 대한 OpenAI 및 Azure 통합에서 제공하는 모델의 경우
  • 인류: 인류에서 제공하는 모델의 경우.
  • cohere: Cohere에서 제공하는 모델의 경우
  • 아마존 암반: 아마존 베드록에서 제공하는 모델의 경우.
  • ai21labs: AI21Labs에서 제공하는 모델의 경우
  • google-cloud-vertex-ai: Google Cloud Vertex AI에서 제공하는 모델의 경우
  • databricks-model-serving: 호환되는 스키마를 사용하여 엔드포인트를 제공하는 Databricks 모델의 경우 엔드포인트 구성을 참조하세요.

여기에 나열되지 않은 공급자에 대한 지원을 요청하려면 Databricks 계정 팀에 문의하세요.

지원되는 모델

선택한 모델은 API 호출에서 가져오는 응답의 결과에 직접 영향을 줍니다. 따라서 사용 사례 요구 사항에 맞는 모델을 선택합니다. 예를 들어 대화형 응답을 생성하기 위해 채팅 모델을 선택할 수 있습니다. 반대로 텍스트 포함을 생성하기 위해 포함 모델을 선택할 수 있습니다.

아래 표에는 지원되는 모델 및 해당 엔드포인트 유형의 전체 목록이 나와 있습니다. 아래에 나열된 모델 연결은 지정된 공급자에서 사용할 수 있게 되면 새로 릴리스된 모델 형식에 대한 엔드포인트를 구성할 때 유용한 가이드로 사용할 수 있습니다. 고객은 해당 모델 라이선스를 준수할 책임이 있습니다.

참고 항목

LLM의 급속한 개발로 이 목록이 항상 최신 상태라는 보장은 없습니다.

모델 공급자 llm/v1/completions llm/v1/chat llm/v1/embeddings
OpenAI** * gpt-3.5-turbo-instruct
* babbage-002
* davinci-002
* gpt-3.5-turbo
* gpt-4
* gpt-3.5-turbo-0125
* gpt-3.5-turbo-1106
* gpt-4-0125-preview
* gpt-4-turbo-preview
* gpt-4-1106-preview
* gpt-4-vision-preview
* gpt-4-1106-vision-preview
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Azure OpenAI** * text-davinci-003
* gpt-35-turbo-instruct
* gpt-35-turbo
* gpt-35-turbo-16k
* gpt-4
* gpt-4-32k
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Anthropic * claude-1
* claude-1.3-100k
* claude-2
* claude-2.1
* claude-2.0
* claude-instant-1.2
* claude-3-opus-20240229
* claude-3-sonnet-20240229
* claude-2.1
* claude-2.0
* claude-instant-1.2
Cohere** *명령
* 명령-조명-야간
* 명령 표시등
* 명령 야간
* embed-english-v2.0
* embed-multilingual-v2.0
* embed-english-light-v2.0
* embed-english-v3.0
* embed-english-light-v3.0
* embed-multilingual-v3.0
* embed-multilingual-light-v3.0
Databricks 모델 서비스 엔드포인트를 제공하는 Databricks 엔드포인트를 제공하는 Databricks 엔드포인트를 제공하는 Databricks
아마존 암반 Anthropic:

* claude-instant-v1
* claude-v1
* claude-v2

코헤어:

* command-text-v14
* command-text-v14:7:4k
* command-light-text-v14
* command-light-text-v14:7:4k

AI21 랩:

* j2-grande-instruct
* j2-jumbo-instruct
* j2-mid
* j2-mid-v1
* j2-ultra j2-ultra-v1
Anthropic:

* claude-instant-v1:2:100k
* claude-v2
* claude-v2:0:18k
* claude-v2:0:100k
* claude-v2:1
* claude-v2:1:18k
* claude-v2:1:200k
* claude-3-sonnet-20240229-v1:0
아마존:

* titan-embed-text-v1
* titan-embed-g1-text-02
* titan-embed-text-v1:2:8k
AI21 Labs† * j2-mid
* j2-light
* j2-ultra
Google Cloud Vertex AI text-bison * 채팅 들소
* gemini-pro
textembedding-gecko

** 모델 공급자는 미세 조정된 완성 및 채팅 모델을 지원합니다. 미세 조정된 모델을 쿼리하려면 구성 필드를 external model 미세 조정된 모델의 이름으로 채웁다name.

† 모델 공급자는 사용자 지정 완성 모델을 지원합니다.

Databricks 모델 서비스 엔드포인트에 제공된 모델 사용

엔드포인트를 공급자로 제공하는 Databricks Model은 , llm/v1/chatllm/v1/embeddings 엔드포인트 유형에 대해 llm/v1/completions지원됩니다. 이러한 엔드포인트는 필수로 표시된 표준 쿼리 매개 변수를 수락해야 하지만 Databricks 모델 서비스 엔드포인트에서 지원하는지 여부에 따라 다른 매개 변수가 무시될 수 있습니다.

표준 쿼리 매개 변수는 API 참조에서 POST /serving-endpoints/{name}/invocations를 참조하세요.

이러한 엔드포인트는 다음 OpenAI 형식으로 응답을 생성해야 합니다.

완료 작업의 경우:

{
"id": "123", # Not Required
"model": "test_databricks_model",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

채팅 작업의 경우:

{
  "id": "123", # Not Required
  "model": "test_chat_model",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "human",
      "content": "\n\nWhat is the weather in San Francisco?",
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

포함 작업의 경우:

{
  "data": [
    {
      "embedding": [
       0.0023064255,
        -0.009327292,
        .... # (1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    },
    {
      "embedding": [
        0.0023064255,
        -0.009327292,
        .... #(1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    }
  ],
  "model": "test_embedding_model",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

엔드포인트 구성

외부 모델을 제공하고 쿼리하려면 서비스 엔드포인트를 구성해야 합니다. 엔드포인트를 제공하는 사용자 지정 모델 만들기 참조

엔드포인트를 제공하는 외부 모델의 경우 엔드포인트 구성 섹션에 served_entities 필드와 해당 매개 변수를 포함 external_model 해야 합니다.

external_model 필드는 이 엔드포인트가 요청을 전달하는 모델을 정의합니다. 모델을 지정할 때 공급자가 요청하는 모델을 지원하는 것이 중요합니다. 예를 들어 openai 공급자는 같은 text-embedding-ada-002모델을 지원하지만 다른 공급자는 지원하지 않을 수 있습니다. 공급자가 모델을 지원하지 않는 경우 Databricks는 요청을 해당 모델로 라우팅하려고 할 때 HTTP 4xx 오류를 반환합니다.

아래 표에는 필드 매개 변수가 external_model 요약됩니다. 엔드포인트 구성 매개 변수는 POST /api/2.0/serving-endpoints를 참조하세요.

매개 변수 설명
name 사용할 모델의 이름입니다. 예를 들어 gpt-3.5-turbo OpenAI 모델의 경우입니다 GPT-3.5-Turbo .
provider 이 모델의 공급자 이름을 지정합니다. 이 문자열 값은 지원되는 외부 모델 공급자에 해당해야 합니다. 예를 들어 openai OpenAI의 모델의 경우입니다 GPT-3.5 .
task 이 작업은 원하는 언어 모델 상호 작용 유형에 해당합니다. 지원되는 작업은 "llm/v1/completions", "llm/v1/chat", "llm/v1/embeddings"입니다.
<provider>_config 모델에 필요한 추가 구성 세부 정보를 포함합니다. 여기에는 API 기본 URL 및 API 키 지정이 포함됩니다. 엔드포인트에 대한 공급자 구성을 참조하세요.

다음은 API를 사용하여 외부 모델 엔드포인트를 create_endpoint() 만드는 예제입니다. 이 예제에서는 완료 엔드포인트로 전송된 요청이 제공된 claude-2 모델로 전달됩니다 anthropic.

import mlflow.deployments

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

client.create_endpoint(
    name="anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "claude-2",
                    "provider": "anthropic",
                    "task": "llm/v1/completions",
                    "anthropic_config": {
                        "anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
                    }
                }
            }
        ]
    }
)

엔드포인트에 대한 공급자 구성

엔드포인트를 만들 때 지정된 모델 공급자에 필요한 구성을 제공해야 합니다. 다음 섹션에서는 각 모델 공급자에 대해 사용 가능한 엔드포인트 구성 매개 변수를 요약합니다.

OpenAI

구성 매개 변수 설명 필수 항목 기본값
openai_api_key OpenAI 서비스의 API 키입니다.
openai_api_type 사용할 OpenAI API 유형을 지정하는 선택적 필드입니다. 아니요
openai_api_base OpenAI API의 기본 URL입니다. 아니요 https://api.openai.com/v1
openai_api_version OpenAI API 버전을 지정하는 선택적 필드입니다. 아니요
openai_organization OpenAI에서 조직을 지정하는 선택적 필드입니다. 아니요

Cohere

구성 매개 변수 설명 필수 항목 기본값
cohere_api_key Cohere 서비스의 API 키입니다.

Anthropic

구성 매개 변수 설명 필수 항목 기본값
anthropic_api_key Anthropic 서비스의 API 키입니다.

Azure OpenAI

Azure OpenAI에는 직접 OpenAI 서비스와 비교하여 고유한 기능이 있습니다. 개요는 비교 설명서를 참조하세요.

구성 매개 변수 설명 필수 항목 기본값
openai_api_key Azure OpenAI 서비스의 API 키입니다.
openai_api_type 기본 설정 보안 액세스 유효성 검사 프로토콜을 나타내도록 이 매개 변수를 조정합니다. 액세스 토큰 유효성 검사의 경우 .azure Azure AD(Azure Active Directory)를 사용한 인증의 경우 다음을 azuread사용합니다.
openai_api_base Azure에서 제공하는 Azure OpenAI API 서비스의 기본 URL입니다.
openai_api_version 날짜로 지정된 사용할 Azure OpenAI 서비스의 버전입니다.
openai_deployment_name Azure OpenAI 서비스에 대한 배포 리소스의 이름입니다.
openai_organization OpenAI에서 조직을 지정하는 선택적 필드입니다. 아니요

다음 예제에서는 Azure OpenAI를 사용하여 엔드포인트를 만드는 방법을 보여 줍니다.

client.create_endpoint(
    name="openai-chat-endpoint",
    config={
        "served_entities": [{
            "external_model": {
                "name": "gpt-3.5-turbo",
                "provider": "openai",
                "task": "llm/v1/chat",
                "openai_config": {
                    "openai_api_type": "azure",
                    "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
                    "openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
                    "openai_deployment_name": "my-gpt-35-turbo-deployment",
                    "openai_api_version": "2023-05-15"
                }
            }
        }]
    }
)

Google Cloud Vertex AI

구성 매개 변수 설명 필수 항목 기본값
private_key Google Cloud Vertex AI Service에 대한 액세스 권한이 있는 서비스 계정의 프라이빗 키입니다. 서비스 계정 키 관리에 대한 모범 사례를 참조 하세요.
region Google Cloud Vertex AI Service의 지역입니다. 자세한 내용은 지원되는 지역을 참조하세요. 일부 모델은 특정 지역에서만 사용할 수 있습니다.
project_id 서비스 계정이 연결된 Google Cloud 프로젝트 ID입니다.

아마존 암반

Amazon Bedrock을 외부 모델 공급자로 사용하려면 고객은 지정된 AWS 지역에서 Bedrock을 사용하도록 설정하고 지정된 AWS 키 쌍에 Bedrock 서비스와 상호 작용할 수 있는 적절한 권한이 있는지 확인해야 합니다. 자세한 내용은 AWS ID 및 액세스 관리를 참조하세요.

구성 매개 변수 설명 필수 항목 기본값
aws_region 사용할 AWS 지역입니다. 암반은 그곳에서 활성화되어야 합니다.
aws_access_key_id Bedrock 서비스와 상호 작용할 수 있는 권한이 있는 AWS 액세스 키 ID입니다.
aws_secret_access_key 액세스 키 ID와 쌍을 이루는 AWS 비밀 액세스 키로, Bedrock 서비스와 상호 작용할 수 있는 권한이 있습니다.
bedrock_provider 아마존 베드록의 기본 공급자입니다. 지원되는 값(대/소문자를 구분하지 않음) 포함: Anthropic, Cohere, AI21Labs, Amazon

다음 예제에서는 Amazon Bedrock을 사용하여 엔드포인트를 만드는 방법을 보여 줍니다.

client.create_endpoint(
    name="bedrock-anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "external_model": {
                    "name": "claude-v2",
                    "provider": "amazon-bedrock",
                    "task": "llm/v1/completions",
                    "amazon_bedrock_config": {
                        "aws_region": "<YOUR_AWS_REGION>",
                        "aws_access_key_id": "{{secrets/my_amazon_bedrock_secret_scope/aws_access_key_id}}",
                        "aws_secret_access_key": "{{secrets/my_amazon_bedrock_secret_scope/aws_secret_access_key}}",
                        "bedrock_provider": "anthropic",
                    },
                }
            }
        ]
    },
)

AWS 권한 문제가 있는 경우 Databricks는 Amazon Bedrock API를 사용하여 자격 증명을 직접 확인하는 것이 좋습니다.

AI21 랩

구성 매개 변수 설명 필수 항목 기본값
ai21labs_api_key AI21 Labs 서비스의 API 키입니다.

외부 모델 엔드포인트 쿼리

외부 모델 엔드포인트를 만든 후에는 사용자로부터 트래픽을 받을 준비가 됩니다.

OpenAI 클라이언트, REST API 또는 MLflow 배포 SDK를 사용하여 엔드포인트에 점수 매기기 요청을 보낼 수 있습니다.

다음 예제에서는 OpenAI 클라이언트를 claude-2 사용하여 Anthropic에서 호스트하는 완성 모델을 쿼리합니다. OpenAI 클라이언트를 사용하려면 쿼리하려는 모델을 호스트하는 엔드포인트를 제공하는 모델의 이름으로 필드를 채웁니다 model .

이 예제에서는 Anthropic 모델 공급자에서 외부 모델에 액세스하도록 구성된 이전에 만든 엔드포인트 anthropic-completions-endpoint를 사용합니다. 외부 모델 엔드포인트를 만드는 방법을 참조하세요.

쿼리할 수 있는 추가 모델 및 해당 공급자는 지원되는 모델을 참조하세요.

import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

completion = client.completions.create(
  model="anthropic-completions-endpoint",
  prompt="what is databricks",
  temperature=1.0
)
print(completion)

예상 출력 응답 형식:

{
"id": "123", # Not Required
"model": "anthropic-completions-endpoint",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

추가 쿼리 매개 변수

쿼리의 일부로 엔드포인트 공급자가 지원하는 추가 매개 변수를 전달할 수 있습니다.

예시:

  • logit_bias (OpenAI, Cohere에서 지원됨).
  • top_k (Anthropic, Cohere에서 지원됨).
  • frequency_penalty (OpenAI, Cohere에서 지원됨).
  • presence_penalty (OpenAI, Cohere에서 지원됨).
  • stream (OpenAI, Anthropic, Cohere, Anthropic용 Amazon Bedrock에서 지원됨). 채팅 및 완료 요청에만 사용할 수 있습니다.

제한 사항

선택한 외부 모델에 따라 구성으로 인해 데이터가 시작된 지역 외부에서 데이터가 처리될 수 있습니다.

모델 서비스 제한 및 지역을 참조 하세요.

추가 리소스