Skip to the content.

Incumbent inference architecture bottlenecks — 2026-08-28

Issue: #9894

Verdict

FAK-authored inference: The main structural bottleneck in vLLM, SGLang, NVIDIA Dynamo, and Modular MAX is not one missing kernel optimization. It is the interaction cross-product among scheduling policy, heterogeneous reusable state, model/backend/hardware specialization, graph and compilation lifecycle, distributed ownership, compatibility surfaces, and observability. As these systems add capabilities, those interactions tend to concentrate in schedulers, model runners, cache managers, routers, and configuration matrices.

FAK should keep those interactions explicit rather than reproduce the incumbent shape. The smallest useful architecture is a set of versioned typed contracts for:

  1. capability and operating-envelope description;
  2. validated composition;
  3. resource identity, lifecycle, residency, and ownership;
  4. scheduler decision and atomic admission;
  5. execution epochs and fast-path eligibility;
  6. distributed lease and handoff state;
  7. replayable causal evidence.

FAK already has the first substrate in internal/composition, internal/modeldescriptor, internal/resourcelifecycle, internal/causalreceipt, and internal/archfitness. The next move is to extend those primitives, not introduce a second plugin, orchestration, or scorecard architecture.

Scope, cutoff, and evidence limits

Fundamental versus accidental bottlenecks

Fundamental constraints

These constraints remain even under an ideal implementation:

Constraint Why it persists
Finite accelerator memory and bandwidth Weights, KV/state, activations, graph artifacts, and transfer buffers compete for bounded capacity.
Irregular request lengths and arrivals Prefill and decode costs vary; agent workloads add pauses, resumes, tools, retries, and long-lived sessions.
Heterogeneous state semantics Token KV, recurrent state, multimodal embeddings, adapters, and speculative state have different units, validity rules, and recomputation costs.
Synchronization and ownership Multi-process and multi-device execution requires an authoritative answer to who may read, mutate, transfer, or reclaim state.
Dynamic graph eligibility Batching, shapes, structured decoding, multimodal work, and recovery can invalidate a captured or compiled fast path.
Topology and latency tradeoffs Placement must balance locality, queueing, transfer cost, memory pressure, and failure domains.

Accidental architecture bottlenecks

These are design choices that amplify the fundamental constraints:

Accidental bottleneck Failure mode
Scheduler owns policy and effects Admission, allocation, preemption, transfer, execution, metrics, and failure handling converge in one change hotspot.
One cache abstraction owns every concern Identity, allocation, residency, transfer, eviction, sharing, and ownership become coupled even when state kinds differ.
Central family/backend switches Each model, device, quantization, and parallelism addition touches common control paths and expands regression scope.
CLI strings become architecture Unvalidated flag combinations form a second compatibility system with hidden fallback and disable behavior.
One lifecycle entry point Profiling, warmup, compilation, graph capture, empty-forward, and real execution acquire ambiguous ownership and ordering.
Transport completion implies handoff A successful copy is mistaken for committed ownership, leaving stale readers, leaked leases, or double reclamation after failure.
Universal hardware abstraction Semantically different devices are forced through one interface, obscuring where specialization is required.
Orchestration precedes local contracts Distributed components multiply unclear scheduler, residency, and failure semantics instead of composing clean local primitives.

System matrix

System Upstream-observed structural pressure FAK-authored inference Disposition
vLLM Scheduling, KV allocation/transfer, execution, preemption, speculation, and balancing converge around scheduler and runner paths. Model Runner V2 explicitly addresses lifecycle and state coupling accumulated in V1. Hybrid KV and NIXL lease designs expose state-type and ownership differences. A scheduler should emit a typed, bounded transaction; it should not directly own every effect. Separate persistent semantic request state from step tensors, and split profile, compile, capture, warmup, and execute lifecycles. Borrow continuous batching and explicit design documents; adapt lease/state mechanisms; avoid a new runner monolith.
SGLang The scheduler and memory-pool paths integrate admission, pools, cache, workers, speculation, grammar, distributed roles, metrics, and failures. HiCache, PD/EPD, adaptive speculation, structured output, and breakable/piecewise graph work add distinct state and execution modes. Backend interfaces alone do not contain the model × layout × device × topology cross-product. Execution epochs and semantic conformance fixtures must be first-class. Borrow radix/prefix reuse and graph-recovery ideas; adapt distributed roles into explicit ownership; avoid central compatibility matrices.
NVIDIA Dynamo Independent frontend, router, planner, and worker roles move pressure to routing, readiness, cache-state projection, placement, and failure reconciliation. Cache-aware routing and disaggregated prefill/decode require state observations from multiple processes. Selection and admission should be atomic. Cache events need one authoritative projection, anticipated decode footprint should influence placement, and routing should price tier/transfer overlap. Borrow evented control-plane mechanisms; defer making distributed orchestration FAK’s core until local scheduler and residency contracts are clean.
Modular MAX Public evidence shows a vertically integrated compiler/runtime/model-serving stack and active evolution across MAX, KGEN, Mojo, Bazel, compiler, runtime, packaging, and hardware-specific paths. MAX 26.5 moved GPU APIs out of the Mojo standard library into top-level max packages, added Apple M1 support and M5 hardware-MMA flash-attention prefill work, and exposed agent skills for serving, benchmarking, evaluation, and profiling. Strong vertical ownership can enable specialization, but a large compiler/runtime surface can also make boundaries and generated artifacts harder for agents to navigate. FAK should copy explicit workflows and bounded specialization, not infer or reproduce hidden internals. Borrow operator/agent workflows and provenance; adapt hardware leaves behind semantic tests; defer conclusions about proprietary scheduling and memory internals.

vLLM

Upstream-observed facts:

FAK-authored inference: vLLM’s scaling pressure is an integration problem. FAK should preserve direct model/backend leaves and local compilation while requiring them to satisfy shared semantic fixtures. Its scheduler should consume validated capability and resource receipts, emit a decision, and let lifecycle owners apply that decision.

SGLang

Upstream-observed facts:

Directional statistics: Path-touch counts from 2026-06-01 through 2026-08-28 were: diffusion 516, scheduler/managers 478, attention 402, cache 378, speculation 289, MoE 213, disaggregation 212, distributed 77, multimodal 73, and gateway 10. These counts indicate where change activity landed; they are not feature counts, code ownership measures, or proof of maturity.

FAK-authored inference: FAK should model execution as explicit epochs rather than one generic forward loop. Initial epochs should cover prefill, graphable decode, constrained decode, multimodal encode, tool wait, resume/rebuild, and recovery. Each epoch declares state inputs, side effects, graph eligibility, and decline/fallback reasons.

NVIDIA Dynamo

Upstream-observed facts:

FAK-authored inference: independent services remove a local code bottleneck only by creating a distributed consistency bottleneck. FAK should define one canonical cache-event projection with monotonic generations and make selection-plus-admission one transaction. Placement should include expected future decode residency, not only current prefix locality, and should weight transfer against overlap rather than treating all tiers equally.

Modular MAX

Upstream-observed facts:

MAX public visibility limit: the public repository does not expose enough of MAX’s proprietary runtime internals to substantiate source-level claims about its production scheduler, memory allocator, graph cache, or distributed ownership protocols. The matrix therefore describes visible packaging, workflow, compiler, and hardware-specialization evidence only. Any claim that MAX has the same internal choke points as vLLM or SGLang would be speculation.

FAK-authored inference: the useful lesson is not “build a larger compiler stack.” It is to make high-value workflows discoverable, keep hardware-specific optimization bounded, and carry provenance from generated or compiled artifacts back to semantic source and evaluation evidence.

Cross-system patterns

  1. Policy centralization becomes effect centralization. Once a scheduler can inspect every subsystem, it tends to mutate every subsystem.
  2. The reusable-state problem is larger than token KV. Recurrent, multimodal, speculative, adapter, compiled-graph, and agent-session state require different validity and lifetime rules.
  3. Fast paths are conditional capabilities. Graph capture, compilation, speculation, and fused kernels need explicit eligibility and decline reasons; silent fallback hides architecture debt and invalidates performance evidence.
  4. Distribution creates ownership work. Routing and transfer are not complete until authoritative ownership, generation, and reclamation state agree.
  5. Interfaces do not erase semantic coupling. A uniform backend API can hide layout, topology, graph, precision, and failure differences rather than contain them.
  6. Compatibility surfaces grow faster than features. Model × backend × hardware × precision × parallelism × deployment-role combinations create a test and diagnosis architecture of their own.
  7. Observability must share the decision model. Metrics that cannot answer why admission, placement, reuse, fallback, or reclamation happened are not enough to debug the composed system.

Recent growth areas

Upstream-observed facts and directional signals:

FAK-authored inference: growth should enter FAK as new compositions and typed resource/epoch variants, not as flags distributed through a central scheduler. The first composition fixtures should cover Qwen3.8 native serving, mixed attention/recurrent state, speculative decode, multimodal encode/decode, disaggregated handoff, structured output, and MoE placement.

Existing FAK primitives

Existing primitive Current contract Architectural role
internal/composition fak.composition-snapshot/1 plus a validated composition receipt Binds intent, model, execution, resource claims, and graph edges before execution.
internal/modeldescriptor fak.model-capability-descriptor/1 and fak.model-onboarding-report/1 Describes witnessed fak-native capability and enforces an onboarding coupling budget.
internal/resourcelifecycle Claims, allocations, observations, ownership, placement, teardown, and receipts Provides the seed for explicit resource authority and lifecycle accounting.
internal/causalreceipt fak.causal-receipt/1 Joins IDs, decisions, phases, resources, metrics, and incident answers into replayable evidence.
internal/archfitness fak.architecture-fitness/1 and ratchet behavior Measures dependency DAG, frozen seams, family switches, change amplification, descriptor coverage, ownership, fixtures, causal evidence, schema migration, hot-path scaling, privacy/cardinality, and stale exceptions.

These are repository-observed facts at the pinned FAK checkout. They already cover much of the required architecture language. Missing behavior should extend these schemas or add narrowly owned leaves that compose with them.

Target typed contracts

1. Capability descriptor and operating envelope

Declare supported model family, state kinds, precision/quality constraints, backend/device requirements, graph/compile capabilities, topology assumptions, and witnessed limits. Preserve the fak-native engine invariant and make every fallback an explicit declined capability, never a silent engine switch.

2. Validated composition graph

Resolve intent, model descriptor, execution phases, resource claims, policy, and backend leaves before admission. Invalid combinations fail at composition time, not after partial allocation.

3. Resource algebra and lifecycle

Represent state identity, validity, residency, cost, and authority independently of the mechanism that stores or transfers it. Lifecycle operations produce receipts and use generation-checked transitions.

4. Scheduler decision and admission transaction

Use a pure or replayable planner input and output. The decision should include selected work, resource reservations, preemption/reclamation intent, execution epoch, fast-path selection, and explicit decline reasons. Admission commits only when all required reservations are valid; otherwise it aborts without partial ownership.

5. Cache event and state projection

Normalize allocation, materialization, hit, miss, transfer, invalidate, evict, expire, and reclaim events into one authoritative projection. Producers may be distributed, but identity and generation rules are shared.

6. Execution epoch and fast-path eligibility

An epoch declares semantic work and allowed execution mechanisms. Graph, compiler, speculation, and kernel leaves return typed eligible, declined, or failed outcomes. Profiling, warmup, capture, and execution remain distinct lifecycle operations.

7. Distributed handoff and lease ownership

Model offer, reserve, transfer-start, transfer-complete, accept, commit, renew, abort, expire, and reclaim. Transport success alone does not transfer authority. One owner is authoritative for every generation.

8. Causal receipt

Join composition digest, scheduler decision, resource transitions, epoch, fast-path eligibility, ownership handoffs, quality envelope, and metrics. The receipt must answer both “what ran?” and “why did the preferred path not run?”

Resource algebra

Every reusable resource should carry at least:

Field Meaning
kind / layout / unit Semantic state type, physical representation, and accounting unit.
producer / owner Who created the state and who currently has authority to mutate or release it.
identity / reuse_key What content or request history makes reuse valid.
generation Monotonic validity version used to reject stale observations and transfers.
residency Device, host, remote tier, durable store, or absent.
dependencies / recompute_cost Inputs required to rebuild and the estimated replacement cost.
lifetime / lease Scope, expiry, renewal, and reclamation rules.
transfer_protocol Offer, copy, verification, acceptance, commit, and abort semantics.
precision / quality Quantization, loss, compatibility, and quality-envelope constraints.

The algebra must cover token KV, recurrent/Mamba state, encoder and multimodal embeddings, draft/speculative state, graph and compilation artifacts, adapters or LoRA state, and durable agent-session state. Page/block allocation remains a mechanism under this contract, not the universal semantic abstraction.

Borrow, adapt, reject, and defer

Borrow

Adapt

Reject

Defer

Agentic-development workflow and coupling budgets

FAK should optimize not only runtime throughput but also the cost and reliability of an agent making a change:

  1. Add or update a witnessed capability descriptor.
  2. Implement one bounded model, backend, kernel, resource, or policy leaf.
  3. Add a minimal composition fixture that proves the capability resolves.
  4. Run semantic conformance tests shared across specializations.
  5. Capture a causal receipt for the success path and at least one decline or recovery path.
  6. Measure onboarding amplification with the existing modeldescriptor report and archfitness ratchet.
  7. Generate code only when regeneration is deterministic and provenance points to semantic source, generator version, and output digest.

The coupling budget should continue to count:

FAK-authored inference: ordinary model or backend onboarding should require no central dispatcher edit. If a capability cannot fit the budget, the change must name the missing contract rather than normalize another exception. Planning should remain pure or replayable; allocation, transfer, execution, and teardown are effectful stages whose receipts can be independently witnessed.

Priority sequence

  1. Freeze scheduler decision/admission semantics. Define the planner input, typed decision, reservation set, commit/abort behavior, and causal projection.
  2. Strengthen resource algebra and cache-event projection. Add identity, generation, residency, lease, transfer, and reclaim semantics across KV and non-KV state.
  3. Introduce execution epochs and typed fast-path eligibility. Separate profile, compile, capture, warmup, execute, tool-wait, resume, and recovery.
  4. Prove local Qwen3.8 compositions. Exercise mixed state, structured output, speculation, multimodal work, and MoE placement without central switches.
  5. Add distributed handoff only after local receipts replay cleanly. Then test disaggregated prefill/decode and remote-tier ownership under failure.
  6. Ratchet architecture fitness. Add findings to the existing scorecard for scheduler side effects, ambiguous generations, silent fallback, lifecycle conflation, and onboarding amplification.
  7. Optimize mechanisms inside the frozen contracts. Tune kernels, allocator, graph capture, routing, and tier overlap without changing semantic ownership.

Issue coverage and gaps

Covered by existing work

Remaining gaps to reconcile under #9894 before filing new issues

These are architecture gaps, not newly created tickets:

  1. A concrete scheduler decision/admission transaction schema and replay fixture.
  2. A canonical cache-event projection with generation and ownership invariants.
  3. Execution-epoch and fast-path eligibility schemas with decline reasons.
  4. Distributed handoff/readiness/failure semantics joined to resource receipts.
  5. Architecture-fitness checks for scheduler side effects, lifecycle conflation, silent fallback, and generation ambiguity.
  6. A witnessed onboarding change-amplification report across at least two model or backend specializations.
  7. Composition fixtures for mixed state, speculative decode, multimodal work, MoE placement, structured output, and disaggregated handoff.

Before creating any follow-on, search the listed issues and their descendants; attach the gap to an existing owner when its intended outcome and witness match.

Source appendix

Local FAK architecture and synthesis

vLLM upstream locators

SGLang upstream locators

NVIDIA Dynamo upstream locators

Modular MAX public locators

The MAX links are public-product and public-repository evidence. They do not remove the proprietary-runtime visibility limit stated above.