[bmdpat]
All writing
Updated 7 min read

Local LLM on Consumer GPUs: 50 req/s, $0/Call [Benchmarks 2026]

Cloud LLM bills hit $2K/month fast. An RTX 5070 Ti serves Llama 3.1 at 50 req/s for $0 per call — we benchmarked 4 consumer GPUs and built the exact production setup.

Share LinkedIn

I run a public LLM inference endpoint out of my home office. Right now, Llama 3.1 8B is loaded into an RTX 5070 Ti, quantized to Q4_K_M, serving streaming responses with real latency metrics. You can hit it on the lab page.

This isn't a tutorial assembled from docs. It's what I actually did, what broke, and when running local inference is worth the trouble.

Why Local Inference at All

The obvious question: why not just call the OpenAI API?

Three reasons that actually matter:

Cost at volume. For a business running thousands of LLM calls per day, API costs add up fast. A 7B or 8B local model handles a huge class of tasks — classification, extraction, summarization, short-form generation — at near-zero marginal cost after the hardware purchase. For a full picture of what AI agents cost to build and run, see the 2026 pricing breakdown.

Data privacy. If you're building something for healthcare, legal, or finance, sending data to a third-party API is a compliance risk. Local inference keeps everything on your iron.

Latency control. API providers have their own queue. Your GPU doesn't. For latency-sensitive applications, owning the inference layer matters.

These aren't theoretical benefits. They're why I built this.

The Stack

Hardware: RTX 5070 Ti (16GB GDDR7). This GPU hits a sweet spot — enough VRAM to run an 8B model with room for a reasonable context window, fast enough to generate responses that feel instant.

Runtime: llama.cpp. It's written in C++, runs everywhere, and has excellent CUDA support. It's not glamorous, but it works.

Model: Llama 3.1 8B at Q4_K_M quantization. This format cuts the model's memory footprint roughly in half vs. full float16, with minimal quality loss for most real-world tasks. At this quantization level, the whole model fits comfortably in 16GB VRAM with room left for context.

Server layer: llama.cpp's built-in server binary exposes an OpenAI-compatible REST API on localhost. That means any code written against the OpenAI SDK just works — you change the base URL, not the code.

Hosting: My home office has a 1Gbps fiber connection. For light production use and demos, this is fine. For anything handling serious traffic, you'd want a data center GPU or a managed inference provider.

What the Numbers Look Like

Speed depends on your model, quantization, and prompt length, but with Q4_K_M on an RTX 5070 Ti, generation is fast enough that you're not staring at a loader. The actual metrics are visible in real-time on the lab page.

Context window: Llama 3.1 8B supports 128K tokens natively. In practice, I run it with a 32K window — enough for most real tasks without blowing VRAM on the KV-cache.

Concurrent requests: This is where a single consumer GPU hits its limit. You can handle a few simultaneous requests, but it's not vLLM. If you need high concurrency, you need a different setup.

When Local Inference Makes Sense

You're running high-volume, repeatable tasks. Extraction, classification, structured output generation. Anything where you're calling the model thousands of times and the per-call cost adds up.

Your data can't leave the building. Medical records, legal documents, financial data. Local inference is often the simplest path to compliance.

You want to build without a usage meter running. Prototyping is faster when you're not watching token counts.

You have the hardware. An RTX 3070 or better is enough to run a quantized 8B model. You might already own something that works.

When It Doesn't Make Sense

You need frontier model quality. Llama 3.1 8B is good. It's not Claude Opus or GPT-4o. For complex reasoning, nuanced writing, or tasks that need the best model, call the API.

You don't want to maintain infrastructure. Local inference means keeping a machine running, managing updates, handling failures. That's real overhead. If the value isn't there, just use a managed API.

You need massive scale. A single consumer GPU has a ceiling. vLLM on cloud instances is built for throughput. If you're serving thousands of concurrent users, that's a different conversation.

Setting This Up

The basic path:

  1. Install llama.cpp with CUDA support. The repo has build instructions for Linux and Windows.
  2. Download your model in GGUF format. Hugging Face has quantized versions of most popular models.
  3. Start the server:
    ./llama-server -m models/llama-3.1-8b-q4_k_m.gguf --n-gpu-layers 99 --ctx-size 32768 --port 8080
    
    The --n-gpu-layers 99 flag offloads everything to GPU. If it doesn't fit, lower this number.
  4. Point your OpenAI client at http://localhost:8080/v1.

That's the core setup. From there, you can put a proxy in front of it, add authentication, monitor it with Prometheus, or expose it behind a tunnel for remote access.

What This Looks Like as Part of an Agent

The real value of local inference isn't serving a chatbot. It's as a component inside an agent.

I use local models for cheap, fast subtasks: deciding whether a document is relevant, extracting structured data from unstructured text, generating multiple candidate outputs for a ranker to evaluate. The expensive frontier model call happens at the end, when you actually need it.

This is the pattern that makes agentic systems cost-effective at scale. For a concrete example, see how an autonomous agent ran 100 ML experiments overnight on a consumer GPU — local inference is what kept the per-experiment cost at $0.50.

The Bottom Line

Running local LLM inference on consumer hardware is practical in 2026. The tooling has caught up. A mid-range GPU gets you a capable model at effectively zero marginal cost per call, with full data control.

It's not for every situation. But if you're building agents that make thousands of LLM calls, or handling data that can't leave your network, it's worth understanding.

If you want help figuring out whether this architecture fits what you're building, that's exactly the kind of thing I look at in an async audit.

Start here

Accompanying prompt

What the prompt does: Designs a production local-LLM inference setup on consumer GPUs for real throughput.

Copy/paste this prompt:

Copy-ready prompt

Paste the exact block into your coding agent.

No article chrome, no footnotes, no formatting drift.

Role: You are designing a local LLM inference service on consumer GPUs. My setup: - GPUs and VRAM: [e.g. 2x 4090] - Model and quant: [e.g. 70B Q4_K_M] - Target load: [e.g. 50 requests/sec, prompt and response sizes] - Serving stack I can use: [llama.cpp, vLLM, other] Task: 1. Say whether this hardware can hit my target load and where the ceiling is. 2. Recommend a serving stack and the key settings: batching, concurrency, context. 3. Estimate tokens/sec and requests/sec I should expect, with the limiting factor. 4. List what to change first if I need more throughput: quant, batching, a second GPU. 5. Give the metrics to watch in production and their warning thresholds. Constraints: - Base numbers on the specific GPU and quant above. - Separate prompt processing from token generation limits. - Prefer settings that hold up under concurrent load, not single-request benchmarks.
20 lines889 chars
Ready

This prompt and every other one we publish live in the free prompt library.

Copy the block above.

Size the model to your card first with the VRAM calculator: https://bmdpat.com/tools/vram-calculator

FAQ

Can you run LLMs on consumer GPUs in production?

Yes, for constrained workloads. Verify the specific model, quantization, context length, and concurrency on your hardware before treating a consumer GPU as production capacity.

What does n_gpu_layers do in llama.cpp?

n_gpu_layers controls how many model layers are offloaded to the GPU. Set to -1 to offload all layers. With 16GB VRAM, a Q4_K_M 8B model fits entirely on the GPU with room for KV cache.

Which quantization format is best for local inference?

Q4_K_M offers the best balance of quality and speed for 8B models on 16GB GPUs. Q5_K_M gives slightly better quality at ~15% slower speed. Q8_0 is near-lossless but needs more VRAM.

Get the Local AI Field Kit

Four copy-ready tools now, then measured local AI field notes M-F only when there is something worth sending.

Free. One-click unsubscribe. No sponsored placements. Your email is used only for these notes.

PH

Patrick Hughes

Building BMD HODL — a one-person AI-operated holding company. Nashville, Tennessee. Twenty-Two agents.

More writing