Algeon、DataFusion上のSQLクエリでGPUアルゴリズムを実行
実験的なAlgeonエンジンは、NVIDIA cuGraph、cuVS、cuMLをApache DataFusionと統合し、標準SQL内でグラフ、ベクトル、機械学習タスクを実行します。
英語の原文から自動翻訳されました。
GitHubユーザーalgeon-devが、SQLステートメント内で直接GPUアクセラレーション分析を実行する実験的クエリエンジン「Algeon」をリリースしました。Apache DataFusion上に構築されたこのツールにより、開発者はデータを別の処理パイプラインにエクスポートすることなく、リレーショナル操作とNVIDIAのcuGraph、cuVS、cuMLライブラリの高度なアルゴリズムを組み合わせて利用できます。
何が起きたか
Algeonは、グラフトラバーサルやベクトル類似性検索などの複雑な分析ワークロードを、標準SQL構文を使用して実行する方法を提供します。このプロジェクトにより、これらの重い計算をプロセス内で実行でき、クエリの異なるステージ間で中間データをGPUメモリに保持することが可能になります。このアプローチは、外部のエクスポートスクリプトや専門的なオーケストレーションツールを必要とせず、レイクハウスデータ用のアドホックパイプライン作成を簡素化することを目的としています。
リリースには、その能力を示すいくつかの実用的な例が含まれています。注目すべきケースの一つは、学術論文を分析するために4,560万の引用エッジに対してパーソナライズドPageRankを実行するものです。システムはGPU上でスコアを計算し、その後SQLを使用してこれらのスコアを論文タイトルと結合し、BERTなどの特定の参考文献を除外します。もう一つの例では、MerRecデータセットを使用してオーディエンスキャンペーン分析を行い、グラフアフィニティ計算、最近傍探索、フォレストモデル予測を単一のワークフローでチェーンして実行します。
仕組み
Algeonは、モジュール式クエリ実行フレームワークであるApache DataFusionの拡張機能として機能します。SQL、DataFusion DataFrame、またはArrow Flight SQLを通じてクエリが送信されると、Algeonの物理オプティマイザールールがGPU上で実行可能なプランフラグメントを識別します。サポートされていない操作はCPUパスで実行され続けますが、候補となる部分はNVIDIAライブラリを使用したプロセス内GPU実行に置き換えられます。結果は標準的なArrowバッチとして返されるため、既存のデータエコシステムとの互換性が確保されます。
このエンジンは、ユーザー定義テーブル関数(UDTF)を通じて3つの主要なアルゴリズムファミリーをサポートしています。グラフ操作はcuGraphを活用し、ベクトル類似性タスクはcuVSを使用し、機械学習推論はcuMLに依存します。これらの関数はサブクエリからの入力を受け取り、その出力を同じSQLステートメント内の結合、集約、または後続のアルゴリズムステップにフィードバックします。この設計により、中間関係はデバイスメモリ内に留まり、CPUとGPU間のデータ転送オーバーヘッドを削減します。
主な詳細
- AlgeonはApache DataFusion上に構築されており、NVIDIA cuGraph、cuVS、cuML、cuDFを統合しています。
- クエリはSQL、DataFusion DataFrame、またはArrow Flight SQLサーバーを通じて送信できます。
- エンジンは、サポートされているプランフラグメントの間、中間結果をGPUメモリに保持することで遅延を最小限に抑えます。
- 現在の制限事項には、1つのGPUメモリを超える作業セットや、Parquet以外のソースが含まれます。
- このプロジェクトはApache License 2.0の下でライセンスされていますが、一部のデモデータセットはCC BY-NC 4.0です。
- GitHub Actionsのホスト型ランナーは現在NVIDIA GPUをサポートしていないため、GPU検証はローカルで実行する必要があります。
なぜ重要なのか
ソフトウェアエンジニアやデータサイエンティストにとって、Algeonは探索的分析に伴う摩擦を軽減します。従来、グラフアルゴリズムやベクトル検索をリレーショナルデータと組み合わせるには、複数のシステム間でデータを移動させ、カスタムのグルーコードを作成し、複雑な状態を管理する必要がありました。これらの機能をSQLにもたらすことで、AlgeonはアナリストやAIエージェントが仮説を迅速にテストできるようにします。ユーザーは慣れ親しんだクエリ構造を使用してシードの変更、コホートの比較、コントロールの適用が可能になり、大規模データセットにおける「未知の未知」の発見を促進します。
ただし、このプロジェクトは明確に実験的段階にあります。APIやクエリの挙動は互換性のない方法で変更される可能性があり、安定性は保証されていません。開発者には、本番環境での意思決定に頼る前に、信頼できる参照結果と比較することを推奨します。長寿命のベクトルインデックスやモデルのサポートがないことも意味しており、大規模なリアルタイムレコメンデーションの提供よりも、アドホック分析に適しています。これらの制約にもかかわらず、データヘビーなアプリケーションにおけるGPUアクセラレーション分析の簡素化に向けた有望な道を提供します。
やれること
- コマンド
docker run --rm --gpus all -p 127.0.0.1:50051:50051 -v "$PWD:/data:ro" ghcr.io/algeon-dev/algeon-serverを使用してDockerでサーバーイメージをテストしてください。 - パーソナライズドPageRankおよびオーディエンスキャンペーン分析のための提供済みSQL例を確認し、構文パターンを理解してください。
- ローカルビルドを試みる前に、ハードウェアがLinuxおよびNVIDIA GPUの要件を満たしていることを確認してください。
- RustアプリケーションにAlgeonを組み込む場合は、依存関係の設定に関するDataFusionセッションガイドに従ってください。
- エンジンの現在のexperimental statusを考慮し、クエリの出力を既知の参照結果と比較してください。
- レイクハウスカタログ統合および安定性向上に関する更新について、プロジェクトロードマップを監視してください。



