AIパーソナル・ラーニング
と実践的なガイダンス
サイバーナイフ用ドローイングミラー

GraphGen: 知識グラフを使って言語モデルを微調整し、合成データを生成する

はじめに

GraphGenは、上海のAIラボであるOpenScienceLabによって開発されたオープンソースのフレームワークで、GitHubでホストされています。知識グラフを通して合成データ生成を導くことによって、大規模言語モデル(LLM)の教師ありファインチューニングを最適化することに焦点を当てています。GraphGenは、ソーステキストからきめ細かな知識グラフを構築し、期待適合誤差(ECE)メトリクスを用いてモデル知識の盲点を特定し、価値の高いロングテール知識をターゲットとしたQ&Aペアの生成を優先する。このプロジェクトはApache 2.0ライセンスの下でライセンスされており、コードは学術研究や商業開発のために公開されている。ユーザはコマンドラインやGradioインターフェイスを介して生成プロセスを柔軟に設定することができ、生成されたデータはモデルの学習に直接使用することができる。

GraphGen: 知識グラフを用いた合成データ生成のための言語モデルの微調整-1


GraphGen: 知識グラフを用いた合成データ生成のための言語モデルの微調整-1

 

機能一覧

  • きめ細かな知識グラフの構築:構造化された知識グラフを生成するためにテキストからエンティティと関係を抽出する。
  • 知識の盲点を特定する:期待適合誤差(ECE)メトリクスに基づいて言語モデルの知識の弱点を見つける。
  • 価値の高いQ&Aペアの生成:モデルのパフォーマンスを向上させるために、ロングテール知識のQ&Aデータの生成を優先する。
  • マルチホップ近傍サンプリング:データの複雑性を高めるために知識グラフのマルチレベルの関係を捕捉する。
  • スタイル・コントロール・ジェネレーション:様々なシナリオに対応できるよう、簡潔なものから詳細なものまで、多様なQ&Aスタイルをサポート。
  • カスタム設定: 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例:Q&A生成スタイル(例. detailed もしかしたら concise).
  2. 生成されたスクリプトを実行する
    以下のコマンドを実行してデータを生成する:

    bash scripts/generate.sh
    

    またはPythonスクリプトを実行する:

    python -m graphg --config configs/graphgen_config.yaml
    
  3. 生成された結果を見る
    生成されたQ&Aペアは cache/data/graphgen ディレクトリにJSONLファイル形式で保存される:

    ls cache/data/graphgen
    

グラディオ・インターフェースの操作

  1. Gradioインターフェースの起動
    以下のコマンドを実行して、可視化インターフェースを起動します:

    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.

補足資料

 

アプリケーションシナリオ

  1. 学術研究
    研究者はGraphGenを使用して、特殊なドメインのQ&Aデータを生成することができる。例えば、化学や医学のドメインモデルのトレーニングデータを生成することで、モデルの知識カバレッジを向上させることができる。
  2. エンタープライズAIの最適化
    企業はGraphGenを使用して、カスタマーサービスやレコメンダーシステム用のカスタムQ&Aペアを生成し、対話モデルの応答性を最適化することができます。
  3. 教育プラットフォーム開発
    開発者は、多様な教育Q&Aデータを生成し、個別学習をサポートするインテリジェントな教育ツールを構築することができる。

 

品質保証

  1. GraphGenはどのようなモデルをサポートしていますか?
    GraphGenは、LiteLLMを通じてOpenAI、Qwen、Ollama、その他のモデルをサポートしています。モデルのAPIキーとアドレスが必要です。
  2. 入力データはどのように準備すればいいですか?
    入力データはJSONL形式で、各行にテキスト・コンテンツが含まれていなければならない。参照 resources/examples/raw_demo.jsonl.
  3. データ作成にかかる時間は?
    データサイズが小さい場合(100エントリー)は数分、データサイズが大きい場合は、入力量やハードウェアの性能にもよるが、数時間かかることもある。
  4. グラディオのインターフェイスはどうなっていますか?
    うごきだす python webui/app.pyデータは、ブラウザを通じて入力ファイルをアップロードし、パラメータを設定することで生成される。
無断転載を禁じます:チーフAIシェアリングサークル " GraphGen: 知識グラフを使って言語モデルを微調整し、合成データを生成する
ja日本語