M7 · NVIDIA Platform ImplementationM7-0223 min read

Lesson 38 of 58 · Module 8 of 10 · Week 6

Threads:The NVIDIA stack thread

Tuning NIM for GPU Throughput: Batching, TensorRT-LLM, and vLLM Backends

NVIDIA NIM supports multiple inference backends — notably TensorRT-LLM and vLLM — and optimizes latency and throughput per specific model-plus-GPU combination, so hitting a throughput target underneath a NIM endpoint is a backend-and-batching-configuration decision, not a property of NIM itself: the same model on the same GPU can serve dramatically different requests-per-second depending on which backend and batch configuration the operator chooses.

By the end you can

  1. 01State precisely which two backends NIM is named as supporting, and explain why "NIM has one fixed serving engine" is a wrong answer regardless of how the question phrases it.
  2. 02Distinguish the throughput-tuning question this lesson owns (which backend and batching configuration a model-plus-GPU pairing needs) from the agent-integration question M4-01 owns (how an agent budgets and survives a NIM call's latency).
  3. 03Explain why NIM's optimization is described as per model-plus-GPU combination rather than as a single, universal setting, and connect that to the same backend-portability facts covered elsewhere in this course.
  4. 04Recognize the batching concept underneath NIM's throughput tuning without re-deriving the full batching taxonomy, and place TensorRT-LLM and vLLM correctly as the two named backend options.
01

NIM supports multiple backends, tuned per model-plus-GPU pairing

Identity statement: NVIDIA NIM is not one fixed inference engine wearing a standard API — it supports multiple backends, notably TensorRT-LLM and vLLM, and optimizes latency and throughput for each specific model-plus-GPU combination rather than applying one universal configuration everywhere. [GROUND TRUTH] (Sources/ncp-aai/domain-7-nvidia-platform-implementation.md) states this directly: NIM are "containerized, GPU-accelerated inference microservices behind industry-standard API endpoints, supporting backends like TensorRT-LLM and vLLM and tuned per model + GPU." Domain 4's own material states the identical fact from the deployment-and-scaling angle: NIM containers "support multiple backends — notably TensorRT-LLM and vLLM — and optimize latency/throughput for each model + GPU combination."

The phrase worth sitting with is "per model + GPU combination," because it is doing real work and is easy to skim past. It means the correct backend and batching configuration for a 7-billion-parameter model on one GPU architecture is not automatically the correct configuration for the same model on a different GPU architecture, and is not automatically the correct configuration for a different model on the same GPU either. A NIM operator tuning throughput is answering a question with (at minimum) two variables in it — which model, on which hardware — not a single fixed recipe applied everywhere NIM is deployed. This is the same principle Domain 4's serving-stack material states about TensorRT-LLM specifically: an engine built and tuned against one GPU architecture is not guaranteed to perform well, or at all, on a different one, which is why "tuned per model + GPU" is not a throwaway qualifier — it is describing the actual unit of work a throughput-tuning decision operates on.

Why this is a distinct question from what an agent-integration lesson answers

M4-01 was explicit about where its own scope ended, precisely so this lesson would not have to re-litigate the boundary: "the question of why a particular NIM container has the latency distribution it has — which inference backend it runs, what batch size and concurrency settings it uses, how a specific model-plus-GPU pairing was tuned to hit a throughput target — is a distinct engineering question, owned by whoever operates the NIM deployment, not by the agent calling it." This lesson is that distinct question, answered directly. M4-01 treated the NIM endpoint's latency distribution as a given to budget against, retry through, or fail fast in front of. This lesson treats that same latency distribution as the thing being decided, by choosing a backend and a batching configuration for a specific model-plus-GPU pairing. The two questions compose rather than compete, exactly as M4-01 framed it: a well-tuned NIM container, the product of this lesson's decisions, gives an agent designer a better latency distribution to budget against, and a well-designed agent, the product of M4-01's decisions, budgets and fails gracefully no matter how good or bad that distribution turns out to be.

02

The two named backends and what batching configuration means underneath them

L1 — Intuition: two different kitchens tuned for the same order volume

Picture two commercial kitchens that can both cook the same dish, but are built and staffed differently. One kitchen (TensorRT-LLM) is built by compiling a highly specific, hardware-tuned procedure for exactly this dish on exactly this stove, gaining speed from that specificity at the cost of needing to be rebuilt if the stove changes. The other kitchen (vLLM) is built as an open, general-purpose serving engine with its own memory-management and batching design, portable across a wider range of stoves without a hardware-specific rebuild. Both kitchens can serve the same dish at high volume, but they get there by different mechanisms, and the batching configuration in each — how many orders get cooked together in one pass, and how new orders join an already-cooking batch — is the dial that determines how many diners per hour either kitchen can actually feed.

L2 — Mechanism: what the two backends bring, and what batching configuration tunes

TensorRT-LLM, as Domain 4's serving-stack material and this course's model-optimization material establish, is NVIDIA's LLM-specific optimization and runtime layer, built on TensorRT, adding the runtime machinery autoregressive generation specifically needs: KV cache management, paged attention, in-flight (continuous) batching, and speculative decoding, on top of TensorRT's own kernel fusion, precision calibration, and per-GPU kernel autotuning. A NIM container running TensorRT-LLM as its backend inherits all of that machinery, and its throughput on a given GPU is a function of the precision the engine was built at, the maximum batch size and maximum sequence length the engine was compiled for, and whether in-flight batching is enabled — decisions made once, at build time, for that specific model-plus-GPU pairing.

vLLM is the open-source LLM serving engine built around PagedAttention (non-contiguous, block-based KV-cache memory management) paired with continuous batching, and it is not an NVIDIA product — it is vendor-neutral, deployable on NVIDIA GPUs among others. A NIM container can run vLLM as its backend instead of TensorRT-LLM, and doing so trades TensorRT-LLM's hardware-specific, benchmark-tuned kernel selection for vLLM's own memory-efficient, continuously-batched serving design. Both backends solve the same underlying throughput problem — keep the GPU busy on useful work rather than idling it on padding or redundant memory reservation — using architecturally different mechanisms to get there.

Batching configuration, in the sense this lesson tunes it, is the set of choices that determine how many requests a backend processes together and how flexibly it admits new requests into an already-running batch: maximum batch size, maximum sequence length, and whether the backend batches at the request level (waiting for a whole batch to finish before releasing any slot) or at the iteration level (releasing a finished sequence's slot immediately and admitting a new request without waiting for the slowest sequence in the batch to complete). Both TensorRT-LLM's in-flight batching and vLLM's continuous batching are iteration-level schemes, which is precisely why both are named as fits for generative LLM serving specifically, rather than the coarser request-level batching a general-purpose server might default to for workloads with more uniform response lengths.

L3 — The exam-relevant edge case: backend choice and batching configuration are two separate dials, not one

It is worth being precise that "choose a backend" and "configure batching" are two distinct decisions layered on top of each other, not one decision wearing two names. Choosing TensorRT-LLM over vLLM (or the reverse) is a choice about which serving engine and memory-management architecture underlies the NIM container at all — a decision made largely on portability, hardware-specificity, and which runtime features the operator's model and GPU combination benefits from most. Configuring the batching parameters within whichever backend was chosen — maximum batch size, maximum sequence length, whether in-flight or continuous batching is enabled and how aggressively — is a second, independent decision made after the backend is fixed, and it can be retuned without switching backends at all. A scenario that describes an operator changing maximum batch size to improve throughput, with no mention of switching backends, is describing the second decision only; a scenario that describes an operator switching from one backend to the other entirely is describing the first. Conflating the two — assuming a batching-configuration change requires a backend swap, or assuming a backend swap is the only way to improve throughput — is the standing trap this pairing produces.

THE EARNED INSIGHT "NIM supports multiple backends, tuned per model + GPU" sounds like a throwaway qualifier the first time you read it, but it is quietly making a much stronger claim than "NIM works differently on different hardware." It is claiming that NIM has no single throughput number of its own at all — a NIM container's requests-per-second is not a property of NIM, the way a car's top speed is a property of that specific car. It is a property of a three-way relationship between the model, the GPU, and the backend-and-batching choice layered on top of both, and changing any one of the three changes the number, even if the other two stay fixed. Once you see NIM's throughput as a relationship rather than a fixed spec, the backend-versus-batching-configuration distinction stops being two facts to memorize separately and becomes the obvious consequence of asking "which of the three variables does this decision actually touch" — which is the question a well-built scenario item is quietly asking every time.

03

TensorRT-LLM vs. vLLM as NIM backends: the comparison

DimensionTensorRT-LLM (as a NIM backend)vLLM (as a NIM backend)
VendorNVIDIAOpen source, vendor-neutral
Built onTensorRT's compiler and runtimeIts own serving engine, independent of TensorRT
KV-cache memory managementPaged attention (one of its named LLM-specific features)PagedAttention (the technique it introduced)
Batching schemeIn-flight (continuous, iteration-level) batchingContinuous (iteration-level) batching
Hardware portabilityRebuild required per GPU architecture — kernel autotuning is hardware-specificMore portable across NVIDIA GPUs without a hardware-specific rebuild step
Precision/build-time decisionsCompiled once at build time: precision, max batch size, max sequence lengthConfigured at serving time rather than compiled into a fixed engine
Best-fit signal in a scenarioA described need for maximum performance on a known, fixed GPU targetA described need for a vendor-neutral engine or faster iteration without a hardware-specific rebuild
What NIM adds on top of eitherThe standard API endpoint, packaging, and per-model tuning an agent calls without knowing which backend is underneathSame — the agent-facing surface is identical regardless of backend choice

The row that resolves most scenario items fastest is "hardware portability," because it is the same architecture-specificity fact this course's model-optimization material states about TensorRT-LLM directly: an engine tuned for one GPU architecture is not guaranteed to run well, or at all, on a different one, so a fleet spanning multiple GPU architectures needs either a separate TensorRT-LLM build per architecture or a backend choice that does not carry that constraint.

04

Worked example: choosing a backend and batch configuration for a fixed-hardware deployment

Constructed scenario, illustrative only. A team is deploying a NIM container serving a 13-billion-parameter decoder-only model on a fleet of identical GPUs, all the same architecture, dedicated entirely to this one model, with a stated throughput target of at least 400 tokens per second aggregate across concurrent users, and no plan to change GPU architecture for the foreseeable future.

text
Decision 1 -- backend choice:
  Fixed, known, single GPU architecture across the whole fleet
  -> hardware-specificity cost of TensorRT-LLM's build-per-architecture
     requirement is paid once, not repeatedly
  -> TensorRT-LLM's per-GPU kernel autotuning and precision calibration
     can be fully exploited without a portability tax
  Decision: TensorRT-LLM

Decision 2 -- batching configuration, once the backend is fixed:
  Output-length variance across real traffic is high (chat-style
  responses ranging from a one-line answer to several paragraphs)
  -> in-flight (iteration-level) batching, not a request-level scheme,
     is required to avoid finished sequences holding their slots
     until the longest response in a batch completes
  -> maximum batch size and maximum sequence length are then sized
     against the fleet's available KV-cache memory per GPU, following
     the same cache-budget arithmetic this course's model-optimization
     material walks through for TensorRT-LLM builds generally
  Decision: in-flight batching enabled; max batch size and max
  sequence length sized to the measured KV-cache budget per GPU

Read the two decisions as genuinely separate line items, in the order they actually have to be made: the backend decision (fixed architecture favors TensorRT-LLM's hardware-specific tuning) is made first, and only once it is fixed does the batching-configuration decision (in-flight batching, sized to the cache budget) get made within that backend. A team that skipped decision 1 and jumped straight to tuning batch size on whatever backend NIM happened to default to would be tuning the wrong dial first.

05

Second worked example: the same throughput target under a heterogeneous-hardware constraint

Constructed scenario, illustrative only. Now change one fact in the same scenario: the team's fleet is not one fixed GPU architecture — it spans three different GPU generations across different data centers, added incrementally over two years, and the team wants one NIM deployment configuration that does not require a separate hardware-specific rebuild for every generation in the fleet.

text
Decision 1 -- backend choice, under the new constraint:
  Heterogeneous GPU architectures across the fleet
  -> TensorRT-LLM's hardware-specific kernel autotuning means a
     separate engine build is needed per architecture -- three builds
     to maintain, three sets of tuning results to validate, three
     rebuild cycles whenever the model or backend version changes
  -> vLLM's more portable serving design avoids that per-architecture
     rebuild multiplication, at the cost of giving up some of
     TensorRT-LLM's hardware-specific kernel-level tuning on any one
     architecture
  Decision: vLLM, trading some peak per-GPU performance for
  operational simplicity across a heterogeneous fleet

Decision 2 -- batching configuration:
  Same output-length variance as before
  -> continuous (iteration-level) batching, vLLM's own named scheme,
     serves the same purpose in-flight batching serves under
     TensorRT-LLM: finished sequences release their slots immediately
     rather than holding them until a batch's slowest member finishes
  Decision: continuous batching enabled; batch and sequence-length
  limits sized per architecture's actual memory capacity

The point this second example is built to make: the same throughput target and the same output-length variance can lead to two different, equally defensible backend decisions depending on one fact the first example held fixed and the second one changed — how uniform the underlying hardware is. Neither decision is universally correct; each is correct for the constraint stated. A scenario question that asks "which backend should this team choose" without stating whether the hardware is fixed or heterogeneous is missing the one fact the decision actually turns on, and a well-constructed exam item will state it.

06

Worked example: the arithmetic behind a batching-configuration decision

Constructed scenario, illustrative only. To make "batching configuration determines throughput" concrete rather than a slogan, walk through the arithmetic a NIM operator would actually run when deciding between a conservative and an aggressive batching configuration for the same backend and the same GPU.

Assume a NIM container running TensorRT-LLM in-flight batching for a decoder-only model, on a GPU with 24 GB of memory available for KV cache after weights and workspace are reserved, at a measured 512 KB of cache per token for this model's architecture — the same per-token cache figure this course's model-optimization material derives for a comparably sized model.

text
Configuration A -- conservative batching:
  max_batch_size = 8, max_sequence_length = 2,000 tokens
  cache demand = 8 x 2,000 x 512 KB = 8,192,000 KB ~= 8.19 GB
  headroom remaining = 24 - 8.19 = 15.81 GB unused
  Result: comfortably fits, but leaves most of the GPU's cache
  capacity idle -- concurrency is capped well below what the
  hardware could otherwise support.

Configuration B -- aggressive batching:
  max_batch_size = 28, max_sequence_length = 1,500 tokens
  cache demand = 28 x 1,500 x 512 KB = 21,504,000 KB ~= 21.5 GB
  headroom remaining = 24 - 21.5 = 2.5 GB unused
  Result: fits, with little headroom for a burst above the
  configured maximum -- a request pattern that exceeds the assumed
  average sequence length risks an out-of-memory failure under load.

Neither configuration is unconditionally correct. Configuration A is the safer choice when traffic is unpredictable or when the deployment also needs headroom for other processes on the same GPU; Configuration B extracts closer to the hardware's real capacity, at the cost of a thinner safety margin if actual sequence lengths run longer than assumed. This is exactly the same batch-size-times-sequence-length-equals-cache-budget arithmetic this course's model-optimization material walks through for building a TensorRT-LLM engine directly — a NIM operator tuning batching configuration is running the identical calculation, because a NIM container's underlying engine is subject to the identical memory constraint regardless of the packaging around it.

The throughput consequence follows directly from the concurrency each configuration supports: more concurrent sequences resident in the batch means more total tokens produced per unit of wall-clock time, up to the point where GPU compute rather than cache memory becomes the binding constraint — the same batching-throughput mechanism this course's deployment material establishes generally, now applied specifically to a NIM operator's own configuration choice rather than to batching as an abstract concept.

07

Decision table: backend and batching configuration by stated constraint

Stated constraint in the scenarioBackend signalBatching signal
Fixed, single, known GPU architecture for the deployment's lifetimeTensorRT-LLM's per-architecture tuning cost is paid once — favors TensorRT-LLMIn-flight batching, sized to that architecture's cache budget
Fleet spans multiple GPU architectures, added incrementallyPer-architecture rebuild cost multiplies under TensorRT-LLM — favors vLLM's portabilityContinuous batching, sized per architecture
Maximum possible per-GPU performance on a known target, portability not a concernTensorRT-LLM's hardware-specific autotuning is the whole point hereIn-flight batching, aggressive max batch size against the cache budget
Team wants to avoid vendor lock-in or prefers an open-source serving stackvLLM, as the vendor-neutral optionContinuous batching
Highly variable output lengths across real traffic (chat, RAG-style responses)Either backend, as long as iteration-level batching is enabledIn-flight (TensorRT-LLM) or continuous (vLLM) — request-level batching is the wrong fit either way
Near-uniform output lengths across trafficEither backend; iteration-level batching's advantage shrinksBatching scheme matters less; tune max batch size against memory instead
Out-of-memory errors appearing as concurrency risesBackend choice is not the fixReduce maximum batch size or maximum sequence length; both multiply into the cache budget regardless of backend

The general rule threading through every row: the backend decision is driven primarily by the hardware-portability constraint the scenario states, and the batching-configuration decision is driven primarily by output-length variance and available cache memory — two different questions with two different signals, and a well-built scenario item gives you the signal for whichever question it is actually asking.

08

Why NIM throughput tuning is on the NCP-AAI exam

NVIDIA Platform Implementation is Domain 7 of the NCP-AAI blueprint at 7%, and [GROUND TRUTH] (Sources/ncp-aai/domain-7-nvidia-platform-implementation.md) states objective 7.2 directly as "deploy NIM microservices for high-performance inference," naming NIM's support for "backends like TensorRT-LLM and vLLM and tuned per model + GPU" as the specific content behind that objective. Because Domain 4 (Deployment and Scaling) already introduces NIM as a containerized microservice supporting the same two backends, expect Domain 7's version of this material to test the tuning angle specifically — which backend and batching choice fits a stated constraint — rather than re-testing NIM's basic identity a second time, which Domain 4 and M4-01 already cover.

Expect the question to arrive in two recurring shapes. A backend-identification item asks which two backends NIM is named as supporting, with TensorRT-LLM and vLLM as the keyed pair against distractors naming unrelated products (Colang, a vector database, a training framework) that have no serving role at all. A scenario-fit item describes a hardware constraint — a fixed single architecture versus a heterogeneous fleet — or an output-length variance constraint, and asks which backend or batching scheme fits, with the answer keyed to exactly the signals this lesson's decision table names.

A third, less common but still testable shape combines both: a stem describes a NIM deployment missing a throughput target, states one fact about its hardware (single architecture or heterogeneous fleet) and one fact about its traffic (variable or uniform output lengths), and asks for the single change most likely to close the gap. These combined items reward working through the decision table's two questions in order — backend first, batching configuration second — rather than pattern-matching on a single keyword in the stem, because a stem can mention both a batching-related term and a backend-related term in the same sentence specifically to test whether a candidate can tell which fact answers which question.

What the distractors typically look like

Expect NIM described as having one single, fixed serving engine, when the source material states multiple supported backends explicitly. Expect a batching-configuration change offered as requiring a backend switch, when the two are independent decisions layered on top of each other. Expect a TensorRT-LLM engine described as portable across GPU architectures without a rebuild, the same portability trap this course's model-optimization material names directly for TensorRT-LLM generally. And expect this lesson's throughput-tuning question conflated with M4-01's agent-integration question — a distractor that answers "how does the agent handle a slow NIM call" when the stem actually asked "how do you make the NIM call faster in the first place," or the reverse.

09

Common mistakes about tuning NIM for throughput

MistakeWhat actually goes wrongFix
Believing NIM has one fixed, universal serving engineAssuming every NIM deployment behaves identically regardless of backend, when backend choice is itself a tuning decisionHold the identity precisely: NIM supports multiple backends, notably TensorRT-LLM and vLLM, tuned per model + GPU
Treating backend choice and batching configuration as the same decisionAssuming a batch-size change requires switching backends, or that switching backends is the only lever for throughputRecognize these as two independent, layered decisions — backend first, batching configuration within it second
Assuming a TensorRT-LLM-backed NIM engine is portable across GPU architecturesDeploying the same tuned engine to a different GPU generation and finding it fails to load or underperformsRebuild per architecture, or choose vLLM for the fleet where that rebuild cost is prohibitive
Applying request-level batching intuition to generative LLM trafficConfiguring a batching scheme that holds finished sequences' slots until the batch's slowest member completesUse iteration-level batching — in-flight under TensorRT-LLM, continuous under vLLM — for variable-length generative traffic
Confusing this lesson's throughput-tuning question with M4-01's agent-integration questionA design conversation about "which backend should this NIM container run" gets derailed into "how should the agent retry a slow call," or the reverseKeep the two questions separate: this lesson tunes the endpoint's latency distribution; M4-01 budgets and survives whatever that distribution turns out to be
Ignoring available GPU memory when raising maximum batch sizeOut-of-memory failures under load despite a throughput-motivated configuration changeBatch size and sequence length multiply into the KV-cache budget regardless of backend; size both against measured capacity

What backends does NVIDIA NIM support for inference?

NIM supports multiple backends, and the two named explicitly in NVIDIA's own material are TensorRT-LLM and vLLM. NIM optimizes latency and throughput for each specific model-plus-GPU combination rather than applying one universal configuration everywhere, which means the correct backend and batching setup for one model on one GPU architecture is not automatically correct for a different model, a different GPU, or both. A question that describes NIM as having a single, fixed serving engine has misstated this — backend choice is itself one of the decisions a NIM deployment's throughput tuning involves.

How is choosing a NIM backend different from configuring its batching?

They are two separate, layered decisions rather than one decision under two names. Backend choice — TensorRT-LLM versus vLLM — determines the underlying serving engine and memory-management architecture, and is driven mainly by whether the deployment targets a fixed, known GPU architecture (favoring TensorRT-LLM's hardware-specific tuning) or a heterogeneous fleet (favoring vLLM's greater portability). Batching configuration — maximum batch size, maximum sequence length, and whether iteration-level batching is enabled — is a decision made within whichever backend was chosen, driven mainly by output-length variance in real traffic and available GPU memory. A deployment can retune its batching configuration without switching backends, and switching backends does not automatically imply any particular batching configuration; the two dials are independent.

Why does the same model need different tuning on different GPUs?

Because the throughput-relevant properties of a GPU — its memory capacity, its memory bandwidth, its number of streaming multiprocessors, its supported precisions — vary by architecture, and both named backends' tuning decisions depend directly on those properties. TensorRT-LLM's kernel autotuning benchmarks candidate kernel implementations against the actual target GPU during the build and selects whichever measures fastest for that specific hardware, which means the fastest kernel choice for one architecture is not necessarily the fastest choice for another. The KV-cache budget arithmetic — how much memory is available for cache after weights and workspace are reserved — also changes with the GPU's total memory, which directly changes the maximum batch size and sequence length a configuration can support without running out of memory. A batching configuration and backend choice validated on one GPU generation therefore has to be re-validated, and often re-tuned, before it is assumed correct on a different one — this is the concrete mechanism behind "tuned per model + GPU combination," not just a repeated qualifier.

Glossary recap: NIM throughput-tuning terms this lesson introduced

TermOne-line definition
NIM backendThe inference engine running underneath a NIM container's standard API — notably TensorRT-LLM or vLLM
Tuned per model + GPU combinationNIM's optimization applies to a specific model-plus-hardware pairing, not universally across every deployment
TensorRT-LLM (as a NIM backend)NVIDIA's LLM-specific runtime on TensorRT, offering hardware-tuned in-flight batching and paged attention, at the cost of per-architecture rebuilds
vLLM (as a NIM backend)The open-source, vendor-neutral serving engine built around PagedAttention and continuous batching, more portable across GPU architectures
Batching configurationThe set of choices — max batch size, max sequence length, iteration- vs. request-level scheme — that determine throughput within a fixed backend
In-flight batchingTensorRT-LLM's name for iteration-level batching, where finished sequences release their slots immediately
Continuous batchingvLLM's (and the general industry) name for the same iteration-level scheme
Hardware-specificityThe property that a backend's build-time tuning is valid for the GPU architecture it was tuned against, and generally must be redone for a different one

Key takeaways on tuning NIM for GPU throughput

  • NIM's throughput and latency are not fixed properties of NIM itself — they are the result of a backend choice and a batching configuration, tuned per model-plus-GPU combination.
  • The two backends named explicitly are TensorRT-LLM and vLLM, and they differ chiefly in hardware-specificity: TensorRT-LLM's per-architecture kernel tuning buys peak performance on known hardware at the cost of portability; vLLM buys portability at some cost to peak per-GPU tuning.
  • Backend choice and batching configuration are two separate decisions, made in that order — backend first (driven by hardware constraints), batching configuration second (driven by output-length variance and memory).
  • Iteration-level batching — in-flight under TensorRT-LLM, continuous under vLLM — is the right fit for generative LLM traffic with variable output lengths, and a request-level scheme is the wrong fit regardless of which backend runs it.
  • This lesson's question (which backend and batching configuration hits a throughput target) is distinct from M4-01's question (how an agent budgets and survives whatever latency distribution results) — the two compose but never substitute for each other.
  • On the exam, expect a direct backend-identification item and a scenario-fit item turning on either a hardware-portability constraint or an output-length-variance constraint.

Choosing the right backend and batching configuration gets a NIM endpoint fast; it says nothing yet about the separate work of optimizing the model itself for the GPU it runs on, or about the general-purpose server that can host it alongside other models. M7-03 takes up exactly that next: TensorRT-LLM's optimizing job and Triton Inference Server's serving job, two distinct pieces of the latency-reduction picture that this lesson has already named TensorRT-LLM as one half of, without yet separating it from the server that hosts it.