コンテンツに移動
AI & 機械学習

グラフデータ サイエンスを Google Cloud で: Neo4j AuraDS と Vertex AI の活用

2022年6月15日
https://storage.googleapis.com/gweb-cloudblog-publish/images/Graph_Data_Science.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2022 年 6 月 9 日に、Google Cloud blog に投稿されたものの抄訳です。

1 月に、Neo4j と Google Cloud Vertex AI のパートナーシップのプレビュー版をブログで公開しました。ブログでは、Neo4j AuraDS を使いグラフ エンベディングを生成することで、グラフを活用したよりスマートな AI を実現できることを紹介しています。

この投稿は、グラフの知識(グラフ特徴)をフィードして機械学習(ML)モデルの予測可能性を高めることにより、ML パイプラインを強化したいと考えているデータ サイエンティストから大きな注目を集めました。

その後、Neo4j は新しい 2.0 バージョンの Neo4j グラフデータ サイエンス プラットフォームをリリースしました。Graph Data Science as a Service(サービスとしてのグラフデータ サイエンス)ソリューションである Neo4j AuraDS が一般提供されたことで、Google Cloud 上で簡単に使用を開始できるようになりました。

グラフが重要な理由

現在私たちは、常に進化し、変化し続ける新しい方法で、他者や機械とつながり、コミュニケーションをとり、交流しています。そこで無視できなくなっているのは、このような人々や場所、もの、イベントの関係性がどのようにインタラクションの価値と重要性を表し、これに影響を及ぼしているのかということです。

データ構造としてグラフを使うことは、近年特に重要になってきています。グラフによって、医薬品を作る方法が変わり、財務における不正行為の発見と対処の方法が改善され、お客様によりよいおすすめ情報を提供できるようになり、エンティティとその身元の曖昧さが解消されるようになりました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Graph_Data_Science.max-600x600.jpg

グラフデータ サイエンスのユースケース例

グラフとグラフデータ サイエンスを使用すると、あるデータポイントのつながりとネットワーク内での場所の情報に基づいて、そのデータポイントにとって重要なことがわかります。同じ手法で、逆の分析をすることもできます。つまり、そのネットワークで何が特殊なのかということがわかります。グラフ ネイティブな ML での使用または、Vertex AI といったツールへのフィードができるグラフ特徴をコンピューティングすることで、次に発生することを高い精度で予測することが可能になります。

グラフ構造を使い、アルゴリズムのコンピューティングやエンベディングの作成をすることで、Neo4j と Google Cloud におけるお客様の機械学習パイプラインの精度と信頼性が向上しています。グラフデータ サイエンスの活用方法にご興味がある場合は、Neo4j グラフデータ サイエンスの実例について説明した以下のリソースとノートブックをご覧ください。

サービスとしてのグラフデータ サイエンス: AuraDS

AuraDS は Neo4j のグラフデータ サイエンスを提供するフルマネージド サービスです。Neo4j は、データ サイエンティストがユースケースを仮説から本番環境まで簡単に開発できる完全なプラットフォームを構築しました。ソフトウェア エンジニアやデータベース マネージャー、IT 管理者のチームは必要ありません。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Graph_Data_Science.max-800x800.jpg

Neo4j グラフデータ サイエンス

企業の分析と機械学習のソリューションを強化できる 65 以上の最先端のグラフおよび機械学習アルゴリズムにアクセスすることが可能です。シンプルな時間単位の料金モデルに、コンピューティング、ストレージ、IO、ネットワークの費用がすべて含まれています。Google Cloud Platform 上で、クラウドで利用できるグラフデータ サイエンスのメリットをすべて得られます。

「Neo4j AuraDS の料金構成はシンプルなので、コンピューティングに関わる費用を簡単に把握し、管理できます。」– Arcurve、AI / ML ディレクター Mike Morley 氏

私が気に入っている機能をご紹介します。AuraDS はマネージド サービスなので、常に新しいアルゴリズムやパフォーマンスの改善、バグの修正をお客様のインスタンスに直接 push しています。そのため、オペレーションの煩雑性を心配する必要はありません。

まず、インスタンスの作成は非常にシンプルです。プロセスを通して案内が提供され、お客様が指定しなければならないのは以下のみです。

  • ノード数

  • 関係性の数

  • 使用したいアルゴリズム カテゴリ

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Graph_Data_Science.max-1000x1000.jpg
AuraDS のアルゴリズム カテゴリ

これによって、実行したいノードと関係性の数に対して、選択したカテゴリでのアルゴリズムにとって適切なインスタンスのサイズを測ることができます。もちろん、ユースケースの規模の増減に合わせ、ニーズを満たすようにインスタンスのサイズを変更することが可能です。また、インスタンスを使っていないときは、一時停止して費用を節約できます。

迷っている場合や検討中の場合には、そのように選択できます。ニーズをよりよく理解するにつれ、特定のアルゴリズムを実行するためにスケールアップするタイミングを AuraDS が教えます。

「Neo4j AuraDS は優れたツールです。なぜなら時間の経過とともにモデルを微調整し、改善していくことができるからです。Neo4j グラフデータ サイエンスでは、必要なものがすべて一か所にまとまっています。既存のツールセットとデータ サイエンスの方法で容易にソフトウェアを動かすことができるため、ビジネスの構築に集中しやすくなります。」– Orita、CTO Zack Gow 氏

AuraDS を Vertex AI と統合する方法

大勢のお客様がさまざまな方法で AuraDS をご自身の資産に統合しています。Google Cloud では、AuraDS のユースケースをひとつのスペクトルで表しました。機械学習パイプラインのニーズと成熟度に応じて、適切なものを選択するのに役立ちます。

AuraDS を一時的な方法で統合している場合は、非常に簡単に成熟した ML パイプラインにプラグインできます。なぜなら特徴をすでにコンピューティングし、Vertex AI Feature Store へ移行しているからです。

中央の方法では、グラフ特徴をコンピューティングするだけでなく、データをグラフ形式のままで保存することもできます。それによって、Neo4j Bloom といったツールで、ディープパスのクエリと探索的データ分析を迅速に行うことができます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_Graph_Data_Science.max-900x900.jpg
さまざまな AuraDS の使用方法

どこから始めるべきかということについて、正解や不正解は存在しません。すべてはアーキテクチャとビジネスニーズで決まります。

「現在、Google Dataproc で実行中の Spark ジョブがあります。そこでは AuraDS で生成されたグラフ特徴を使っています。現在のアーキテクチャを Vertex AI に置き換えることで、開発とデプロイのオプションを簡素化しようと考えています。AuraDS と Vertex AI から特徴とインテグレーションを得ることで、グラフ特徴の生成や、ML パイプラインの開発と管理、ML モデルのモニタリングが簡単になります。」– Orita、CTO Zack Gow 氏

実際の例では、AuraDS にデータを保存するだけでなく、FastRP でグラフ エンベディングをコンピューティングし、Vertex AI ワークフローにフィードすることもできる中央の方法を使います。

前回の投稿の後、Neo4j グラフデータ サイエンス用のネイティブ Python クライアントをリリースしました。これによって、Vertex AI との統合がさらにシンプルになり、クエリと変換のために大量のボイラープレート コードを書く必要がなくなります。純粋な Python コードを書くことで、グラフの投影やアルゴリズムの実行、DataFrame 形式での結果の取得が可能です。また、グラフをデータベースにインポートしなくても、DataFrame からメモリに直接投影できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/5_Graph_Data_Science.max-600x600.jpg

GDS クライアントを使用した AuraDS とのインタラクションの簡素化

FastRP を使ってグラフ エンベディングを生成する方法の詳細については、こちらの更新済みのノートブックをご覧ください。

エンベディングが計算されたので、それを CSV に書き込み、Google Cloud の Vertex AI が連携できる Cloud Storage バケットに push できるようになりました。これらの手順についてはこちらのノートブックで詳しく説明しています。

Vertex AI でグラフ特徴を使う

https://storage.googleapis.com/gweb-cloudblog-publish/images/6_Graph_Data_Science.max-1600x1600.jpg
グラフのトポロジが固定次元のベクトル空間に変換される様子を示すグラフ エンベディング

エンベディングには、グラフ内のノードの配置と、そのノードと他のノードとのインタラクションが示されています。データ構造にベクトルを使う理由は、Google Cloud の Vertex AI 内の表形式メソッドを使用して機械学習モデルをトレーニングできるからです。

まず、Cloud Storage バケットからデータを pull し、そのデータを使用して Vertex AI 内にデータセットを作成する必要があります。Python の呼び出しは次のようになります。

読み込んでいます...

データセットが作成されたので、そのデータセット上でモデルをトレーニングできます。その Python の呼び出しは次のようになります。

読み込んでいます...

その呼び出し結果をノートブックに表示できます。または、GCP コンソールにログインして、結果を Vertex AI の GUI に表示できます。

Vertex AI のコンソール表示では、ROC 曲線や混同行列などの可視化が可能なため、ご自身の ML モデルのパフォーマンスを把握できます。

Vertex AI は、トレーニング済みモデルをデプロイするための有用なツールも提供しています。データセットは Vertex AI Feature Store に読み込むことができます。その後、エンドポイントをデプロイできます。新しい予測はそのエンドポイントを呼び出すことで計算できます。その詳細については、こちらのノートブックをご確認ください。

次のステップ

このブログ投稿を読んで、このテクノロジーの利用にご関心をお持ちになった方は、GCP Marketplace で AuraDS をご確認ください。  

Vertex AI の詳細についてはこちらで紹介しています。作業を行ったノートブックはこちらをご覧ください。フォークして、必要に応じて変更していただければ幸いです。pull リクエストはいつでもお待ちしております。


- AuraDS、プロダクト マネージャー Luke Gannon 氏
投稿先