AI个人学习
和实操指南
TRAE

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

综合介绍

GraphGen 是一个由上海人工智能实验室 OpenScienceLab 开发的开源框架,托管于 GitHub,专注于通过知识图谱指导合成数据生成,优化大语言模型(LLM)的监督微调。它从源文本构建细粒度知识图谱,利用预期校准误差(ECE)指标识别模型知识盲点,优先生成针对高价值、长尾知识的问答对。GraphGen 支持多跳邻域采样以捕获复杂关系信息,并通过风格控制生成多样化数据。项目采用 Apache 2.0 许可证,代码公开,适用于学术研究和商业开发。用户可通过命令行或 Gradio 界面操作,灵活配置生成流程,生成的数据可直接用于模型训练。

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


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

 

功能列表

  • 构建细粒度知识图谱:从文本中提取实体和关系,生成结构化知识图谱。
  • 识别知识盲点:基于预期校准误差(ECE)指标,定位语言模型的知识薄弱点。
  • 生成高价值问答对:优先生成针对长尾知识的问答数据,提升模型表现。
  • 多跳邻域采样:捕获知识图谱中的多级关系,增强数据复杂性。
  • 风格控制生成:支持多样化问答风格,如简洁或详细,适应不同场景。
  • 自定义配置:通过 YAML 文件调整数据类型、输入文件和输出路径。
  • Gradio 界面支持:提供可视化界面,简化数据生成操作。
  • 模型兼容性:支持多种语言模型(如 Qwen、OpenAI)进行数据生成和训练。

 

使用帮助

安装流程

GraphGen 是一个 Python 项目,支持从 PyPI 安装或源码运行。以下是详细安装步骤:

从 PyPI 安装

  1. 安装 GraphGen
    确保 Python 版本为 3.8 或更高,运行以下命令:

    pip install graphg
  1. 配置环境变量
    GraphGen 需要调用语言模型 API(如 Qwen 或 OpenAI)。在终端设置环境变量:

    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_MODEL:用于生成知识图谱和数据的模型。
    • TRAINEE_MODEL:用于训练的模型。
  2. 运行命令行工具
    执行以下命令生成数据:

    graphg --output_dir cache
    

从源码安装

  1. 克隆仓库
    克隆 GraphGen 仓库到本地:

    git clone https://github.com/open-sciencelab/GraphGen.git
    cd GraphGen
    
  2. 创建虚拟环境
    创建并激活虚拟环境:

    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. 安装依赖
    安装项目依赖:

    pip install -r requirements.txt
    

    确保安装 PyTorch(推荐 1.13.1 或更高)及相关库(如 LiteLLM、DSPy)。若使用 GPU,安装 CUDA 兼容版本:

    pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
    
  4. 配置环境变量
    复制示例环境文件并编辑:

    cp .env.example .env
    

    在 .env 文件中设置模型相关信息:

    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. 准备输入数据
    GraphGen 需要 JSONL 格式的输入文本。示例数据位于 resources/examples/raw_demo.jsonl。用户可准备自定义数据,确保格式一致。

使用方法

GraphGen 支持命令行和 Gradio 界面两种操作方式。以下是详细步骤:

命令行操作

  1. 修改配置文件
    编辑 configs/graphgen_config.yaml 文件,设置数据生成参数:

    data_type: "raw"
    input_file: "resources/examples/raw_demo.jsonl"
    output_dir: "cache"
    ece_threshold: 0.1
    sampling_hops: 2
    style: "detailed"
    
    • data_type:输入数据类型(如 raw)。
    • input_file:输入文件路径。
    • output_dir:输出目录。
    • ece_threshold:知识盲点识别的 ECE 阈值。
    • sampling_hops:多跳采样深度。
    • style:问答生成风格(如 detailed 或 concise)。
  2. 运行生成脚本
    执行以下命令生成数据:

    bash scripts/generate.sh
    

    或直接运行 Python 脚本:

    python -m graphg --config configs/graphgen_config.yaml
    
  3. 查看生成结果
    生成的问答对保存在 cache/data/graphgen 目录下,格式为 JSONL 文件:

    ls cache/data/graphgen
    

Gradio 界面操作

  1. 启动 Gradio 界面
    运行以下命令启动可视化界面:

    python webui/app.py
    

    浏览器将打开 Gradio 界面,显示数据生成流程。

  2. 操作流程
    • 在界面中上传 JSONL 格式的输入文件。
    • 配置生成参数(如 ECE 阈值、采样深度、生成风格)。
    • 点击“生成”按钮,系统将处理输入并输出问答对。
    • 下载生成的 JSONL 文件。

特色功能操作

  • 知识图谱构建:GraphGen 自动从输入文本提取实体和关系,生成知识图谱,保存为 JSON 格式。用户无需手动干预。
  • 知识盲点识别:通过 ECE 指标分析模型预测偏差,生成针对性问答对。调整 ece_threshold 控制盲点筛选严格程度。
  • 多跳邻域采样:捕获知识图谱中的多级关系,生成复杂问答对。设置 sampling_hops 控制采样深度。
  • 风格控制生成:支持多种问答风格,适用于不同场景。用户可通过 style 参数选择风格。

训练模型

生成的数据可用于监督微调(SFT)。将输出文件导入支持 SFT 的框架(如 XTuner):

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

注意事项

  • 确保 API 密钥和网络连接稳定,生成过程需调用外部模型。
  • 输入数据需符合 JSONL 格式,参考 raw_demo.jsonl
  • 大规模数据生成建议使用 GPU 设备,优化性能。
  • 检查依赖版本,避免冲突。必要时更新 requirements.txt

补充资源

  • OpenXLab 应用中心:用户可通过 OpenXLab 体验 GraphGen。
  • 官方 FAQ:参考 GitHub 上的 FAQ 解决常见问题。
  • 技术分析:DeepWiki 提供 系统架构分析,详细介绍 GraphGen 的工作流程。

 

应用场景

  1. 学术研究
    研究人员可利用 GraphGen 生成专业领域的问答数据。例如,为化学或医学领域模型生成训练数据,提升模型的知识覆盖率。
  2. 企业 AI 优化
    企业可使用 GraphGen 为客服或推荐系统生成定制化问答对,优化对话模型的响应能力。
  3. 教育平台开发
    开发者可生成多样化教学问答数据,构建智能教育工具,支持个性化学习。

 

QA

  1. GraphGen 支持哪些模型?
    GraphGen 通过 LiteLLM 支持 OpenAI、Qwen、Ollama 等模型。需提供模型 API 密钥和地址。
  2. 如何准备输入数据?
    输入数据需为 JSONL 格式,每行包含文本内容。参考 resources/examples/raw_demo.jsonl
  3. 生成数据需要多长时间?
    小规模数据(100 条)需几分钟,大规模数据可能需数小时,具体取决于输入量和硬件性能。
  4. Gradio 界面如何使用?
    运行 python webui/app.py,通过浏览器上传输入文件,配置参数后生成数据。
未经允许不得转载:首席AI分享圈 » GraphGen:利用知识图谱生成合成数据微调语言模型
zh_CN简体中文