Creación de puntos de conexión de servicio de modelos personalizados
En este artículo se describe cómo crear puntos de conexión de servicio de modelos que sirven modelos personalizados mediante Databricks Servicio de Modelos.
El servicio de modelos proporciona las siguientes opciones para atender la creación de puntos de conexión:
- Interfaz de usuario de servicio
- REST API
- SDK de implementaciones de MLflow
Para crear puntos de conexión que sirvan modelos de IA generativa, consulte Creación de un modelo da IA generativa que atiende puntos de conexión.
Requisitos
- Su área de trabajo debe estar en una región admitida.
- Si usa bibliotecas personalizadas o bibliotecas desde un servidor reflejado privado con el modelo, consulte Uso de bibliotecas de Python personalizadas con Servicio de modelos antes de crear el punto de conexión del modelo.
- Para crear puntos de conexión mediante el SDK de implementaciones de MLflow, debe instalar el cliente de implementación de MLflow. Para instalarlo, ejecute:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Control de acceso
Para comprender las opciones de control de acceso para los puntos de conexión de servicio de modelos para la administración de puntos de conexión, vea Administración de permisos en el modelo que atiende el punto de conexión.
También puede agregar variables de entorno para almacenar las credenciales de servicio del modelo. Vea Configuración del acceso a los recursos desde los puntos de conexión de servicio del modelo
Crear un punto de conexión
Interfaz de usuario de servicio
Puede crear un punto de conexión para el modelo que sirve con la interfaz de usuario de servicio.
Haga clic en Servicio en la barra lateral para mostrar la interfaz de usuario de servicio.
Haga clic en Crear punto de conexión de servicio.
Para modelos registrados en el registro de modelos del área de trabajo o modelos en Unity Catalog:
En el campo Nombre, proporcione un nombre para el punto de conexión.
En la sección Entidades atendidas
- Haga clic en el campo Entidad para abrir el formulario Seleccionar entidad atendida.
- Seleccione el tipo de modelo que desea servir. El formulario se actualiza dinámicamente en función de la selección.
- Seleccione el modelo y la versión del modelo que desea servir.
- Seleccione el porcentaje de tráfico que se va a enrutar al modelo servido.
- Seleccione el tamaño de proceso que se va a usar. Puede usar los procesos de CPU o GPU para las cargas de trabajo. Consulte Tipos de carga de trabajo de GPU para obtener más información sobre los procesos de GPU disponibles.
- Seleccione el tamaño de proceso que se va a usar. Puede usar los procesos de CPU o GPU para las cargas de trabajo. Consulte Tipos de carga de trabajo de GPU para obtener más información sobre los procesos de GPU disponibles.
- En Escalabilidad horizontal de procesos, seleccione el tamaño de la escalabilidad horizontal de procesos que se corresponda con el número de solicitudes que puede procesar este modelo servido al mismo tiempo. Este número debe ser aproximadamente igual al tiempo de ejecución del modelo QPS x.
- Los tamaños disponibles son Pequeño para 0 a 4 solicitudes, Medio para 8 a 16 solicitudes y Grande para 16 a 64 solicitudes.
- Especifique si el punto de conexión debe escalar a cero cuando no esté en uso.
Haga clic en Crear. La página Puntos de conexión de servicio aparece con el estado Punto de conexión de servicio que se muestra como No listo.
REST API
Puede crear puntos de conexión mediante la API de REST. Consulte POST /api/2.0/serving-endpoints para ver los parámetros de configuración del punto de conexión.
El siguiente ejemplo crea un punto final que sirve la primera versión del modelo ads1
que se registra en el registro de modelos. Para especificar un modelo del catálogo de Unity, proporcione el nombre completo del modelo, incluido el catálogo primario y el esquema, como, catalog.schema.example-model
.
POST /api/2.0/serving-endpoints
{
"name": "workspace-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "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"
}
]
}
Este es un ejemplo de respuesta: El estado del punto de config_update
conexión es NOT_UPDATING
y el modelo servido está en un READY
estado.
{
"name": "workspace-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": "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": "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
}
SDK de implementaciones de MLflow
Las implementaciones de MLflow proporcionan una API para crear, actualizar y eliminar tareas. Las API de estas tareas aceptan los mismos parámetros que la API de REST para atender los puntos de conexión. Consulte POST /api/2.0/serving-endpoints para ver los parámetros de configuración del punto de conexión.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="workspace-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "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
}
]
}
}
)
También puede:
Configure el punto de conexión para la optimización de rutas.
Habilite las tablas de inferencia para capturar automáticamente las solicitudes entrantes y las respuestas salientes a sus puntos de conexión de servicio de modelos.
Tipos de carga de trabajo de la GPU
La implementación de GPU es compatible con las siguientes versiones de paquete:
- Pytorch 1.13.0 - 2.0.1
- Tensorflow 2.5.0 - 2.13.0
- MLflow 2.4.0 y posterior
Para implementar sus modelos utilizando GPU incluya el campo workload_type
en la configuración de su punto de conexión durante la creación del punto de conexión o como una actualización de la configuración del punto de conexión utilizando la API. Para configurar su punto de conexión para cargas de trabajo de GPU con la interfaz de usuario de Servidor, seleccione el tipo de GPU deseado en el menú desplegable Tipo de proceso.
{
"served_entities": [{
"name": "ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
En la tabla siguiente se resumen los tipos de carga de trabajo de GPU disponibles admitidos.
Tipo de carga de trabajo de la GPU | Instancia de GPU | Memoria de GPU |
---|---|---|
GPU_SMALL |
1xT4 | 16 GB |
GPU_LARGE |
1xA100 | 80GB |
GPU_LARGE_2 |
2xA100 | 160GB |
Modificar un punto de conexión de modelo personalizado
Después de habilitar un punto de conexión de modelo personalizado, puede actualizar la configuración de proceso según sea necesario. Esta configuración resulta especialmente útil si se necesita usar recursos adicionales en el modelo. El tamaño de la carga de trabajo y la configuración de proceso desempeñan un papel clave a la hora de decidir qué recursos se asignan para servir el modelo.
Hasta que la nueva configuración esté lista, la configuración anterior sigue atendiendo el tráfico de predicción. Aunque hay una actualización en curso, no se puede realizar otra actualización. Sin embargo, puede cancelar una actualización en curso desde la interfaz de usuario de servicio.
Interfaz de usuario de servicio
Después de habilitar un punto de conexión de modelo, seleccione Editar punto de conexión para modificar la configuración de proceso del punto de conexión.
Puede hacer lo siguiente:
- Elija entre algunos tamaños de carga de trabajo y el escalado automático se configura automáticamente dentro del tamaño de la carga de trabajo.
- Especifique si el punto de conexión debe reducir verticalmente a cero cuando no esté en uso.
- Modifique el porcentaje de tráfico para enrutar al modelo servido.
Para cancelar una actualización de configuración en curso, seleccione Cancelar actualización en la parte superior derecha de la página de detalles del punto de conexión. Esta funcionalidad solo está disponible en la interfaz de usuario de servicio.
REST API
A continuación se muestra un ejemplo de actualización de configuración de punto de conexión mediante la API de REST. Consulte PUT /api/2.0/serving-endpoints/{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
}
]
}
}
}
SDK de implementaciones de MLflow
El SDK de implementaciones de MLflow usa los mismos parámetros que la API REST, consulte PUT /api/2.0/serving-endpoints/{name}/config para obtener detalles del esquema de solicitud y respuesta.
En el ejemplo de código siguiente se usa un modelo del registro de modelos del catálogo de Unity:
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
}
]
}
}
)
Puntuación de un punto de conexión de modelo
Para puntuar el modelo, envíe solicitudes al punto de conexión de servicio del modelo.
- Vea Puntos de conexión de servicio de consulta para modelos personalizados.
- Consulte Consultar modelos de IA generativa.
Recursos adicionales
- Administración de puntos de conexión de servicio de modelos.
- Modelos externos en Servicio de modelos de Mosaic AI.
- Si prefiere usar Python, puede usar el SDK de Python en tiempo real de Databricks.
Ejemplos de cuadernos
Los cuadernos siguientes incluyen diferentes modelos registrados de Databricks que puede usar para ponerse en marcha con los puntos de conexión del servicio de modelos.
Los ejemplos de modelo se pueden importar en el área de trabajo siguiendo las instrucciones de Importación de un cuaderno. Después de elegir y crear un modelo a partir de uno de los ejemplos, regístrelo en el catálogo de Unity y, a continuación, siga los pasos de flujo de trabajo de la interfaz de usuario para el servicio de modelos.