Criar um endpoint de modelo de serviço personalizado

Visualização

O Mosaic AI Model Serving está em Public Preview e é compatível com os sites us-east1 e us-central1.

Este artigo descreve como criar um endpoint de modelo de serviço que serve modelos personalizados usando o modelo de serviço Databricks.

O servindo modelo oferece as seguintes opções para servir a criação do endpoint:

  • A UI de serviço

  • API REST

  • SDK de implantações do MLflow

Para criar um endpoint que sirva modelos de IA generativa, consulte Criar endpoint de IA generativa servindo modelo.

Requisitos

  • Seu workspace deve estar em uma região compatível.

  • Se você usar bibliotecas customizadas ou bibliotecas de um servidor espelho privado com seu modelo, consulte Usar bibliotecas Python customizadas com Model Serving antes de criar o endpoint de modelo.

  • Para criar um endpoint usando o SDK do MLflow Deployments, o senhor deve instalar o cliente do MLflow Deployment. Para instalá-lo, execute:

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

Controle de acesso

Para entender as opções de controle de acesso para o endpoint da servindo modelo para o gerenciamento endpoint, consulte gerenciar permissões em sua servindo modelo endpoint.

O senhor também pode adicionar variável de ambiente para armazenar credenciais para o modelo de serviço. Consulte Configurar o acesso ao recurso a partir do endpoint servindo modelo

Criar um ponto de extremidade

Você pode criar um endpoint para exibição de modelo com a IU de exibição .

  1. Clique em Envio na barra lateral para exibir a IU de Envio.

  2. Clique em Criar endpoint de veiculação.

    Painel de serviço de modelo na interface do usuário do Databricks

Para modelos registrados no Unity Catalog:

  1. No campo Nome , forneça um nome para o seu endpoint.

  2. Na seção Entidades atendidas, clique no campo Entidade para abrir o formulário Selecionar entidade atendida.

    1. Selecione o tipo de modelo que você deseja servir. O formulário é atualizado dinamicamente com base na sua seleção.

    2. Selecione qual modelo e versão do modelo você deseja atender.

    3. Selecione a porcentagem de tráfego a ser encaminhada para seu modelo atendido.

    4. Selecione o tamanho da CPU ou GPU compute a ser usado. Somente o GPU_MEDIUM compute é compatível com a GPU.

    5. Em compute escala-out, selecione o tamanho do compute escala out que corresponde ao número de solicitações que esse modelo atendido pode processar ao mesmo tempo. Esse número deve ser aproximadamente igual a QPS x tempo de execução do modelo. Os tamanhos disponíveis são pequeno para 0 a 4 solicitações, médio para 8 a 16 solicitações e grande para 16 a 64 solicitações.

    6. Especifique se o endpoint deve escalar para zero quando não estiver em uso.

  3. Clique em Criar. A página Servindo endpoints aparece com o estado do endpoint de veiculação mostrado como Não pronto.

    Criar um endpoint de veiculação de modelo

O senhor pode criar um endpoint usando o site REST API. Consulte POST /api/2.0/serving-endpoint para os parâmetros de configuração do endpoint.

O exemplo a seguir cria um endpoint que serve a primeira versão do modelo ads1 que está registrado no Unity Catalog registro de modelo. Para especificar um modelo do Unity Catalog, forneça o nome completo do modelo, incluindo o catálogo pai e o esquema, como, por exemplo, catalog.schema.example-model.

POST /api/2.0/serving-endpoints

{
  "name": "uc-model-endpoint",
  "config":
  {
    "served_entities": [
      {
        "name": "ads-entity"
        "entity_name": "catalog.schema.my-ads-model",
        "entity_version": "3",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      },
      {
        "entity_name": "catalog.schema.my-ads-model",
        "entity_version": "4",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      }
    ],
    "traffic_config":
    {
      "routes": [
        {
          "served_model_name": "my-ads-model-3",
          "traffic_percentage": 100
        },
        {
          "served_model_name": "my-ads-model-4",
          "traffic_percentage": 20
        }
      ]
    }
  },
  "tags": [
    {
      "key": "team",
      "value": "data science"
    }
  ]
}

A seguir está um exemplo de resposta. O estado config_update do endpoint é NOT_UPDATING e o modelo servido está em um estado READY .

{
  "name": "uc-model-endpoint",
  "creator": "user@email.com",
  "creation_timestamp": 1700089637000,
  "last_updated_timestamp": 1700089760000,
  "state": {
    "ready": "READY",
    "config_update": "NOT_UPDATING"
  },
  "config": {
    "served_entities": [
      {
        "name": "ads-entity",
        "entity_name": "catalog.schema.my-ads-model-3",
        "entity_version": "3",
        "workload_size": "Small",
        "scale_to_zero_enabled": true,
        "workload_type": "CPU",
      "state": {
        "deployment": "DEPLOYMENT_READY",
        "deployment_state_message": ""
      },
      "creator": "user@email.com",
      "creation_timestamp": 1700089760000
      }
    ],
    "traffic_config": {
      "routes": [
        {
          "served_model_name": "catalog.schema.my-ads-model-3",
          "traffic_percentage": 100
        }
      ]
    },
    "config_version": 1
  },
  "tags": [
    {
      "key": "team",
      "value": "data science"
    }
  ],
  "id": "e3bd3e471d6045d6b75f384279e4b6ab",
  "permission_level": "CAN_MANAGE",
  "route_optimized": false
}

MLflow O Deployments fornece um API para tarefas de criação, atualização e exclusão. O APIs para essas tarefas aceita os mesmos parâmetros que o REST API para atender ao endpoint. Consulte POST /api/2.0/serving-endpoint para os parâmetros de configuração do endpoint.

O exemplo a seguir cria um endpoint que serve a terceira versão do modelo my-ads-model que está registrado no Unity Catalog registro de modelo. Você deve fornecer o nome completo do modelo, incluindo o catálogo principal e o esquema, como catalog.schema.example-model.


from mlflow.deployments import get_deploy_client

client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
    name="unity-catalog-model-endpoint",
    config={
        "served_entities": [
            {
                "name": "ads-entity"
                "entity_name": "catalog.schema.my-ads-model",
                "entity_version": "3",
                "workload_size": "Small",
                "scale_to_zero_enabled": true
            }
        ],
        "traffic_config": {
            "routes": [
                {
                    "served_model_name": "my-ads-model-3",
                    "traffic_percentage": 100
                }
            ]
        }
    }
)

Você também pode:

Tipos de carga de trabalho de GPU

A implantação de GPU é compatível com as seguintes versões de pacote:

  • PyTorch 1.13.0 - 2.0.1

  • TensorFlow 2.5.0 - 2.13.0

  • MLflow 2.4.0 e acima

Para implantar seus modelos usando GPUs, inclua o campo workload_type na configuração do endpoint durante a criação do endpoint ou como uma atualização da configuração do endpoint usando a API. Para configurar seu endpoint para cargas de trabalho de GPU com a UI de serviço, selecione o tipo de GPU desejado em compute Type dropdown.

{
  "served_entities": [{
    "entity_name": "catalog.schema.ads1",
    "entity_version": "2",
    "workload_type": "GPU_MEDIUM",
    "workload_size": "Small",
    "scale_to_zero_enabled": false,
  }]
}

A tabela a seguir resume os tipos de carga de trabalho de GPU disponíveis com suporte.

Tipo de carga de trabalho da GPU

Instância de GPU

Memória GPU

GPU_MEDIUM

L4

Modificar um endpoint de modelo personalizado

Depois de ativar um endpoint de modelo personalizado, o senhor pode atualizar a configuração do compute conforme desejar. 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 atendendo ao tráfego de previsão. Enquanto houver uma atualização em andamento, outra atualização não poderá ser feita. No entanto, o senhor pode cancelar uma atualização em andamento na interface de usuário do Serving.

Depois de ativar um endpoint modelo, selecione Editar endpoint para modificar a configuração compute do seu endpoint.

Você pode fazer o seguinte:

  • Escolha entre alguns tamanhos de carga de trabalho e autoscale é configurado automaticamente dentro do tamanho da carga de trabalho.

  • Especifique se o endpoint deve ser reduzido a zero quando não estiver em uso.

  • Modifique a porcentagem de tráfego para rotear para seu modelo servido.

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 UI de serviço.

A seguir, um exemplo de atualização de configuração de endpoint usando a API REST. Consulte PUT /api/2.0/serving-endpoint/{{name}/config.

PUT /api/2.0/serving-endpoints/{name}/config

{
  "name": "unity-catalog-model-endpoint",
  "config":
  {
    "served_entities": [
      {
        "entity_name": "catalog.schema.my-ads-model",
        "entity_version": "5",
        "workload_size": "Small",
        "scale_to_zero_enabled": true
      }
    ],
    "traffic_config":
    {
      "routes": [
        {
          "served_model_name": "my-ads-model-5",
          "traffic_percentage": 100
        }
      ]
    }
  }
}

O MLflow Deployments SDK usa os mesmos parâmetros que o REST API, consulte PUT /api/2.0/serving-endpoint/{name}/config para obter detalhes do esquema de solicitação e resposta.

O exemplo de código a seguir usa um modelo do site Unity Catalog registro de modelo:

import mlflow
from mlflow.deployments import get_deploy_client

mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")

endpoint = client.create_endpoint(
  name=f"{endpointname}",
  config={
    "served_entities": [
        {
            "entity_name": f"{catalog}.{schema}.{model_name}",
            "entity_version": "1",
            "workload_size": "Small",
            "scale_to_zero_enabled": True
        }
    ],
    "traffic_config": {
        "routes": [
            {
                "served_model_name": f"{model_name}-1",
                "traffic_percentage": 100
            }
        ]
    }
  }
)

Pontuação de um endpoint de modelo

Para pontuar seu modelo, envie solicitações para o endpoint servindo modelo.

exemplos Notebook

O Notebook a seguir inclui diferentes modelos registrados do Databricks que você pode usar para começar a funcionar com o modelo de instalação endpoint.

Os exemplos de modelos podem ser importados para o site workspace seguindo as instruções em Import a Notebook. Depois de escolher e criar um modelo a partir de um dos exemplos, registre-o em Unity Catalog e, em seguida, siga o fluxo de trabalho UI os passos para servir o modelo.

ensinar e registrar um modelo Scikit-Learn para modelo servindo Notebook

Abra o bloco de anotações em outra guia

ensinar e registrar um modelo HuggingFace para modelo servindo Notebook

Abra o bloco de anotações em outra guia