BSP 模型

全称:Bulk‑Synchronous Parallel,中文:批量同步并行模型

LangGraph 底层 Pregel 执行引擎,就是基于 BSP 理论改造而来,这是 LangGraph 所有能力(循环、checkpoint、并行节点、无并发冲突、interrupt 断点续跑)的底层根基。

核心名词:Superstep(超级步 / 超步)

BSP 把整个程序执行切分成一轮一轮离散的超级步。 每一轮 Superstep 固定 3 个阶段:

  1. 本地计算:本轮所有活跃节点并行执行;节点的写入,仅仅暂存缓冲区,对本轮其他节点不可见。
  2. 通信 / 写缓冲:节点输出全部收集起来,不直接修改全局状态。
  3. 全局屏障同步 Barrier:必须等待本轮全部节点执行完毕,才统一把缓冲区结果合并写入全局状态;写完之后,才开启下一轮 Superstep。

关键铁律:本 Superstep 产生的数据,下一个 Superstep 才能看见。同一轮里面节点之间看不到彼此的修改,天然消除竞态条件(并发读写冲突)。

Superstep N
├─① Plan规划:挑选本轮哪些节点要跑
├─② Execute执行:选中节点并发运行,输出先放缓冲区,不修改真实state
├─③ Update同步屏障:全部节点跑完,统一合并更新Channel(状态),生成checkpoint快照
↓
Superstep N+1 (可以读取上一轮的更新)

映射到 LangGraph(非常关键)

BSP/Pregel 概念LangGraph 对应概念
Vertex 顶点Node 节点(supervisor、lighthouse_agent)
Message 消息Channel 通道(State 底层就是各类 Channel)
Superstep 超级步一轮完整执行周期
Barrier 屏障同步一轮全部节点跑完,统一合并状态
Checkpoint 快照每轮 Superstep 结束自动保存状态快照,支持中断恢复

BSP 带来 LangGraph 几个非常重要行为特性(写代码经常遇到)

  • 同一个 Superstep 内多个节点可以并行运行 比如你配置两条边同时触发 A、B 节点,A、B 并发跑;但是 A 在本轮写的 state,B 在本轮看不到,只能下一轮读取。

不会出现 A 改一半 state,B 读到脏数据。

  • 节点返回是增量字典,不会立刻生效,等到本轮结束统一合并

这就是为什么 node 函数不能直接修改入参 state 对象;所有变更返回字典,框架在屏障点统一合并。 Annotated[T, operator.add]归约器,就是Channel 合并阶段执行的逻辑。

  • 每一轮 Superstep 结束,才会生成一份 Checkpoint 快照 所以interrupt()人工暂停,只会发生在 Superstep 的边界;节点函数内部不能中途暂停,只能等本轮跑完,屏障点才可以中断。

这就是 Human‑in‑the‑loop 的底层原理。

  • 循环回退,本质就是下一个 Superstep 重新执行前面的节点 条件边跳回上游节点,不是函数递归调用;而是下一轮 Superstep 把该节点再次选为待执行任务。不会栈溢出,可以无限循环,可以设置最大 Superstep 次数防止死循环。

和普通 DAG/LCEL Chain 对比底层差异

  • LangChain LCEL Chain:函数调用栈模式,链式函数串行调用,函数 A 直接调用 B,B 直接调用 C;一旦函数执行中,没有全局快照,无法中途暂停。
  • LangGraph(BSP‑Pregel):没有函数嵌套调用!一轮一轮 Superstep 迭代执行;节点之间不会互相调用,全部读写 Channel 状态;执行边界可以快照、中断、恢复。

BSP 模型的缺点

  1. 屏障同步开销:只要本轮有一个节点很慢(例如调用 LLM 耗时),其他节点全部等待它完成,才能进入下一轮;有长尾等待问题。
  2. 状态变更延迟一整个 Superstep:写的结果不能立刻读到,要等到下一轮。
  3. 不适合极致低延迟场景,牺牲一部分延迟换取确定性、可观测、可恢复。

通俗类比理解 BSP Superstep

公司开会:

  1. 一轮会议 = 一个 Superstep
  2. 参会人员(节点)各自并行写提案(计算),写好先交给秘书,会上不能直接修改别人手里文档。
  3. 所有人写完,秘书(屏障同步)统一把全部提案合并更新到总文档(Channel 状态)。
  4. 全部人提交完毕,本轮会议结束,保存一份完整文档快照 (checkpoint)。
  5. 开启下一轮会议,所有人基于更新后的总文档继续干活。

不会出现:某个人写一半,另一个人抢过去修改文档。所有修改统一在会议结束合并。

总结

LangGraph 基于 Google Pregel,底层是BSP 批量同步并行模型,执行被切分为一轮一轮 Superstep 超级步;同一轮节点并行执行,输出先缓冲,屏障点全部完成后统一合并状态;依靠 Superstep 边界实现 Checkpoint 快照、人工中断、可循环的 Agent 编排。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐