Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

checkpoint postgres: add a shallow checkpointer #2826

Merged
merged 14 commits into from
Dec 20, 2024
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import threading

Check notice on line 1 in libs/checkpoint-postgres/langgraph/checkpoint/postgres/__init__.py

View workflow job for this annotation

GitHub Actions / benchmark

Benchmark results

......................................... fanout_to_subgraph_10x: Mean +- std dev: 60.6 ms +- 1.8 ms ......................................... fanout_to_subgraph_10x_sync: Mean +- std dev: 51.9 ms +- 0.7 ms ......................................... fanout_to_subgraph_10x_checkpoint: Mean +- std dev: 73.2 ms +- 1.1 ms ......................................... fanout_to_subgraph_10x_checkpoint_sync: Mean +- std dev: 94.3 ms +- 1.5 ms ......................................... fanout_to_subgraph_100x: Mean +- std dev: 606 ms +- 26 ms ......................................... fanout_to_subgraph_100x_sync: Mean +- std dev: 511 ms +- 9 ms ......................................... fanout_to_subgraph_100x_checkpoint: Mean +- std dev: 750 ms +- 19 ms ......................................... fanout_to_subgraph_100x_checkpoint_sync: Mean +- std dev: 945 ms +- 19 ms ......................................... react_agent_10x: Mean +- std dev: 30.8 ms +- 0.7 ms ......................................... react_agent_10x_sync: Mean +- std dev: 23.1 ms +- 0.4 ms ......................................... react_agent_10x_checkpoint: Mean +- std dev: 38.7 ms +- 1.1 ms ......................................... react_agent_10x_checkpoint_sync: Mean +- std dev: 37.8 ms +- 0.7 ms ......................................... react_agent_100x: Mean +- std dev: 339 ms +- 7 ms ......................................... react_agent_100x_sync: Mean +- std dev: 274 ms +- 4 ms ......................................... react_agent_100x_checkpoint: Mean +- std dev: 846 ms +- 10 ms ......................................... react_agent_100x_checkpoint_sync: Mean +- std dev: 859 ms +- 14 ms ......................................... wide_state_25x300: Mean +- std dev: 22.9 ms +- 0.5 ms ......................................... wide_state_25x300_sync: Mean +- std dev: 14.8 ms +- 0.1 ms ......................................... wide_state_25x300_checkpoint: Mean +- std dev: 284 ms +- 19 ms ......................................... wide_state_25x300_checkpoint_sync: Mean +- std dev: 284 ms +- 20 ms ......................................... wide_state_15x600: Mean +- std dev: 26.8 ms +- 0.6 ms ......................................... wide_state_15x600_sync: Mean +- std dev: 17.2 ms +- 0.3 ms ......................................... wide_state_15x600_checkpoint: Mean +- std dev: 473 ms +- 13 ms ......................................... wide_state_15x600_checkpoint_sync: Mean +- std dev: 476 ms +- 15 ms ......................................... wide_state_9x1200: Mean +- std dev: 26.6 ms +- 0.7 ms ......................................... wide_state_9x1200_sync: Mean +- std dev: 17.2 ms +- 0.1 ms ......................................... wide_state_9x1200_checkpoint: Mean +- std dev: 311 ms +- 14 ms ......................................... wide_state_9x1200_checkpoint_sync: Mean +- std dev: 308 ms +- 14 ms

Check notice on line 1 in libs/checkpoint-postgres/langgraph/checkpoint/postgres/__init__.py

View workflow job for this annotation

GitHub Actions / benchmark

Comparison against main

+----------------------------------------+---------+-----------------------+ | Benchmark | main | changes | +========================================+=========+=======================+ | fanout_to_subgraph_100x_checkpoint | 773 ms | 750 ms: 1.03x faster | +----------------------------------------+---------+-----------------------+ | fanout_to_subgraph_100x | 617 ms | 606 ms: 1.02x faster | +----------------------------------------+---------+-----------------------+ | fanout_to_subgraph_100x_sync | 513 ms | 511 ms: 1.01x faster | +----------------------------------------+---------+-----------------------+ | fanout_to_subgraph_10x_checkpoint_sync | 94.0 ms | 94.3 ms: 1.00x slower | +----------------------------------------+---------+-----------------------+ | wide_state_9x1200_sync | 17.1 ms | 17.2 ms: 1.00x slower | +----------------------------------------+---------+-----------------------+ | react_agent_100x_checkpoint | 843 ms | 846 ms: 1.00x slower | +----------------------------------------+---------+-----------------------+ | wide_state_25x300_sync | 14.7 ms | 14.8 ms: 1.00x slower | +----------------------------------------+---------+-----------------------+ | react_agent_100x | 337 ms | 339 ms: 1.01x slower | +----------------------------------------+---------+-----------------------+ | wide_state_15x600_sync | 17.1 ms | 17.2 ms: 1.01x slower | +----------------------------------------+---------+-----------------------+ | wide_state_15x600 | 26.6 ms | 26.8 ms: 1.01x slower | +----------------------------------------+---------+-----------------------+ | react_agent_10x | 30.5 ms | 30.8 ms: 1.01x slower | +----------------------------------------+---------+-----------------------+ | react_agent_10x_sync | 22.7 ms | 23.1 ms: 1.01x slower | +----------------------------------------+---------+-----------------------+ | react_agent_10x_checkpoint | 37.7 ms | 38.7 ms: 1.03x slower | +----------------------------------------+---------+-----------------------+ | react_agent_100x_checkpoint_sync | 837 ms | 859 ms: 1.03x slower | +----------------------------------------+---------+-----------------------+ | wide_state_25x300_checkpoint | 275 ms | 284 ms: 1.03x slower | +----------------------------------------+---------+-----------------------+ | wide_state_25x300_checkpoint_sync | 274 ms | 284 ms: 1.04x slower | +----------------------------------------+---------+-----------------------+ | react_agent_10x_checkpoint_sync | 36.5 ms | 37.8 ms: 1.04x slower | +----------------------------------------+---------+-----------------------+ | Geometric mean | (ref) | 1.01x slower | +----------------------------------------+---------+-----------------------+ Benchmark hidden because not significant (11): fanout_to_subgraph_10x_sync, fanout_to_subgraph_10x, wide_state_9x1200, fanout_to_subgraph_10x_checkpoint, fanout_to_subgraph_100x_checkpoint_sync, wide_state_15x600_checkpoint, react_agent_100x_sync, wide_state_25x300, wide_state_9x1200_checkpoint, wide_state_15x600_checkpoint_sync, wide_state_9x1200_checkpoint_sync
from collections.abc import Iterator, Sequence
from contextlib import contextmanager
from typing import Any, Optional
Expand All @@ -19,6 +19,7 @@
)
from langgraph.checkpoint.postgres import _internal
from langgraph.checkpoint.postgres.base import BasePostgresSaver
from langgraph.checkpoint.postgres.shallow import ShallowPostgresSaver
from langgraph.checkpoint.serde.base import SerializerProtocol

Conn = _internal.Conn # For backward compatibility
Expand Down Expand Up @@ -396,4 +397,4 @@
yield cur


__all__ = ["PostgresSaver", "BasePostgresSaver", "Conn"]
__all__ = ["PostgresSaver", "BasePostgresSaver", "ShallowPostgresSaver", "Conn"]
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
)
from langgraph.checkpoint.postgres import _ainternal
from langgraph.checkpoint.postgres.base import BasePostgresSaver
from langgraph.checkpoint.postgres.shallow import AsyncShallowPostgresSaver
from langgraph.checkpoint.serde.base import SerializerProtocol

Conn = _ainternal.Conn # For backward compatibility
Expand Down Expand Up @@ -464,4 +465,4 @@ def put_writes(
).result()


__all__ = ["AsyncPostgresSaver", "Conn"]
__all__ = ["AsyncPostgresSaver", "AsyncShallowPostgresSaver", "Conn"]
Loading
Loading