Criar um endpoint de modelo de serviço de fundação
Neste artigo, o senhor aprenderá a criar um endpoint de modelo de serviço que implante e sirva modelos de fundação.
O Mosaic AI Model Serving é compatível com os seguintes modelos:
-
Modelos externos. Esses são modelos de base que são hospedados fora da Databricks. que atendem a modelos externos podem ser controlados de forma centralizada e os clientes podem estabelecer limites de taxa e controle de acesso para eles. Os exemplos incluem modelos de fundação como o GPT-4 da OpenAI e o Claude da Anthropic.
-
Modelos de fundação abertos de última geração disponibilizados por APIs de modelo de fundação. Esses modelos são arquiteturas de modelos básicos selecionadas que oferecem suporte à inferência otimizada. Modelos básicos, como Meta-Llama-3.1-70B-Instruct, GTE-Large e Mistral-7B estão disponíveis para uso imediato com preços pay-per-tokens . As cargas de trabalho de produção, usando modelos básicos ou ajustados, podem ser implantadas com garantias de desempenho usando o provisionamento da taxa de transferência .
A servindo modelo oferece as seguintes opções para a criação da servindo modelo endpoint:
- A interface de usuário de serviço
- API REST
- SDK de implantações do MLflow
Para criar um ponto de extremidade que atenda aos modelos tradicionais ML ou Python, consulte Criar ponto de extremidade de modelo de serviço personalizado.
Requisitos
-
Um Databricks workspace em uma região com suporte.
-
Para criar um endpoint usando o MLflow Deployments SDK, o senhor deve instalar o cliente MLflow Deployment. Para instalá-lo, execute:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Criar uma fundação servindo de modelo endpoint
O senhor pode criar um site endpoint que serve variantes ajustadas de modelos de fundação disponibilizados usando o Modelo de Fundação APIs provisionamento Taxa de transferência . Consulte Criar seu provisionamento Taxa de transferência endpoint usando o REST API .
Para os modelos básicos que são disponibilizados usando o modelo básico APIs pay-per-tokens , o Databricks fornece automaticamente um ponto de extremidade específico para acessar os modelos compatíveis em seu Databricks workspace. Para acessá-las, selecione Serving tab na barra lateral esquerda do site workspace. O Foundation Model APIs está localizado na parte superior da lista de endpoints view.
Para consultar esses pontos de extremidade, consulte Consultar modelos de base.
Criar um modelo de serviço externo endpoint
A seguir, descrevemos como criar um endpoint que consulta um modelo básico disponibilizado usando modelos externos do Databricks.
- Serving UI
- REST API
- MLflow Deployments SDK
- In the Name field provide a name for your endpoint.
- In the Served entities section
- Click into the Entity field to open the Select served entity form.
- Select Foundation models.
- In the Select a foundation model field, select the model provider you want to use from those listed under External model providers. The form dynamically updates based on your model provider selection.
- Click Confirm.
- Provide the configuration details for accessing the selected model provider. This is typically the secret that references the personal access token you want the endpoint to use to access this model.
- Select the task. Available tasks are chat, completion, and embeddings.
- Select the name of the external model you want to use. The list of models dynamically updates based on your task selection. See the available external models.
- Click Create. The Serving endpoints page appears with Serving endpoint state shown as Not Ready.
The REST API parameters for creating serving endpoints that serve external models are in Public Preview.
The following example creates an endpoint that serves the first version of the text-embedding-ada-002
model provided by OpenAI.
See POST /api/2.0/serving-endpoints for endpoint configuration parameters.
{
"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"
}
]
}
The following is an example response.
{
"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
}
The following creates an endpoint for embeddings with OpenAI text-embedding-ada-002
.
For external model endpoints, you must provide API keys for the model provider you want to use. See POST /api/2.0/serving-endpoints in the REST API for request and response schema details. For a step-by-step guide, see Tutorial: Create external model endpoints to query OpenAI models.
You can also create endpoints for completions and chat tasks, as specified by the task
field in the external_model
section of the configuration. See External models in Mosaic AI Model Serving for supported models and providers for each task.
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",
}
Atualizar o endpoint do modelo de serviço
Após habilitar um modelo endpoint, o senhor pode definir a configuração compute conforme desejado. Essa configuração é particularmente útil se o senhor precisar de recurso adicional para o seu modelo. O tamanho da carga de trabalho e a compute configuração key do site desempenham um papel importante em quais recursos são alocados para atender ao seu modelo.
Até que a nova configuração esteja pronta, a configuração antiga continua fornecendo tráfego de previsão. Enquanto houver uma atualização em andamento, outra atualização não poderá ser feita. Na interface de usuário do Serving, o senhor pode cancelar uma atualização de configuração em andamento selecionando Cancel update (Cancelar atualização) no canto superior direito da página de detalhes do endpoint. Essa funcionalidade só está disponível na interface de usuário de serviço.
Quando um external_model
está presente em uma configuração de endpoint, a lista de entidades servidas só pode ter um objeto served_entity. O endpoint existente com um external_model
não pode ser atualizado para não ter mais um external_model
. Se o endpoint for criado sem um external_model
, o senhor não poderá atualizá-lo para adicionar um external_model
.
- REST API
- MLflow Deployments SDK
To update your endpoint see the REST API update configuration documentation for request and response schema details.
{
"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}}"
}
}
}
]
}
To update your endpoint see the REST API update configuration documentation for request and response schema details.
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,
}
],
}