Habilitación de tablas de inferencia en puntos de conexión de servicio de modelos mediante la API

Importante

Esta característica está en versión preliminar pública.

En este artículo se explica cómo usar la API de Databricks para habilitar tablas de inferencia para un punto de conexión de servicio de modelo. Para obtener información general sobre el uso de tablas de inferencia, incluido cómo habilitarlas mediante la interfaz de usuario de Databricks, consulte Tablas de inferencia para la supervisión y depuración de modelos.

Puede habilitar tablas de inferencia al crear un nuevo punto de conexión o en un punto de conexión existente. Databricks recomienda crear el punto de conexión con una entidad de servicio para que la tabla de inferencia no se vea afectada si el usuario que creó el punto de conexión se quita del área de trabajo.

El propietario de las tablas de inferencia es el usuario que creó el punto de conexión. Todas las listas de control de acceso (ACL) de la tabla siguen los permisos estándar de Unity Catalog y el propietario de la tabla puede modificarlos.

Requisitos

  • Su área de trabajo debe estar habilitada para Unity Catalog.
  • Para habilitar las tablas de inferencia en un punto de conexión, tanto el creador del punto de conexión como el modificador necesitan los permisos siguientes:
    • Permiso CAN MANAGE en el punto de conexión.
    • USE CATALOG permisos en el catálogo especificado.
    • USE SCHEMA permisos en el esquema especificado.
    • CREATE TABLEpermisos en el esquema.

Habilitación de tablas de inferencia en la creación de puntos de conexión mediante la API

Puede habilitar tablas de inferencia para un punto de conexión durante la creación de puntos de conexión mediante la API. Para obtener instrucciones sobre cómo crear un punto de conexión, consulte Creación de un modelo personalizado que atiende puntos de conexión.

En la API, el cuerpo de la solicitud tiene un valor auto_capture_config para especificar:

  • El catálogo de Unity Catalog: cadena que representa el catálogo para almacenar la tabla.
  • El esquema de Unity Catalog: cadena que representa el esquema para almacenar la tabla.
  • Prefijo de tabla (opcional): cadena que se usa como prefijo en el nombre de la tabla de inferencia. Si no se especifica, se usa el nombre del punto de conexión.
  • Habilitado (opcional): valor booleano usado para habilitar o deshabilitar tablas de inferencia. De forma predeterminada es "true".

Después de especificar un catálogo, un esquema y, opcionalmente, un prefijo de tabla, se crea una tabla en <catalog>.<schema>.<table_prefix>_payload. Esta tabla crea automáticamente una tabla administrada de Unity Catalog. El propietario de la tabla es el usuario que crea el punto de conexión.

Nota:

No se admite la especificación de una tabla existente, ya que la tabla de inferencia siempre se crea automáticamente al crear o actualizar puntos de conexión.

Advertencia

La tabla de inferencia podría dañarse si realiza alguna de las acciones siguientes:

  • Se cambia el esquema de la tabla.
  • Cambie el nombre de la tabla.
  • Elimine la tabla.
  • Se pierden permisos en el catálogo o esquema de Unity Catalog.

En este caso, el auto_capture_config del estado del punto de conexión muestra un estado de FAILED para la tabla de carga. Si esto sucede, debe crear un nuevo punto de conexión para seguir usando tablas de inferencia.

En el ejemplo siguiente se muestra cómo habilitar tablas de inferencia durante la creación de puntos de conexión.

POST /api/2.0/serving-endpoints

{
  "name": "feed-ads",
  "config":{
    "served_entities": [
      {
       "entity_name": "ads1",
       "entity_version": "1",
       "workload_size": "Small",
       "scale_to_zero_enabled": true
      }
    ],
    "auto_capture_config":{
       "catalog_name": "ml",
       "schema_name": "ads",
       "table_name_prefix": "feed-ads-prod"
    }
  }
}

La respuesta tiene el siguiente aspecto:

{
  "name": "feed-ads",
  "creator": "customer@example.com",
  "creation_timestamp": 1666829055000,
  "last_updated_timestamp": 1666829055000,
  "state": {
    "ready": "NOT_READY",
    "config_update": "IN_PROGRESS"
  },
  "pending_config": {
    "start_time": 1666718879000,
    "served_entities": [
      {
        "name": "ads1-1",
        "entity_name": "ads1",
        "entity_version": "1",
        "workload_size": "Small",
        "scale_to_zero_enabled": true,
        "state": {
          "deployment": "DEPLOYMENT_CREATING",
          "deployment_state_message": "Creating"
        },
        "creator": "customer@example.com",
        "creation_timestamp": 1666829055000
    }
   ],
   "config_version": 1,
   "traffic_config": {
     "routes": [
       {
         "served_model_name": "ads1-1",
         "traffic_percentage": 100
       }
      ]
   },
   "auto_capture_config": {
     "catalog_name": "ml",
     "schema_name": "ads",
     "table_name_prefix": "feed-ads-prod",
     "state": {
       "payload_table": {
         "name": "feed-ads-prod_payload"
       }
     },
     "enabled": true
   }
  },
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "permission_level": "CAN_MANAGE"
}

Una vez que haya habilitado el registro en tablas de inferencia, espere hasta que el punto de conexión esté listo. A continuación, puede empezar a llamarlo.

Después de crear una tabla de inferencia, el sistema debe controlar la evolución del esquema y agregar datos.

Las siguientes operaciones no afectan a la integridad de la tabla:

  • Ejecutar OPTIMIZE, ANALYZE y VACUUM en la tabla.
  • Eliminar datos antiguos sin usar.

Si no especifica un valor auto_capture_config, de forma predeterminada se vuelve a usar la configuración de la versión de configuración anterior. Por ejemplo, si las tablas de inferencia ya están habilitadas, se usa la misma configuración en la siguiente actualización del punto de conexión; o, si las de inferencia se han deshabilitado, siguen estando deshabilitadas.

{
  "served_entities": [
    {
      "name":"current",
      "entity_name":"model-A",
      "entity_version":"1",
      "workload_size":"Small",
      "scale_to_zero_enabled":true
    }
  ],
  "auto_capture_config": {
    "enabled": false
  }
}

Habilitación de tablas de inferencia en un punto de conexión existente mediante la API

También puede habilitar tablas de inferencia en un punto de conexión existente mediante la API. Una vez habilitadas las tablas de inferencia, siga especificando el mismo cuerpo de auto_capture_config en futuras llamadas API de punto de conexión de actualización para seguir usando tablas de inferencia.

Nota:

No se admite cambiar la ubicación de la tabla después de habilitar las tablas de inferencia.

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

{
  "served_entities": [
    {
      "name":"current",
      "entity_name":"model-A",
      "entity_version":"1",
      "workload_size":"Small",
      "scale_to_zero_enabled":true
    },
    {
      "name":"challenger",
      "entity_name":"model-B",
      "entity_version":"1",
      "workload_size":"Small",
      "scale_to_zero_enabled":true
    }
  ],
  "traffic_config":{
    "routes": [
      {
        "served_model_name":"current",
        "traffic_percentage":"50"
      },
      {
        "served_model_name":"challenger",
        "traffic_percentage":"50"
      }
    ]
  },
  "auto_capture_config":{
   "catalog_name": "catalog",
   "schema_name": "schema",
   "table_name_prefix": "my-endpoint"
  }
}

Deshabilitación de tablas de inferencia

Al deshabilitar las tablas de inferencia, no es necesario especificar el prefijo de catálogo, esquema o tabla. El único campo obligatorio es enabled: false.

POST /api/2.0/serving-endpoints

{
  "name": "feed-ads",
  "config":{
    "served_entities": [
      {
       "entity_name": "ads1",
       "entity_version": "1",
       "workload_size": "Small",
       "scale_to_zero_enabled": true
      }
    ],
    "auto_capture_config":{
       "enabled": false
    }
  }
}

Para volver a habilitar una tabla de inferencia deshabilitada, siga las instrucciones de Habilitar tablas de inferencia en un punto de conexión existente. Use la misma tabla o especifique una nueva.

Pasos siguientes

Después de habilitar tablas de inferencia, puede supervisar los modelos servidos en el punto de conexión de servicio de modelos con la supervisión de Databricks Lakehouse. Para más detalles, consulte Flujo de trabajo: Supervisión del rendimiento del modelo mediante tablas de inferencia.