Generación de datos sintéticos

Genere datos sintéticos utilizando generadores aleatorios, algoritmos, modelos estadísticos y modelos de lenguaje grande (LLM) para simular datos reales para desarrollar y probar soluciones de manera efectiva.

Los datos sintéticos pueden ser una herramienta poderosa al desarrollar y probar soluciones, especialmente cuando los datos reales aún no existen o no se permite su uso. Los datos sintéticos o generados artificialmente pueden tener muchas de las características de los datos reales. Los datos sintéticos se crean típicamente usando generadores aleatorios, algoritmos o modelos estadísticos para simular las características y distribuciones de los datos reales. Sin embargo, esto puede ser complejo de producir o confiar en herramientas con características de sofisticación variable. Con la disponibilidad de modelos de lenguaje grande (LLM), se pueden generar datos más relevantes y específicos del esquema que tengan en cuenta las características expresadas en lenguaje natural.

Temas

Ventajas de la generación de datos sintéticos

La generación de datos sintéticos permite rellenar clones de metadatos de base de datos, soportar proyectos de desarrollo, prueba y aprendizaje automático sin utilizar datos confidenciales de tablas originales.

La generación de datos sintéticos ofrece las siguientes ventajas:
  • Relleno de clonaciones de metadatos con datos sintéticos: una clonación de metadatos replica la estructura de una base de datos o esquema sin incluir datos reales. Select AI permite la generación de datos sintéticos para rellenar estos clones, protegiendo los datos confidenciales al tiempo que permite el desarrollo, las pruebas y la creación de plantillas. Este enfoque admite pruebas de rendimiento y escalabilidad.

  • Inicio de nuevos proyectos: al iniciar un nuevo proyecto, puede que los datos reales no estén disponibles. Los datos sintéticos proporcionan muestras realistas para ayudar a demostrar conceptos y obtener apoyo para las propuestas de proyectos.

  • Validación de la experiencia del usuario: los datos sintéticos ayudan a probar las interfaces de usuario proporcionando diversos conjuntos de datos para detectar fallos de diseño, problemas de rendimiento y escalabilidad.

  • Soporte de proyectos de IA y aprendizaje automático: los datos sintéticos son útiles para entrenar modelos de IA y aprendizaje automático cuando los datos reales no están disponibles o están restringidos. Los LLM pueden generar datos con patrones específicos para facilitar el entrenamiento y la puntuación de modelos.

Generar datos sintéticos

Utilice la función DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA para generar datos sintéticos y consultar los datos mediante las acciones Select AI.

Supervisión y resolución de problemas de la generación de datos sintéticos

Al generar grandes cantidades de datos en muchas tablas, Select AI divide las tareas de generación de datos sintéticos en fragmentos más pequeños y ejecuta tareas en paralelo. Se realiza un seguimiento del estado de cada fragmento en la tabla SYNTHETIC_DATA$<operation_id>_STATUS.

Las operaciones de generación de datos sintéticos se registran en las tablas DBA_LOAD_OPERATIONS y USER_LOAD_OPERATIONS. Utilice estas tablas para supervisar la operación DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA. Consulte Seguimiento de operaciones de carga de DBMS_CLOUD para obtener más información.

Después de ejecutar la generación de datos sintéticos en una sesión determinada, puede obtener la última <operation_id> de USER_LOAD_OPERATION mediante lo siguiente:
SELECT max(id) FROM user_load_operations;

Para ver las operaciones de datos sintéticos que se ejecutan en una sesión diferente, utilice la vista DBA_LOAD_OPERATIONS.

Ver estado de generación de datos sintéticos

La tabla de estado de la operación de generación de datos sintéticos muestra el progreso de cada tabla y su fragmento correspondiente. La columna STATUS_TABLE de USER_LOAD_OPERATIONS o DBA_LOAD_OPERATIONS muestra el nombre de la tabla de estado. El nombre de la tabla es SYNTHETIC_DATA$<operation_id>_STATUS y tiene las siguientes columnas:

Nombre Tipo de Dato Descripción

ID

NUMBER

Identificador único del registro.

NAME

VARCHAR2

Nombre cualificado de la tabla, como "ADB_USER"."EMPLOYEES"

BYTES

NUMBER

Número deseado de registros para esta tarea de generación de datos

ROWS_LOADED

NUMBER

Número real de registros generados.

CHECKSUM

VARCHAR2

Valor inicial para la clave primaria durante esta tarea de generación de datos.

LAST_MODIFIED

TIMESTAMP WITH TIME ZONE

Registro de hora que indica cuándo se modificó por última vez el registro.

STATUS

VARCHAR2

Estado de la tarea de generación de datos. Los valores válidos son:
  • COMPLETED
  • FAILED
  • PENDING
  • SKIPPED

ERROR_CODE

NUMBER

Código de error, si falla la tarea de generación de datos.

ERROR_MESSAGE

VARCHAR2

Mensaje de error proporcionado si la tarea falla.

END_TIME

TIMESTAMP WITH TIME ZONE

Registro de hora que marca el final de la tarea de generación de datos.
Ejemplo: comprobación del número de registros generados para cada tabla

Para comprobar el número de registros generados para cada tabla, emita lo siguiente:

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

Consulte ROWS_LOADED para confirmar el número de filas que se cargan para cada fragmento y SUM(ROWS_LOADED) para las filas de cada tabla.

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