← All AI Engineer talks

AI Engineer Europe 2026

Running LLMs locally: Practical LLM Performance on DGX Spark — Mozhgan Kabiri chimeh, NVIDIA

Read the talk

Running LLMs locally: capacity, throughput, and responsiveness on DGX Spark

Local Qwen benchmarks on DGX Spark show how a repeatable serving setup and quantization affect both generation speed and the wait for a response to begin.

From a talk by Mozhgan Kabiri Chimeh

Before you start: Familiarity with LLM inference, model parameter counts, and basic Python will help you follow the benchmark and streaming example.

What keeps an AI workload off the desktop?

What happens when an AI experiment outgrows your development machine? Often, one of two constraints forces the move: the model does not fit in memory, or the required software stack is unavailable locally. Mozhgan Kabiri Chimeh, NVIDIA Developer Relations Manager, approaches that problem through hands-on experiments aimed at finding what is practical on a single system.

Slide showing two monitors: one marked with a red cross for insufficient memory, the other with a warning for the required software stack. A line below says work that cannot run locally must move to cloud or datacenter.
Local AI development faces memory and software-stack constraints.

Moving the workload to shared infrastructure introduces another dependency. Cost predictability, data residency, and deterministic latency become concerns as experiments approach production, while competing workloads can delay the next development run. The practical question is whether more of that iteration can happen where the developer works, without waiting for shared resources.

0:010:20
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:01 · section reference included

A desktop system with a portable software stack

DGX Spark is a standalone system built around the GB10 Grace Blackwell Superchip, combining CPU and GPU with unified memory. Its 128 GB of unified memory and FP4 support underpin the advertised capacity to work with models of up to around 200 billion parameters. That is a model-capacity claim, not a measured generation rate or a guarantee for every context length and concurrency setting.

The other part of the proposition is software continuity. Spark runs the NVIDIA AI software stack used in production environments, allowing workflows to move from the desktop to a data center or cloud with minimal changes. Local hardware supplies a place to develop and iterate; cloud resources remain part of the eventual scaling path.

1:391:48
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

1:39 · section reference included

Make every benchmark run inspectable

The experiment serves Qwen models locally through vLLM, using an NVIDIA-optimized container across model sizes and precision formats. The container establishes a consistent software environment intended to match the data-center serving stack. The linked serving guide is a living resource; its current recipes do not identify the exact container or software versions used for these measurements.

An automated harness applies the same protocol to models ranging from 1.5B to 14B parameters:

  1. Isolate the environment with Docker.
  2. Perform three mandatory warm-up runs before measurement.
  3. Log GPU metrics every second in the background.
  4. Create a unique run directory from a precise timestamp and a sanitized model ID.
  5. Save the evidence: full model endpoint responses, metrics, metadata, and benchmark test results.

This makes each result traceable to a particular execution. A throughput number is useful only if the surrounding run information survives with it.

The methodology slide pairs the orchestration script with its resulting directory of artifacts and example startup commands. The directory is as important as the launcher: it preserves the information needed to inspect a run after the server has stopped.

Methodology slide with a script on the left, an annotated run-directory listing on the right, and example launch commands below. Yellow outlines highlight GPU logging and benchmark calls.
The reproducible harness pairs an orchestration script with saved run artifacts and startup commands.
2:402:49
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:40 · section reference included

Measure when the response begins

End-to-end latency measures how long a request takes to finish. Time to first token addresses a different part of the experience: how long the user waits before the response begins. A fast first response can make an application feel responsive even while the rest of the answer is still being generated.

The demonstrated stream_once function explicitly consumes the vLLM streaming response and timestamps its first chunk. The essential Python timing pattern is:

python

from time import perf_counter
from openai import OpenAI


def stream_once(client: OpenAI, model: str, prompt: str) -> dict:
    started = perf_counter()
    first_chunk_at = None
    parts = []

    stream = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
        stream=True,
    )
    try:
        for chunk in stream:
            if first_chunk_at is None:
                first_chunk_at = perf_counter()
            for choice in chunk.choices:
                content = choice.delta.content
                if content:
                    parts.append(content)
    finally:
        stream.close()

    finished = perf_counter()
    return {
        "first_chunk_s": (
            None if first_chunk_at is None
            else first_chunk_at - started
        ),
        "end_to_end_s": finished - started,
        "text": "".join(parts),
    }

Here the timer records the first yielded chunk, even if it contains no visible text. That preserves the described first-chunk proxy; the talk does not specify token-event filtering. Current vLLM per-request metrics define server-side TTFT from scheduling to the first generated output token, so that metric is not interchangeable with this client-side measurement.

The comparison then runs smaller instruction models and larger optimized variants under the same local setup. Its target is realistic developer behavior, rather than the theoretical limits of the hardware. Keeping that scope in view matters when interpreting the results: these are measurements of a serving workflow, not a universal ranking of model sizes or precision formats.

4:134:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:13 · section reference included

What model size and precision do to completion speed

The completion-throughput chart starts with the 1.5B Instruct model at 61.73 tokens/s. The 14B NVFP4 model, despite having nearly ten times as many parameters, delivers 20.19 tokens/s in the same local test suite.

NVFP4, NVIDIA’s four-bit floating-point quantization format, is central to this operating point. Kabiri Chimeh describes the 14B result as retaining a sophisticated model at a generation rate faster than average human reading speed. Those are her practical assessments; the benchmark does not include a task-quality evaluation or a reading-speed study.

The 14B Base model makes the precision comparison more concrete:

Model variantCompletion throughput
1.5B Instruct61.73 tokens/s
14B NVFP420.19 tokens/s
14B Base8.40 tokens/s

These are Kabiri Chimeh’s reported DGX Spark/vLLM results. The 14B base result shows why parameter count alone cannot predict usable speed: at the same nominal model size, the optimized variant produces substantially more completion tokens per second.

Six-bar throughput chart: 1.5B Instruct 61.73, 8B FP8 23.88, 8B Base 14.60, 14B FP8 14.78, 14B NVFP4 20.19, and 14B Base 8.40 tokens per second. Yellow annotations highlight the first value and connect the final two bars.
Throughput chart shows 20.19 tokens per second for 14B NVFP4 versus 8.40 for 14B Base.

For this experiment, precision format is a consequential part of the hardware choice. Spark makes it possible to test that trade-off locally and see how it affects the prototype. The gain should remain scoped to this setup: exact checkpoints, baseline precision, prompt and output lengths, concurrency, and the throughput denominator are not specified, so the chart is not a promise of the same rates in another application.

5:345:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:34 · section reference included

Fitting a model is different from feeding it quickly

Throughput describes how quickly the answer continues; first-token latency describes how quickly it starts. Larger models generally require more computation before producing their first token, and the next chart examines that initial wait.

The displayed TTFT p50 is 0.07 seconds for 14B NVFP4 and 0.24 seconds for 14B Base. Kabiri Chimeh reports the 14B NVFP4 model as 3.4 times faster to first token than the unoptimized 14B base model. These values describe the local experiment and its first-chunk timing approach.

Bar chart labeled TTFT p50 in seconds compares six models, with values 0.03, 0.06, 0.08, 0.09, 0.07, and 0.24. A yellow arrow between the 14B Base and NVFP4 bars is labeled “3.4x faster.”
The first-token chart highlights 0.07 seconds for 14B NVFP4 versus 0.24 for 14B Base.

Memory capacity is not memory bandwidth. Capacity determines whether the model can fit; performance also depends on how efficiently the system moves the data needed to run it. The large unified-memory pool therefore answers a different question from either of the performance charts.

Reducing the representation size with NVFP4 helps explain the observed improvement: a more compact representation reduces the data burden associated with model values. Kabiri Chimeh describes this as increasing intelligence per byte, making a 14B model feel more like a smaller one. That is an interpretation of responsiveness, rather than a separate measurement of equivalent model quality or identical latency.

7:317:51
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:31 · section reference included

Keep iteration local, then scale the workflow

The experiments lead Kabiri Chimeh to three recommended uses:

  • Steady-state workloads: recurring work that can use dedicated local resources.
  • Privacy-sensitive data: development where keeping data local matters.
  • Rapid prototyping: frequent iterations that benefit from immediate access to the system.

The broader workflow includes building and fine-tuning locally with the software stack also used in DGX Cloud. The measurements here establish inference behavior, not fine-tuning performance.

The practical handoff is the DGX Spark playbook collection, which Kabiri Chimeh points to for the software and workflows behind local development. Start with a local workload, measure its behavior, and iterate while the system is directly available. When the application is ready for more resources, carry the workflow to a data center or cloud.

9:239:47
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:23 · section reference included

Resources

From the talk

Updates since the talk

Read the complete timestamped transcript
  1. 0:01

    Hello, everyone. I'm Mozhgan Kabiri Chimeh, Developer Relations Manager at NVIDIA, where I work closely with developers building and deploying AI systems. Today, we're looking at running LLMs locally, practical LLM performance on DGX Spark.

  2. 0:20

    This isn't a theoretical talk, it's a data-backed journey through the trade-offs of modern AI infrastructure. Findings are based on hands-on experiments with the goal of understanding what's actually practical on a single system.

  3. 0:38

    The evolution in AI puts greater demand on developer systems, creating two main challenges. You either run out of memory or you do not have access to the right software stack, then you end up on pushing everything to the cloud or data center.

  4. 0:57

    As models move from experiments to production, concerns like cost predictability, data residency, and deterministic latency take center stage. And iteration speed often depends, often depends on access to shared infrastructure.

  5. 1:16

    And since your work will be scheduled against other competing workloads, it causes delays in development work as well. So the question becomes: Can we bring some of that workflow closer to where development actually happens?

  6. 1:31

    To maximize developer productivity, local solutions to these challenges are required.

  7. 1:39

    DGX Spark is designed from the ground up to build and run AI and can be used as a standalone system.

  8. 1:48

    It's powered by the GB10 Grace Blackwell Superchip, combining CPU and GPU with a unified memory architecture. With hundred and twenty-eight gigabyte of unified memory and FP4 support, it enables developers to work with models of up to around two hundred billion parameters locally on a system that fits under the, under a desk

  9. 2:13

    or on top of your desk. It runs the same NVIDIA AI software stack used in production environments, meaning workflows can move from desktop to data center or cloud with minimal changes.

  10. 2:29

    The key idea here is not replacing the cloud, but bringing powerful AI development closer to the developer.

  11. 2:40

    This is my setup. Everything runs locally and is reproducible. To serve the models, I used vLLM.

  12. 2:49

    With the set of Qwen models across different sizes and precision formats, I ran this inside an NVIDIA optimized container. This would ensure that our environment is identical to what you would deploy in a data center.

  13. 3:04

    Instead of just showing raw results, I want to show you the how.

  14. 3:09

    I built an automated benchmarking harness. Every model run from one point five billion to fourteen billion follows the same strict protocol: environment isolation via Docker, three mandatory warm-up runs, and background GPU metrics logging at one-second interval.

  15. 3:28

    On the left, you are looking at the orchestrator script. For every execution, the script automatically generates a unique directory using a precise timestamp and a sanitized model ID.

  16. 3:44

    For every model run, it captures the full model's endpoint response and necessary metrics. On the right, you see the result, a clean versioned artifact of the run. It contains everything to verify the findings, the metadata, and the text results from the benchmarks.

  17. 4:06

    On the lower right, you can see an example command for getting things started.

  18. 4:13

    Now, let's look at the actual measurement logic. In an AI application, end-to-end latency is important, but time to first token is the metric that defines the user's perceived performance.

  19. 4:29

    If the first token arrives instantly, the application feels responsive, and the script here shows how we timestamp the very first chunk of a streaming response. In this script, we are not just calling an API and waiting for a result, we are explicitly handling the streaming response from the vLLM server.

  20. 4:54

    If you look at the highlighted block in the stream_once function, you'll see the timestamping logic.

  21. 5:03

    To explore this in practice, I ran a series of experiments using vLLM on DGX Spark. I tested different models from the smaller instruction models to larger optimized variants, all under the same setup.

  22. 5:19

    Everything was served locally. The goal here wasn't to push theoretical limits, but to understand realistic behavior in a developer workflow. Let's dive into the raw performance data I captured.

  23. 5:34

    This bar chart represents the completion token per second across the test suite.

  24. 5:42

    At the far left, you see the one point five billion instruct model delivering a massive sixty-one point seventy-three tokens per second. But the most interesting data point for us is the fourteen billion NVFP4 model Despite being nearly ten times larger than

  25. 6:07

    the one point five billion model, it still achieves twenty point nineteen tokens per second.

  26. 6:16

    I would say this is a critical engineering sweet spot. By leveraging NVIDIA's NVFP4 four-bit floating-point quantization, we were-- we are able to maintain a sophisticated high-intelligent model at a throughput that is still faster than the average human reading speed.

  27. 6:39

    What becomes very clear here is how aggressively throughput drops as model scale-- as models scale and how much quantization helps. Have a look at the fourteen billion base model.

  28. 6:56

    It drops to just eight point four T tokens per second.

  29. 7:01

    This proves that on Blackwell archite-- on Blackwell hardware, the choice of quantization format is just as important as the hardware itself. It's what allows the DGX Spark to bridge the gap between research toy and production prototyping engine.

  30. 7:20

    The Spark allowed me to experiment with different precision formats locally and understand the trade-offs in the real-time.

  31. 7:31

    While throughput is a measure of raw power, time to first token is the metric that defines user experience. It determines whether an application feels instant or broken. In other words, it reflects how quickly the model starts responding.

  32. 7:51

    As we see in the results, the DGX Spark delivers exceptional responsiveness.

  33. 7:58

    The increase for larger models is expected. More parameters mean more computation before the first token is generated.

  34. 8:07

    Out of all from this chart, the interesting ones is a comparison between the fourteen billion parameter models, the base model, and the NVFP4 model. As we can see, as we can see, the fourteen billion NVFP4 is three point four times faster to first token than

  35. 8:33

    the unoptimized fourteen base model. A key takeaway here from this data is that memory capacity is not the same as the memory bandwidth. While the DGX Spark's hundred and twenty-eight gigabytes of unified memory allows us to fit massive models up to two hundred billion parameters, our throughput

  36. 8:58

    is still governed by how efficiently we can move data.

  37. 9:04

    This is why NVFP4 is the hero here.

  38. 9:10

    It effectively increases our intelligence per byte, allowing a fourteen billion model to feel as responsive as much smaller one.

  39. 9:23

    After running all of these, three things stood out to me on when to use the DGX Spark. For steady-state workloads, privacy-sensitive data, and rapid prototyping. It allows you to build and fine-tune locally with the exact same software stack used in DGX Cloud.

  40. 9:47

    Visit build.nvidia.com/spark to access the playbooks and software stack I used for these benchmarks. And in one line, run locally, iterate quickly, and when ready, scale to data center or cloud.

  41. 10:04

    That's the workflow DGX Spark enables.