编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

GraphScope Flex:具有乐高式模块化的图计算堆栈

wxchong 2024-08-01 02:53:49 开源技术 12 ℃ 0 评论

#挑战30天在头条写日记#

介绍

现实生活中的图形应用程序具有不同的工作负载、编程接口和存储格式。GraphScope 是解决这些变化的一站式解决方案。然而,由于以下原因,挑战仍然存在:

  • 需要各种部署模式,例如低延迟的离线分析管道、需要高吞吐量的在线服务或受益于异构硬件的学习任务。
  • 包罗万象的解决方案可能不是最佳选择,因为它可能会导致资源和成本需求增加。

GraphScope Flex 是 GraphScope 的不断发展。它采用模块化设计,可减少资源和成本需求,同时提供无缝、用户友好的界面以实现灵活部署。目前,GraphScope Flex 正在积极开发中。

construct

GraphScope Flex 堆栈(如图所示)由多个组件组成,用户可以像乐高积木一样组合这些组件来自定义其图形计算部署。组件分为三层:

  • 应用层,包括预构建的算法库和GNN模型,以及SDK和API;
  • 执行层,由多个专门针对各自领域的引擎组成;
  • 存储层,它建立了一个统一的接口来管理跨各种存储后端的图形数据。

如何建造

依赖关系

请使用script/install_deps.sh安装依赖项。或者,您可以手动安装所选组件所需的依赖项子集。

请参阅script/install_deps.sh以获取完整的依赖项列表。

construct

GraphScope Flex 附带了一个有用的脚本flexbuild,允许您使用特定组件构建自定义堆栈。flexbuild有一些参数,其中两个对于构建至关重要:

  • 参数COMPONENTS指定您要选择的“乐高积木”。可用组件如上图所示或在本--help节中列出。
  • flag--app指定您要构建的构建工件的应用程序类型。可用类型有db, olap, ldbcdriver, docker(WIP)。

通过选择和组合最适合您要求的组件,您可以使用脚本flexbuild为您的特定用例创建定制的 GraphScope Flex 部署。

请使用flexbuild --help以了解更多信息。

用户案例和示例

案例1:在线BI分析

BI 分析适用于在 WebUI 中交互式分析数据的分析师。虽然高并发性不太可能实现,但复杂查询的低延迟至关重要。

GraphScope Flex 将 Cypher 和 Gremlin 查询编译为统一的中间表示 (IR) ,并使用通用查询优化器目录模块对其进行优化。优化后的 IR 被传递到Gaia Codegen并在Gaia上执行,Gaia 是一个分布式数据流引擎,可通过数据并行性减少查询延迟。通过统一的接口从基于可变 CSR 的持久存储中访问图形数据。

要构建此用例的工件,请运行以下命令:

./flexbuild cypher gaia cppsp mcsr --app db
# To be supported. Please try scripts for other cases.

案例2:针对高QPS查询

在某些业务场景中,例如推荐或搜索,图查询的速率极高,需要很高的吞吐量。在这些场景中,GraphScope Flex 可以使用不同的组件集进行部署。编译生成优化的查询计划,Hiactor Codegen生成专为Hiactor定制的物理计划,Hiactor 是一种用于类似 OLTP 查询的高性能并发参与者框架。

要构建此用例的工件,请运行以下命令:

./flexbuild hiactor cppsp mcsr --app db

请注意,我们使用此命令构建的工件进行 LDBC SNB 基准测试。

案例 3:离线图形分析

GraphScope Flex 是一个用于执行图形分析的高效且用户友好的平台。它提供内置算法以及用于开发定制算法的接口。该运行时基于GRAPE,以片段为中心且可扩展,支持FLASHPIEPregel等多种编程模型。使用Ingress组件可以轻松并行化或增量化顺序算法。为了实现高性能,在此堆栈中部署了内存中的图形存储。

要构建此用例的工件,请运行以下命令:

./flexbuild builtin grape-cpu --app olap
# or
./flexbuild builtin grape-gpu --app ldbcdriver

案例 4:对于图学习任务

GraphScope Flex的GNN框架支持工业场景中的十亿级图。它提供了 GNN 模型开发范例、示例模型,以及在TensorFlowPyTorch作为训练后端之间进行选择的灵活性。此外,该框架采用解耦的采样和训练过程,可以独立扩展以获得最佳的端到端吞吐量,从而提供卓越的性能。

要构建此用例的工件,请运行以下命令:

./flexbuild gnnmodels graphlearn tensorflow vineyard --app gnn

项目地址:

https://github.com/alibaba/GraphScope/tree/main/flex

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表