Activer des tables d’inférence sur les points de terminaison de service des modèles à l’aide de l’API
Important
Cette fonctionnalité est disponible en préversion publique.
Cet article explique comment utiliser l’API Databricks pour activer les tables d’inférence pour un point de terminaison de service des modèles. Pour obtenir des informations générales sur l’utilisation de tables d’inférence, notamment sur la façon de les activer au moyen de l’interface utilisateur Databricks, consultez Tables d’inférence pour la surveillance et le débogage des modèles.
Vous pouvez activer les tables d’inférence lorsque de la création d’un point de terminaison ou sur un point de terminaison existant. Databricks vous recommande de créer le point de terminaison avec un principal de service, afin que la table d’inférence ne soit pas affectée si l’utilisateur qui a créé le point de terminaison est supprimé de l’espace de travail.
Le propriétaire des tables d’inférence est l’utilisateur ayant créé le point de terminaison. Toutes les listes de contrôle d’accès (ACL) de la table suivent les autorisations standard du catalogue Unity et peuvent être modifiées par le propriétaire de la table.
Exigences
- Votre espace de travail doit être activé pour Unity Catalog.
- Le créateur ou la créatrice du point de terminaison et le modificateur doivent avoir Peut gérer autorisation sur le point de terminaison. Consultez Listes de contrôle d’accès.
- Le créateur ou la créatrice du point de terminaison et le modificateur doivent avoir les autorisations suivantes dans Unity Catalog :
- Autorisations
USE CATALOG
sur le catalogue spécifié. - Autorisations
USE SCHEMA
sur le schéma spécifié. - Autorisations
CREATE TABLE
dans le schéma.
- Autorisations
Activer les tables d’inférence lors de la création d’un point de terminaison à l’aide de l’API
Vous pouvez activer les tables d’inférence pour un point de terminaison lors de la création du point de terminaison à l’aide de l’API. Pour obtenir des instructions sur la création d’un point de terminaison, consultez Créer et gérer des points de terminaison de mise en service des modèles.
Dans l’API, le corps de la requête dispose de auto_capture_config
pour spécifier :
- le catalogue Unity Catalog : chaîne représentant le catalogue pour stocker la table ;
- le schéma du Unity Catalog : chaîne représentant le schéma pour stocker la table ;
- (facultatif) le préfixe de table : chaîne utilisée comme préfixe pour le nom de la table d’inférence. Si le préfix n’est pas spécifié, le nom du point de terminaison est utilisé ;
- (facultatif) activée : valeur booléenne utilisée pour activer ou désactiver les tables d’inférence. Cette valeur a la valeur true par défaut.
Après avoir spécifié un catalogue, un schéma et éventuellement un préfixe de table, une table est créée dans <catalog>.<schema>.<table_prefix>_payload
. Cette table crée automatiquement une table managée Unity Catalog. Le propriétaire de la table est l’utilisateur ayant créé le point de terminaison.
Remarque
La spécification d’une table existante n’est pas prise en charge, car la table d’inférence est toujours créée automatiquement lors de la création du point de terminaison ou des mises à jour de point de terminaison.
Avertissement
La table d’inférence peut être altérée si vous effectuez l’une des actions suivantes :
- Modifiez le schéma de la table.
- Modifiez le nom de la table.
- Supprimez la table.
- Perdez les autorisations sur le catalogue ou le schéma Unity Catalog.
Dans ce cas, le auto_capture_config
de l’état du point de terminaison affiche un état FAILED
pour la table de charge utile. Si cela se produit, vous devez créer un point de terminaison pour utiliser encore des tables d’inférence.
L’exemple suivant montre comment activer les tables d’inférence lors de la création du point de terminaison.
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 réponse se présente ainsi :
{
"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"
}
Une fois la connexion aux tables d’inférence activée, attendez que votre point de terminaison soit prêt. Vous pouvez ensuite commencer à l’appeler.
Après avoir créé une table d’inférence, l’évolution du schéma et l’ajout de données doivent être gérées par le système.
Les opérations suivantes n’affectent pas l’intégrité de la table :
- Exécution d’OPTIMIZE, ANALYZE et VACUUM sur la table.
- Suppression des anciennes données inutilisées.
Si vous ne spécifiez pas de auto_capture_config
, par défaut, la configuration des paramètres de la version de configuration précédente est réutilisée. Par exemple, si les tables d’inférence ont déjà été activées, les mêmes paramètres sont utilisés sur la mise à jour suivante du point de terminaison. Si les tables d’inférence ont été désactivées, elles restent désactivées.
{
"served_entities": [
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"auto_capture_config": {
"enabled": false
}
}
Activer les tables d’inférence sur un point de terminaison existant à l’aide de l’API
Vous pouvez également activer les tables d’inférence sur un point de terminaison existant à l’aide de l’API. Une fois les tables d’inférence activées, continuez à spécifier le même corps auto_capture_config
dans les futurs appels API de mise à jour des points de terminaison pour continuer à utiliser les tables d'inférence.
Remarque
Il n’est pas possible de modifier l’emplacement de la table après l’activation des tables d’inférence.
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"
}
}
Désactiver les tables d’inférence
Lors de la désactivation de tables d’inférence, vous n’avez pas besoin de spécifier le catalogue, le schéma ou le préfixe de la table. Le seul champ obligatoire est 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
}
}
}
Pour réactiver une table d’inférence désactivée, suivez les instructions fournies dans Activer les tables d’inférence sur un point de terminaison existant. Vous pouvez utiliser la même table ou en spécifier une nouvelle.
Étapes suivantes
Après avoir activé les tables d’inférence, vous pouvez surveiller les modèles servis dans votre point de terminaison de service de modèle avec Databricks Lakehouse Monitoring. Pour plus d’informations, consultez Workflow : Surveiller les performances du modèle à l’aide de tables d’inférence.