GraphGen: 지식 그래프를 사용하여 합성 데이터를 생성하기 위한 언어 모델 미세 조정

최신 AI 리소스12개월 전에 게시됨 AI 공유 서클
64.3K 00
堆友AI

일반 소개

그래프젠은 상하이의 AI 연구소인 오픈사이언스랩에서 개발한 오픈 소스 프레임워크로, 지식 그래프를 통해 합성 데이터 생성을 안내하여 대규모 언어 모델(LLM)의 감독 미세 조정을 최적화하는 데 중점을 두고 있으며, GitHub에 호스팅되어 있습니다. 소스 텍스트로부터 세분화된 지식 그래프를 구축하고, 예상 보정 오류(ECE) 메트릭을 사용하여 모델 지식 사각지대를 식별하며, 고가치 롱테일 지식을 대상으로 하는 Q&A 쌍의 생성 우선순위를 지정합니다.GraphGen은 복잡한 관계 정보를 캡처하기 위해 멀티홉 이웃 샘플링을 지원하며 스타일 제어를 통해 다양한 데이터를 생성할 수 있습니다. 이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여되며, 학술 연구 및 상업적 개발을 위해 코드가 공개되어 있습니다. 사용자는 명령줄 또는 Gradio 인터페이스를 통해 생성 프로세스를 유연하게 구성할 수 있으며, 생성된 데이터는 모델 학습에 바로 사용할 수 있습니다.

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

 

기능 목록

  • 세분화된 지식 그래프 구축: 텍스트에서 엔티티와 관계를 추출하여 구조화된 지식 그래프를 생성합니다.
  • 지식 사각지대 파악: 예상 보정 오류(ECE) 메트릭을 기반으로 언어 모델에서 지식의 취약점을 찾아냅니다.
  • 가치 높은 Q&A 쌍 생성: 롱테일 지식에 대한 Q&A 데이터 생성의 우선순위를 지정하여 모델 성능을 개선하세요.
  • 멀티홉 이웃 샘플링: 지식 그래프에서 다단계 관계를 캡처하여 데이터 복잡성을 개선합니다.
  • 스타일 제어 생성: 간결하거나 상세한 등 다양한 Q&A 스타일을 지원하여 다양한 시나리오에 맞게 조정할 수 있습니다.
  • 사용자 지정 구성: YAML 파일을 통해 데이터 유형, 입력 파일 및 출력 경로를 조정합니다.
  • 라디오 인터페이스 지원: 데이터 생성 작업을 간소화할 수 있는 시각적 인터페이스를 제공합니다.
  • 모델 호환성: 데이터 생성 및 학습을 위한 여러 언어 모델(예: Qwen, OpenAI)을 지원합니다.

 

도움말 사용

설치 프로세스

GraphGen은 PyPI에서 설치하거나 소스에서 실행하는 것을 지원하는 Python 프로젝트입니다. 자세한 설치 단계는 다음과 같습니다:

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멀티홉 샘플링 깊이.
    • styleQ&A 생성 스타일(예 detailed 어쩌면 concise).
  2. 생성된 스크립트 실행
    다음 명령을 실행하여 데이터를 생성합니다:

    bash scripts/generate.sh
    

    또는 Python 스크립트를 실행하세요:

    python -m graphg --config configs/graphgen_config.yaml
    
  3. 생성된 결과 보기
    생성된 Q&A 쌍은 생성된 Q&A 쌍은 cache/data/graphgen 디렉토리에 JSONL 파일 형식으로 저장합니다:

    ls cache/data/graphgen
    

라디오 인터페이스 작동

  1. 라디오 인터페이스 시작하기
    다음 명령을 실행하여 시각화 인터페이스를 시작합니다:

    python webui/app.py
    

    브라우저에서 데이터 생성 프로세스를 보여주는 Gradio 인터페이스가 열립니다.

  2. 워크플로
    • 인터페이스에서 JSONL 형식의 입력 파일을 업로드합니다.
    • 생성 매개변수(예: ECE 임계값, 샘플 깊이, 생성 스타일)를 구성합니다.
    • "생성" 버튼을 클릭하면 시스템이 입력을 처리하여 Q&A 쌍을 출력합니다.
    • 생성된 JSONL 파일을 다운로드합니다.

주요 기능 작동

  • 지식 그래프 구성GraphGen은 입력 텍스트에서 엔티티와 관계를 자동으로 추출하여 지식 그래프를 생성하고 이를 JSON 형식으로 저장합니다. 수동 개입이 필요하지 않습니다.
  • 지식 사각지대 식별ECE 메트릭 분석 모델을 통해 편향성을 예측하고 타겟팅된 Q&A 쌍을 생성합니다. 조정 ece_threshold 블라인드 심사 엄격성 제어.
  • 멀티홉 이웃 샘플링지식 그래프에서 다단계 관계를 캡처하여 복잡한 Q&A 쌍을 생성합니다. 설정 sampling_hops 샘플링 깊이를 제어합니다.
  • 스타일 컨트롤 생성다양한 시나리오에 대해 여러 Q&A 스타일이 지원됩니다. 사용자는 다음을 수행할 수 있습니다. 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깃허브 참조 자주 묻는 질문 일반적인 문제 해결.
  • 기술적 분석: DeepWiki 제공 시스템 아키텍처 분석이 섹션에서는 GraphGen의 워크플로우에 대해 자세히 설명합니다.

 

애플리케이션 시나리오

  1. 학술 연구
    연구자들은 GraphGen을 사용하여 전문 분야에 대한 Q&A 데이터를 생성할 수 있습니다. 예를 들어 화학 또는 의학 도메인 모델에 대한 학습 데이터를 생성하면 모델의 지식 범위가 향상됩니다.
  2. 엔터프라이즈 AI 최적화
    기업은 GraphGen을 사용하여 고객 서비스 또는 추천 시스템을 위한 맞춤형 Q&A 쌍을 생성하여 대화 모델의 응답성을 최적화할 수 있습니다.
  3. 교육 플랫폼 개발
    개발자는 다양한 교육 Q&A 데이터를 생성하여 개인 맞춤형 학습을 지원하는 지능형 교육 도구를 구축할 수 있습니다.

 

QA

  1. GraphGen은 어떤 모델을 지원하나요?
    GraphGen은 LiteLLM을 통해 OpenAI, Qwen, Ollama 및 기타 모델을 지원합니다. 모델 API 키와 주소가 필요합니다.
  2. 입력 데이터는 어떻게 준비하나요?
    입력 데이터는 각 줄에 텍스트 콘텐츠가 포함된 JSONL 형식이어야 합니다. 참조 resources/examples/raw_demo.jsonl.
  3. 데이터를 생성하는 데 시간이 얼마나 걸리나요?
    작은 데이터 크기(100개 항목)는 입력량과 하드웨어의 성능에 따라 몇 분, 큰 데이터 크기는 몇 시간이 걸릴 수 있습니다.
  4. Gradio 인터페이스는 어떻게 작동하나요?
    움직여야 합니다. python webui/app.py데이터는 브라우저를 통해 입력 파일을 업로드하고 매개변수를 구성하여 생성됩니다.
© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...