GraphGen: ajuste de modelos lingüísticos mediante grafos de conocimiento para generar datos sintéticos

Introducción general

GraphGen es un marco de código abierto desarrollado por OpenScienceLab, un laboratorio de IA de Shanghái, alojado en GitHub, que se centra en la optimización del ajuste fino supervisado de grandes modelos lingüísticos (LLM) guiando la generación de datos sintéticos a través de grafos de conocimiento. Construye grafos de conocimiento de grano fino a partir del texto de origen, identifica los puntos ciegos del conocimiento del modelo utilizando métricas de error de calibración esperado (ECE) y prioriza la generación de pares de preguntas y respuestas orientadas al conocimiento de cola larga y alto valor. GraphGen admite el muestreo de vecindad multisalto para capturar información relacional compleja y genera datos diversificados mediante el control de estilo. El proyecto se rige por la licencia Apache 2.0 y el código está abierto a la investigación académica y el desarrollo comercial. Los usuarios pueden configurar el proceso de generación de forma flexible mediante la línea de comandos o la interfaz Gradio, y los datos generados pueden utilizarse directamente para el entrenamiento de modelos.

GraphGen:利用知识图谱生成合成数据微调语言模型GraphGen:利用知识图谱生成合成数据微调语言模型

 

Lista de funciones

  • Construcción de grafos de conocimiento de grano fino: extracción de entidades y relaciones a partir de texto para generar grafos de conocimiento estructurados.
  • Identificación de puntos ciegos de conocimiento: localización de puntos débiles de conocimiento en modelos lingüísticos basados en métricas de error de calibración esperado (ECE).
  • Generar pares de preguntas y respuestas de alto valor: dar prioridad a la generación de datos de preguntas y respuestas para el conocimiento de cola larga con el fin de mejorar el rendimiento del modelo.
  • Muestreo de vecindades multisalto: captura de relaciones multinivel en grafos de conocimiento para aumentar la complejidad de los datos.
  • Generación de control de estilo: admite diversos estilos de preguntas y respuestas, como concisas o detalladas, para adaptarse a diferentes escenarios.
  • Configuración personalizada: ajuste los tipos de datos, los archivos de entrada y las rutas de salida mediante archivos YAML.
  • Soporte de interfaz Gradio: Proporciona una interfaz visual para simplificar las operaciones de generación de datos.
  • Compatibilidad de modelos: admite múltiples modelos lingüísticos (por ejemplo, Qwen, OpenAI) para la generación de datos y el entrenamiento.

 

Utilizar la ayuda

Proceso de instalación

GraphGen es un proyecto Python que admite la instalación desde PyPI o la ejecución desde el código fuente. Aquí están los pasos detallados de instalación:

Instalación desde PyPI

  1. Instalar GraphGen
    Asegúrese de que la versión de Python es 3.8 o superior ejecutando el siguiente comando:

    pip install graphg
  1. Configuración de variables de entorno
    GraphGen requiere una llamada a una API de modelado de lenguaje (como Qwen u OpenAI). Establece variables de entorno en el terminal:

    export SYNTHESIZER_MODEL="your_synthesizer_model_name"
    export SYNTHESIZER_BASE_URL="your_base_url"
    export SYNTHESIZER_API_KEY="your_api_key"
    export TRAINEE_MODEL="your_trainee_model_name"
    export TRAINEE_BASE_URL="your_base_url"
    export TRAINEE_API_KEY="your_api_key"
    
    • SYNTHESIZER_MODELModelos de generación de grafos de conocimiento y datos.
    • TRAINEE_MODELModelos utilizados para la formación.
  2. Ejecutar la herramienta de línea de comandos
    Ejecute el siguiente comando para generar los datos:

    graphg --output_dir cache
    

Instalación desde el origen

  1. almacén de clones
    Clona el repositorio GraphGen localmente:

    git clone https://github.com/open-sciencelab/GraphGen.git
    cd GraphGen
    
  2. Creación de un entorno virtual
    Crear y activar un entorno virtual:

    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Instalación de dependencias
    Instale las dependencias del proyecto:

    pip install -r requirements.txt
    

    Asegúrese de que PyTorch (se recomienda 1.13.1 o superior) y las bibliotecas relacionadas (por ejemplo, LiteLLM, DSPy) están instaladas. Si utilizas una GPU, instala una versión compatible con CUDA:

    pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
    
  4. Configuración de variables de entorno
    Copie el archivo de entorno de ejemplo y edítelo:

    cp .env.example .env
    

    existe .env para establecer la información relacionada con el modelo:

    SYNTHESIZER_MODEL=your_synthesizer_model_name
    SYNTHESIZER_BASE_URL=your_base_url
    SYNTHESIZER_API_KEY=your_api_key
    TRAINEE_MODEL=your_trainee_model_name
    TRAINEE_BASE_URL=your_base_url
    TRAINEE_API_KEY=your_api_key
    
  5. Preparación de la introducción de datos
    GraphGen requiere texto de entrada en formato JSONL. Los datos de ejemplo se encuentran en el archivo resources/examples/raw_demo.jsonl. Los usuarios pueden preparar datos personalizados para garantizar un formato coherente.

Utilización

GraphGen soporta tanto la línea de comandos como la interfaz Gradio. Aquí están los pasos detallados:

operación desde la línea de comandos

  1. Modificar el archivo de configuración
    compilador configs/graphgen_config.yaml para establecer los parámetros de generación de datos:

    data_type: "raw"
    input_file: "resources/examples/raw_demo.jsonl"
    output_dir: "cache"
    ece_threshold: 0.1
    sampling_hops: 2
    style: "detailed"
    
    • data_typeTipo de datos de entrada (por ejemplo raw).
    • input_fileIntroduzca la ruta del archivo.
    • output_dirDirectorio de salida.
    • ece_threshold: Umbrales ECE para la identificación de puntos ciegos de conocimiento.
    • sampling_hopsProfundidad de muestreo multisalto.
    • style: Estilos de generación de preguntas y respuestas (p. ej. detailed tal vez concise).
  2. Ejecutar el script generado
    Ejecute el siguiente comando para generar los datos:

    bash scripts/generate.sh
    

    o simplemente ejecuta un script de Python:

    python -m graphg --config configs/graphgen_config.yaml
    
  3. Ver resultados generados
    Los pares de preguntas y respuestas generados se guardan en el archivo cache/data/graphgen en formato JSONL:

    ls cache/data/graphgen
    

Funcionamiento de la interfaz de Gradio

  1. Inicio de la interfaz de Gradio
    Ejecute el siguiente comando para iniciar la interfaz de visualización:

    python webui/app.py
    

    El navegador abrirá la interfaz de Gradio mostrando el proceso de generación de datos.

  2. flujo de trabajo
    • Carga un archivo de entrada con formato JSONL en la interfaz.
    • Configure los parámetros de generación (por ejemplo, umbral ECE, profundidad de muestreo, estilo de generación).
    • Haga clic en el botón "Generar" y el sistema procesará la entrada y emitirá los pares de preguntas y respuestas.
    • Descargue el archivo JSONL generado.

Función destacada Operación

  • construcción de grafos de conocimientoGraphGen extrae automáticamente entidades y relaciones del texto de entrada, genera un grafo de conocimiento y lo guarda en formato JSON. No es necesaria ninguna intervención manual.
  • Identificación de ángulos muertosPredicción de sesgos mediante el modelo de análisis de métricas de la CEPE y generación de pares de preguntas y respuestas específicas. Ajuste ece_threshold Control del rigor del cribado ciego.
  • Muestreo de vecindad multisalto: Captura de relaciones multinivel en grafos de conocimiento para generar pares complejos de preguntas y respuestas. Configuración sampling_hops Controla la profundidad de muestreo.
  • Generación de control de estilo: Se admiten múltiples estilos de preguntas y respuestas para diferentes escenarios. Los usuarios pueden style El parámetro selecciona el estilo.

Modelos de formación

Los datos generados pueden utilizarse para el ajuste fino supervisado (SFT). Importe el archivo de salida en un marco que admita SFT (por ejemplo, XTuner):

xtuner train --data cache/data/graphgen/output.jsonl --model qwen-7b

advertencia

  • Asegúrese de que la clave API y la conexión de red son estables y de que el proceso de generación llama a un modelo externo.
  • Los datos de entrada deben estar en formato JSONL, consulte raw_demo.jsonl.
  • Los dispositivos GPU se recomiendan para la generación de datos a gran escala con el fin de optimizar el rendimiento.
  • Compruebe las versiones de las dependencias para evitar conflictos. Actualice si es necesario requirements.txt.

Recursos complementarios

  • Centro de aplicaciones OpenXLab: Los usuarios pueden acceder a la información a través del OpenXLab Experimente GraphGen.
  • FAQ oficiales: consulte la página de GitHub PREGUNTAS FRECUENTES Resolver problemas comunes.
  • análisis técnico: Cortesía de DeepWiki Análisis de la arquitectura del sistemaEsta sección describe en detalle el flujo de trabajo de GraphGen.

 

escenario de aplicación

  1. investigación académica
    Los investigadores pueden utilizar GraphGen para generar datos de preguntas y respuestas para dominios especializados. Por ejemplo, generar datos de entrenamiento para un modelo de dominio de química o medicina mejora la cobertura de conocimientos del modelo.
  2. Optimización de la IA empresarial
    Las empresas pueden utilizar GraphGen para generar pares de preguntas y respuestas personalizados para el servicio de atención al cliente o los sistemas de recomendación, optimizando la capacidad de respuesta de sus modelos de diálogo.
  3. Desarrollo de plataformas educativas
    Los desarrolladores pueden generar diversos datos pedagógicos de preguntas y respuestas para construir herramientas educativas inteligentes que apoyen el aprendizaje personalizado.

 

CONTROL DE CALIDAD

  1. ¿Qué modelos admite GraphGen?
    GraphGen es compatible con OpenAI, Qwen, Ollama y otros modelos a través de LiteLLM. Se requieren claves y direcciones API de modelo.
  2. ¿Cómo preparo los datos de entrada?
    Los datos de entrada deben estar en formato JSONL, y cada línea debe contener texto. Referencia resources/examples/raw_demo.jsonl.
  3. ¿Cuánto tiempo se tarda en generar datos?
    Los datos de pequeño tamaño (100 entradas) pueden tardar unos minutos, y los de gran tamaño, horas, dependiendo de la cantidad de entradas y del rendimiento del hardware.
  4. ¿Cómo funciona la interfaz de Gradio?
    estar en movimiento python webui/app.pyLos datos se generan cargando el archivo de entrada a través del navegador y configurando los parámetros.
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...