Génération de données synthétiques

Générer des données synthétiques à l'aide de générateurs aléatoires, d'algorithmes, de modèles statistiques et de grands modèles de langage (LLM) pour simuler des données réelles pour développer et tester efficacement des solutions.

Les données synthétiques peuvent être un outil puissant lors du développement et du test de solutions, en particulier lorsque les données réelles n'existent pas encore ou ne sont pas autorisées à être utilisées. Les données synthétiques, ou artificiellement générées, peuvent avoir de nombreuses caractéristiques des données réelles. Les données synthétiques sont généralement créées à l'aide de générateurs aléatoires, d'algorithmes ou de modèles statistiques pour simuler les caractéristiques et les distributions des données réelles. Cependant, cela peut être complexe à produire ou à s'appuyer sur des outils avec des caractéristiques de sophistication variable. Avec la disponibilité des grands modèles de langage (LLM), des données plus pertinentes et spécifiques au schéma peuvent être générées qui tiennent compte des caractéristiques exprimées en langage naturel.

Rubriques

Avantages de la génération de données synthétiques

La génération de données synthétiques permet d'alimenter les clones des métadonnées de base de données, prenant en charge les projets de développement, de test et d'apprentissage automatique sans utiliser les données sensibles des tables d'origine.

La génération de données synthétiques offre les avantages suivants :
  • Alimentation des clones de métadonnées avec des données synthétiques : Un clone de métadonnées réplique la structure d'une base de données ou d'un schéma sans inclure les données réelles. Select AI permet la génération de données synthétiques pour alimenter ces clones, protégeant les données sensibles tout en permettant le développement, les tests et la création de modèles. Cette approche prend en charge les tests de performance et d'évolutivité.

  • Démarrage de nouveaux projets : Lors du démarrage d'un nouveau projet, il est possible que les données réelles ne soient pas disponibles. Les données synthétiques fournissent des échantillons réalistes pour aider à démontrer les concepts et à obtenir un soutien pour les propositions de projet.

  • Validation de l'expérience utilisateur : Les données synthétiques facilitent le test des interfaces utilisateur en fournissant divers jeux de données pour détecter les défauts de conception, les problèmes de performance et d'évolutivité.

  • Prise en charge des projets d'intelligence artificielle et d'apprentissage automatique : Les données synthétiques sont utiles pour l'entraînement des modèles d'intelligence artificielle et d'apprentissage automatique lorsque des données réelles sont indisponibles ou restreintes. Les LLM peuvent générer des données avec des modèles spécifiques pour faciliter l'entraînement et la notation des modèles.

Générer les données synthétiques

Utilisez la fonction DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA pour générer des données synthétiques et interroger les données à l'aide des actions Sélectionner l'intelligence artificielle.

Surveiller et dépanner la génération de données synthétiques

Lors de la génération de grandes quantités de données dans de nombreuses tables, Select AI fractionne les tâches de génération de données synthétiques en fragments plus petits et exécute les tâches en parallèle. Le statut de chaque fragment fait l'objet d'un suivi dans la table SYNTHETIC_DATA$<operation_id>_STATUS.

Les opérations de génération de données synthétiques sont enregistrées dans les tables DBA_LOAD_OPERATIONS et USER_LOAD_OPERATIONS. Utilisez ces tables pour surveiller l'opération DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA. Pour plus de détails, voir Suivre les opérations de chargement DBMS_CLOUD.

Après avoir exécuté la génération de données synthétiques dans une session donnée, vous pouvez obtenir la dernière version de <operation_id> à partir de USER_LOAD_OPERATION à l'aide des éléments suivants :
SELECT max(id) FROM user_load_operations;

Pour voir les opérations de données synthétiques exécutées dans une autre session, utilisez la vue DBA_LOAD_OPERATIONS.

Voir le statut de la génération de données synthétiques

La table d'état de l'opération de génération de données synthétiques indique la progression de chaque table et de sa tranche correspondante. La colonne STATUS_TABLE dans USER_LOAD_OPERATIONS ou DBA_LOAD_OPERATIONS affiche le nom de la table de statut. Le nom de la table est SYNTHETIC_DATA$<operation_id>_STATUS et comporte les colonnes suivantes :

Le nom Type de données Description

ID

NUMBER

Identificateur unique de l'enregistrement.

NAME

VARCHAR2

Nom qualifié de la table, par exemple "ADB_USER"."EMPLOYEES"

BYTES

NUMBER

Nombre d'enregistrements souhaité pour cette tâche de génération de données.

ROWS_LOADED

NUMBER

Nombre réel d'enregistrements générés.

CHECKSUM

VARCHAR2

Valeur de départ de la clé primaire lors de cette tâche de génération de données.

LAST_MODIFIED

TIMESTAMP WITH TIME ZONE

Horodatage indiquant la date de la dernière modification de l'enregistrement.

STATUS

VARCHAR2

Statut de la tâche de génération de données. Les valeurs possibles sont :
  • COMPLETED
  • FAILED
  • PENDING
  • SKIPPED

ERROR_CODE

NUMBER

Code d'erreur, si la tâche de génération de données échoue.

ERROR_MESSAGE

VARCHAR2

Message d'erreur fourni si la tâche échoue.

END_TIME

TIMESTAMP WITH TIME ZONE

Horodatage marquant la fin de la tâche de génération de données.
Exemple : Vérifiez le nombre d'enregistrements générés pour chaque table

Pour vérifier le nombre d'enregistrements générés pour chaque table, procédez comme suit :

SELECT name, SUM(rows_loaded) FROM synthetic_data$<operation_id>_status group by name;

Interrogez ROWS_LOADED pour confirmer le nombre de rangées chargées pour chaque fragment et SUM(ROWS_LOADED) pour les rangées de chaque table.

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "DIRECTOR","record_count":150},
                         {"owner": "ADB_USER", "name": "MOVIE_ACTOR","record_count":300},
                         {"owner": "ADB_USER", "name": "CLASSES", "user_prompt":"all in fall semester","record_count":5},
                         {"owner": "ADB_USER", "name": "ACTOR","record_count":220},
                         {"owner": "ADB_USER", "name": "MOVIE","record_count":50}]'
    );
END;
/
 
 
-- Check loaded rows for each chunk
SQL> SELECT name, rows_loaded FROM synthetic_data$141_status order by name;
NAME                           ROWS_LOADED
------------------------------------------
"ADB_USER"."ACTOR"                        188
"ADB_USER"."ACTOR"                         32
"ADB_USER"."CLASSES"                        5
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE"                         50
"ADB_USER"."MOVIE_ACTOR"                   38
"ADB_USER"."MOVIE_ACTOR"                  114
"ADB_USER"."MOVIE_ACTOR"                  148
 
 
 
-- Check loaded rows for each table
SQL> SELECT name, SUM(rows_loaded) FROM synthetic_data$141_status group by name;
 
NAME                      SUM(ROWS_LOADED)
------------------------------------------
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE_ACTOR"                  300
"ADB_USER"."CLASSES"                        5
"ADB_USER"."ACTOR"                        220
"ADB_USER"."MOVIE"                         50