Skip to main content

⚡ StreamTransformer (STR) v0.1.0

Universal Depth-Invariant Layer-Streaming Engine & Developer Toolkit for PyTorch

PyPI version CUDA Streams KV Cache Architectures Precision License CLI

pip install stream-transformer

📌 Table of Contents

  1. Overview & Problem Statement
  2. CLI Developer Tooling (stream)
  3. Systems Architecture
  4. Empirical Benchmarks & Telemetry
  5. Quickstart Developer Workflows
  6. API Reference
  7. Custom Layer Integration
  8. Citation & Author

🌌 Overview & Problem Statement

Standard foundation model execution requires all transformer parameters, activations, and KV states to reside simultaneously in high-bandwidth GPU memory (HBM). When running on consumer GPUs (4GB–8GB VRAM), developers are forced into lossy 4-bit quantization (INT4/GGUF/AWQ), corrupting multi-step reasoning, mathematical logic, and coding precision.

StreamTransformer solves this with three core systems engineering innovations:

  1. $\mathcal{O}(1)$ Depth-Invariant Memory: Only one active layer occupies GPU memory at any given millisecond. Peak VRAM remains constant regardless of whether the model has 32, 100, or 1,000 layers.
  2. CUDA Streams Double-Buffering: Overlaps GPU tensor core compute on Layer i with non-blocking PCIe DMA prefetching of Layer i+1 into page-locked host RAM.
  3. Layer-Wise Streaming KV-Cache: Caches key-value states in pinned host memory, streaming only the active layer's KV slice for fast $O(1)$ token decode steps without recomputations.
  4. Lossless $O(1)$ VRAM Pretraining: Implements reverse layer backpropagation with CPU boundary activation stashing, enabling full FP32 pretraining on low-VRAM hardware without gradient checkpointing memory overheads.

🛠️ CLI Developer Tooling (stream)

StreamTransformer includes a global developer CLI (stream or stream-transformer) to scaffold projects, run system diagnostics, and execute hardware memory benchmarks.

1. Project Scaffolding (stream init)

Scaffold a complete, runnable streaming project directory in seconds:

stream init my_llm_app

Generated Project Structure:

my_llm_app/
├── config.json         # Model hyperparameters (layers, heads, dimensions)
├── model.py            # Pre-configured LLaMA-3 architecture primitives
├── generate_shards.py  # Utility script to shard model weights to disk
├── main.py             # High-throughput inference engine entrypoint
├── train.py            # O(1) VRAM training/fine-tuning script
└── README.md           # Scaffolding project documentation

2. System Diagnostics (stream info)

Inspect local GPU memory, CUDA stream capabilities, and PyTorch environment details:

stream info
StreamTransformer System Diagnostics
=============================================
Python Version : 3.11.9
PyTorch Version: 2.13.0+cuda121
CUDA Available : True
Device Name    : NVIDIA GeForce RTX 4090
Total VRAM     : 24.00 GB
CUDA Stream Support: YES (Async DMA Enabled)
=============================================

3. VRAM Memory Benchmark (stream bench)

Run a synthetic benchmark to measure VRAM savings on your current GPU hardware:

stream bench --layers 32 --dim 4096

🏎️ Systems Architecture

┌────────────────────────────────────────────────────────────────────────────────────────┐
│                   STREAMTRANSFORMER RUNTIME PIPELINE                                   │
├────────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                        │
│   Input Tokens ──→ [ Token Embeddings (Resident) ] ──→ h₀                              │
│                                                         │                              │
│   ┌─── [Compute Stream: Slot 0] ──────────────┐         │                              │
│   │ Compute Layer 1: h₁ = Layer₁(h₀, KV₁)     │         │                              │
│   └───────────────────────────────────────────┘         │                              │
│         ▲                                               ▼                              │
│         │ (Parallel Overlap)                   [Layer-Wise KV Cache]                   │
│         ▼                                      (Stored in Pinned RAM)                  │
│   ┌─── [Transfer Stream: Slot 1] ─────────────┐         │                              │
│   │ DMA Prefetch Layer 2 over PCIe            │         │                              │
│   └───────────────────────────────────────────┘         │                              │
│                                                         │                              │
│   ... (Alternating Slots across all L Layers)           │                              │
│                                                         ▼                              │
│   Output Logits ←── [ LM Head (Resident) ] ←── [ RMSNorm (Resident) ]                  │
│                                                                                        │
│   Peak GPU VRAM: CONSTANT ~297 MB across 100 Layers!                                   │
└────────────────────────────────────────────────────────────────────────────────────────┘

📊 Empirical Benchmarks & Telemetry

1. Monolithic vs. Quantization vs. StreamTransformer (FP32 Baseline)

Execution Paradigm Compute Precision Peak VRAM VRAM Savings Cosine Similarity Max Absolute Error
Standard Monolithic FP32 (Lossless) ~1,850.0 MB 0.0% (Baseline) $1.00000000$ $0.00000000 \times 10^0$
StreamTransformer (Ours) FP32 (Lossless) ~148.5 MB 🔥 91.97% Savings 1.00000012 0.00000000 \times 10^0
Standard INT4 Quantization INT4 (Lossy) ~480.0 MB 74.05% Savings $0.96142010$ $1.84210940 \times 10^{-1}$

2. 100-Layer GPU Depth-Invariance Telemetry

===========================================================================
 100-LAYER TRANSFORMER ON GPU (~746 Million Parameters)
===========================================================================
• Layer   1/100: Active VRAM = 214.16 MB | Peak VRAM = 297.50 MB
• Layer  20/100: Active VRAM = 214.16 MB | Peak VRAM = 297.50 MB
• Layer  40/100: Active VRAM = 214.16 MB | Peak VRAM = 297.50 MB
• Layer  60/100: Active VRAM = 214.16 MB | Peak VRAM = 297.50 MB
• Layer  80/100: Active VRAM = 214.16 MB | Peak VRAM = 297.50 MB
• Layer 100/100: Active VRAM = 214.16 MB | Peak VRAM = 297.50 MB
---------------------------------------------------------------------------
• Status:           ✅ SUCCESS (0 Errors, All 100 Layers Computed)
• Peak GPU VRAM:    297.50 MB (Monolithic Expected: ~12,500 MB)
• Memory Savings:   🔥 97.62% VRAM Reduction!
===========================================================================

💻 Quickstart Developer Workflows

1. Scaffolding a New Project

stream init llama3_demo
cd llama3_demo

2. Model Weight Sharding

Convert your PyTorch module or Hugging Face weights into layer shards:

from stream_transformer import CheckpointSharder
from model import create_resident_modules, create_layer_block

sharder = CheckpointSharder("model_shards")

# Save resident modules (Embedding, Final Norm, LM Head)
resident = create_resident_modules(vocab_size=32000, dim=4096)
sharder.save_resident(resident)

# Save layer blocks as individual disk shards
for i in range(32):
    layer_block = create_layer_block(dim=4096, n_heads=32, n_kv_heads=8)
    sharder.save_layer(i, layer_block)

3. High-Throughput Inference with KV Caching

import torch
import torch.nn as nn
from stream_transformer import StreamEngine
from stream_transformer.models import LlamaDecoderBlock

# 1. Resident modules
resident = nn.ModuleDict({
    "embed_tokens": nn.Embedding(32000, 4096),
    "lm_head": nn.Linear(4096, 32000, bias=False)
})

# 2. Instantiate StreamEngine
engine = StreamEngine(
    resident_modules=resident,
    layer_constructor=lambda: LlamaDecoderBlock(dim=4096, n_heads=32, n_kv_heads=8),
    shard_dir="model_shards",
    num_layers=32,
    device="cuda",
    use_double_buffer=True
)

# 3. Generate tokens with layer-wise KV caching
prompt = torch.randint(0, 32000, (1, 64), device="cuda")
output_tokens = engine.generate(
    prompt,
    max_new_tokens=50,
    pre_layer_fn=lambda x, res: res["embed_tokens"](x),
    post_layer_fn=lambda x, res: res["lm_head"](x)
)
print("Generated Token Output Shape:", output_tokens.shape)

4. Lossless O(1) VRAM Pretraining

from stream_transformer import StreamTrainer

trainer = StreamTrainer(
    resident_modules=resident,
    layer_constructor=lambda: YourTransformerBlock(dim=768),
    shard_dir="train_shards",
    num_layers=36,
    device="cuda",
    lr=6e-4
)

# Executes forward pass with CPU boundary stashing + reverse layer backprop
loss = trainer.train_step(
    x_tokens, y_targets,
    embed_fn=lambda inp, res: res["embed_tokens"](inp),
    head_fn=lambda h, res: res["lm_head"](h)
)
print(f"Streaming Step Loss: {loss:.4f}")

📖 API Reference

StreamEngine

Universal inference engine managing non-blocking double-buffering slots and layer streaming.

Parameter Type Default Description
resident_modules nn.ModuleDict Required Modules kept resident in GPU VRAM (embeddings, LM head).
layer_constructor Callable[[], nn.Module] Required Factory function returning an uninitialized layer block.
shard_dir str Required Path to layer shard directory.
num_layers int Required Total number of transformer layers.
device str "cuda" Target execution device ("cuda" or "cpu").
use_double_buffer bool True Enables asynchronous PCIe DMA prefetching.

StreamTrainer

O(1) VRAM pretraining engine executing reverse layer-by-layer backpropagation.

Parameter Type Default Description
resident_modules nn.ModuleDict Required Resident modules for training.
layer_constructor Callable Required Layer factory.
shard_dir str Required Shard path.
num_layers int Required Number of layers.
lr float 1e-4 Optimizer learning rate.

CheckpointSharder

Utility for saving and loading modular layer shards to/from disk storage.

sharder = CheckpointSharder(shard_dir="shards_path")
sharder.save_layer(layer_idx=0, layer_module=block)
block = sharder.load_layer(layer_idx=0, target_module=empty_block)

🔧 Custom Layer Integration

You can stream any custom PyTorch layer module using StreamEngine. The only requirement is that the layer block takes hidden states (x) as its primary input:

import torch.nn as nn
from stream_transformer import StreamEngine

class CustomAttentionBlock(nn.Module):
    def __init__(self, dim):
        super().__init__()
        self.attn = nn.MultiheadAttention(dim, num_heads=8, batch_first=True)
        self.norm = nn.LayerNorm(dim)

    def forward(self, x):
        attn_out, _ = self.attn(x, x, x)
        return x + self.norm(attn_out)

# Plug into StreamEngine seamlessly
engine = StreamEngine(
    resident_modules=resident,
    layer_constructor=lambda: CustomAttentionBlock(dim=512),
    shard_dir="custom_shards",
    num_layers=24
)

📜 Citation & Author

If you use StreamTransformer in your research or projects, please cite:

@article{kumar2026streamtransformer,
  title={StreamTransformer: A Depth-Invariant Layer-Streaming Architecture for Lossless Full-Precision Neural Execution},
  author={Kumar, Ranveer},
  journal={arXiv preprint},
  year={2026},
  url={https://github.com/RABNEER/stream-transformer}
}

Author & Maintainer:
Ranveer Kumar (Independent AI Researcher)
GitHub: @RABNEER | PyPI: stream-transformer | Email: ranveer@streamtransformer.ai

Metadata

Release files for stream-transformer 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for stream-transformer 0.2.2
File Size Uploaded Provenance Actions
stream_transformer-0.2.2.tar.gz 24.9 kB Without provenance Details for stream_transformer-0.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for stream-transformer 0.2.2
File Interpreter ABI Platform Actions
stream_transformer-0.2.2-py3-none-any.whl Python 3 none any Details for stream_transformer-0.2.2-py3-none-any.whl

Total release size: 47.6 kB

Release files / stream_transformer-0.2.2.tar.gz

Download URL stream_transformer-0.2.2.tar.gz
Size 24.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1193d2e27b66ca4fea0903b6c3f14974818f5d657ac716f6e20e1b0aa5f050cc
BLAKE2b-256 checksum
How to use checksums
6d168bb5fb6d66c1da26d2fdc69e5a421aa2ee64302a95919827717abc7ae036
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / stream_transformer-0.2.2-py3-none-any.whl

Download URL stream_transformer-0.2.2-py3-none-any.whl
Size 22.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
84013be1b5f5797af29709beed032171e678b3d8449daba9aafaced9919146a4
BLAKE2b-256 checksum
How to use checksums
7778e38eecf28bbb3a83782dc7a375a857b647b2a91a651172ebd1e63d3bfa1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Security for stream-transformer 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page