Hacker News new | ask | show | jobs
by a235 1957 days ago
How does GraphScope graph backend compares to the previous one built by Alibaba - Euler? https://github.com/alibaba/euler/wiki
2 comments

The learning engine in GraphScope (aka. GIE) has a simiary programming interface and functionlity with euler. They both support graph neural network training, e.g., GraphSAGE, GCN, GAT, etc. However there are many differences under the hood.

1. The programming model is different. Euler provides a message-passing style API to define new graph models, while GIE provides a sampling API first, and abstracts a batch of seed nodes or edges(named ‘ego’) and their receptive fields (multi-hops neighbors) as a "EgoGraph", which can be turned into a "EgoTensor" as features.

2. Euler implements operation on graphs as tensorflow ops, while GIE takes a more flexible design and doesn't couple with a specific machine learning framework. Upon the sampling interface, developer could build their GNN models using either tensorflow, pytorch or any other machine learning framework, and even for non-GNN tasks.

3. Most importantly, euler is just for graph learning. In graphscope, the learning engine could co-work with the analytical engine and with the interactive query. In real world cases usually so complicated and the problem is not just a GNN training task, and different dedicated systems may involve for different kinds of workload, that means users need to move and transform data back and forth between systems. In GraphScope, engines for different proposals share the same graph, and, live in the same jupyter notebook to delivery the ability of one-stop large-scale graph computation. That is more user-friendly for data scientists.

alibaba/euler is a lightweight library built specifically for GNN sampling only.

While GraphScope is built for many kinds of graph tasks such as gremlin, graph analytics and GNN sampling.

You can check this example to get an idea what GraphScope can do. https://nbviewer.jupyter.org/github/alibaba/GraphScope/blob/...

The graphs on GraphScope is backed by vineyard (https://github.com/alibaba/libvineyard). And that enables GraphScope to have multiple specifically optimized runtimes (written in C++, rust and Python) for different tasks shares the distributed graph data in memory efficiently.