← Latest papers
🤖 machine learning

Accelerating GPU Inference of Large Language Models with Moderately Unstructured Sparse Weight Matrices

This paper proposes a novel three-layer matrix storage format and a hybrid SpMM kernel that jointly leverage sparse and CUDA cores to enable moderately unstructured sparse LLM inference on modern GPUs, achieving the first kernel-level speedup over dense matrix multiplication and outperforming state-of-the-art methods like SpInfer and FlashLLM.

Original authors: Tao Lu, Haoyu Wang, Zonghui Wang, Keshen Xiang, Jiaheng Zhang, Wenzhi Chen

Published 2026-07-13
📖 4 min read☕ Coffee break read

Original authors: Tao Lu, Haoyu Wang, Zonghui Wang, Keshen Xiang, Jiaheng Zhang, Wenzhi Chen

Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer

Imagine you have a massive library of books (a Large Language Model) that can write stories, answer questions, and code. To make these books work, a super-fast robot (the GPU) has to read through millions of pages of numbers (weights) to figure out the next word. The problem? The robot is so busy reading that it gets tired and expensive to run.

Scientists tried a clever trick: they threw away the boring, unimportant pages to make the library lighter. This is called "pruning." But here's the catch: if you throw away too many pages, the story gets weird and makes no sense. The sweet spot is keeping about half the pages (50% sparsity).

The Big Problem
You'd think a lighter library would be faster to read, right? Not quite. The robot's reading machine (the GPU) is built to read dense, full pages very quickly. When the pages are scattered and missing chunks (unstructured sparsity), the robot gets confused. It spends so much time looking for the missing pages and organizing the scraps that it actually moves slower than if it had just read the heavy, full library. Existing tools for this "scattered" reading were either too slow or required the robot to do extra math that canceled out the speed gains.

The New Solution: A Three-Layer Filing System
The authors of this paper built a brand new filing system to help the robot read these scattered pages efficiently. They call it a "three-layer" format, and it works like a super-organized librarian:

  1. The "Sparse-TC" Layer (The VIP Section): The librarian first grabs the pages that happen to fit a neat, pre-approved pattern (like every 4th page having 2 important notes). These go straight to the robot's fastest, specialized reading arms (Sparse Tensor Cores). No searching needed!
  2. The "Slot-Filling" Layer (The Puzzle Piece): What about the extra notes that didn't fit the VIP pattern? Instead of throwing them away or making a messy list, the librarian shoves them into the empty gaps left by the VIP pages. To keep track of where they went without writing a huge address book, they use a "Parallel Differential Distance" code. Think of it like a treasure map that just says, "The next clue is 3 steps to the right," instead of writing down the full address every time. This saves a ton of space and is easy to decode quickly.
  3. The "Residual" Layer (The Junk Drawer): A tiny, tiny handful of notes (less than 1%) are just too weird to fit anywhere. These go into a standard, old-school filing cabinet (CSR format). Since there are so few of them, the robot doesn't mind checking this drawer.

The Super-Pipeline
The real magic isn't just the filing system; it's how the robot works while reading it. The authors designed a workflow where the robot does three things at the exact same time:

  • It grabs the next chunk of pages from the big memory shelf (Global Memory).
  • It decodes the "3 steps to the right" treasure map clues (using standard cores).
  • It crunches the numbers for the VIP pages (using the fast specialized cores).

By overlapping these tasks, the robot never sits idle waiting for data. It's like a chef who chops vegetables, stirs the pot, and sets the table all at once, rather than doing one thing at a time.

The Results: Faster Than Before
When they tested this on a modern, high-speed robot (an NVIDIA H100 GPU with 80 GB of memory), the results were impressive.

  • Speed: Their method was the first to actually beat the speed of reading the heavy, full library. It ran up to 1.64 times faster than the previous best tool (SpInfer) at the kernel level.
  • End-to-End: For the whole process of generating text, it was up to 1.41 times faster than FlashLLM.
  • Memory: It also saved about 21.4% of the memory space compared to reading the full library.

What It Doesn't Do
The authors are careful to point out what this isn't. It doesn't work best when the library is almost empty (high sparsity like 90%+); in those cases, the old methods are still better. Also, it's optimized for the "decode" phase (where the robot writes one word at a time), which is the most common task. When the robot has to read a huge block of text all at once (the "prefill" phase), this new method might be slightly slower than the standard heavy-reading tools, but that's a specific scenario they aren't trying to fix right now.

In short, by organizing the scattered pages into a smart, three-layer system and keeping the robot constantly busy, they managed to make AI chatbots faster and cheaper to run without making them dumber.

Drowning in papers in your field?

Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.

Try Digest →