はじめに
GraphGenは、上海のAIラボであるOpenScienceLabによって開発されたオープンソースのフレームワークで、GitHubでホストされています。知識グラフを通して合成データ生成を導くことによって、大規模言語モデル(LLM)の教師ありファインチューニングを最適化することに焦点を当てています。GraphGenは、ソーステキストからきめ細かな知識グラフを構築し、期待適合誤差(ECE)メトリクスを用いてモデル知識の盲点を特定し、価値の高いロングテール知識をターゲットとしたQ&Aペアの生成を優先する。このプロジェクトはApache 2.0ライセンスの下でライセンスされており、コードは学術研究や商業開発のために公開されている。ユーザはコマンドラインやGradioインターフェイスを介して生成プロセスを柔軟に設定することができ、生成されたデータはモデルの学習に直接使用することができる。
機能一覧
- きめ細かな知識グラフの構築:構造化された知識グラフを生成するためにテキストからエンティティと関係を抽出する。
- 知識の盲点を特定する:期待適合誤差(ECE)メトリクスに基づいて言語モデルの知識の弱点を見つける。
- 価値の高いQ&Aペアの生成:モデルのパフォーマンスを向上させるために、ロングテール知識のQ&Aデータの生成を優先する。
- マルチホップ近傍サンプリング:データの複雑性を高めるために知識グラフのマルチレベルの関係を捕捉する。
- スタイル・コントロール・ジェネレーション:様々なシナリオに対応できるよう、簡潔なものから詳細なものまで、多様なQ&Aスタイルをサポート。
- カスタム設定: YAMLファイルを介してデータ型、入力ファイル、出力パスを調整する。
- Gradioインターフェイスのサポート:データ生成操作を簡素化するビジュアルインターフェイスを提供。
- モデルの互換性:データ生成とトレーニングにおいて、複数の言語モデル(Qwen、OpenAIなど)をサポート。
ヘルプの使用
設置プロセス
GraphGenはPythonプロジェクトで、PyPIからのインストールやソースからの実行をサポートしている。詳しいインストール手順は以下の通り:
PyPIからインストールする
- GraphGenのインストール
以下のコマンドを実行して、Pythonのバージョンが3.8以上であることを確認する:pip install graphg
- 環境変数の設定
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
トレーニングに使用したモデル。
- コマンドラインツールを実行する
以下のコマンドを実行してデータを生成する:graphg --output_dir cache
ソースからのインストール
- クローン倉庫
GraphGen リポジトリをローカルにクローンします:git clone https://github.com/open-sciencelab/GraphGen.git cd GraphGen
- 仮想環境の構築
仮想環境を作成し、起動する:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- 依存関係のインストール
プロジェクトの依存関係をインストールします: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
- 環境変数の設定
例の環境ファイルをコピーして編集する: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
- データ入力の準備
GraphGen は JSONL 形式の入力テキストを必要とする。サンプル・データはresources/examples/raw_demo.jsonl
.ユーザーは、一貫したフォーマットを保証するためにカスタムデータを準備することができます。
使用方法
GraphGenはコマンドラインとGradioインターフェースの両方をサポートしている。以下はその詳細な手順である:
コマンドライン操作
- 設定ファイルの修正
コンパイラ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
).
- 生成されたスクリプトを実行する
以下のコマンドを実行してデータを生成する:bash scripts/generate.sh
またはPythonスクリプトを実行する:
python -m graphg --config configs/graphgen_config.yaml
- 生成された結果を見る
生成されたQ&Aペアはcache/data/graphgen
ディレクトリにJSONLファイル形式で保存される:ls cache/data/graphgen
グラディオ・インターフェースの操作
- Gradioインターフェースの起動
以下のコマンドを実行して、可視化インターフェースを起動します:python webui/app.py
ブラウザは、データ生成プロセスを表示するGradioインターフェイスを開きます。
- ワークフロー
- 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アプリケーションセンターユーザーは オープンエックスラボ GraphGenを体験してください。
- 公式FAQGitHub よくあるご質問 よくある問題を解決する
- テクニカル分析提供:DeepWiki システム・アーキテクチャ分析このセクションでは、GraphGen のワークフローについて詳しく説明する。
アプリケーションシナリオ
- 学術研究
研究者はGraphGenを使用して、特殊なドメインのQ&Aデータを生成することができる。例えば、化学や医学のドメインモデルのトレーニングデータを生成することで、モデルの知識カバレッジを向上させることができる。 - エンタープライズAIの最適化
企業はGraphGenを使用して、カスタマーサービスやレコメンダーシステム用のカスタムQ&Aペアを生成し、対話モデルの応答性を最適化することができます。 - 教育プラットフォーム開発
開発者は、多様な教育Q&Aデータを生成し、個別学習をサポートするインテリジェントな教育ツールを構築することができる。
品質保証
- GraphGenはどのようなモデルをサポートしていますか?
GraphGenは、LiteLLMを通じてOpenAI、Qwen、Ollama、その他のモデルをサポートしています。モデルのAPIキーとアドレスが必要です。 - 入力データはどのように準備すればいいですか?
入力データはJSONL形式で、各行にテキスト・コンテンツが含まれていなければならない。参照resources/examples/raw_demo.jsonl
. - データ作成にかかる時間は?
データサイズが小さい場合(100エントリー)は数分、データサイズが大きい場合は、入力量やハードウェアの性能にもよるが、数時間かかることもある。 - グラディオのインターフェイスはどうなっていますか?
うごきだすpython webui/app.py
データは、ブラウザを通じて入力ファイルをアップロードし、パラメータを設定することで生成される。