Sign Up
GPU ServerDedicated Server
TicketSign Up

How to Build Your Own Multi-GPU Server for Local LLMs

Build a multi-GPU server for local LLMs: VRAM math for 70B models, choosing GPUs, power and cooling, and splitting models across cards with Ollama, llama.cpp or vLLM.

Running large language models on your own hardware has gone from hobbyist curiosity to a serious option in 2026. Open-weight models now rival the proprietary giants for many tasks, and running them locally means total data privacy, no per-token bills, no rate limits, and the freedom to fine-tune whatever you like. The catch is memory: the models worth running rarely fit on one graphics card. This guide walks through building a multi-GPU server for local LLM inference — how to size it, which parts actually matter, and how to get a model split across two or more GPUs — plus an honest look at when building your own is the wrong call.

Step 1: Start With the Model, Not the Hardware

Every decision in a build flows backwards from one question: which models do you want to run? The dominant cost of LLM inference is VRAM, and the arithmetic is simple enough to do on a napkin. A model stores its parameters as numbers, and the precision you store them at sets the memory bill. At 16-bit precision, every billion parameters costs roughly 2 GB. Quantization — compressing weights to 8, 5 or 4 bits with minimal quality loss — is what makes local inference practical: a 4-bit (Q4) model needs only about 0.6 GB per billion parameters, plus headroom for the context window and the KV cache that grows with it.

In practice, that works out to:

Model sizeApprox. VRAM at Q4What it takes
7–9B5–7 GBAny modern 8 GB+ GPU
13–14B9–11 GBOne 12–16 GB GPU
27–34B17–22 GBOne 24 GB GPU, nearly full
70–72B40–45 GBTwo 24 GB GPUs
100B+ / MoE60 GB+Three or more GPUs, or datacenter cards

The 70B class is where local models get genuinely impressive — and it is exactly the point where a single consumer card gives up. That is why "multi-GPU" and "serious local LLM" are almost synonyms. Browse the current open-weight catalogue on Hugging Face, pick the largest model family you realistically want, and let its Q4 size set your VRAM target.

Step 2: Choosing the GPUs

For inference workloads, prioritise in this order: VRAM capacity, memory bandwidth, then compute. Token generation is memory-bound — the GPU spends most of its time streaming weights out of VRAM, not doing math — so a card with more, faster memory beats a card with more cores.

  • The value pick: used RTX 3090 (24 GB). Years after release it remains the community favourite for one reason: no other card comes close on VRAM per dollar, and its ~936 GB/s of memory bandwidth still produces very usable token rates. Two of them give you the 48 GB pool a 70B Q4 model needs.
  • The performance picks: RTX 4090 (24 GB) and RTX 5090 (32 GB). Faster memory and much faster prompt processing. A pair of 5090s yields 64 GB — comfortable space for 70B models with long contexts.
  • Datacenter cards: A100, H100, H200. 80–141 GB each, designed to run flat-out around the clock — and priced accordingly. These usually make sense rented rather than owned; our overview of NVIDIA H200 GPUs for AI workloads explains what that class of hardware changes.

Two multi-GPU myths worth killing early. First, you do not need NVLink for inference — during generation, only small activation tensors cross between cards, and ordinary PCIe handles that with a barely measurable penalty. Second, you can mix different GPUs: llama.cpp happily splits a model across, say, a 3090 and a 4070 in proportion to their VRAM. (vLLM's tensor parallelism is the exception — it wants identical cards.)

Diagram of a dual-GPU local LLM server: a quantized 70B model's layers are tensor-split across two 24 GB GPUs, supported by a CPU with enough PCIe lanes, 64 GB of RAM, a 1600 W power supply and NVMe storage

Step 3: The Platform Around the GPUs

The un-glamorous parts sink more builds than the GPUs do. Four things to get right:

  • PCIe lanes. Consumer CPUs expose limited lanes, so a second GPU often runs at x8 or x4. For inference this is largely fine — the model loads once and stays resident — but if you plan three or more cards, workstation and server platforms (Threadripper, EPYC, Xeon) with 64+ lanes are the clean solution, and used server boards are a bargain.
  • Power supply. Budget roughly 350–450 W per high-end card plus ~200 W for the rest of the system, on a quality ATX 3.x unit — 1300–1600 W for a dual-GPU box. A useful trick: capping each card with nvidia-smi -pl at 70–80% of its default limit typically costs only a few percent of inference speed while dramatically cutting heat and noise.
  • Cooling and spacing. Two triple-slot cards stacked against each other will throttle. Pick a case with genuine airflow and slot spacing, or use PCIe riser cables to separate the cards. Blower-style and hybrid cards are worth a premium in tight builds.
  • RAM and storage. System RAM should at least match total VRAM — 64 GB for a 48 GB build — so models stage smoothly and you can fall back to partial CPU offload. Model files are huge (a single 70B Q4 file is ~40 GB), so a 2 TB NVMe drive is the practical minimum.

Step 4: The Software Stack

Install Ubuntu LTS, the NVIDIA driver and CUDA toolkit, confirm both cards appear in nvidia-smi, and choose an inference engine:

  • Ollama — the easy path. One install, ollama run, and it spreads a too-big model across your GPUs automatically. Ideal for getting productive on day one.
  • llama.cpp — the flexible path. Fine-grained control via --tensor-split and per-layer offload, runs GGUF quantizations of almost everything, and tolerates mismatched GPUs.
  • vLLM — the serving path. With --tensor-parallel-size 2 it shards the model for true parallel compute and delivers the highest throughput when many requests arrive at once — the right engine when the server backs a team or an application.

All three expose an OpenAI-compatible API, which is the quiet superpower of the local stack: any tool built for the cloud API can be pointed at your own server by changing one URL. That includes self-hosted AI agents — if you plan to run one, our guide to setting up a personal AI agent pairs naturally with this build.

The local LLM software stack: Ubuntu with NVIDIA drivers and CUDA at the base, an inference engine such as Ollama, llama.cpp or vLLM spanning both GPUs, an OpenAI-compatible API endpoint, and your chat, coding and agent applications on top

Three Reference Builds

BuildKey partsPooled VRAMComfortable with
Budget2× used RTX 3090, Ryzen 9, 64 GB RAM, 1500 W PSU48 GB70B Q4 chat and coding models
Performance2× RTX 5090, Ryzen 9 / Core Ultra, 96 GB RAM, 1600 W PSU64 GB70B with long contexts, fast prompt processing
Workstation4× 24 GB cards on Threadripper/EPYC, 256 GB RAM, dual PSU96 GB100B+ models, multi-user vLLM serving

Used-market prices swing constantly, so treat build budgets as a moving target — the VRAM totals are the stable part of the plan.

A Sanity Checklist Before You Buy Anything

  1. Name the exact models you want to run and note their Q4 file sizes on Hugging Face.
  2. Add ~20% to that figure for context and KV cache — this is your true VRAM target.
  3. Confirm your chosen case physically fits two triple-slot cards with a gap between them, or budget for risers.
  4. Check your wall circuit: a 1600 W PSU on a shared household circuit is a tripped breaker waiting to happen.
  5. Price the used options first — last-generation 24 GB cards are the best value in the entire hobby.
  6. Plan where the machine will live: under a desk, a dual-GPU server under load is roughly as loud as a vacuum cleaner in the next room.

When Building Your Own Is the Wrong Answer

A dual-GPU box under load draws 700–1,000 W — running 24/7, that is a serious line on your electricity bill, plus heat, fan noise and the certainty that today's cards depreciate. And a home server gives you no redundancy: one failed PSU and your "production" assistant is offline.

The honest decision rule: build if you will use it interactively and intermittently; rent if it must serve users around the clock. A hosted GPU server puts datacenter-class cards, redundant power and enterprise bandwidth behind a monthly fee with no capital risk — and for sustained production inference, a dedicated server backing your application while GPUs handle the models is a proven pattern. Many teams land on a hybrid: prototype and fine-tune on a local build, then deploy the winning model to hosted hardware. Our article on dedicated servers for machine learning digs into that production side.

Final Thoughts

A multi-GPU LLM server is one of the most satisfying things a technical person can build in 2026: napkin-math the VRAM, buy memory bandwidth before compute, give the cards clean power and real airflow, and let the software stack do the clever part. Start with the model you actually want to run, size backwards from there, and you will avoid every expensive mistake in this hobby. And when your local experiments outgrow your power socket, the same stack moves to a hosted GPU server in Malaysia without changing a line of your code.

Frequently Asked Questions

How much VRAM do I need to run a 70B model locally?

A 70B-class model quantized to 4-bit (Q4) needs roughly 40-45 GB for its weights, plus headroom for the context window and KV cache. In practice that means 48 GB of pooled VRAM — two 24 GB GPUs such as RTX 3090s or 4090s — is the comfortable minimum. Running the same model at full 16-bit precision would need around 140 GB, which is datacenter-card territory.

Can I mix different GPU models in one LLM server?

Yes, with the right engine. llama.cpp splits a model across mismatched cards in proportion to their VRAM, so a 3090 paired with a smaller card works fine. vLLM's tensor parallelism is the exception — it expects identical GPUs. Mixed setups run at the speed of the slower card for the layers it hosts, but for interactive use this is usually acceptable.

Do I need NVLink for multi-GPU LLM inference?

No. During inference only small activation tensors pass between GPUs, and ordinary PCIe bandwidth handles that with a negligible performance penalty. NVLink matters for multi-GPU training and fine-tuning, where gradient traffic between cards is heavy — but for running models, standard PCIe slots are fine.

Should I use Windows or Linux for a local LLM server?

Linux — Ubuntu LTS is the community default. NVIDIA's compute drivers, CUDA tooling and every major inference engine are developed Linux-first, multi-GPU setups are better tested there, and a headless server frees VRAM that a Windows desktop would consume. Windows with WSL2 works for experimenting, but a dedicated machine should run Linux natively.

Is building a multi-GPU server cheaper than renting a GPU server?

It depends on utilisation. For intermittent personal use, a one-time build usually beats years of rental fees. For workloads that must run around the clock and serve real users, renting wins once you account for electricity (700-1,000 W under load), cooling, hardware depreciation and the lack of redundancy at home. A common pattern is to prototype locally and deploy production inference to a hosted GPU server.