|
Download README.md from flashrt/flashrt-residual-norm-quant: direct link, hf CLI and curl.
- Browser
- Download file 2.51 kB
-
https://huggingface.co/flashrt/flashrt-residual-norm-quant/resolve/main/README.md
- Command line
-
hf download hf://flashrt/flashrt-residual-norm-quant/README.md
-
curl -L -o README.md https://huggingface.co/flashrt/flashrt-residual-norm-quant/resolve/main/README.md
2.51 kB
| # flashrt-residual-norm-quant | |
| Tensor-facing FlashRT residual, RMSNorm, and static FP8 quantization kernels for | |
| Hugging Face `kernels`. | |
| This package is runtime glue for model hot paths that need to produce the next | |
| layer's FP8 activation without falling back to multiple PyTorch operations: | |
| ```text | |
| BF16 residual/x -> residual add -> RMSNorm -> static-scale FP8 E4M3 activation | |
| ``` | |
| ## Exported APIs | |
| - `rms_norm_bf16(x, weight, eps=1e-6, out=None)` | |
| - `rms_norm_quant_fp8_static_bf16(x, weight, scale, eps=1e-6, out=None)` | |
| - `residual_add_rms_norm_quant_fp8_static_bf16(residual, x, weight, scale, eps=1e-6, out=None)` | |
| - `residual_add_rms_norm_bf16(residual, x, weight, eps=1e-6, out=None)` | |
| The residual API updates `residual` in place with `residual += x`, rounded to | |
| BF16, then emits the normalized FP8 activation. | |
| The no-quant twin preserves the same in-place BF16 residual contract and emits | |
| BF16, for runtimes whose next consumer is not low precision. | |
| ## Tensor Conventions | |
| - `x`: BF16 tensor, shape `(rows, dim)` | |
| - `residual`: BF16 tensor, shape `(rows, dim)`, in-place updated | |
| - `weight`: BF16 tensor, shape `(dim,)` | |
| - `scale`: CUDA `float32` scalar tensor used for static FP8 quantization | |
| - `out`: FP8 E4M3 tensor, shape `(rows, dim)` | |
| The hidden dimension must be even because this version uses FlashRT's packed | |
| BF16 pair path. | |
| ## Minimal Usage | |
| ```python | |
| from kernels import get_kernel | |
| import torch | |
| ops = get_kernel( | |
| "flashrt/flashrt-residual-norm-quant", | |
| version=1, | |
| trust_remote_code=True, | |
| ) | |
| x = torch.randn((10, 1024), device="cuda", dtype=torch.bfloat16) | |
| residual = torch.randn_like(x) | |
| weight = torch.ones((1024,), device="cuda", dtype=torch.bfloat16) | |
| scale = torch.tensor([0.04], device="cuda", dtype=torch.float32) | |
| x_fp8 = ops.residual_add_rms_norm_quant_fp8_static_bf16( | |
| residual, | |
| x, | |
| weight, | |
| scale, | |
| eps=1e-6, | |
| ) | |
| ``` | |
| ## Validation | |
| ```bash | |
| python flashrt-residual-norm-quant/tests/test_residual_norm_quant.py --backend source --mode full | |
| python flashrt-residual-norm-quant/benchmarks/benchmark.py --backend source --shapes all | |
| ``` | |
| Current RTX 5090 source-extension rows pass the package's strict BF16/FP8 | |
| distribution gates across the PI0.5, VLA, video, and Cosmos3-Edge shape grid. | |
| Built artifacts must pass the same gate before publication. | |
| The no-quant BF16 path is also gated at the Cosmos3-Edge production hidden | |
| size (`rows=128`, `dim=2048`) and preserves the in-place residual contract. | |
| Its static-output CUDA Graph replay is checked bitwise. | |