Aprendizagem pessoal com IA
e orientação prática
TRAE

GraphGen: ajuste fino de modelos de linguagem usando gráficos de conhecimento para gerar dados sintéticos

Introdução geral

O GraphGen é uma estrutura de código aberto desenvolvida pelo OpenScienceLab, um laboratório de IA em Xangai, hospedado no GitHub, com foco na otimização do ajuste fino supervisionado de modelos de linguagem grande (LLMs), orientando a geração de dados sintéticos por meio de gráficos de conhecimento. Ele constrói gráficos de conhecimento de granulação fina a partir do texto de origem, identifica pontos cegos do conhecimento do modelo usando a métrica de erro de calibração esperado (ECE) e prioriza a geração de pares de perguntas e respostas visando ao conhecimento de alto valor e de cauda longa. O GraphGen oferece suporte à amostragem de vizinhança de vários saltos para capturar informações relacionais complexas e gera dados diversificados por meio do controle de estilo. O projeto está licenciado sob a licença Apache 2.0, e o código está aberto para pesquisa acadêmica e desenvolvimento comercial. Os usuários podem configurar o processo de geração de forma flexível por meio da linha de comando ou da interface Gradio, e os dados gerados podem ser usados diretamente para o treinamento do modelo.

GraphGen: modelos de linguagem de ajuste fino para geração de dados sintéticos usando gráficos de conhecimento-1


GraphGen: modelos de linguagem de ajuste fino para geração de dados sintéticos usando gráficos de conhecimento-1

 

Lista de funções

  • Criando gráficos de conhecimento de granularidade fina: extraindo entidades e relacionamentos do texto para gerar gráficos de conhecimento estruturados.
  • Identificação de pontos cegos de conhecimento: localização de pontos fracos de conhecimento em modelos de linguagem com base em métricas de erro de calibração esperado (ECE).
  • Gerar pares de Q&A de alto valor: priorize a geração de dados de Q&A para conhecimento de cauda longa para melhorar o desempenho do modelo.
  • Amostragem de vizinhança de vários saltos: capturando relações de vários níveis em gráficos de conhecimento para aumentar a complexidade dos dados.
  • Geração de controle de estilo: suporte a diversos estilos de perguntas e respostas, como conciso ou detalhado, para se adaptar a diferentes cenários.
  • Configuração personalizada: ajuste os tipos de dados, os arquivos de entrada e os caminhos de saída por meio de arquivos YAML.
  • Suporte à interface Gradio: fornece uma interface visual para simplificar as operações de geração de dados.
  • Compatibilidade de modelos: oferece suporte a vários modelos de linguagem (por exemplo, Qwen, OpenAI) para geração de dados e treinamento.

 

Usando a Ajuda

Processo de instalação

O GraphGen é um projeto Python que suporta a instalação a partir do PyPI ou a execução a partir do código-fonte. Aqui estão as etapas detalhadas de instalação:

Instalação a partir do PyPI

  1. Instalar o GraphGen
    Certifique-se de que a versão do Python seja 3.8 ou superior executando o seguinte comando:

    pip install graphg
  1. Configuração de variáveis de ambiente
    O GraphGen requer uma chamada para uma API de modelagem de linguagem (como Qwen ou OpenAI). Defina as variáveis de ambiente no 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 para gerar gráficos e dados de conhecimento.
    • TRAINEE_MODELModelos usados para treinamento.
  2. Execute a ferramenta de linha de comando
    Execute o seguinte comando para gerar dados:

    graphg --output_dir cache
    

Instalação a partir da fonte

  1. armazém de clones
    Clone o repositório do GraphGen localmente:

    git clone https://github.com/open-sciencelab/GraphGen.git
    cd GraphGen
    
  2. Criação de um ambiente virtual
    Criar e ativar um ambiente virtual:

    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Instalação de dependências
    Instale as dependências do projeto:

    pip install -r requirements.txt
    

    Certifique-se de que o PyTorch (recomendado 1.13.1 ou superior) e as bibliotecas relacionadas (por exemplo, LiteLLM, DSPy) estejam instalados. Se estiver usando uma GPU, instale uma versão compatível com CUDA:

    pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
    
  4. Configuração de variáveis de ambiente
    Copie o arquivo de ambiente de exemplo e edite-o:

    cp .env.example .env
    

    existir .env para definir informações relacionadas ao 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. Preparação para inserir dados
    O GraphGen requer texto de entrada no formato JSONL. Os dados de exemplo estão localizados no diretório resources/examples/raw_demo.jsonl. Os usuários podem preparar dados personalizados para garantir uma formatação consistente.

Uso

O GraphGen é compatível com a linha de comando e com a interface do Gradio. Aqui estão as etapas detalhadas:

operação de linha de comando

  1. Modificar o arquivo de configuração
    compilador configs/graphgen_config.yaml para definir os parâmetros de geração de dados:

    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 dados de entrada (por exemplo, tipo de dados de entrada) raw).
    • input_fileDigite o caminho do arquivo.
    • output_dirDiretório de saída.
    • ece_thresholdLimites de ECE para identificação de pontos cegos de conhecimento.
    • sampling_hopsProfundidade de amostragem multihop.
    • style: estilos de geração de perguntas e respostas (por exemplo detailed talvez concise).
  2. Executar o script gerado
    Execute o seguinte comando para gerar dados:

    bash scripts/generate.sh
    

    ou simplesmente executar um script Python:

    python -m graphg --config configs/graphgen_config.yaml
    
  3. Exibir resultados gerados
    Os pares de Q&A gerados são salvos no cache/data/graphgen no formato de um arquivo JSONL:

    ls cache/data/graphgen
    

Operação da interface do Gradio

  1. Iniciando a interface do Gradio
    Execute o seguinte comando para iniciar a interface de visualização:

    python webui/app.py
    

    O navegador abrirá a interface do Gradio mostrando o processo de geração de dados.

  2. fluxo de trabalho
    • Faz upload de um arquivo de entrada formatado em JSONL na interface.
    • Configure os parâmetros de geração (por exemplo, limite de ECE, profundidade da amostra, estilo de geração).
    • Clique no botão "Generate" (Gerar) e o sistema processará a entrada e emitirá os pares de perguntas e respostas.
    • Faça o download do arquivo JSONL gerado.

Operação da função em destaque

  • construção de gráficos de conhecimentoGraphGen: extrai automaticamente entidades e relacionamentos do texto de entrada, gera um gráfico de conhecimento e o salva no formato JSON. Não é necessária nenhuma intervenção manual.
  • Identificação de pontos cegos de conhecimentoPrevisão de viés por meio do modelo de análise de métricas de ECE e geração de pares de Q&A direcionados. Ajuste ece_threshold Controles de rigor de triagem cega.
  • Amostragem de vizinhança multihopCaptura de relacionamentos de vários níveis em gráficos de conhecimento para gerar pares complexos de perguntas e respostas. Configuração sampling_hops Controla a profundidade da amostragem.
  • Geração de controle de estiloPerguntas e respostas: Vários estilos de perguntas e respostas são compatíveis com diferentes cenários. Os usuários podem style O parâmetro seleciona o estilo.

Modelos de treinamento

Os dados gerados podem ser usados para o ajuste fino supervisionado (SFT). Importe o arquivo de saída para uma estrutura que suporte SFT (por exemplo, XTuner):

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

advertência

  • Certifique-se de que a chave de API e a conexão de rede estejam estáveis e que o processo de geração chame um modelo externo.
  • Os dados de entrada devem estar no formato JSONL, consulte raw_demo.jsonl.
  • Os dispositivos de GPU são recomendados para a geração de dados em grande escala para otimizar o desempenho.
  • Verifique as versões das dependências para evitar conflitos. Atualize se necessário requirements.txt.

Recursos suplementares

  • Centro de Aplicativos OpenXLabOs usuários podem acessar as informações por meio do OpenXLab Experimente o GraphGen.
  • Perguntas frequentes oficiais: consulte o GitHub PERGUNTAS FREQUENTES Solução de problemas comuns.
  • análise técnica: Cortesia da DeepWiki Análise da arquitetura do sistemaEsta seção descreve detalhadamente o fluxo de trabalho do GraphGen.

 

cenário do aplicativo

  1. pesquisa acadêmica
    Os pesquisadores podem usar o GraphGen para gerar dados de Q&A para domínios especializados. Por exemplo, a geração de dados de treinamento para um modelo de domínio químico ou médico melhora a cobertura de conhecimento do modelo.
  2. Otimização de IA empresarial
    As empresas podem usar o GraphGen para gerar pares de perguntas e respostas personalizados para atendimento ao cliente ou sistemas de recomendação, otimizando a capacidade de resposta de seus modelos de diálogo.
  3. Desenvolvimento de plataforma educacional
    Os desenvolvedores podem gerar diversos dados de Q&A de ensino para criar ferramentas educacionais inteligentes para apoiar o aprendizado personalizado.

 

QA

  1. Quais modelos são compatíveis com o GraphGen?
    O GraphGen é compatível com OpenAI, Qwen, Ollama e outros modelos por meio do LiteLLM. As chaves e os endereços da API do modelo são necessários.
  2. Como faço para preparar os dados de entrada?
    Os dados de entrada devem estar no formato JSONL, com cada linha contendo conteúdo de texto. Referência resources/examples/raw_demo.jsonl.
  3. Quanto tempo leva para gerar dados?
    Pequenos tamanhos de dados (100 entradas) podem levar alguns minutos, e grandes tamanhos de dados podem levar horas, dependendo da quantidade de entrada e do desempenho do hardware.
  4. Como funciona a interface do Gradio?
    estar em movimento python webui/app.pyOs dados são gerados pelo upload do arquivo de entrada por meio do navegador e pela configuração dos parâmetros.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " GraphGen: ajuste fino de modelos de linguagem usando gráficos de conhecimento para gerar dados sintéticos
pt_BRPortuguês do Brasil