L'exécution d'une inférence IA sur des données situées hors de votre base de données nécessite la mise en place et la maintenance d'un pipeline distinct pour extraire les données, les évaluer, puis recharger les résultats. PolarDB for AI supprime cette contrainte en permettant d'exécuter l'inférence directement dans PolarDB for MySQL et de conserver la sortie sous forme de table interrogeable.
La sortie est stockée dans une table augmentée par l'IA (AAT), c'est-à-dire une table dont une ou plusieurs colonnes contiennent des résultats d'inférence générés par un modèle d'IA. Les AAT reposent sur Object Storage Service (OSS) plutôt que sur le moteur de stockage principal, ce qui évite au modèle d'IA d'écrire fréquemment des données dans la base. Une fois générée, une AAT se comporte comme n'importe quelle autre table externe : vous pouvez l'interroger avec SELECT, la joindre à des tables existantes, ainsi que filtrer ou agréger ses colonnes. Par exemple, les données stockées dans les AAT permettent de catégoriser facilement des groupes d'utilisateurs, de prédire des montants de ventes ou d'obtenir du contenu généré par l'IA.
Exemple : La table ci-dessous contient des enregistrements de vols avec des attributs tels que la compagnie aérienne, l'itinéraire et l'heure de départ.
Figure 1. Table d'origine

L'AAT ajoute une colonne result contenant la prédiction du modèle, indiquant ici si un vol risque d'être retardé.
Figure 2. AAT avec les résultats d'inférence IA

Prérequis
Avant de commencer, vérifiez les points suivants :
L'archivage des données froides est activé sur votre cluster PolarDB for MySQL. Cette fonctionnalité est indispensable car les AAT sont stockées sous forme de tables externes OSS. Consultez Activer l'archivage des données froides.
Une base de données nommée
polar4aiexiste avec le jeu de caractèresutf8mb4. Les AAT sont automatiquement écrites dans cette base. Le compte de base de données doit correspondre à celui utilisé par PolarDB for AI et disposer des permissions de lecture et d'écriture. Consultez Créer une base de données.
Générer une AAT à partir d'un modèle d'IA
Les étapes suivantes détaillent un exemple complet : entraîner un modèle LightGBM sur des données de vols, exécuter une tâche de prédiction hors ligne, puis interroger les résultats.
Étape 1 : Créer un modèle
Exécutez l'instruction suivante pour entraîner un modèle LightGBM nommé airlines_gbm_copy1 sur la table airlines_train :
/*polar4ai*/
CREATE MODEL airlines_gbm_copy1
WITH (model_class='lightgbm',
x_cols ='Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols='Delay',
model_parameter=(boosting_type='gbdt', n_estimators=100,
max_depth=8, num_leaves=256))
AS (SELECT * FROM airlines_train)
Étape 2 : Vérifier l'enregistrement du modèle
/*polar4ai*/SHOW MODELS;
La sortie liste tous les modèles enregistrés dans la base de données :

Étape 3 : Exécuter une tâche de prédiction hors ligne pour générer l'AAT
Soumettez une tâche de prédiction à l'aide du modèle entraîné :
/*polar4ai*/SELECT TripID,Delay
FROM
PREDICT (
MODEL airlines_gbm_copy1,
SELECT * FROM airlines_train_1000_copy1)
WITH
(s_cols='TripID,Delay',
x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols='Delay',
primary_key='TripID', mode='async',into_type='db')
INTO lightgbm_v2_predict82201;
Paramètres clés de cette instruction :
| Paramètre | Valeur | Explication |
|---|---|---|
mode |
async |
Exécute la tâche de manière asynchrone. L'inférence à grande échelle peut prendre beaucoup de temps ; une exécution synchrone bloquerait votre connexion pendant toute la durée du traitement. |
into_type |
db |
Écrit la sortie dans une table accessible via la base de données. Utilisez db lorsque vous devez interroger ou joindre les résultats avec SQL. |
primary_key |
TripID |
Définit la clé primaire de l'AAT générée. |
Après l'exécution, un ID de tâche est renvoyé. Exemple : babc6d66-xxxx-yyyy-a4b8-1b1426ce8614.
lightgbm_v2_predict82201 correspond au nom de l'AAT qui sera créée automatiquement.
Étape 4 : Vérifier l'état de la tâche
Utilisez l'ID de tâche pour suivre la progression. Lorsque l'état passe à finish, le modèle a terminé l'inférence et l'AAT est prête à être interrogée.
/*polar4ai*/SHOW TASK `babc6d66-xxxx-yyyy-a4b8-1b1426ce8614`

Étape 5 : Inspecter le schéma de l'AAT
SHOW CREATE TABLE polar4ai.lightgbm_v2_predict82201;
Sortie :
CREATE TABLE `lightgbm_v2_predict82201` (
`TripID` bigint(20) NOT NULL,
`Delay` bigint(20) DEFAULT NULL,
`result` text,
PRIMARY KEY (`TripID`)
) ENGINE=CSV DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci /*!99990 800020204 NULL_MARKER='NULL' */ CONNECTION='default_oss_server'
Les colonnes TripID et Delay reprennent les types et longueurs de la table d'origine. La colonne result contient la sortie d'inférence du modèle. Les entrées ENGINE=CSV et CONNECTION='default_oss_server' confirment que la table est une table externe reposant sur OSS.
Étape 6 : Interroger l'AAT
SELECT * FROM polar4ai.lightgbm_v2_predict82201 LIMIT 1000;

La colonne result contient les résultats de prédiction ainsi que leurs valeurs de probabilité.
Étape 7 : Joindre l'AAT à d'autres tables
L'AAT fonctionne comme une table classique. Vous pouvez la joindre au jeu de données d'origine afin de filtrer et d'analyser les résultats :
SELECT * FROM
airlines_train_1000_copy1, polar4ai.lightgbm_v2_predict82204
WHERE
airlines_train_1000_copy1.TripID=polar4ai.lightgbm_v2_predict82204.TripID
AND
airlines_train_1000_copy1.Delay=1

Limites
Les AAT sont stockées sous forme de tables externes OSS et non dans le moteur de stockage principal.
La base de données
polar4aidoit utiliser le jeu de caractèresutf8mb4. Aucun autre jeu de caractères n'est pris en charge pour le stockage des AAT.Le compte de base de données utilisé pour créer et interroger les AAT doit correspondre à celui configuré pour PolarDB for AI, avec des permissions explicites de lecture et d'écriture.