HUOXIU

論文ダイジェスト | OpenSPGの大規模知識リポジトリKGFabric論文の解釈

この記事は、Ant Groupの開発エンジニアであるZhu Jinye氏によって執筆されました。彼の主な研究分野はナレッジグラフのストレージと計算です。過去1年間、彼はチームにおいてAntのナレッジグラフプラットフォームとKGFabricの開発に主に携わり、その研究成果はVLDB'24に掲載されています。

2024年8月26日、データ管理とデータベースに関する国際会議「VLDB 2024」が広州で開催されました。アントグループのナレッジエンジンチームの論文「KGFabric:エンタープライズデータ相互接続のためのスケーラブルなナレッジグラフウェアハウス」が、インダストリートラックの口頭発表に採択されました。

KGFabricは、分散ファイルシステム(DFS)をベースとした本格的なナレッジリポジトリソリューションです。データモデルとしてSPGを採用することで、ストレージと計算効率を最適化しながら、現実世界をより適切に表現します。KGFabricはGraph Fabric機能をサポートし、ユーザーのプライバシーを保護しながらマルチドメイングラフの融合を可能にし、ナレッジグラフにおけるデータサイロの問題を効果的に解決します。一般的なリレーショナルDBMSやグラフデータベースと比較して、KGFabricはセ​​マンティックリレーションシップのストレージ容量を90%以上削減します。実際のワークロードでは、グラフ融合のパフォーマンスが21倍向上し、マルチホップセマンティックグラフ分析では100倍のパフォーマンス向上が実証されています。

紙の住所

841

01. 概要

Antグループでは、Ant Knowledge Graph Platformを構築しました。このプラットフォームは、加盟店、企業、アカウント、製品に関連する多数のドメイン固有のナレッジグラフを構築し、数兆単位の構造化ナレッジグラフを管理することで、検索、レコメンデーション、リスク管理などのビジネスを支援します。クロスドメインのナレッジ再利用に基づくエンタープライズレベルの多様なナレッジマネジメント機能を提供し、多様なグラフビジネスのセルフサービスアクセスニーズに対応します。また、様々なダウンストリームサービスやグラフ推論・分析アプリケーションをサポートし、数千億を超える規模にも対応できるよう線形拡張性を備えています。

プラットフォームの開発とイテレーションの過程で、クロスドメイングラフ融合、グラフマッチング、グラフ表現学習といったタスクがシステム機能への要求をますます高めるにつれ、既存のデータウェアハウスシステム(ODPSなど)やグラフデータベースではこれらのニーズを満たすことがますます困難になっています。そこで、超大規模ナレッジウェアハウスソリューションであるKGFabricを提案します。

KGFabricは、データモデルとしてSPG(Semantic-enhanced Programmable Graph)を採用し、分散ファイルシステム(DFS)をベースとしたネイティブナレッジグラフストレージとマルチドメインナレッジグラフ融合機能を提供します。KGFabricは、複数のグラフモデルやスーパーバーテックスストレージ・処理との互換性を最初から考慮し、基盤となるファイルストレージとしてハイブリッドストレージフォーマットを設計・実装しています。また、属性グラフにはCSRインデックス、セマンティックグラフにはトリプルインデックスを実装しています。基盤レベルでは、ファイルI/O操作はすべてPOSIX APIを用いて実装されているため、低コストでマルチクラウド環境を構築できます。

02. SPGベースのモデリング

KGFabricは、属性グラフとセマンティクス互換性のあるSPG(Semantic-enhanced Programmable Graph)データモデルを採用しています。SPG(Semantic-enhanced Programmable Graph)は、Ant Financialのナレッジグラフプラットフォームにおける長年の金融ビジネス支援経験から生まれた、属性グラフをベースとしたセマンティクスフレームワークです。属性グラフの構造的性質とRDFのセマンティクスを独創的に融合することで、RDF/OWLのセマンティクスの複雑さが産業応用の妨げになるという問題を克服し、属性グラフのシンプルな構造とビッグデータシステムとの互換性といった利点を継承しています。

属性グラフにおけるノードタイプの意味表現を強化するため、SPGはノードタイプとエッジタイプを拡張し、より多くの主題分類モデルを導入することで、ノードタイプを拡張し、より多様な知識表現に対応します。SPGにおける主題分類モデルについて簡単に説明します。

  • エンティティ:ビジネスとの関連性が高い客観的なインスタンス。個々のプロフィールは、ユーザー、企業、販売者などのエンティティプロパティ(属性、リレーションシップ)を使用して作成されます。例えば、下の図では、Userエンティティには複数の属性が含まれており、Shopにリンクされています。
  • コンセプト:エンティティとは、具体的なものを一般的なものへと抽象化したものであり、一連のエンティティまたは分類システムを表します。ユーザータグやドメイン固有の標準型など、比較的静的で再利用性が高いものです。例えば、下の画像のConcept.Preferがその例です。
  • イベント: NLP、CV などを通じて抽出された業界イベント、企業イベント、医療イベントなど、時間、空間、ターゲットなどの制約を持つエンティティ タイプ。たとえば、下の図の TransactionEvent イベント タイプなど。



03. コアコンピテンシー

3.1 LSMツリーに基づくストレージアーキテクチャ

KGFabric のストレージアーキテクチャは LSM ツリーをベースとしており、データレイヤーはベースレイヤーとデルタレイヤーに分かれています。デルタレイヤーはさらにレベル 0 とレベル 1 に分かれています。デルタレベル 0 は、メッセージキューからのインポートなど、ストリーミングインポート(ミニバッチ)に最適化されています。デルタレベル 1 は、主に Hive や ODPS からのインポートなど、バッチインポートのシナリオを想定しています。

リード増幅のバランスをとるため、バックグラウンドで階層化コンパクションを実行し、定期的にデータの再編成と圧縮を行っています。Ant Groupでは、1日に1,000件以上のデータインポートタスクが実行されます。実際の運用シナリオでは、このコンパクション戦略により、ランダムリードとシーケンシャルリードのリード増幅をそれぞれ5倍未満、1.6倍未満に抑えています。

KGFabric は主にいくつかのメインディレクトリ レベルに分かれています。

  1. 名前空間:異なるドメイン グラフ間でデータの分離を実現するために使用される、ビジネス データ管理の基本単位。
  2. RelationGroup:通常、エンティティ、リレーションシップ、またはイベントのタイムスライスに基づいてグラフ データのグループ化を管理します。
  3. ベース:定期的なスナップショットデータを管理します
  4. デルタ:管理フロー/バッチ更新の増分データ


KGFabric のバージョン管理は、ファイルシステムの「put-if-not-exists」セマンティクスに依存し、VersionPointer メカニズムを使用して読み取り/書き込み競合を解決します。インポートタスクが成功すると、KGFabric は自動的に新しいバージョンファイルを作成し、対応するバージョンファイルをタイムスタンプにマッピングすることで、任意のスナップショットにアクセスできるようにします。現在のファイルは常に最新のデータバージョンを記録します。

3.2 セマンティックグラフに最適化されたファイル形式

実際のグラフデータはRelationGroupディレクトリに保存されており、複数のデータファイルと対応するメタデータが含まれています。データファイルにはPGFileとSGFileがあり、それぞれ属性グラフデータとセマンティックグラフデータを格納しています(次の図を参照)。

PGFile と SGFile はどちらもファイル内にフッターと BlockIndex で構成されていますが、内部にそれぞれ PGBlock と SGBlock を格納するという点で異なります。PGBlock と SGBlock は書き込みと圧縮の基本単位です。PGBlock は主にプロパティ グラフの格納に使用します。PGBlock 内には、頂点テーブル、エッジ テーブル (出力エッジと入力エッジを含む)、およびプロパティ テーブルがあります。CSR インデックス形式を使用してサブグラフ データをさらに圧縮します。プロパティ テーブルは行または列の格納形式をサポートし、ビットマップ マトリックスを使用して NULL 値の属性を識別します。PGBlock 内では、頂点パーティション分割を使用して、スーパー頂点の密なエッジ (次数が非常に高く、通常は 100,000 を超えるエッジ) を複数の PGBlock に分散して別々に格納します。

下図に示すように、vid2はブロック#1とブロック#95でそれぞれ2回分割ロジックをトリガーしました。上記のロジックに基づいて、ロードと計算におけるスーパーポイントのメモリボトルネック問題を解決し、関係タイプ別にエッジをロードする際のグループ化制限のI/O効率を向上させました。

KGFabric では、セマンティック グラフのストレージは 3 つのストレージ コンポーネントで構成されます。

  • 概念辞書: ConceptName と ConceptID 間の双方向マッピング機能を提供します。
  • セマンティック属性: PGBlock では、エッジ テーブルを使用してセマンティック エンティティと概念間のエッジを格納する代わりに、属性テーブルを使用して ConceptID を格納し、エンティティと概念インスタンス間のリンクを記録することで、ストレージ スペースを最適化します。
  • TripleIndex:概念から意味的実体へのエッジを表現するために使用されます。これらのエッジは通常密であるため、ストレージ容量と計算パフォーマンスを最適化するためにRoaringBitmapを使用しました。TripleIndexに基づく概念の多次元インデックスを実装し、AND/OR/NOTなどのビット演算子をサポートし、バケットベースの同時計算もサポートしました。


3.3 グラフファブリック

従来のデータファブリックは主にデータの冗長性に基づいており、通常はクラスタ間でデータをコピーすることを意味します。KGFabricでは、冗長なコピーを回避しながらマルチドメイングラフ融合を実現するグラフファブリックフレームワークを実装しました。融合するエンティティタイプを選択し、チェーンポインタまたは融合演算子を指定するだけで、Graph Merge Tree (GMT) は仮想型 FuseType を自動的に構築します。ユーザーはこの仮想型を透過的に使用することで、Fuse-On-Write (FOW) または Fuse-On-Read (FOR) に基づくグラフ融合を実装できます。

GMTはGraph Fabricを実装するためのコアデータ構造です。論理的には多元木であり、FORプロセスは木を後順で走査する処理として抽象化できます。後順走査の際には、AntPrivacy APIを統合し、Graph Fabric実行前にデータの属性レベルの暗号化を行うことで、グラフ融合時のユーザーデータのセキュリティを効果的に確保します。


3.4 グラフ分析システムの統合

金融シナリオにおけるロードパフォーマンスを最適化するために、KGFabric はグラフ分析システムのストレージバックエンドとして機能し、ネイティブのグラフ取得およびロード機能を提供することで、分散グラフ構築シナリオにおけるシャッフルの追加オーバーヘッドを回避します。KGFabric は以下の最適化を実装しています。

  • パーティション化されたグラフロード:分散グラフデータロードを実装し、頂点IDやストレージブロックサイズによるパーティション分割など、複数のグラフパーティション分割方法をサポートします。ODPSやHiveと比較して、データシャッフル段階が不要になり、読み取りパフォーマンスが大幅に向上します。
  • バックエンド キャッシュ:主にメタ​​ キャッシュとデータ キャッシュが含まれます。
    • メタ キャッシュ: RelationGroup のメタ キャッシュと BlockIndex キャッシュは、永続タスク用に最適化されています。
    • データ キャッシュ: ディスク上に常駐するフル キャッシュと、レイテンシの影響を受けやすいタスク向けに最適化されたメモリ内のブロック キャッシュの 2 つのレベルのキャッシュが含まれます。
  • 演算子プッシュダウン:フィルター、集計、ウィンドウなどのグラフ演算子のプッシュダウンをサポートします。具体的には、
    • フィルタ演算子は、エンティティ/リレーション/属性タイプのプッシュダウンをサポートし、演算子を GMT のリーフ ノードにプッシュダウンすること (つまり、RelationGroup の読み取り) をサポートします。
    • 集計は、合計/最大/最小/カウントなどの統計プッシュダウンをサポートします。
    • ウィンドウ演算子は、タイムスライスとインデックスに基づいてフィルター演算子のプッシュダウンをサポートします。
  • ゼロコピーのシリアル化/デシリアル化:メモリ内のデータ構造とディスク データ構造間の同型性を実現し、シリアル化とデシリアル化のオーバーヘッドを削減します。

04. 実験評価

システムのパフォーマンスを評価するために、ストレージスペース、グラフ分析効率、およびグラフ ファブリックのスケーラビリティに関する実験を実施しました。

4.1 データセット

属性グラフ(LPG)データセットとして、主にLDBC-Finbenchを選択し、意味関係を追加して拡張し、セマンティックグラフ(SPG)データセットとして新しいデータセットLDBC-Finbench-Xを作成しました。さらに、実世界のデータセットとして、実稼働シナリオからユーザーグラフ、マーチャントグラフ、財務グラフを選択しました。データセットの仕様は次のとおりです。

各データセットの次数分布は次のとおりです。

4.2 ストレージスペース

属性グラフデータセットの場合、KGFabric のストレージ容量は Neo4j の 43.7%、RocksDB の 91.7% に過ぎません。セマンティックグラフデータセットの場合、KGFabric は強力なスキーマモデリングにより、セマンティック関係のストレージオーバーヘッドを大幅に最適化し、RocksDB の 7%、Neo4j の 1.9% にしかスペースを消費しません。

4.3 グラフ分析の効率

我々は主に、ペアワイズパスとサイクルパターンという2つの典型的なグラフ分析タスクを選択し、主にODPS、Neo4j、RocksDBと比較しました。ペアワイズパスの実験では、分析タスクのホップ数が増加するにつれて、KGFabricが提供するバックエンドによってグラフ計算のスケーラビリティが大幅に向上しました。

サイクルパターン実験では、パターン化コストが低いため、KGFabric は 3 ホップ ループ分析に必要な時間を最大 67.8% 削減できます。

4.4 グラフファブリックのスケーラビリティ

デフォルトのチェーンインデックス戦略(IDE)では、データソース数の増加に伴い、KGFabricはODPSと比較して優れたスケーラビリティを発揮します。ユーザー定義のチェーンインデックス戦略(UDL)のパフォーマンスを最適化するために、データを事前にソートするrindexを実装し、レイテンシをさらに削減しました。



記事のおすすめ

OpenSPG は、成熟した信頼性の高い知識構築ソリューションを提供する最初のリリースをリリースしました。

Ant Group のナレッジ グラフ管理システムに関する研究成果は、トップ クラスの国際会議で認められ、KGFabric の論文が VLDB 2024 に選出されました。

ステップバイステップのチュートリアル: カスタム LLM をサポートするように GraphRAG を変更する