Skip to content

User Guide

Persisting provides unified tiered storage for AI workloads. Trajectories, parameters, and KV cache share the same addressing model (TTAS), storage engine (Lance), and distribution runtime (Pulsing).

Core: Unified Storage

Guide Workload Dimensions Status
Tensor Memory Parameters, KV Cache, Trajectories (param_id, shard), (session, layer, head, time), (run_id, time) πŸ§ͺ Experimental

All three workloads use persisting.open() with the same TTAS addressing. Block-tiered across host memory and SSD (GPU planned).

Tools on the Same Foundation

Guide Description Status
Capture Proxy and record LLM traffic β€” persisting traj βœ… Stable
Queue Append/consume event streams, KV API, samplers βœ… Stable
Search Document indexing and vector/hybrid search βœ… Stable
Compute Map-style task orchestration β€” plan() + execute() βœ… Stable
Custom Backends Implement your own storage backend πŸ“– Reference

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Trajectories      Parameters        KV Cache        β”‚
β”‚  (run_id, time)    (param_id, shard) (sess, layer, …)β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                    TTAS                                β”‚
β”‚            Tiered Tensor Address Space                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   Tiering:  GPU (L0)  ↔  Host (L1)  ↔  SSD (L3)     β”‚
β”‚   Route:    Pulsing actor runtime                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚            Lance Columnar Storage                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Choosing Your Entry Point

You want to… Start with
Store/retrieve parameters or KV cache by tensor subscript Tensor Memory
Record agent LLM calls Capture
Stream events with persistence Queue
Index and search documents Search
Run batch jobs with checkpoint/resume Compute
Plug in custom storage Custom Backends