callensxavier's picture
Upload README.md with huggingface_hub
5a152fc verified
|
Raw
History Blame
5.16 kB
metadata
license: mit
tags:
  - attention
  - efficient-attention
  - number-theory
  - calabi-yau
  - custom-kernel
  - pytorch
  - benchmark
datasets: []

S20-Decay Attention Kernel

A high-performance, mathematically exact attention bias derived from the Weight-5 Apéry-like binomial sum:

S20(n)=k=0n(nk)4(n+kk)S_{20}(n) = \sum_{k=0}^{n} \binom{n}{k}^4 \binom{n+k}{k}

Paper: A Weight-5 Apéry-like Binomial Sum, its Calabi-Yau 4-fold Period, and Supercongruences
Code: GitHub — Mirror-Map-Sieve


3 Core Hypotheses

  1. Exact Mathematical Rigidity: Unlike ALiBi or learned positional embeddings, the S20 sequence provides a deterministic, integer-derived attention decay. Zero floating-point drift at any context length.
  2. O(1) Vectorized Toeplitz Construction: The decay matrix is built as a 1D broadcast over a distance tensor — no nested loops, no learned parameters.
  3. Zero-Cost LLM Injection: S20 decay can be injected into any SDPA-based model via global monkey-patching (F.scaled_dot_product_attention) with zero measurable latency overhead on GPU.

GPU Benchmark: Tesla T4 (16GB, CUDA 12.9, PyTorch 2.9.1)

Raw Kernel: SDPA ± S20 Bias

Seq Len SDPA Baseline SDPA + S20 Overhead Correct
64 0.020 ms 0.022 ms 1.08×
128 0.024 ms 0.029 ms 1.23×
256 0.041 ms 0.053 ms 1.31×
512 0.092 ms 0.144 ms 1.56×
1024 0.199 ms 0.529 ms 2.65×

Phi-3-mini-4k-instruct (3.8B) — Global SDPA Patching

Seq Len Baseline S20-SDPA Overhead Base tok/s S20 tok/s Energy (J) Power (W)
64 49.59 ms 49.09 ms 0.99× 1,290 1,304 67.9 69.2
128 59.21 ms 59.15 ms 1.00× 2,162 2,164 82.3 69.8
256 106.98 ms 107.39 ms 1.00× 2,393 2,384 115.5 54.4
512 211.06 ms 213.15 ms 1.01× 2,426 2,402 297.3 69.9
1024 488.51 ms 487.11 ms 1.00× 2,096 2,102 659.9 67.7

Key finding: On a real 3.8B-parameter model, S20 global SDPA patching adds zero measurable overhead (0.99–1.01×) across all sequence lengths. The integer-sequence bias is effectively free on GPU.


CPU Benchmark: Open-Weights Model Injection

S20 decay injected as post-logit positional mask on CPU (Apple Silicon):

Model Params Baseline S20-Injected Overhead Avg PPL
GPT-2 124M 39.2 ms 41.6 ms 1.06× 175.7
DistilGPT-2 82M 21.6 ms 21.3 ms 0.99× 302.0
OPT-125M 125M 29.0 ms 29.4 ms 1.01× 199.7
BLOOM-560M 559M 122.4 ms 118.0 ms 0.96× 139.0

Method: Global SDPA Patching (Forward Hook Option A)

import torch
import torch.nn.functional as F
from math import comb

# 1. Build S20 decay sequence
def s20(n): return sum(comb(n, k)**4 * comb(n+k, k) for k in range(n+1))
_S20 = [s20(d) for d in range(18)]

# 2. Vectorized log-bias matrix
def build_s20_log_bias(seq_len, device="cuda", dtype=torch.float16):
    base = float(_S20[0])
    weights = [base/float(x) if x > 0 else 0.0 for x in _S20] + [0.0]
    dv = torch.tensor(weights, dtype=torch.float32, device=device)
    idx = torch.arange(seq_len, device=device)
    dist = (idx.unsqueeze(0) - idx.unsqueeze(1)).abs().clamp(max=len(_S20))
    decay = dv[dist]
    log_bias = torch.log(decay.clamp(min=1e-30))
    causal = torch.tril(torch.ones(seq_len, seq_len, device=device))
    log_bias = log_bias * causal + (1 - causal) * (-1e9)
    return log_bias.unsqueeze(0).unsqueeze(0).to(dtype)

# 3. Monkey-patch F.scaled_dot_product_attention
_original_sdpa = F.scaled_dot_product_attention
_bias_cache = {}

def patched_sdpa(q, k, v, attn_mask=None, dropout_p=0.0, is_causal=False, **kw):
    L = q.shape[-2]
    if L not in _bias_cache:
        _bias_cache[L] = build_s20_log_bias(L, q.device, q.dtype)
    bias = _bias_cache[L][:, :, :L, :k.shape[-2]]
    if attn_mask is not None:
        attn_mask = attn_mask + bias
    else:
        attn_mask = bias
    return _original_sdpa(q, k, v, attn_mask=attn_mask, dropout_p=dropout_p, **kw)

F.scaled_dot_product_attention = patched_sdpa
# Now ANY model using SDPA will have S20 decay injected automatically

Reproducibility

# Clone and run on any CUDA GPU
git clone https://github.com/xaviercallens/Mirror-Map-Sieve.git
cd Mirror-Map-Sieve/4_ai_hardware_attention
pip install torch transformers accelerate
python gpu_benchmark_s20.py --model microsoft/Phi-3-mini-4k-instruct --seq_lens 64 128 256 512 1024

Citation

@software{callens2026s20attn,
  author = {Callens, Xavier},
  title  = {S20-Decay Attention Kernel: Vectorized Integer-Sequence Attention Bias},
  year   = {2026},
  url    = {https://huggingface.co/callensxavier/s20-attention-kernel},
  doi    = {10.5281/zenodo.20747943}
}