はじめに
TigerGraphの「In-Databaseグラフデータサイエンスライブラリ」には、標準のグラフまたは機械学習のアルゴリズムが実装され、秀逸に作成されたGSQLクエリが多数用意されています。 提供されている各アルゴリズムは、スタンドアローンのクエリとして、または大規模な分析アプリの構成要素として、そのままインストールして使用できます。
このライブラリの名前は、TigerGraphが機械学習とAIに注力していることを強調するため改名したもので、以前は「GSQLグラフアルゴリズムライブラリ」と呼ばれていました。 世界唯一のスケーラブルなグラフ分析プラットフォームとして、TigerGraphは、データサイエンス分野の専門家のために最も優秀なグラフ分析のフレームワークを提供することを使命としています。
TigerGraphプラットフォーム上で動作するGSQLには次の特徴があり、グラフアルゴリズムに特に適しています。
-
チューリング完全 命令型プログラミングと手続き型プログラミングに完全に対応しているのでアルゴリズムを使用した計算に理想的
-
並列分散処理対応 両方の手法が使えるので大容量のグラフの計算が可能
-
ユーザーによる拡張が可能 アルゴリズムは標準GSQLを使って作成されているので、ユーザー自身によるコンパイル、変更、カスタマイズが簡単
-
オープンソース GSQLの実装例から学んで、ユーザーが開発したアルゴリズムをライブラリに追加することが可能
ライブラリの構造
ライブラリはGitHubからダウンロードできます。
https://github.com/tigergraph/gsql-graph-algorithm
ライブラリは2部構成で、algorithms
(アルゴリズム) と`graphs`(グラフ) のフォルダがあります。
`algorithms`フォルダ
`algorithms`フォルダには、 ライブラリ内のすべてのグラフアルゴリズムのGSQL実装が収納されています。アルゴリズムのフォルダの中には、次の6つのアルゴリズムのクラス別にサブフォルダがあります。
-
Centrality(中心性)
-
Classification(区分)
-
Community(コミュニティ)
-
Node Embeddings(ノード埋め込み)
-
Path(パス)
-
Similarity(類似度)
`graphs`フォルダ
`graphs`フォルダには、アルゴリズムの試用に使える小さなグラフのサンプルが入っています。このドキュメントでは、テストグラフを使って、各アルゴリズムの結果がどのようなものになるか説明します。テストグラフは小さいので、結果を手計算することができ、直感的に答えがわかるような場合もあります。
リリースブランチ
TigerGraphの製品バージョン 2.6以降、GSQLグラフアルゴリズムライブラリはリリースがブランチ分けされています。
-
製品バージョンのブランチ (2.6、3.0、など)は、製品のバージョンがリリースされた後に作成されたスナップショットです。各バージョンの初回リリース時のグラフアルゴリズムライブラリのベスト版が収納されています。バグの修正がない限り、変更されません。
-
*マスターブランチ*は直近でリリースされたバージョンです。最新のリリースと同じはずです。新しいアルゴリズムや改善されたアルゴリズムが含まれている可能性があります。
-
その他のブランチは開発用です。
新バージョンにのみ利用可能な機能に依存しない限り、古い製品バージョンで、その後リリースされた新しいアルゴリズムを実行することは可能です。
アルゴリズムの実行
すべてのGSQLのグラフアルゴリズムはスキーマフリーであり、データモデルやスキーマに関係なく、どのようなグラフでも対応して使用できます。アルゴリズムの実行時には、ユーザーが使用したい頂点タイプ、エッジタイプ、属性のパラメータを入力します。
アルゴリズムを使うには、まずアルゴリズム(GSQLクエリ)を インストールする必要があります。お使いのデータベースが分散クラスタ上にある場合には、DISTRIBUTED
(分散)オプションを使って、クエリをDistributed Query Mode(分散クエリモード)でインストールしてください。
アルゴリズムの実行はGSQLクエリの実行と同じです。例えば、 PageRankでJSONオプションを選択した場合、GSQLから次のように実行します。
GSQL > RUN QUERY tg_pageRank("Page","Links_to",_,30,_,50,_,_,_)
クエリをインストールすると、RESTエンドポイントが作成されます。同じクエリでも次のように実行できるようになります。
curl -X GET 'http://127.0.0.1:9000/query/alg_graph/pageRank?v_type=Page&e_type=Links_to&max_iter=30&top_k=50'
GSQLでは、クエリの中から、別のクエリを実行することもできます。ということは、ライブラリにあるアルゴリズムを構成要素として、より複雑な分析が構築できるということです。