Algeon bringt GPU-Algorithmen in SQL-Abfragen auf DataFusion
Die experimentelle Algeon-Engine integriert NVIDIA cuGraph, cuVS und cuML mit Apache DataFusion, um Graph-, Vektor- und ML-Aufgaben innerhalb von Standard-SQL auszuführen.
Automatisch aus dem englischen Original übersetzt.
Der GitHub-Nutzer algeon-dev hat Algeon veröffentlicht, eine experimentelle Query-Engine, die GPU-beschleunigte Analysen direkt innerhalb von SQL-Anweisungen ausführt. Auf Basis von Apache DataFusion ermöglicht das Tool Entwicklern, relationale Operationen mit fortgeschrittenen Algorithmen aus den NVIDIA-Bibliotheken cuGraph, cuVS und cuML zu kombinieren, ohne Daten in separate Verarbeitungspipelines exportieren zu müssen.
Was passiert ist
Algeon stellt eine Methode vor, komplexe analytische Workloads wie Graph-Traversierungen und Ähnlichkeitssuchen für Vektoren unter Verwendung der Standard-SQL-Syntax auszuführen. Das Projekt ermöglicht es, diese rechenintensiven Berechnungen im Prozess ablaufen zu lassen, wobei Zwischendaten zwischen verschiedenen Phasen einer Abfrage im GPU-Speicher gehalten werden. Dieser Ansatz zielt darauf ab, die Erstellung von Ad-hoc-Pipelines für Lakehouse-Daten zu vereinfachen, indem externe Export-Skripte oder spezielle Orchestrierungstools überflüssig werden.
Die Veröffentlichung umfasst mehrere praktische Beispiele, die ihre Fähigkeiten demonstrieren. Ein bemerkenswerter Fall betrifft die Ausführung von Personalized PageRank über 45,6 Millionen Zitationskanten zur Analyse akademischer Arbeiten. Das System berechnet Scores auf der GPU und nutzt anschließend SQL, um diese Scores mit Titel der Publikationen zu verknüpfen und dabei bestimmte Referenzen wie BERT herauszufiltern. Ein weiteres Beispiel verwendet den MerRec-Datensatz zur Durchführung von Zielgruppen-Kampagnenanalysen, indem Graph-Affinitätsberechnungen, Nearest-Neighbor-Suchen und Vorhersagen von Forest-Modellen in einem einzigen Workflow verkettet werden.
Wie es funktioniert
Algeon fungiert als Erweiterung für Apache DataFusion, ein modulares Framework zur Query-Ausführung. Wenn eine Abfrage über SQL, DataFusion DataFrames oder Arrow Flight SQL eingereicht wird, identifiziert die physische Optimierungsregel von Algeon Plan-Fragmente, die auf der GPU ausgeführt werden können. Diese Kandidaten werden durch die In-Process-GPU-Ausführung unter Verwendung von NVIDIA-Bibliotheken ersetzt, während nicht unterstützte Operationen weiterhin auf dem CPU-Pfad laufen. Die Ergebnisse werden als standardmäßige Arrow-Batches zurückgegeben, was die Kompatibilität mit bestehenden Datenökosystemen sicherstellt.
Die Engine unterstützt drei Hauptfamilien von Algorithmen über benutzerdefinierte Tabellenfunktionen (UDTFs). Graph-Operationen nutzen cuGraph, Aufgaben zur Vektorähnlichkeit verwenden cuVS und Machine-Learning-Inferenz stützt sich auf cuML. Diese Funktionen akzeptieren Eingaben aus Subqueries und leiten ihre Ausgaben zurück in Joins, Aggregationen oder nachfolgende algorithmische Schritte innerhalb derselben SQL-Anweisung. Dieses Design ermöglicht es, dass Zwischenrelationen im Gerätespeicher verbleiben, was den Overhead bei der Datenübertragung zwischen CPU und GPU reduziert.
Wichtige Details
- Algeon basiert auf Apache DataFusion und integriert NVIDIA cuGraph, cuVS, cuML und cuDF.
- Abfragen können über SQL, DataFusion DataFrames oder einen Arrow Flight SQL Server eingereicht werden.
- Die Engine hält Zwischenergebnisse während unterstützter Plan-Fragmente im GPU-Speicher, um die Latenz zu minimieren.
- Aktuelle Einschränkungen umfassen Arbeitsdatensätze, die größer sind als der Speicher einer einzelnen GPU, sowie Quellen außer Parquet.
- Das Projekt steht unter der Apache License 2.0, wobei einige Demo-Datensätze unter CC BY-NC 4.0 lizenziert sind.
- Die GPU-Validierung muss lokal durchgeführt werden, da gehostete Runner von GitHub Actions derzeit keine NVIDIA-GPUs unterstützen.
Warum das wichtig ist
Für Software-Ingenieure und Data Scientists reduziert Algeon die Reibungsverluste bei der explorativen Analyse. Traditionell erforderte die Kombination von Graph-Algorithmen oder Vektorsuche mit relationalen Daten das Verschieben von Daten zwischen mehreren Systemen, das Schreiben von eigenständigem Glue-Code und das Management komplexer Zustände. Indem diese Fähigkeiten in SQL gebracht werden, ermöglicht Algeon Analysten und KI-Agenten, Hypothesen schnell zu testen. Benutzer können Seeds ändern, Kohorten vergleichen und Kontrollen unter Verwendung vertrauter Abfragestrukturen anwenden, was die Entdeckung von "unbekannten Unbekannten" in großen Datensätzen erleichtert.
Das Projekt ist jedoch ausdrücklich als experimentell gekennzeichnet. APIs und Abfrageverhalten können sich inkompatibel ändern, und Stabilität ist noch nicht garantiert. Entwicklern wird empfohlen, Ausgaben gegen vertrauenswürdige Referenzergebnisse zu vergleichen, bevor sie sich auf diese für Produktionsentscheidungen verlassen. Der Mangel an Unterstützung für langfristige Vektor-Indizes oder Modelle bedeutet auch, dass es am besten für Ad-hoc-Analysen geeignet ist, anstatt Echtzeit-Empfehlungen im großen Maßstab bereitzustellen. Trotz dieser Einschränkungen bietet es einen vielversprechenden Weg zur Vereinfachung von GPU-beschleunigten Analysen in datenintensiven Anwendungen.
Was Sie tun können
- Testen Sie das Server-Image mit Docker unter Verwendung des Befehls
docker run --rm --gpus all -p 127.0.0.1:50051:50051 -v "$PWD:/data:ro" ghcr.io/algeon-dev/algeon-server. - Prüfen Sie die bereitgestellten SQL-Beispiele für Personalized PageRank und Zielgruppen-Kampagnenanalyse, um Syntaxmuster zu verstehen.
- Stellen Sie sicher, dass Ihre Hardware die Anforderungen für Linux und NVIDIA GPUs erfüllt, bevor Sie lokale Builds versuchen.
- Integrieren Sie Algeon in eine Rust-Anwendung, indem Sie dem DataFusion Session Guide für die Einrichtung der Abhängigkeiten folgen.
- Vergleichen Sie Abfrageausgaben mit bekannten Referenzergebnissen, um dem aktuellen experimentellen Status der Engine Rechnung zu tragen.
- Beobachten Sie die Projekt-Roadmap auf Updates bezüglich Lakehouse-Katalog-Integrationen und Stabilitätsverbesserungen.



