-
Notifications
You must be signed in to change notification settings - Fork 1
Module llm streaming Architecture
The LLM streaming module provides real-time streaming infrastructure for large language model responses within ThemisDB, enabling efficient token-level streaming to clients with flow-control and error recovery capabilities.
- Token-Level Streaming: Tokens sent to client as soon as available (no buffering)
- Backpressure Awareness: Respects client receive window; buffers on congestion
- Connection Resilience: Graceful handling of client disconnections and network failures
- Cancellation Support: Clients can cancel in-progress streams cleanly
- Observable: All streaming events logged with correlation IDs
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LLM Inference Engine β
β β’ Produces tokens as they are generated β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β StreamDispatcher (Request Routing) β
β β’ Route LLM requests to streaming implementation β
β β’ Manage stream lifecycle (open, active, close) β
β β’ Track active streams and concurrent connections β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TokenBuffer (Aggregation & Batching) β
β β’ Buffer tokens for network efficiency β
β β’ Batching based on size/time threshold β
β β’ Preserve token order and metadata β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BackpressureController (Flow Control) β
β β’ Monitor client receive window β
β β’ Apply backpressure when buffer full β
β β’ Implement exponential backoff on congestion β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β StreamingServer (Protocol Handler) β
β β’ gRPC streaming endpoint β
β β’ HTTP Server-Sent Events (SSE) β
β β’ Connection management & lifecycle β
β β’ Timeout enforcement β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
βΌ
Network
β
βΌ
Streaming Client
Purpose: Protocol handler for streaming responses over gRPC or HTTP.
Responsibilities:
- Accept streaming requests (gRPC or HTTP SSE)
- Manage connection lifecycle (open, active, close)
- Enforce per-stream timeouts
- Send tokens to client with metadata
- Handle client disconnection gracefully
Public API:
class StreamingServer {
Result<> startStream(const LLMRequest& req, StreamWriter* writer);
Result<> sendToken(const Token& token);
void cancelStream(const StreamId& id);
};Purpose: Route LLM requests to streaming implementation.
Responsibilities:
- Create new stream for each LLM request
- Coordinate with LLM inference engine
- Manage stream state transitions
- Track active streams
- Clean up closed streams
Key Contracts:
-
dispatch(request) β StreamIdβ Create new stream -
getStream(id) β Stream*β Lookup active stream -
closeStream(id)β Terminate stream
Purpose: Aggregate tokens for efficient network transmission.
Approach:
- Buffer tokens until size threshold or time deadline reached
- Batch multiple tokens into single network message
- Preserve token order and metadata
- Configurable batching heuristics
Configuration:
- Batch size threshold (default: 10 tokens)
- Max latency threshold (default: 100 ms)
- Buffer capacity (default: 1000 tokens)
Performance:
- Reduces network roundtrips by 10-100x
- Maintains latency < 100 ms for small batches
Purpose: Implement flow control to respect client receive window.
Approach:
- Monitor client acknowledgments and window size
- Pause token sending when buffer full
- Implement exponential backoff during congestion
- Resume when client acknowledges
Flow Control Model:
Token Available
β
βββΊ Check client receive window
β
βββΊ If space available:
β βββΊ Send token immediately
β
βββΊ If buffer full:
βββΊ Add to backpressure queue
βββΊ Notify LLM (slow producer)
βββΊ Wait for client acknowledgment
LLM Inference Engine
β produces token
βΌ
StreamDispatcher.onToken(token)
β get active stream
βΌ
TokenBuffer.addToken(token)
β check batching criteria
βββΊ If size threshold reached:
β βββΊ flush batch
βββΊ If time threshold reached:
β βββΊ flush batch
βββΊ If capacity exceeded:
βββΊ apply backpressure
β
βΌ
BackpressureController
β wait for client window
βΌ
StreamingServer.sendBatch(tokens)
β send to client
βΌ
Network β Client
-
Per-Stream State: Protected by stream-specific mutex
- Token buffer state
- Backpressure state
- Stream lifecycle flags
-
Global Stream Registry: Protected by read-write lock
- Enables fast lookup of active streams
- Minimal contention for stream creation/deletion
-
Token Emission: Lock-free where possible
- Atomic token counter
- Compare-and-swap for stream state transitions
-
std::mutexfor stream-specific critical sections -
std::shared_mutexfor stream registry -
std::condition_variablefor backpressure signaling -
std::atomic<>for stream counters
- Token Enqueue: < 1 ms
- Batch Formation: < 100 ms (batching deadline)
- Network Send: < 50 ms
- End-to-End (token β client): < 200 ms
- Cancellation Propagation: < 100 ms
- Token Throughput: > 100 tokens/sec per stream
- Concurrent Streams: β₯ 100 active streams
- Aggregate Throughput: 10k+ tokens/sec
- Per-Stream Memory: ~10 MB (including buffers)
- Token Buffer Overhead: ~100 bytes per token
- Total Memory (100 streams): ~1 GB
- Client Disconnection β Detect via write failure; clean up stream
- Network Timeout β Retry with exponential backoff
- Backpressure Timeout β Close stream with error
- Buffer Overflow β Return backpressure error to LLM producer
- E7300: Stream not found
- E7301: Cancellation requested
- E7302: Backpressure buffer exceeded
- E7303: Token send timeout
- E7304: Invalid token sequence
Streaming receives tokens from LLM inference as they are produced:
- Token callback:
onToken(token, finish_reason) - LLM can check backpressure:
isBackpressured() β bool
- gRPC: ServerWriter streaming
- HTTP: Server-Sent Events (SSE)
- [[
ROADMAP.md|Module-llm-streaming-Roadmap]] β Implementation phases and deliverables -
FUTURE_ENHANCEMENTS.mdβ Planned features -
../../include/llm_streaming/streaming_server.hβ Public API
ThemisDB 1.9.0-beta Β· Home Β· Module-Index Β· GitHub Β· Issues
ThemisDB 1.9.0-beta Β· Home Β· Wiki-Index Β· Module-Index Β· FAQ Β· Quick-Reference Β· GitHub Β· Issues Β· Discussions Β· License
- Batch Operations
- Best Practices
- CRUD Tutorial
- Custom Document Ingestion
- Getting Started Tutorial
- Interactive Examples
- Schema Design
- Video Tutorials
- AQL Reference
- AQL Examples
- AQL Overview
- AQL Feature Roadmap
- AQL Geospatial Guide
- AQL LLM Migration Guide
- AQL API
- AQL Grammar (EBNF)
- AQL Root Overview
- AQL Examples (root)
- API Reference
- API Module README
- OpenAPI Overview
- Client SDK Overview
- SDK Overview
- Operations
- Operations Overview
- Operations Runbook
- Operations Handbook
- ThemisCtl Admin Guide
- Pipeline E2E SOPs
- Deploy Overview
- Docker Overview
- Docker Hub README
- Helm Overview
- Packaging Overview
- Operator Overview
- Security Policy
- Production Hardening Checklist
- Security Hardening Guide
- Encryption Key Management
- Access Control Framework
- Zero Trust Policy
- API Authentication & Authorization
- HSM Production Setup
- PKCS11 Integration
- DSGVO / SOC2 Checklist
- Access Model Runbooks
- Access Model Dashboard
- Maturity Automation Runbook
- Access Review Automation
- Access Model Dashboard
- Access Model Runbooks
- Rights Revocation
- Dr Checklists
- Dr Testing
- Incident Response Playbook
- Incident Response Testing
- GPU Oom Recovery
- Grammar Debugging
- Metrics Scrape Troubleshooting
- Model Swap Procedure
- Quota Tuning
- Subagent Deployment
- Logging Configuration
- Content Model
- Crypto & Keys
- Feature Flags Reference
- Modular Architecture Roadmap
- Modularization Guide
- Module Architecture Index
- PostgreSQL Wire Protocol
- Query Scheduling
- Raft Consensus Design
- Resource Pooling
- Source Directory Guide
- Unified Access Model
- E1 001 Layered Retrieval Design
- E1 002 Ann Abstraction Strategy
- E1 003 Tensor Summary Types
- E1 004 Lora Package Distinction
- E1 005 Model Switch Compatibility
- E1 006 Federated Tensor Summaries
- E2 001 Evaluation Framework Design
- E2 002 Hardware Profile Strategy
- E2 003 Query Planner Routing Model
- E2 004 Approximation Governance Rules
- E2 005 Cross Layer Fallback Confidence Policy
- E3 001 Distributed Tensor Design
- E3 002 Manifest Coordination Strategy
- E3 003 Recovery And Erasure Choice
- E3 004 Tensor Fabric Infrastructure
- Contributing
- Contributing (root)
- Code of Conduct
- Support
- Maintainers
- CTest Guide
- Build Quick Reference
- Developer Wiki Index
- Build / Test / CI
- Module Index
- Branching Strategy
- Disabled Stub Policy
- Docs PR Policy
- GA Promotion Sign Off
- Github Milestones Setup
- Maturity Claim Verification Checklist
- Maturity Evidence Registry
- Merge Gate Bot Config
- Merge Gate Status Live
- Phase 1 Closure Report
- Phase Closure Policy
- Phase Dependency Graph
- Phase3 Enforcement Runbook
- Plugin Submodule Rollback
- PR Version Targeting
- PR Version Targeting Backfill
- Production Ready 2026 Delivery Plan
- Query Module Status
- Readme
- Release Promotion Gate Policy
- Release Validation Checklist
- Security Module 5671 Evidence Summary
- Sharding P6 Residual Risk Acceptance
- Sourcecode Compliance Governance
- Updates Development Status Sign Off
- Wave C Implementation Complete
- Blob Storage
- Cuda
- Ethics Ai
- Exporters
- Huggingface
- Image Analysis
- Importers
- RPC
- Scraper
- Themisdb Ai Watermark Detector
- User Storage Encrypted
- Chimera Architecture
- Chimera Future
- Chimera Readme
- Chimera Roadmap
- Covina Fastapi Ingestion Architecture
- Covina Fastapi Ingestion Future
- Covina Fastapi Ingestion Roadmap
- Vcc Base Architecture
- Vcc Base Future
- Vcc Base Roadmap
- Vcc Clara Ingestion Architecture
- Vcc Clara Ingestion Future
- Vcc Clara Ingestion Roadmap
- Vcc Veritas Architecture
- Vcc Veritas Future
- Vcc Veritas Roadmap
- 01 Hello World
- 02 Todo App
- 03 Contact Manager
- 04 Inventory System
- 05 Time Series Monitor
- 06 Graph Social Network
- 07 Vector Search Documents
- 08 Dms Erp System
- 09 Iot Sensor Network
- 10 Drone Image Analysis
- 11 Blog Wiki
- 12 Expense Tracker
- 13 Recipe Manager
- 14 Ecommerce Catalog
- 15 Event Management
- 16 Kanban Board
- 17 Crm
- 18 Realtime Chat
- 19 Recommendation Engine
- 20 Smart Home
- 21 Coding Platform
- 22 AQL Diagram Tool
- 23 Traveling Salesman
- 24 Moral Philosophy Debates
- API Versioning
- Distributed Sharding
- Feedback Plugins
- Geo
- Gnn
- Image Analysis
- Legal Lora Training
- LLM
- Lora Sync
- Migration
- Nlp
- Performance
- Railway
- Replication
- Rope Visualization
- Sample Product Config
- Security
- Client SDK Overview
- Quickstart
- Sdk Enhancements
- Sdk Implementation Summary
- Test Suite Readme
- Go
- Java
- Javascript
- Php
- Python
- Ruby
- Rust
- Typescript
- 01 Grundlegende Operationen
- 02 AQL Queries
- 03 Graph Daten
- 04 Multimodell Anwendung
- 01 Quickstart Guide
- 02 AQL Referenz Kurzuebersicht
- 03 Datenmodellierung Guide
- 04 Uebungsaufgaben
- 05 Best Practices Guide
- Training Documents
- Training Overview
- 01 Einfuehrung Und Uebersicht
- 02 Datenmodelle Und Architektur
- 03 AQL Abfragesprache
- 04 Installation Und Setup
- 05 Anwendungsbeispiele
- Training Presentations
- Dependencies Readme
- Processmonitor Readme
- Themis.admintools.shared Readme
- Themis.aqlquerybuilder Readme
- Themis.aqlquerybuilder Roadmap
- Themis.auditlogviewer Readme
- Themis.auditlogviewer Roadmap
- Themis.classificationdashboard Readme
- Themis.classificationdashboard Roadmap
- Themis.compliancereports Readme
- Themis.compliancereports Roadmap
- Themis.gisviewer.controlpanel Readme
- Themis.gisviewer.controlpanel Roadmap
- Themis.impactanalysisviewer Readme
- Themis.impactanalysisviewer Roadmap
- Themis.ingestiontool Readme
- Themis.ingestiontool Roadmap
- Themis.keyrotationdashboard Readme
- Themis.keyrotationdashboard Roadmap
- Themis.piimanager Readme
- Themis.piimanager Roadmap
- Themis.retentionmanager Readme
- Themis.retentionmanager Roadmap
- Themis.sagaverifier Readme
- Themis.sagaverifier Roadmap
- Themis.usbadmintool Readme
- Themis.usbadmintool Roadmap
- CI Readme
- CI Roadmap
- Compiler Diagnostics Readme
- Compiler Diagnostics Roadmap
- Completion Readme
- Copilot Ollama Router Readme
- Copilot Ollama Router Roadmap
- Gnn Readme
- Gnn Roadmap
- Rope Visualizer Readme
- Rope Visualizer Roadmap
- Tco Calculator Readme
- Tco Calculator Roadmap
- Tests Readme
- Tests Roadmap
- Themis Config Wx Readme
- Themis Docs Builder Readme
- Wikipedia Ingestion Readme