In partnership with

SnackOnAI Engineering | Senior AI Systems Researcher | Technical Deep Dive | October 30, 2026

The promise: by the end of this issue you will understand how MaverIQ predicts an LLM's latency and memory from a one or two layer "fingerprint," why uneven layer placement barely costs anything at inference time, and which of its headline numbers hold up when you rerun its estimator on its own data.

The fence: we cover the MaverIQ repository (last commit November 16, 2025: controller, estimators, profiling CSVs, the artifact notebook), the SC'25 paper MaverIQ: Fingerprint-Guided Extrapolation and Fragmentation-Aware Layering for Intent-Based LLM Serving by Liakopoulos, Sinha, Hu, Lee and Yadwadkar, and TensorRT-LLM, which it modifies. We did not rerun the GPU experiments (they need eight RTX A6000s and a patched TensorRT-LLM 0.9 build). We did replay the shipped latency estimator, layer distributor and uneven-layering measurements against the CSVs the authors published. Everything else is project reported.

MaverIQ was recently presented at AMD AI DevDay Austin on October 29, 2026, by Neeraja J. Yadwadkar, Assistant Professor and Fellow of the AMD Chair in Computer Engineering at UT Austin, in her talk “Turning User Goals into Efficient AI Deployments,” which also previewed upcoming work with AMD to extend the approach across diverse models, hardware and user goals.

What It Actually Does

MaverIQ is an inference serving controller. A user says what they care about, an intent such as "minimize cost," "minimize latency," "stay under this latency SLO" or "keep at least this much accuracy." MaverIQ picks a deployment configuration and places it on a shared GPU cluster.

The configuration space is bigger than it looks. Llama-2-70B alone has about 180 configurations on an 8-GPU node, combining tensor parallelism (TP, splitting each layer across GPUs), pipeline parallelism (PP, splitting the stack of layers into stages), quantization (FP16, INT8, INT4, GPTQ) and an optional INT8 KV cache. Across them, latency varies about 8x and user cost about 25x.

Property

Value

Built on

NVIDIA TensorRT-LLM 0.9 (custom fork with --pp_map for uneven stages)

Models evaluated

Llama-2 7B/13B/70B, GPT-J-6B, Falcon 7B/40B

Hardware

8x NVIDIA RTX A6000 (48 GB), NVLink between pairs, PCIe otherwise

Intents

min_cost, min_lat, min_mem, min_gpu_cost, plus latency SLO and MMLU accuracy floor

Profiling

1 and 2 layer fingerprints + analytical TP/PP model, instead of profiling every configuration

Placement

Least-loaded, packing, or hybrid (default, utilization threshold 0.7) with uneven layer maps

Reported results

7 to 15x lower profiling cost, 1.3 to 1.7x lower estimation error, 28 to 45% lower user latency, 3.8 to 8.3x lower provider cost

Code

~3K lines of Python in tools/ on top of the TensorRT-LLM fork

Two ideas carry the system. Fingerprints make choosing a configuration cheap. Fragmentation-aware layering makes placing it cheap.

The Architecture, Unpacked

Caption: The expensive steps happen once per model on a tiny proxy. Every deployment decision after that is arithmetic plus a memory scan of the live cluster.

Four design decisions matter most.

One: profile a slice, not the model. A transformer is the same block repeated N times, so latency and memory are close to linear in layer count. A fingerprint keeps the embedding, final norm and output head but only one or two hidden layers. For Llama-2-70B it is 41x smaller and 63x faster to profile.

Two: model parallelism analytically. Instead of measuring every TP and PP combination, MaverIQ measures three reference points, L(1,1), L(1,2) and L(2,1), and fits four exponents (α, β, γ, δ) once with gradient descent to capture how communication overhead scales.

Three: let intent pick the objective. The default min_cost objective is latency multiplied by memory, effectively GB-seconds. Accuracy floors come from a per-configuration MMLU table relative to FP16.

Four: fill the gaps unevenly. The placer sorts GPUs by free memory and hands out layers one at a time to any stage that still has room. A model too big for any balanced split can still land on GPUs other tenants have partly filled.

The Code, Annotated

First, the fingerprint extrapolation, verbatim from tools/controller/MS_latency_estimator.py. Four measurements (1 and 2 layers, 10 and 20 output tokens) solve for four unknowns.

def calc_TTFT_TPOT_fingerprint(lat_n1_o1,lat_n1_o2,lat_n2_o1,lat_n2_o2,n1,n2,o1,o2,num_layers):
    # second difference isolates the cost of ONE layer for ONE extra output token
    TPOT_layer = ((lat_n2_o2 - lat_n1_o2) - (lat_n2_o1 - lat_n1_o1))/((o2-o1)*(n2-n1))
    TPOT_other = (lat_n1_o2 - lat_n1_o1)/(o2-o1) - n1*TPOT_layer        # embed + head per token
    TTFT_layer = (lat_n2_o1 - lat_n1_o1)/(n2-n1) - o1*TPOT_layer        # prefill cost per layer
    TTFT_other = lat_n1_o1 - n1*TTFT_layer - o1*(n1*TPOT_layer + TPOT_other)
    return num_layers*TTFT_layer+TTFT_other, num_layers*TPOT_layer+TPOT_other  # ← THIS is the trick: ×80 for Llama-2-70B

Caption: Measure a two-layer toy, multiply the per-layer slope by the real layer count. Cheap and elegant, but any error in a millisecond-scale slope is multiplied by up to 80.

Second, the parallelism model, verbatim from the same file.

def estimate_latency(model, TP, PP, dtype, int8_kv, output_lenght, bs=1, latency_exponents=latency_exponents):
    alpha, beta, gamma, delta = latency_exponents['fingerprint'][f"({dtype}, {int8_kv})"]   # fitted once per quant config
    Lat_ref, TP_ovrhd, PP_ovrhd = get_latency_equation_constants(model, dtype, int8_kv, output_lenght, bs, alpha, beta, gamma, delta)
    return (Lat_ref / (TP * (PP ** alpha))) \
         + ((((TP -1) ** beta) / (PP ** gamma)) * TP_ovrhd) \
         + (((PP - 1) ** delta) * PP_ovrhd)      # ← compute shrinks with TP; all-reduce and send/recv costs grow

Caption: Three terms: ideal speedup, tensor-parallel all-reduce cost, pipeline hand-off cost. Three reference measurements plus four fitted exponents cover all 180 configurations.

Third, the fragmentation-aware placer, from tools/controller/MS_controller.py (trimmed).

def distribute_layers(limits, initial_values, X, X_mem, tp_deg, pp_deg):
    current_values = initial_values[:]          # memory other tenants already use, per GPU
    X_values = [0] * pp_deg                     # layers assigned to each pipeline stage
    while X > 0:
        all_limits_reached = True
        for i in range(pp_deg):                 # round-robin: stay as balanced as memory allows
            group_pass = all(current_values[i*tp_deg+j] + X_mem <= limits[i*tp_deg+j] for j in range(tp_deg))
            if group_pass:                      # ← a stage keeps taking layers only while it has room
                ...                             # add X_mem to each TP shard, X_values[i] += 1, X -= 1
        if all_limits_reached or X <= 0:
            break
    if (X != 0) or (0 in X_values): return None, None   # doesn't fit, or a stage got nothing

Caption: No optimizer, no ILP. A greedy round-robin that stops giving layers to full GPUs is enough, because uneven stages cost almost no latency.

Fourth, our replay of the repo's own data.

# uneven layering, Llama-2-70B FP16, PP=8, BS=1: 10x8 → 20.302 s ; 2,4,...,18 → 20.325 s  (+0.11%)
# spread across 4 layer maps, BS 1 to 64: Llama models ≤0.50%, GPT-J ≤1.07%
# estimator vs ground truth, median APE at 100 tokens: 4.39% (BS=1 fingerprint CSV, the paper's number)
#                                                     11.8% (_BS fingerprint CSV the runtime controller loads)
# same _BS file by output length: 10 tok 53.1% · 50 tok 19.3% · 200 tok 7.1%
# two profiling runs of the same fingerprints: latencies differ by a median 24%
# provider cost, FP16 run: Accelerate 44.51 · AlpaServe 22.14 · AlpaServe* 20.08 · MaverIQ 5.33  (8.3x / 4.2x / 3.8x)

Caption: The placement claim reproduces cleanly. The estimation claim reproduces exactly on one profiling CSV and degrades sharply on the other.

It In Action

Input: u1 deploy llama-2-70b 100 min_cost on an 8x A6000 node where other models already use 8, 12, 18, 24, 32, 36, 40 and 44 GB of each 48 GB GPU. That leaves 170 GB free in total, but no single GPU has more than 40 GB.

Step one, estimate. MaverIQ evaluates every TP, PP, dtype and KV option from the stored fingerprint profile. FP16 Llama-2-70B needs about 137 GB at PP=8 in the project's measurements, roughly 1.71 GB per layer.

Step two, rank. For min_cost, each feasible configuration is scored by estimated latency times memory. Suppose FP16 with TP=1 and PP=8 wins (the accuracy floor rules out compression).

Step three, place. A balanced split needs 10 layers, about 17.1 GB, on every GPU. Four of the eight GPUs have only 16, 12, 8 and 4 GB free, so a balanced deployment would need fresh GPUs. Running the repo's distribute_layers on these numbers gives the map [15, 15, 14, 14, 9, 7, 4, 2], all 80 layers on GPUs that are already partly busy.

Step four, build and serve. The patched TensorRT-LLM builds an engine with that --pp_map, and requests join the user's FCFS queue.

Output: the closest measured layout in the repo (2 to 18 layers per GPU) produced 100 tokens in 20.325 s, against 20.302 s for the balanced layout: a 0.11% penalty for using capacity that would otherwise sit stranded.

Layer map (Llama-2-70B FP16, PP=8, 100 tokens)

BS=1 latency

BS=64 latency

10 10 10 10 10 10 10 10 (balanced)

20.302 s

27.006 s

5 5 5 5 15 15 15 15

20.316 s

27.015 s

3 3 7 7 13 13 17 17

20.327 s

27.010 s

2 4 6 8 12 14 16 18

20.325 s

27.021 s

Caption: Measured by the authors, from unbalanced_PP_data_collection.csv. Our worked scenario's tenant memory is illustrative; the layer map comes from running the shipped placer on it.

Why This Design Works, and What It Trades Away

Why it works. A decoder-only LLM is a stack of identical blocks, so per-layer costs are nearly constant and a two-layer slice predicts the whole. Uneven pipelines are cheap at inference for a structural reason: without microbatch pipelining, a request passes through the stages one after another, so total time is the sum of all layers' work wherever they sit. Imbalance creates the idle "bubbles" that hurt training, where many microbatches overlap; a forward-only serving pass has far fewer to lose. Once placement no longer needs balance, every free gigabyte on any GPU becomes usable.

What it trades away.

  • Measurement sensitivity. Extrapolating from millisecond-scale fingerprint runs multiplies timing noise by the layer count. Short outputs suffer most, because time to first token dominates there.

  • Homogeneous clusters only. Profiles must be rebuilt per GPU type; the paper lists heterogeneous clusters as future work.

  • Dense decoder-only models only. MoE, state-space and multimodal models need new analytical formulas.

  • Simple scheduling. FCFS queues and no continuous batching in the controller, on a TensorRT-LLM version from early 2024.

  • Manual accuracy tables. MMLU accuracy per configuration must be measured and entered by hand when registering a model.

Technical Moats

  • Ground-truth datasets. The repo ships thousands of measured configurations: 2,060 full-model batch-size-1 runs, a 1,323-row batch-size sweep, 1,684 fingerprint runs and uneven-layer measurements. That is the expensive part of building and validating any configuration estimator.

  • A patched serving stack. Uneven pipeline stages required changes inside TensorRT-LLM (--pp_map), not just a scheduler on top.

  • The analytical model. A three-term latency equation with fitted exponents covers TP and PP interactions across quantization modes, validated against hundreds of real configurations.

  • The insight itself. Most production placers still assume balanced stages. Showing with measurements that imbalance is nearly free is what unlocks the 1.4 to 2x cost reduction in the paper's ablation.

Insights

Insight One: fingerprint profiling is accurate on average and fragile in practice. We replayed the shipped estimator against the repo's 2,060 full-model measurements. With the batch-size-1 fingerprint file the notebook uses, we reproduced the paper's median error exactly: 4.39% at 100 output tokens. The runtime controller and standalone estimator load a different file, fingerprint_data_collection_BS.csv, whose batch-size-1 rows profile the same fingerprints with latencies a median 24% lower. With that file, median error rises to 11.8% at 100 tokens, 19.3% at 50 tokens and 53.1% at 10 tokens. Both are legitimate measurement runs; the point is that a two-layer probe timed in tens of milliseconds amplifies run-to-run noise 30 to 80 fold. Anyone adopting the technique should profile each fingerprint several times and take the median.

Insight Two: the most dramatic serving wins are baselines falling over. The artifact notebook reports latency reductions of 99.5% against AlpaServe in high-load runs, and a median latency of 0.33 s for MaverIQ against 76.97 s for AlpaServe* and 502.77 s for Hugging Face Accelerate in one setting. Those are queueing collapses, not efficiency gains. The cleaner comparison is the FP16-only run: 28% lower latency and 3.8x lower provider cost against the strongest baseline, AlpaServe*. That is still a large win, and it comes mostly from placing more models on fewer GPUs.

Surprising Takeaway

At inference time, pipeline balance barely matters. Across the authors' measurements of Llama-2 7B, 13B and 70B on eight GPUs, the worst layer map cost at most 0.50% latency at batch sizes from 1 to 64, including Llama-2-70B split as 2 to 18 layers per GPU (+0.11%). The balanced-pipeline rule is inherited from training, where overlapping microbatches make the slowest stage everyone's bottleneck. In serving it mostly strands memory: in our replay, four of eight partly used GPUs could not host a balanced 70B split, but the greedy uneven placer fit all 80 layers.

TL;DR For Engineers

  • MaverIQ picks LLM deployment configs from a user intent (cost, latency, memory, SLO, accuracy) using 1 and 2 layer fingerprints plus an analytical TP/PP model, on top of a patched TensorRT-LLM.

  • Its strongest result: uneven pipeline layer maps cost ≤0.5% latency on Llama-2 models, so fragmented GPU memory becomes deployable capacity.

  • Fingerprint estimates hit 4.39% median error in the paper's setup but 11.8% (and 53% at 10-token outputs) on the repo's second profiling run. Profile repeatedly.

  • Read headline latency wins as queueing collapse; the FP16 comparison (28% lower latency, 3.8x lower cost against AlpaServe*) is the realistic one.

  • Limits: homogeneous GPUs, dense decoder-only models, FCFS scheduling, TensorRT-LLM 0.9.

Explain It Like I'm New

Running a large AI model means splitting it across several graphics cards, because no single card has enough memory. The usual approach is to cut the model into equal pieces, one per card, like dividing a long train into identical carriages.

The trouble is that in a shared data center, cards are rarely empty. One has 40 gigabytes free, another 4, another 16. Equal pieces only fit where there is enough room for every piece, so much of that leftover space goes unused, and providers buy more cards instead.

MaverIQ asks a simple question: do the pieces really need to be equal? For training, yes, because the cards work in parallel and the slowest one holds everyone up. For answering questions, a request mostly moves through the cards one after another, so it barely matters which card does more of the work. Big pieces go where there is lots of room, tiny pieces into the gaps.

It also avoids testing every possible setup by timing a miniature version of the model, one or two of its repeated building blocks, and scaling the numbers up, like estimating a skyscraper's elevator time from one floor.

The bigger lesson is that much AI cost is wasted space, not missing hardware. Smarter placement can unlock capacity that companies have already paid for.

See It In Action

  • MaverIQ artifact notebook, UT SysML. Plotting_Functions.ipynb. Every figure and number in the paper, regenerated from the raw CSVs, with the uneven-layering and estimation-error analyses inline.

  • MaverIQ paper, SC'25. Author PDF. The full design, the analytical models, the ablations behind the 1.4 to 2x layering savings, and a candid limitations section.

  • TensorRT-LLM documentation, NVIDIA. nvidia.github.io/TensorRT-LLM. How tensor and pipeline parallelism are configured in the engine MaverIQ patches.

  • SC'25 conference, the International Conference for High Performance Computing. sc25.supercomputing.org. The venue where MaverIQ was presented, with the program for related serving and scheduling work.

Community Conversation

  • Neeraja Yadwadkar's UT SysML lab, publications page. MaverIQ extends the lab's intent-based serving line; the earlier preprint iServe introduced the user-intent interface and the fingerprint idea.

  • AlpaServe authors, AlpaServe paper. The main baseline argues model parallelism helps serving through statistical multiplexing; MaverIQ notes AlpaServe was given the full trace in advance, which real dynamic serving never has.

  • Vidur team, Microsoft Research, Vidur paper. A simulation-based alternative that predicts LLM inference performance from operator-level profiles; MaverIQ reports 1.3 to 1.7x lower estimation error and 7 to 15x lower profiling cost.

  • vLLM / PagedAttention authors, Efficient Memory Management for LLM Serving. Attacks fragmentation inside one GPU's KV cache; MaverIQ attacks fragmentation across a cluster's GPUs. The two are complementary.

Placement Beats Profiling: Use the Gaps

MaverIQ makes two bets, and only one is load-bearing. The fingerprint profiler is clever and much cheaper than sweeping configurations, but it is sensitive to timing noise in ways a single median hides. The uneven-layering insight is rock solid: measured across three model sizes and five batch sizes, imbalanced pipeline stages cost under half a percent of latency, and that frees every stranded gigabyte in a shared cluster. If you operate multi-tenant GPU inference, steal the placer first. Then profile your fingerprints more than once.

References

Summary

MaverIQ chooses LLM deployment configurations from user intents using one and two layer fingerprints plus an analytical parallelism model, then places models unevenly across fragmented GPUs. Its uneven-layering result is robust (≤0.5% latency cost on Llama-2 models), while its fingerprint estimates are cheaper than full profiling but sensitive to measurement noise, especially for short outputs.

Sponsored Ad If you enjoy practical AI insights, check out SnackOnAI and support the newsletter by subscribing, sharing, and exploring our sponsored ad—it helps us keep building and delivering value 🚀

A Single Typo Shouldn’t Cost You a Sale

A shopper types “running shos” and gets nothing back. Another types “red waterprof trail runners under $150” and hits the same wall. Both knew what they wanted.

Traditional site search relies on exact keyword matching, leaving shoppers stranded at “0 results found” screens.

Gladly understands what shoppers mean, typos and all. Instead of a dead end, they get products that fit what they asked for and a conversation that keeps them shopping.

Recommended for you

View all
caret-right