Modele zewnętrzne w usłudze Databricks Model Serving
Ważne
Przykłady kodu w tym artykule przedstawiają użycie interfejsu API CRUD wdrożeń MLflow w publicznej wersji zapoznawczej .
W tym artykule opisano modele zewnętrzne w usłudze Databricks Model Serving, w tym obsługiwanych dostawców modeli i ograniczeń.
Co to są modele zewnętrzne?
Modele zewnętrzne to modele innych firm hostowane poza usługą Databricks. Obsługiwane przez obsługę modeli, modele zewnętrzne umożliwiają usprawnienie użycia i zarządzania różnymi dużymi dostawcami modelu językowego (LLM), takimi jak OpenAI i Anthropic, w organizacji. Możesz również użyć usługi Databricks Model Serving jako dostawcy do obsługi modeli niestandardowych, które oferują limity szybkości dla tych punktów końcowych. W ramach tej obsługi obsługa modelu oferuje interfejs wysokiego poziomu, który upraszcza interakcję z tymi usługami, zapewniając ujednolicony punkt końcowy do obsługi określonych żądań związanych z usługą LLM.
Ponadto obsługa usługi Azure Databricks dla modeli zewnętrznych zapewnia scentralizowane zarządzanie poświadczeniami. Przechowując klucze interfejsu API w jednej bezpiecznej lokalizacji, organizacje mogą zwiększyć poziom zabezpieczeń, minimalizując narażenie poufnych kluczy interfejsu API w całym systemie. Pomaga to również zapobiec ujawnieniu tych kluczy w kodzie lub konieczności bezpiecznego zarządzania kluczami przez użytkowników końcowych.
Zobacz Samouczek: tworzenie zewnętrznych punktów końcowych modelu w celu wykonywania zapytań dotyczących modeli OpenAI, aby uzyskać szczegółowe wskazówki dotyczące tworzenia zewnętrznego punktu końcowego modelu i wykonywania zapytań dotyczących obsługiwanych modeli obsługiwanych przez te punkty końcowe przy użyciu zestawu SDK wdrożeń platformy MLflow. Zapoznaj się z następującymi przewodnikami, aby uzyskać instrukcje dotyczące używania interfejsu użytkownika obsługującego i interfejsu API REST:
Wymagania
- Klucz interfejsu API dla dostawcy modelu.
- Obszar roboczy usługi Databricks w obsługiwanych regionach modeli zewnętrznych.
Dostawcy modeli
Modele zewnętrzne w usłudze Model Serving są przeznaczone do obsługi różnych dostawców modeli. Dostawca reprezentuje źródło modeli uczenia maszynowego, takich jak OpenAI, Anthropic itd. Każdy dostawca ma swoje specyficzne cechy i konfiguracje, które są hermetyzowane w external_model
polu konfiguracji punktu końcowego modelu zewnętrznego.
Obsługiwane są następujące dostawcy:
- openai: w przypadku modeli oferowanych przez platformę OpenAI i integracji platformy Azure dla usług Azure OpenAI i Azure OpenAI z usługą AAD.
- antropic: w przypadku modeli oferowanych przez Antropic.
- cohere: W przypadku modeli oferowanych przez Cohere.
- amazon-bedrock: Dla modeli oferowanych przez Amazon Bedrock.
- ai21labs: w przypadku modeli oferowanych przez AI21Labs.
- google-cloud-vertex-ai: w przypadku modeli oferowanych przez usługę Google Cloud Vertex AI.
- databricks-model-serving: w przypadku punktów końcowych obsługujących model usługi Databricks z zgodnymi schematami. Zobacz Konfiguracja punktu końcowego.
Aby poprosić o pomoc techniczną dostawcy, którego nie ma na liście, skontaktuj się z zespołem ds. kont usługi Databricks.
Obsługiwane modele
Wybrany model ma bezpośredni wpływ na wyniki odpowiedzi uzyskanych z wywołań interfejsu API. W związku z tym wybierz model pasujący do wymagań przypadków użycia. Na przykład w przypadku generowania odpowiedzi konwersacyjnych można wybrać model czatu. Z drugiej strony w przypadku generowania osadzania tekstu można wybrać model osadzania.
W poniższej tabeli przedstawiono niewyczerpną listę obsługiwanych modeli i odpowiadających im typów punktów końcowych. Skojarzenia modeli wymienione poniżej mogą służyć jako pomocny przewodnik podczas konfigurowania punktu końcowego dla wszystkich nowo wydanych typów modeli, gdy staną się one dostępne dla danego dostawcy. Klienci są odpowiedzialni za zapewnienie zgodności z odpowiednimi licencjami modelu.
Uwaga
Dzięki szybkiemu rozwojowi llMs nie ma gwarancji, że ta lista jest aktualna przez cały czas.
Dostawca modelu | llm/v1/completions | llm/v1/chat | llm/v1/embeddings |
---|---|---|---|
OpenAI** | * gpt-3.5-turbo-poinstruowanie * 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 |
* osadzanie tekstu-ada-002 * osadzanie tekstu -3-duże * osadzanie tekstu-3-małe |
Azure OpenAI** | * text-davinci-003 * gpt-35-turbo-poinstruuj |
* gpt-35-turbo * gpt-35-turbo-16k * gpt-4 * gpt-4-32k |
* osadzanie tekstu-ada-002 * osadzanie tekstu -3-duże * osadzanie tekstu-3-małe |
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** | *Polecenia * command-light-nightly * światło polecenia * polecenie nocą |
* 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 |
|
Obsługa modelu usługi Databricks | Punkt końcowy obsługujący usługę Databricks | Punkt końcowy obsługujący usługę Databricks | Punkt końcowy obsługujący usługę Databricks |
Amazon Bedrock | Antropotyczne: * claude-instant-v1 * claude-v1 * claude-v2 Cohere: * command-text-v14 * command-text-v14:7:4k * command-light-text-v14 * command-light-text-v14:7:4k Laboratoria AI21: * j2-grande-poinstruowanie * j2-jumbo-poinstruowanie * j2-mid * j2-mid-v1 * j2-ultra j2-ultra-v1 |
Antropotyczne: * 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 |
Amazon: * titan-embed-text-v1 * titan-embed-g1-text-02 * titan-embed-text-v1:2:8k |
AI21 Labs† | * j2-mid * Światło j2 * j2-ultra |
||
Google Cloud Vertex AI | żubr tekstowy | * czat-żubr * gemini-pro |
textembedding-gecko |
**
Dostawca modelu obsługuje precyzyjne uzupełnianie i modele czatów. Aby utworzyć zapytanie dotyczące dostosowanego modelu, wypełnij name
pole external model
konfiguracji nazwą dostosowanego modelu.
dostawca † Model obsługuje niestandardowe modele uzupełniania.
Używanie modeli obsługiwanych w punktach końcowych obsługujących model usługi Databricks
Punkty końcowe obsługujące model usługi Databricks jako dostawca są obsługiwane dla llm/v1/completions
typów punktów końcowych , llm/v1/chat
i llm/v1/embeddings
. Te punkty końcowe muszą akceptować standardowe parametry zapytania oznaczone jako wymagane, podczas gdy inne parametry mogą być ignorowane w zależności od tego, czy punkt końcowy obsługujący model usługi Databricks obsługuje te parametry.
Zobacz POST /serving-endpoints/{name}/invocations w dokumentacji interfejsu API, aby uzyskać standardowe parametry zapytania.
Te punkty końcowe muszą generować odpowiedzi w następującym formacie OpenAI.
W przypadku zadań ukończenia:
{
"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
}
}
W przypadku zadań czatu:
{
"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
}
}
W przypadku zadań osadzania:
{
"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
}
}
Konfiguracja punktu końcowego
Aby obsługiwać modele zewnętrzne i wykonywać względem ich zapytań, należy skonfigurować punkt końcowy obsługujący. Zobacz Tworzenie niestandardowych punktów końcowych obsługujących model
W przypadku zewnętrznego modelu obsługującego punkt końcowy należy uwzględnić external_model
pole i jego parametry w served_entities
sekcji konfiguracji punktu końcowego.
Pole external_model
definiuje model, do którego ten punkt końcowy przekazuje żądania. Podczas określania modelu ważne jest, aby dostawca obsługiwał żądany model. Na przykład jako dostawca obsługuje modele, openai
takie jak text-embedding-ada-002
, ale inni dostawcy mogą nie. Jeśli model nie jest obsługiwany przez dostawcę, usługa Databricks zwraca błąd HTTP 4xx podczas próby kierowania żądań do tego modelu.
Poniższa tabela zawiera external_model
podsumowanie parametrów pola. Zobacz POST /api/2.0/serving-endpoints , aby uzyskać parametry konfiguracji punktu końcowego.
Parametr | Opisy |
---|---|
name |
Nazwa modelu do użycia. Na przykład gpt-3.5-turbo w przypadku modelu OpenAI GPT-3.5-Turbo . |
provider |
Określa nazwę dostawcy dla tego modelu. Ta wartość ciągu musi odpowiadać obsługiwanemu dostawcy modelu zewnętrznego. Na przykład openai w przypadku modeli openAI GPT-3.5 . |
task |
Zadanie odpowiada typowi interakcji modelu językowego, której potrzebujesz. Obsługiwane zadania to "llm/v1/completions", "llm/v1/chat", "llm/v1/embeddings". |
<provider>_config |
Zawiera wszelkie dodatkowe szczegóły konfiguracji wymagane dla modelu. Obejmuje to określenie podstawowego adresu URL interfejsu API i klucza interfejsu API. Zobacz Konfigurowanie dostawcy dla punktu końcowego. |
Poniżej przedstawiono przykład tworzenia zewnętrznego punktu końcowego modelu przy użyciu interfejsu create_endpoint()
API. W tym przykładzie żądanie wysłane do punktu końcowego ukończenia jest przekazywane do modelu dostarczonego przez anthropic
usługę claude-2
.
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}}"
}
}
}
]
}
)
Konfigurowanie dostawcy dla punktu końcowego
Podczas tworzenia punktu końcowego należy podać wymagane konfiguracje dla określonego dostawcy modelu. W poniższych sekcjach podsumowano dostępne parametry konfiguracji punktu końcowego dla każdego dostawcy modelu.
OpenAI
Parametr konfiguracji | opis | Wymagani | Wartość domyślna |
---|---|---|---|
openai_api_key |
Klucz interfejsu API dla usługi OpenAI. | Tak | |
openai_api_type |
Opcjonalne pole określające typ interfejsu API OpenAI do użycia. | Nie. | |
openai_api_base |
Podstawowy adres URL interfejsu API openAI. | Nie. | https://api.openai.com/v1 |
openai_api_version |
Opcjonalne pole określające wersję interfejsu API interfejsu OpenAI. | Nie. | |
openai_organization |
Opcjonalne pole do określenia organizacji w usłudze OpenAI. | Nie. |
Cohere
Parametr konfiguracji | opis | Wymagani | Wartość domyślna |
---|---|---|---|
cohere_api_key |
Klucz interfejsu API dla usługi Cohere. | Tak |
Anthropic
Parametr konfiguracji | opis | Wymagani | Wartość domyślna |
---|---|---|---|
anthropic_api_key |
Klucz interfejsu API dla usługi antropicznej. | Tak |
Azure OpenAI
Usługa Azure OpenAI ma różne funkcje w porównaniu z bezpośrednią usługą OpenAI. Aby zapoznać się z omówieniem, zapoznaj się z dokumentacją porównania.
Parametr konfiguracji | opis | Wymagani | Wartość domyślna |
---|---|---|---|
openai_api_key |
Klucz interfejsu API dla usługi Azure OpenAI. | Tak | |
openai_api_type |
Dostosuj ten parametr, aby reprezentować preferowany protokół weryfikacji dostępu do zabezpieczeń. W celu weryfikacji tokenu dostępu użyj polecenia azure . Do uwierzytelniania przy użyciu usługi Azure Active Directory (Azure AD) użyj polecenia azuread . |
Tak | |
openai_api_base |
Podstawowy adres URL usługi interfejsu API OpenAI platformy Azure udostępniany przez platformę Azure. | Tak | |
openai_api_version |
Wersja usługi Azure OpenAI do użycia określona przez datę. | Tak | |
openai_deployment_name |
Nazwa zasobu wdrożenia dla usługi Azure OpenAI. | Tak | |
openai_organization |
Opcjonalne pole do określenia organizacji w usłudze OpenAI. | Nie. |
W poniższym przykładzie pokazano, jak utworzyć punkt końcowy za pomocą usługi 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
Parametr konfiguracji | opis | Wymagani | Wartość domyślna |
---|---|---|---|
private_key |
Jest to klucz prywatny dla konta usługi, które ma dostęp do usługi Google Cloud Vertex AI Service. Zobacz Najlepsze rozwiązania dotyczące zarządzania kluczami konta usługi. | Tak | |
region |
Jest to region usługi AI w chmurze Google Cloud. Aby uzyskać więcej informacji, zobacz obsługiwane regiony . Niektóre modele są dostępne tylko w określonych regionach. | Tak | |
project_id |
Jest to identyfikator projektu Google Cloud skojarzony z kontem usługi. | Tak |
Amazon Bedrock
Aby korzystać z usługi Amazon Bedrock jako zewnętrznego dostawcy modeli, klienci muszą upewnić się, że aplikacja Bedrock jest włączona w określonym regionie platformy AWS, a określona para kluczy platformy AWS ma odpowiednie uprawnienia do interakcji z usługami Bedrock. Aby uzyskać więcej informacji, zobacz AWS Identity and Access Management (Zarządzanie tożsamościami i dostępem na platformie AWS).
Parametr konfiguracji | opis | Wymagani | Wartość domyślna |
---|---|---|---|
aws_region |
Region platformy AWS do użycia. Bedrock musi być tam włączony. | Tak | |
aws_access_key_id |
Identyfikator klucza dostępu platformy AWS z uprawnieniami do interakcji z usługami Bedrock. | Tak | |
aws_secret_access_key |
Klucz dostępu wpisu tajnego platformy AWS sparowany z identyfikatorem klucza dostępu z uprawnieniami do interakcji z usługami Bedrock. | Tak | |
bedrock_provider |
Podstawowy dostawca w amazon Bedrock. Obsługiwane wartości (bez uwzględniania wielkości liter) obejmują: Antropic, Cohere, AI21Labs, Amazon | Tak |
W poniższym przykładzie pokazano, jak utworzyć punkt końcowy za pomocą rozwiązania 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",
},
}
}
]
},
)
Jeśli występują problemy z uprawnieniami platformy AWS, usługa Databricks zaleca zweryfikowanie poświadczeń bezpośrednio za pomocą interfejsu API Amazon Bedrock.
Laboratoria AI21
Parametr konfiguracji | opis | Wymagani | Wartość domyślna |
---|---|---|---|
ai21labs_api_key |
Jest to klucz interfejsu API dla usługi AI21 Labs. | Tak |
Wykonywanie zapytań względem zewnętrznego punktu końcowego modelu
Po utworzeniu zewnętrznego punktu końcowego modelu jest on gotowy do odbierania ruchu od użytkowników.
Żądania oceniania można wysyłać do punktu końcowego przy użyciu klienta OpenAI, interfejsu API REST lub zestawu SDK wdrożeń MLflow.
- Zobacz standardowe parametry zapytania dla żądania oceniania w pliku POST /serving-endpoints/{name}/invocations.
- Modele podstaw zapytań
Poniższy przykład wykonuje zapytanie dotyczące claude-2
modelu uzupełniania hostowanego przez platformę Anthropic przy użyciu klienta OpenAI. Aby użyć klienta OpenAI, wypełnij model
pole nazwą punktu końcowego obsługującego model, który hostuje model, którego chcesz wykonać zapytanie.
W tym przykładzie użyto wcześniej utworzonego punktu końcowego , anthropic-completions-endpoint
skonfigurowanego do uzyskiwania dostępu do modeli zewnętrznych od dostawcy modelu antropicznego. Zobacz, jak tworzyć punkty końcowe modelu zewnętrznego.
Zobacz Obsługiwane modele, aby uzyskać dodatkowe modele , dla których można wykonywać zapytania i ich dostawców.
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)
Oczekiwany format odpowiedzi wyjściowej:
{
"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
}
}
Dodatkowe parametry zapytania
Możesz przekazać wszelkie dodatkowe parametry obsługiwane przez dostawcę punktu końcowego w ramach zapytania.
Na przykład:
logit_bias
(obsługiwane przez openAI, Cohere).top_k
(obsługiwane przez Anthropic, Cohere).frequency_penalty
(obsługiwane przez openAI, Cohere).presence_penalty
(obsługiwane przez openAI, Cohere).stream
(obsługiwane przez OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Jest to dostępne tylko w przypadku żądań czatu i ukończenia.
Ograniczenia
W zależności od wybranego modelu zewnętrznego konfiguracja może spowodować przetwarzanie danych poza regionem, w którym pochodzą dane.
Zobacz Limity i regiony obsługi modeli.
Dodatkowe zasoby
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla