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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stream_transformer-0.2.1.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stream_transformer-0.2.1-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file stream_transformer-0.2.1.tar.gz.

File metadata

  • Download URL: stream_transformer-0.2.1.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.9

File hashes

Hashes for stream_transformer-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a87a9e2c1e4191f567053f48e1f10a752d4eeab41e252c3800e22a8478f8157c
MD5 c1b247e055d7cbc83d3133d8b752a8f0
BLAKE2b-256 ea991ee37a902af6591e44c0e531490f783907e74d1c3b462e1974b258a1c468

See more details on using hashes here.

File details

Details for the file stream_transformer-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for stream_transformer-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 078c312aff4bce48911846a9af3c56924a557a7724cf397998d20b54f03042e6
MD5 33484e157cb53d4763874aa5af695cdd
BLAKE2b-256 0df4d0cc6c00a1bca75eace2bd287fdd56a02219790288c0500ae6f1f57901d0

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.2

2 files

This release

0.2.1 This release

2 files

0.1.0

2 files

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