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.5 ms +- 1.0 ms ......................................... fanout_to_subgraph_10x_sync: Mean +- std dev: 51.9 ms +- 1.0 ms ......................................... fanout_to_subgraph_10x_checkpoint: Mean +- std dev: 73.5 ms +- 1.0 ms ......................................... fanout_to_subgraph_10x_checkpoint_sync: Mean +- std dev: 94.2 ms +- 1.7 ms ......................................... fanout_to_subgraph_100x: Mean +- std dev: 632 ms +- 31 ms ......................................... fanout_to_subgraph_100x_sync: Mean +- std dev: 512 ms +- 10 ms ......................................... fanout_to_subgraph_100x_checkpoint: Mean +- std dev: 794 ms +- 26 ms ......................................... fanout_to_subgraph_100x_checkpoint_sync: Mean +- std dev: 954 ms +- 23 ms ......................................... react_agent_10x: Mean +- std dev: 30.6 ms +- 0.7 ms ......................................... react_agent_10x_sync: Mean +- std dev: 23.0 ms +- 0.3 ms ......................................... react_agent_10x_checkpoint: Mean +- std dev: 37.9 ms +- 1.0 ms ......................................... react_agent_10x_checkpoint_sync: Mean +- std dev: 36.9 ms +- 0.4 ms ......................................... react_agent_100x: Mean +- std dev: 338 ms +- 7 ms ......................................... react_agent_100x_sync: Mean +- std dev: 272 ms +- 2 ms ......................................... react_agent_100x_checkpoint: Mean +- std dev: 831 ms +- 8 ms ......................................... react_agent_100x_checkpoint_sync: Mean +- std dev: 829 ms +- 13 ms ......................................... wide_state_25x300: Mean +- std dev: 23.0 ms +- 0.6 ms ......................................... wide_state_25x300_sync: Mean +- std dev: 14.7 ms +- 0.3 ms ......................................... wide_state_25x300_checkpoint: Mean +- std dev: 275 ms +- 14 ms ......................................... wide_state_25x300_checkpoint_sync: Mean +- std dev: 274 ms +- 14 ms ......................................... wide_state_15x600: Mean +- std dev: 26.7 ms +- 0.7 ms ......................................... wide_state_15x600_sync: Mean +- std dev: 17.2 ms +- 0.3 ms ......................................... wide_state_15x600_checkpoint: Mean +- std dev: 471 ms +- 16 ms ......................................... wide_state_15x600_checkpoint_sync: Mean +- std dev: 469 ms +- 14 ms ......................................... wide_state_9x1200: Mean +- std dev: 26.7 ms +- 0.6 ms ......................................... wide_state_9x1200_sync: Mean +- std dev: 17.1 ms +- 0.1 ms ......................................... wide_state_9x1200_checkpoint: Mean +- std dev: 310 ms +- 16 ms ......................................... wide_state_9x1200_checkpoint_sync: Mean +- std dev: 304 ms +- 13 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_10x_checkpoint | 74.4 ms | 73.5 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | fanout_to_subgraph_10x_checkpoint_sync | 94.8 ms | 94.2 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_100x_checkpoint | 835 ms | 831 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_100x_sync | 273 ms | 272 ms: 1.00x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_25x300_sync | 14.7 ms | 14.7 ms: 1.00x slower | +-----------------------------------------+---------+-----------------------+ | react_agent_10x_checkpoint_sync | 36.7 ms | 36.9 ms: 1.00x slower | +-----------------------------------------+---------+-----------------------+ | wide_state_15x600 | 26.5 ms | 26.7 ms: 1.01x slower | +-----------------------------------------+---------+-----------------------+ | wide_state_25x300 | 22.8 ms | 23.0 ms: 1.01x slower | +-----------------------------------------+---------+-----------------------+ | wide_state_9x1200 | 26.5 ms | 26.7 ms: 1.01x slower | +-----------------------------------------+---------+-----------------------+ | fanout_to_subgraph_100x_checkpoint_sync | 943 ms | 954 ms: 1.01x slower | +-----------------------------------------+---------+-----------------------+ | react_agent_10x_checkpoint | 37.5 ms | 37.9 ms: 1.01x slower | +-----------------------------------------+---------+-----------------------+ | react_agent_10x_sync | 22.5 ms | 23.0 ms: 1.02x slower | +-----------------------------------------+---------+-----------------------+ | fanout_to_subgraph_100x | 608 ms | 632 ms: 1.04x slower | +-----------------------------------------+---------+-----------------------+ | fanout_to_subgraph_100x_checkpoint | 758 ms | 794 ms: 1.05x slower | +-----------------------------------------+---------+-----------------------+ | Geometric mean | (ref) | 1.01x slower | +-----------------------------------------+---------+-----------------------+ Benchmark hidden because not significant (14): wide_state_15x600_checkpoint_sync, wide_state_15x600_checkpoint, react_agent_100x, wide_state_9x1200_checkpoint_sync, fanout_to_subgraph_100x_sync, fanout_to_subgraph_10x, react_agent_100x_checkpoint_sync, fanout_to_subgraph_10x_sync, wide_state_9x1200_sync, wide_state_15x600_sync, wide_state_25x300_checkpoint_sync, react_agent_10x, wide_state_25x300_checkpoint, wide_state_9x1200_checkpoint
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"]
Loading
Loading