Creare endpoint di gestione del modello di base
Questo articolo illustra come creare endpoint di gestione dei modelli che servono i modelli di base.
Databricks Model Serving supporta i modelli di base seguenti:
- Modelli aperti all'avanguardia resi disponibili dalle API del modello foundation. Questi modelli sono architetture di modelli di base curate che supportano l'inferenza ottimizzata. I modelli di base, come Llama-2-70B-chat, BGE-Large e Mistral-7B sono disponibili per un uso immediato con prezzi con pagamento per token . I carichi di lavoro di produzione, che usano modelli di base o ottimizzati, possono essere distribuiti con garanzie di prestazioni usando la velocità effettiva con provisioning.
- Modelli esterni. Si tratta di modelli ospitati all'esterno di Databricks. Gli endpoint che servono modelli esterni possono essere regolati centralmente e i clienti possono stabilire limiti di velocità e controllo di accesso per loro. Alcuni esempi includono modelli di base come GPT-4 di OpenAI, Claude di Anthropic e altri.
La gestione dei modelli offre le opzioni seguenti per la creazione di endpoint del modello:
- Interfaccia utente di servizio
- REST API
- MLflow Deployments SDK
Per la creazione di endpoint che servono modelli di Machine Learning o Python tradizionali, vedere Creare endpoint di gestione di modelli personalizzati.
Requisiti
- Un'area di lavoro di Databricks in un'area supportata.
- Per creare endpoint con MLflow Deployments SDK, è necessario installare il client di distribuzione MLflow. Per installarlo, eseguire:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Creare un endpoint di gestione di un modello di base
Di seguito viene descritto come creare un endpoint che gestisce un modello di base reso disponibile usando i modelli esterni di Databricks. Per gli endpoint che servono varianti ottimizzate dei modelli resi disponibili usando le API del modello di base, vedere Creare l'endpoint della velocità effettiva con provisioning usando l'API REST.
Interfaccia utente di gestione
- Nel campo Nome specificare un nome per l'endpoint.
- Nella sezione Entità servite
- Fare clic nel campo Entità per aprire il modulo Seleziona entità servita.
- Selezionare Modello esterno.
- Selezionare il provider di modelli da usare.
- Fare clic su Conferma
- Specificare il nome del modello esterno da usare. Il modulo viene aggiornato dinamicamente in base alla selezione. Vedere i modelli esterni disponibili.
- Selezionare il tipo di attività. Le attività disponibili sono chat, completamenti e incorporamenti.
- Specificare i dettagli di configurazione per l'accesso al provider di modelli selezionato. Si tratta in genere del segreto che fa riferimento al token di accesso personale da usare per l'accesso a questo modello.
- Fai clic su Crea. La pagina Gestione degli endpoint viene visualizzata con Lo stato dell'endpoint di servizio visualizzato come Non pronto.
API REST
Importante
I parametri dell'API REST per la creazione di endpoint che servono i modelli di base sono disponibili in anteprima pubblica.
Nell'esempio seguente viene creato un endpoint che gestisce la prima versione del text-embedding-ada-002
modello fornito da OpenAI.
Vedere POST /api/2.0/serving-endpoints per i parametri di configurazione degli endpoint.
{
"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"
}
]
}
Di seguito è riportata una risposta di esempio.
{
"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
}
Sdk per le distribuzioni mlflow
Di seguito viene creato un endpoint per gli incorporamenti con OpenAI text-embedding-ada-002
.
Per gli endpoint del modello di base, è necessario specificare le chiavi API per il provider di modelli che si vuole usare. Per informazioni dettagliate sullo schema di richiesta e risposta, vedere POST /api/2.0/serving-endpoints nell'API REST.
È anche possibile creare endpoint per i completamenti e le attività di chat, come specificato dal task
campo nella external_model
sezione della configurazione. Vedere Modelli esterni in Databricks Model Serving per i modelli e i provider supportati per ogni attività.
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",
}
Aggiornare un endpoint del modello di base
Dopo aver abilitato un endpoint del modello, è possibile impostare la configurazione di calcolo in base alle esigenze. Questa configurazione è particolarmente utile se sono necessarie risorse aggiuntive per il modello. Le dimensioni del carico di lavoro e la configurazione di calcolo svolgono un ruolo chiave nelle risorse allocate per gestire il modello.
Fino a quando la nuova configurazione non è pronta, la configurazione precedente continua a gestire il traffico di stima. Mentre è in corso un aggiornamento, non è possibile eseguire un altro aggiornamento. Nell'interfaccia utente di gestione è possibile annullare un aggiornamento della configurazione in corso selezionando Annulla aggiornamento nella parte superiore destra della pagina dei dettagli dell'endpoint. Questa funzionalità è disponibile solo nell'interfaccia utente Di servizio.
Quando un oggetto external_model
è presente in una configurazione dell'endpoint, l'elenco delle entità servite può avere un solo oggetto served_entity. Gli endpoint esistenti con un external_model
oggetto non possono essere aggiornati per non avere più un oggetto external_model
. Se l'endpoint viene creato senza , external_model
non è possibile aggiornarlo per aggiungere un oggetto external_model
.
API REST
Per aggiornare l'endpoint del modello di base, vedere la documentazione sulla configurazione dell'aggiornamento dell'API REST per informazioni dettagliate sullo schema di richiesta e risposta.
{
"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}}"
}
}
}
]
}
Sdk per le distribuzioni mlflow
Per aggiornare l'endpoint del modello di base, vedere la documentazione sulla configurazione dell'aggiornamento dell'API REST per informazioni dettagliate sullo schema di richiesta e risposta.
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,
}
],
}
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