Share via


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/completionstipi di endpoint , llm/v1/chate 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.
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.

Anthropic

Parametro di configurazione Descrizione Richiesto Valore predefinito
anthropic_api_key Chiave API per il servizio Anthropic.

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.
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
openai_api_base URL di base per il servizio API OpenAI di Azure fornito da Azure.
openai_api_version Versione del servizio Azure OpenAI da usare, specificata da una data.
openai_deployment_name Nome della risorsa di distribuzione per il servizio Azure OpenAI.
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.
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.
project_id Si tratta dell'ID del progetto Google Cloud a cui è associato l'account del servizio.

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ì.
aws_access_key_id ID chiave di accesso AWS con autorizzazioni per interagire con i servizi Bedrock.
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.
bedrock_provider Il provider sottostante in Amazon Bedrock. I valori supportati (senza distinzione tra maiuscole e minuscole) includono: Anthropic, Cohere, AI21Labs, Amazon

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.

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.

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