RadixMLP -- Intra-batch Deduplication for Causal Transformers
Michael Feil, Julius Lipp
TL;DR
RadixMLP addresses substantial redundant compute in batch inference for causal transformers by exploiting the per-token nature of MLPs, LayerNorms, and projections. It builds a dynamic prefix trie to compactly represent tokens with identical causal histories, enabling most computations to run in a reduced space and scattering results only at attention boundaries. The method is stateless, supports autograd, and integrates with ragged batching to preserve causal correctness while achieving significant speedups (1.4x–1.59x in real workloads and up to 5x on synthetic long-prefix cases). It demonstrates practical gains in MS MARCO reranking tasks with Qwen3 models and provides open-source kernels and integration guidance, positioning RadixMLP as a complementary, cache-free alternative to KV-based optimizations for batch inference. Limitations include reduced benefits for low-redundancy batches and longer-context workloads, with training and broader deployment considerations highlighted for future work.
Abstract
Batch inference workloads for causal transformer models frequently process sequences that share common prefixes, such as system prompts, few-shot examples, or shared queries. Standard inference engines treat each sequence independently, redundantly recomputing identical MLP activations for every copy of the shared prefix. We introduce RadixMLP, a technique that exploits the position-wise nature of MLPs, LayerNorms, linear projections, and embeddings to eliminate this redundancy. RadixMLP dynamically maps batches to a prefix trie, gathering shared segments into a compressed representation for position-wise computation and scattering results back only at attention boundaries. RadixMLP is stateless and operates within a single forward pass. In end-to-end serving benchmarks on MS~MARCO v1.1 with Qwen3 models (0.6B to 8B parameters), RadixMLP achieves 1.44-1.59$\times$ speedups in realistic reranking workloads, with up to $5\times$ speedups on synthetic benchmarks with longer shared prefixes. Our code is available at https://github.com/michaelfeil/radix-mlp.
