Modelli esterni nella gestione dei modelli di Databricks
Importante
Gli esempi di codice in questo articolo illustrano l'utilizzo dell'API CRUD Public Preview MLflow Deployments.
Questo articolo descrive i modelli esterni in Databricks Model Serving, inclusi i provider di modelli supportati e le limitazioni.
Che cosa sono i modelli esterni?
I modelli esterni sono modelli di terze parti ospitati all'esterno di Databricks. Supportato da Model Serving, i modelli esterni consentono di semplificare l'utilizzo e la gestione di vari provider LLM (Large Language Model), ad esempio OpenAI e Anthropic, all'interno di un'organizzazione. È anche possibile usare Databricks Model Serving come provider per gestire modelli personalizzati, che offre limiti di frequenza per tali endpoint. Nell'ambito di questo supporto, Model Serving offre un'interfaccia di alto livello che semplifica l'interazione con questi servizi fornendo un endpoint unificato per gestire richieste specifiche correlate all'LLM.
Inoltre, il supporto di Azure Databricks per i modelli esterni offre una gestione centralizzata delle credenziali. Archiviando le chiavi API in un'unica posizione sicura, le organizzazioni possono migliorare il comportamento di sicurezza riducendo al minimo l'esposizione delle chiavi API sensibili in tutto il sistema. Consente inoltre di evitare di esporre queste chiavi all'interno del codice o richiedere agli utenti finali di gestire le chiavi in modo sicuro.
Vedere Esercitazione: Creare endpoint del modello esterno per eseguire query sui modelli OpenAI per istruzioni dettagliate sulla creazione di endpoint del modello esterno ed eseguire query sui modelli supportati gestiti da tali endpoint usando MLflow Deployments SDK. Per istruzioni su come usare l'interfaccia utente di gestione e l'API REST, vedere le guide seguenti:
Requisiti
- Chiave API per il provider di modelli.
- Area di lavoro di Databricks nelle aree supportate dai modelli esterni.
Provider di modelli
I modelli esterni in Model Serving sono progettati per supportare un'ampia gamma di provider di modelli. Un provider rappresenta l'origine dei modelli di Machine Learning, ad esempio OpenAI, Anthropic e così via. Ogni provider ha caratteristiche e configurazioni specifiche incapsulate all'interno del external_model
campo della configurazione dell'endpoint del modello esterno.
Sono supportati i provider seguenti:
- openai: per i modelli offerti da OpenAI e le integrazioni di Azure per Azure OpenAI e Azure OpenAI con AAD.
- anthropic: per i modelli offerti da Anthropic.
- cohere: per i modelli offerti da Cohere.
- amazon-bedrock: per i modelli offerti da Amazon Bedrock.
- ai21labs: per i modelli offerti da AI21Labs.
- google-cloud-vertex-ai: per i modelli offerti da Google Cloud Vertex AI.
- databricks-model-serving: per gli endpoint di gestione dei modelli di Databricks con schemi compatibili. Vedere Configurazione dell'endpoint.
Per richiedere supporto per un provider non elencato qui, contattare il team dell'account databricks.
Modelli supportati
Il modello scelto influisce direttamente sui risultati delle risposte ottenute dalle chiamate API. Scegliere quindi un modello che soddisfi i requisiti del caso d'uso. Ad esempio, per generare risposte conversazionali, è possibile scegliere un modello di chat. Al contrario, per generare incorporamenti di testo, è possibile scegliere un modello di incorporamento.
La tabella seguente presenta un elenco non esaustivo dei modelli supportati e dei tipi di endpoint corrispondenti. Le associazioni di modelli elencate di seguito possono essere usate come guida utile quando si configura un endpoint per i nuovi tipi di modello rilasciati man mano che diventano disponibili con un determinato provider. I clienti sono responsabili di garantire la conformità alle licenze del modello applicabili.
Nota
Con lo sviluppo rapido di LLMs, non c'è alcuna garanzia che questo elenco sia sempre aggiornato.
Provider di modelli | 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** | *Comando * comando notturno * luce del comando * comando notturno |
* 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 |
|
Gestione del modello di Databricks | Databricks che gestisce l'endpoint | Databricks che gestisce l'endpoint | Databricks che gestisce l'endpoint |
Amazon Bedrock | Antropica: * 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 AI21 Labs: * j2-grande-instruct * j2-jumbo-instruct * j2-mid * j2-mid-v1 * j2-ultra j2-ultra-v1 |
Antropica: * 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 * j2-light * j2-ultra |
||
Google Cloud Vertex AI | text-bison | * chat-bison * gemini-pro |
textembedding-gecko |
**
Il provider di modelli supporta modelli di completamento e chat ottimizzati. Per eseguire query su un modello ottimizzato, popolare il name
campo della external model
configurazione con il nome del modello ottimizzato.
† provider di modelli supporta modelli di completamento personalizzati.
Usare i modelli gestiti sugli endpoint di gestione dei modelli di Databricks
Databricks Model Serve gli endpoint come provider è supportato per i llm/v1/completions
tipi di endpoint , llm/v1/chat
e llm/v1/embeddings
. Questi endpoint devono accettare i parametri di query standard contrassegnati come necessari, mentre altri parametri potrebbero essere ignorati a seconda che l'endpoint databricks Model Serving supporti o meno.
Vedere POST /serving-endpoints/{name}/chiamate nelle informazioni di riferimento sulle API per i parametri di query standard.
Questi endpoint devono produrre risposte nel formato OpenAI seguente.
Per le attività di completamento:
{
"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
}
}
Per le attività di chat:
{
"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
}
}
Per le attività di incorporamento:
{
"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
}
}
Configurazione dell'endpoint
Per gestire ed eseguire query su modelli esterni è necessario configurare un endpoint di gestione. Vedere Creare endpoint personalizzati per la gestione di modelli
Per un endpoint di gestione di un modello esterno, è necessario includere il external_model
campo e i relativi parametri nella served_entities
sezione della configurazione dell'endpoint.
Il external_model
campo definisce il modello a cui l'endpoint inoltra le richieste. Quando si specifica un modello, è fondamentale che il provider supporti il modello richiesto. Ad esempio, openai
poiché un provider supporta modelli come text-embedding-ada-002
, ma altri provider potrebbero non essere disponibili. Se il modello non è supportato dal provider, Databricks restituisce un errore HTTP 4xx quando si tenta di instradare le richieste a tale modello.
La tabella seguente riepiloga i parametri del external_model
campo. Vedere POST /api/2.0/serving-endpoints per i parametri di configurazione degli endpoint.
Parametro | Descrizione |
---|---|
name |
Nome del modello da utilizzare. Ad esempio, gpt-3.5-turbo per il modello OpenAI GPT-3.5-Turbo . |
provider |
Specifica il nome del provider per questo modello. Questo valore stringa deve corrispondere a un provider di modelli esterni supportato. Ad esempio, openai per i modelli OpenAI GPT-3.5 . |
task |
L'attività corrisponde al tipo di interazione del modello linguistico desiderato. Le attività supportate sono "llm/v1/completions", "llm/v1/chat", "llm/v1/embeddings". |
<provider>_config |
Contiene eventuali dettagli di configurazione aggiuntivi necessari per il modello. Ciò include la specifica dell'URL di base dell'API e della chiave API. Vedere Configurare il provider per un endpoint. |
Di seguito è riportato un esempio di creazione di un endpoint del modello esterno tramite l'API create_endpoint()
. In questo esempio una richiesta inviata all'endpoint di completamento viene inoltrata al claude-2
modello fornito da 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}}"
}
}
}
]
}
)
Configurare il provider per un endpoint
Quando si crea un endpoint, è necessario specificare le configurazioni necessarie per il provider di modelli specificato. Le sezioni seguenti riepilogano i parametri di configurazione degli endpoint disponibili per ogni provider di modelli.
OpenAI
Parametro di configurazione | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
openai_api_key |
Chiave API per il servizio OpenAI. | Sì | |
openai_api_type |
Campo facoltativo per specificare il tipo di API OpenAI da usare. | No | |
openai_api_base |
URL di base per l'API OpenAI. | No | https://api.openai.com/v1 |
openai_api_version |
Campo facoltativo per specificare la versione dell'API OpenAI. | No | |
openai_organization |
Campo facoltativo per specificare l'organizzazione in OpenAI. | No |
Cohere
Parametro di configurazione | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
cohere_api_key |
Chiave API per il servizio Cohere. | Sì |
Anthropic
Parametro di configurazione | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
anthropic_api_key |
Chiave API per il servizio Anthropic. | Sì |
OpenAI di Azure
Azure OpenAI offre funzionalità distinte rispetto al servizio OpenAI diretto. Per una panoramica, vedere la documentazione sul confronto.
Parametro di configurazione | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
openai_api_key |
Chiave API per il servizio Azure OpenAI. | Sì | |
openai_api_type |
Modificare questo parametro per rappresentare il protocollo di convalida dell'accesso alla sicurezza preferito. Per la convalida del token di accesso, usare azure . Per l'autenticazione con Azure Active Directory (Azure AD) usare . azuread |
Sì | |
openai_api_base |
URL di base per il servizio API OpenAI di Azure fornito da Azure. | Sì | |
openai_api_version |
Versione del servizio Azure OpenAI da usare, specificata da una data. | Sì | |
openai_deployment_name |
Nome della risorsa di distribuzione per il servizio Azure OpenAI. | Sì | |
openai_organization |
Campo facoltativo per specificare l'organizzazione in OpenAI. | No |
L'esempio seguente illustra come creare un endpoint con 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
Parametro di configurazione | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
private_key |
Si tratta della chiave privata per l'account del servizio che ha accesso al servizio di intelligenza artificiale Google Cloud Vertex. Vedere Procedure consigliate per la gestione delle chiavi dell'account del servizio. | Sì | |
region |
Questa è l'area per il servizio di intelligenza artificiale Google Cloud Vertex. Per altri dettagli, vedere aree supportate . Alcuni modelli sono disponibili solo in aree specifiche. | Sì | |
project_id |
Si tratta dell'ID del progetto Google Cloud a cui è associato l'account del servizio. | Sì |
Amazon Bedrock
Per usare Amazon Bedrock come provider di modelli esterni, i clienti devono assicurarsi che Bedrock sia abilitato nell'area AWS specificata e che la coppia di chiavi AWS specificata disponga delle autorizzazioni appropriate per interagire con i servizi Bedrock. Per altre informazioni, vedere AWS Identity and Access Management.For more information, see AWS Identity and Access Management.
Parametro di configurazione | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
aws_region |
Area AWS da usare. Bedrock deve essere abilitato lì. | Sì | |
aws_access_key_id |
ID chiave di accesso AWS con autorizzazioni per interagire con i servizi Bedrock. | Sì | |
aws_secret_access_key |
Una chiave di accesso privata AWS associata all'ID chiave di accesso, con le autorizzazioni per interagire con i servizi Bedrock. | Sì | |
bedrock_provider |
Il provider sottostante in Amazon Bedrock. I valori supportati (senza distinzione tra maiuscole e minuscole) includono: Anthropic, Cohere, AI21Labs, Amazon | Sì |
L'esempio seguente illustra come creare un endpoint con 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",
},
}
}
]
},
)
In caso di problemi di autorizzazione di AWS, Databricks consiglia di verificare le credenziali direttamente con l'API Amazon Bedrock.
AI21 Labs
Parametro di configurazione | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
ai21labs_api_key |
Questa è la chiave API per il servizio AI21 Labs. | Sì |
Eseguire query su un endpoint del modello esterno
Dopo aver creato un endpoint del modello esterno, è pronto per ricevere traffico dagli utenti.
È possibile inviare richieste di assegnazione dei punteggi all'endpoint usando il client OpenAI, l'API REST o MLflow Deployments SDK.
- Vedere i parametri di query standard per una richiesta di assegnazione dei punteggi in POST /serving-endpoints/{name}/chiamate.
- Eseguire query sui modelli di base
L'esempio seguente esegue una query sul claude-2
modello di completamenti ospitato da Anthropic usando il client OpenAI. Per usare il client OpenAI, popolare il model
campo con il nome dell'endpoint di gestione del modello che ospita il modello su cui eseguire la query.
In questo esempio viene usato un endpoint creato in precedenza, anthropic-completions-endpoint
, configurato per l'accesso a modelli esterni dal provider di modelli Anthropic. Vedere come creare endpoint del modello esterno.
Vedere Modelli supportati per modelli aggiuntivi su cui è possibile eseguire query e i relativi provider.
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)
Formato di risposta di output previsto:
{
"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
}
}
Parametri di query aggiuntivi
È possibile passare qualsiasi parametro aggiuntivo supportato dal provider dell'endpoint come parte della query.
Ad esempio:
logit_bias
(supportato da OpenAI, Cohere).top_k
(supportato da Anthropic, Cohere).frequency_penalty
(supportato da OpenAI, Cohere).presence_penalty
(supportato da OpenAI, Cohere).stream
(supportato da OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Questa opzione è disponibile solo per le richieste di chat e completamento.
Limiti
A seconda del modello esterno scelto, la configurazione potrebbe causare l'elaborazione dei dati all'esterno dell'area in cui sono stati originati i dati.
Vedere Model Serving limits and regions (Limiti e aree di gestione dei modelli).
Risorse aggiuntive
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per