LLM-Training-DataSet-Builder
Agiliza la creación del conjunto de datos para entrenar un modelo de idioma grande con trillizos: instrucción-entrada-salida. La configuración predeterminada se ajusta a los requisitos de Github.com/tloen/alpaca-lora.
¿Este proyecto procesa los pedidos de muestra en varios formatos (base de datos XML, JSON y PostgreSQL) y genera pares de preguntas y respuestas basadas en la información de los pedidos?
El código está diseñado para ser modular y fácilmente personalizable , lo que permite varios métodos de pretratamiento y generación de instrucciones.
Características
- Admite el procesamiento de formatos de entrada de base de datos XML, JSON y PostgreSQL.
- Preprocesamiento de conjuntos de datos personalizable e Instrucciones Generación.
- Opción para fusionar archivos de salida en un solo archivo.
- Parámetros configurables a través de argumentos
config.py o línea de comandos.
Archivos y funciones
Main.py
Este es el principal punto de entrada para el programa. Maneja argumentos de línea de comandos, procesa los archivos de entrada o la base de datos, y genera los archivos de salida.
config.py
Este archivo contiene parámetros de configuración que se utilizan en todo el proyecto.
- Param_activate_config : si se debe usar parámetros config.py o argumentos de línea de comandos (verdadero/falso).
- Param_output_dir : el directorio donde se crea el conjunto de entrenamiento.
- Param_output_merge_file : si se fusiona los archivos de salida (verdadero/falso).
- Param_output_merge_file_name : el nombre del archivo de salida fusionado.
- Param_method : el método de procesamiento (valores: XMLS, XML, JSONS, JSON, Base de datos).
- Param_xml_path, param_xmls_path, param_json_path, param_jsons_path : rutas de archivo/directorio para archivos XML y JSON.
- Param_database_host, param_database_user, param_database_dbname, param_database_dbpassword, param_database_port : parámetros de conexión de base de datos postgresql.
config_parser.py
Este archivo contiene funciones para procesar las entradas de base de datos XML, JSON y PostgreSQL y generar pares de respuesta-respuesta basados en el conjunto de datos.
- DataSet_Preteatment (DataSet) : preprocesos el conjunto de datos. Se puede personalizar.
- Generate_instructions (DataSet) : genera pares de respuesta a preguntas basadas en el conjunto de datos. Se puede personalizar.
- Process_xml_file (nombre de archivo) : procesa un archivo XML y genera pares de respuesta-respuesta.
- Process_json_file (nombre de archivo) : procesa un archivo JSON y genera pares de respuesta-respuesta.
- Process_database (usuario, contraseña, host, puerto, base de datos) : obtiene datos de una base de datos PostgreSQL, la procesa y genera pares de respuesta-respuesta.
sample_orders_parser.py
Este archivo contiene funciones personalizadas para pretratear conjuntos de datos y generar pares de respuesta-respuesta.
- remove_dupplicates (items_node) : elimina los elementos duplicados de los elementos_node en función de su descripción.
- update_sku_price (item_node, sku_dict, precio_dict) : actualiza el sku y el precio del item_node en función de la descripción.
- APLICE_INFLATION (Order_date, precio, cantidad) : aplica la inflación en función del orden_date al precio y la cantidad.
- Calculación_total_price (items_node) : calcula el precio total de todos los elementos en los elementos_node.
- update_items_with_inflation (elementos, orden_date) : actualiza los elementos con precios y cantidades infladas basadas en el orden_date.
- Generate_General_instructions (DataSet) : genera instrucciones generales basadas en el conjunto de datos.
- Generate_item_instructions (item_node) : genera instrucciones específicas del elemento basadas en el elemento_node.
- DataSet_Preteatment_Custom (DataSet) : función personalizada para preprocesar el conjunto de datos.
- Generate_instructions_custom (DataSet) : función personalizada para generar pares de respuesta-respuesta basados en el conjunto de datos.
Empezando
- Elija uno de los tres métodos de procesamiento para implementar:
- process_xml_file (nombre de archivo): procesamiento de archivos XML (ya implementados en el ejemplo)
- process_json_file (nombre de archivo): procesamiento de archivos JSON (ahora implementados)
- process_database (usuario, contraseña, IP, base de datos, output_dir): procesar registros desde una base de datos (ahora implementada)
- Modifique la función DataSET_Preteatment (DataSet) para preprocesar los datos antes de generar instrucciones.
- Modifique la función Generate_instructions (TRATED_DATASET) para generar las instrucciones deseadas.
- Para probar el ejemplo proporcionado, ejecute uno de los siguientes comandos:
python main.py --xmls=./input/sample-order-xml/
o
python main.py --xml=./input/sample-order-xml/sample-file.xml
Para archivos JSON:
python main.py --jsons=./input/sample-order-json/
o
python main.py --json=./input/sample-order-json/sample-file.json
Para la base de datos PostgreSQL:
python main.py --user= < db_user > --password= < db_password > --ip= < db_host > --database= < db_name >
Ejemplo proporcionado
El ejemplo que se muestra en este programa demuestra un caso de uso sofisticado, que requiere un analizador personalizado adaptado a un contexto comercial en particular. El preprocesamiento de datos se lleva a cabo dentro de la función DataSET_Pretreatment_Custom, mientras que la función intrincada de instrucciones es generada por la función Generate_Instructions_Custom. Al cumplir con estos pasos y utilizar las muestras de código proporcionadas como referencia, puede modificar este programa para acomodar diversos formatos de entrada y producir instrucciones personalizadas adaptadas a sus necesidades únicas.
Descargo de responsabilidad de mi empleador
Esto se ha desarrollado durante un fin de semana en mi tiempo personal.
Autor
Pierre-Henri Ausseil LinkedIn: Linkedin.com/in/ausseil/ Github: github.com/ph-ausseil/
Sobre el autor
Trabajo en Integración de datos (Middleware, Datahub, API ...) y administración de servicios. No soy un desarrollador. Quería hacer una prueba de concepto sobre los usos de LLM en una pila de empresas para que la LLM supiera sobre el entorno empresarial y mejoraría la toma de decisiones de una empresa.