LangGraph 源码学习总结 2-图计算模型
从 BSP 到 LangGraph:图计算模型
本文梳理 BSP(整体同步并行)模型、Google Pregel 与 LangGraph 三者之间的思想传承与实现差异,揭示“超步”(Superstep)这一核心概念如何从大规模图计算走向智能体(Agent)工作流编排。
一、源头:BSP 模型与“超步”的诞生
BSP(Bulk Synchronous Parallel,整体同步并行) 由 Leslie Valiant 于 1989 年提出,是一种为并行算法提供简洁、可预测执行框架的计算模型。其核心由三部分构成:一组处理器-内存对、全局同步屏障和通信网络。
BSP 的执行以 “超步”(Superstep) 为单位,每个超步包含三个阶段:
- 本地计算:各处理器独立运算;
- 通信:发送消息(接收延迟到下一超步);
- 全局同步:所有处理器等待彼此完成,再进入下一轮。
这种“计算 → 通信 → 同步”的循环,使得算法行为可分析、可容错,成为大规模并行系统的重要理论基础 。
二、Pregel:BSP 在图计算中的成功实践
2010 年,Google 发布 Pregel,将 BSP 模型应用于大规模图处理。Pregel 以顶点为中心,每个顶点拥有状态,并在每轮超步中并行执行 compute()
函数,通过消息传递与邻居通信。
“在 BSP 中,计算是一系列超步的序列。在每个超步中,每个进程读取消息、独立执行代码并发送新消息” 。
Pregel 的典型应用包括 PageRank、最短路径、连通分量等迭代式、整体推进的图算法:
- 迭代式:需多轮计算才能收敛;
- 整体推进:每轮所有活跃顶点必须同步完成,确保状态一致性。
这种设计极大简化了分布式图算法的开发,并支持通过超步边界进行 checkpoint 实现容错 。
三、LangGraph:Pregel 思想在 AI 工作流中的泛化
随着大语言模型(LLM)和智能体系统的兴起,开发者需要一种能表达状态化、循环、条件分支的执行模型。LangGraph 应运而生,并明确借鉴 Pregel 的设计哲学。
“LangGraph 将经过验证的 BSP/Pregel 模式应用于 AI 智能体协调。两者的相似之处令人瞩目” 。
1. 核心抽象的转变
维度 | Pregel | LangGraph |
---|---|---|
图的含义 | 数据图(顶点=实体) | 控制流图(节点=计算步骤) |
计算单元 | 图顶点(并行) | 工作流节点(默认串行) |
通信机制 | 消息传递 | 共享全局状态 |
目标场景 | 大规模图算法 | LLM Agent、工具调用链 |
LangGraph 的“节点”不是图数据中的顶点,而是如 call_llm
、run_tool
、summarize
等函数,它们读写一个共享的状态对象,驱动工作流前进 。
2. “超步”在 LangGraph 中的新含义
尽管 LangGraph 的运行时名为 Pregel
,且文档中提及“每个超步执行一组节点,更新状态,并通过边传递控制流” ,但其“超步”并非 Pregel 式的全局同步轮次。
在 LangGraph 中:
- 一个 “superstep” ≈ 一次状态更新周期;
- 默认情况下,每次只执行一个节点(串行);
- 即使存在并行分支(如同时调用多个工具),也仅在局部同步,无全局屏障。
“Pregel 依据 BSP 模式将应用程序的执行划分为多个步骤” ,但 LangGraph 的“步骤”是逻辑推理步,而非数据并行轮次。
3. 迭代与递进的体现
LangGraph 通过循环边实现迭代,例如经典的 ReAct Agent 流程:
Agent → 决策是否需工具 → 是 → 调用工具 → 回到 Agent → … → 终止
状态在每一步递进演化,直到满足结束条件。这种“状态驱动的循环”继承了 Pregel “状态迭代”的精神,但放弃了其并行与同步机制,以适应 LLM 应用的顺序决策本质 。
四、为何借用“超步”?——概念映射与工程启示
LangGraph 使用“superstep”一词,主要出于三重目的:
- 传达计算范式:强调“离散、迭代、状态驱动”的执行模型;
- 致敬设计源头:明确其受 Pregel/BSP 启发 ;
- 保留扩展可能:为未来支持分布式执行或更强一致性模型预留概念接口。
然而,必须清醒认识到:LangGraph 的“超步”是抽象类比,而非技术复刻。它解决了 AI 工作流的可组合性与可调试性问题,而非图计算的高性能并行问题 。
五、总结:思想的迁移,而非代码的复制
从 BSP 到 Pregel,再到 LangGraph,我们看到一个经典计算模型如何在不同领域被重新诠释:
- BSP 提供了“超步 + 同步 + 消息”的并行计算骨架;
- Pregel 将其用于图数据顶点的并行迭代;
- LangGraph 则将其转化为控制流节点的状态机循环。
“LangGraph 基于 Pregel 模型运行图工作流,每个超步执行一组节点,更新状态” ,但这里的“超步”已是面向 AI 应用的语义升级。