Skip to content

LLM GPU requirements for RAG: which models run on your hardware

DocsGPT itself is light: it runs on 1 vCPU / 2 GiB for one person and 4 vCPU / 8 GiB for a department of 25 to 50 concurrent users with a cloud model. The GPU is sized by the model you serve with Ollama, vLLM, llama.cpp, TGI, SGLang or LMDeploy: an 8B model on a 12 to 16 GB card for 1 to 5 users, a 24 GB card with vLLM for 5 to 25, a 48 to 80 GB card for 25 to 100. A large bank runs a classification pipeline built by the DocsGPT team fully air-gapped on its existing NVIDIA T4 GPUs.

docsgpt 1 vCPU / 2 GiB to 16 vCPU / 16 GiB · gpu by model, 12 GB to 8 × 80 GB vram

Last updated:

Fully local stackzero external egress
Fully local DocsGPT stack inside a network boundaryA dashed boundary encloses five boxes connected by lines: inference engine on GPU, DocsGPT, embeddings on CPU, vector store, storage. No line leaves the boundary.YOUR NETWORK · NO EGRESSInference enginevLLM · Ollamallama.cpp · GPUDocsGPTAPI · agents · UIEmbeddingsgranite-311mCPUVector storelocal · QdrantElasticsearchStoragedocuments · indexaudit log
Text version

Inside the network boundary: the inference engine (Ollama, vLLM, llama.cpp, TGI, SGLang or LMDeploy) serves the LLM on the GPU or CPU; DocsGPT calls it over its API, computes embeddings on CPU by default (FastEmbed on ONNX Runtime, granite-311m), stores vectors in the vector store and files in storage. Nothing crosses the boundary.

DocsGPT's own footprint

What the platform needs before any model, with the language model on a cloud endpoint. Query embedding, retrieval and streaming run here; only generation runs on the GPU.

1 vCPU, 2 GiB RAM, 10 GB disk is enough for one person; 1 GiB RAM fails (the stack boots but the first ingest is killed out of memory and retried forever; no document is ever indexed). 2 vCPU, 4 GiB is the comfortable size.

DocsGPT host size by concurrent users, with a cloud or remote model
 CPURAMDiskMeasured
Solo / evaluation1 concurrent user1 vCPU2 GiB10 GBBoots in 17 s; 0.4 s to first token; a 30-page PDF ingests in 158 s. 1 GiB is not enough.
Small teamup to 10 concurrent users2 vCPU4 GiB10 GB10 users at 0.5 s to first token, 25 at 1.6 s; ingest twice as fast as on 1 vCPU.
Department25 to 50 concurrent users4 vCPU8 GiB10 GB25 users at 0.4 s, 50 at 1.7 s (1.0 s with 2 API workers); a 250-stream burst completes with no errors. Tesseract OCR fits on the same box. 2 API workers for 50 users
Company100 concurrent users16 vCPU16 GiB10 GB100 users at 0.2 to 0.7 s to first token, zero errors. 4 API workers; raise Postgres max_connections
Company250 concurrent users · estimated16 vCPU (32 vCPU for sub-second)32 GiB10 GB747 of 750 requests ok at 2.1 s median to first token on 16 vCPU. more API workers, a dedicated embeddings worker
Company500 concurrent users · estimated2 to 3 nodes × 16 vCPU, or 48 vCPU48 GiB10 GBA 500-stream burst completes with no errors on 16 vCPU at 12 s median to first token; steady 500 users needs about 3× the CPU of the 250 tier.

A concurrent user asks, streams a ~5 s answer, waits 2 s and asks again — more aggressive than real use, so user counts are conservative. Docker Compose standalone stack (backend, worker, Redis, PostgreSQL) on x86-64 Linux. Disk is for the slim stack; add 3.5 to 4.5 GB for the docling parser and 2 to 7 GB per local model. Measured 2026-09-16 on DocsGPT 0.21.0.

CPU rule of thumb

1 vCPU

per chat request per second · ~7 active or 25–50 named users

Stack boot

17 s

1 vCPU / 2 GiB · fresh compose up

Image download

~1 GB

slim stack · 2 to 3.2 GB on disk

Per worker process

1.5 GB

RAM after its first ingest (embedding session)

Ingest scales linearly with cores and competes with chat for the same CPU: a 30-page text PDF in 158 / 75 / 40 s on 1 / 2 / 4 vCPU. One document uses one worker process, so above 4 vCPU extra cores buy parallel ingests, not faster ones. Tesseract OCR costs about 4 s per scanned page per core, including chunking and embedding, and no extra RAM beyond the ingest peak. For heavy scan volumes give the parsing worker its own cores rather than a bigger single box, or use a DeepSeek-OCR endpoint on a card with ≥ 12 GB VRAM (7.3 GB fp16 weights; 1.8 GB at INT4) (about 4.5 s per page on an H100, parallel documents at no extra wall time).

Which GPU for which model

Fit by VRAM for chat over documents, by concurrent users. Weights at Q4_K_M plus about 1 GB of KV cache per concurrent 8k-context request for an 8B model, roughly double for 14B and quadruple for 32B.

llama3.1:8b (Q4_K_M) via Ollama on an NVIDIA H100 80 GB generates 143 tokens/s in 13.7 GB with 8 parallel slots at 8k context; through DocsGPT one user gets the first token in 1.8 s, 10 users wait 6.5 s and 25 users 19 s. The queue is Ollama's slot count, not the GPU: the H100 sat mostly idle while users waited. Ollama is fine up to about its OLLAMA_NUM_PARALLEL in concurrent users; beyond that use vLLM (continuous batching), not a bigger card.

GPU class and serving stack by concurrent users and model class
 Model classGPUServing stack
1 to 5 users8B (5 to 6 GB)one 12 to 16 GB card (RTX 4070/4080; T4 slow) or Apple Silicon 16 GB+Ollama, OLLAMA_NUM_PARALLEL=4, OLLAMA_CONTEXT_LENGTH=8192
5 to 25 users8B to 14B (6 to 10 GB)one 24 GB card (L4, A10G, RTX 4090, RTX 5090)vLLM; Ollama measured at 6.5 s to first token for 10 users and 19 s for 25, even on an H100
25 to 100 users8B to 32B (6 to 20 GB + KV cache)one 48 to 80 GB card (L40S, A100, H100)vLLM with continuous batching and FP8 KV cache
100 to 500 users8B to 70B2 to 8 × 80 GB (H100, H200), tensor or data parallelvLLM behind a load balancer; DocsGPT scaled as in the cloud-LLM tiers

Fit by VRAM. A 70B model at Q4 needs about 42 GB. Whatever the model, DocsGPT itself still needs the CPU and RAM from the footprint table.

Settings › Models
model registry3 models · hot-swap, no restart
  • Qwen3.8-Flash-Next

    Ollama · http://ollama:11434

    defaultlocal
  • GLM-5.3-Flash

    vLLM · http://gpu-01:8000/v1

    local
  • GPT-5.6 Sol

    DocsGPT · api key · via Arc53

    cloud
  • + Add model bring your own · openai-compatible

    base url https://…/v1api key ••••••••model id my-model
  1. 01

    Pick the class that fits your memory

    Weights plus KV cache for your context and concurrency; the selector below does the arithmetic. Prefer the largest class that fits with headroom for concurrent sessions.

    8B → 12–16 GB · 14B → 24 GB · 32B → 48 GB · 70B → 80 GB

  2. 02

    Serve it with the engine for your user count

    Ollama up to about its parallel-slot count (roughly 8 users); vLLM with continuous batching beyond that. Register the endpoint in Settings › Models and switch models without a restart.

    ollama · vllm · OLLAMA_NUM_PARALLEL · OLLAMA_CONTEXT_LENGTH

  3. 03

    Measure on your own hardware

    Run a benchmark suite of your questions against two or three candidate models with docsgpt-cli bench: assertions on sources and content, latency limits, A/B. The bank case chose its model this way from five-plus candidates. Part of the free on-prem review.

    docsgpt-cli bench ./suite · junit output

GPU and VRAM selector

Pick your card or host to see which model classes fit, at what quantisation and context.

Model class fit by GPU or host
GPU / hostMemoryModel classQuantisationEngineContextFit
NVIDIA T416 GB7–8BQ4 / INT4Ollama, llama.cpp, vLLM8kfitsWhat the bank runs air-gapped on its T4s (fine-tuned model, classification); slow for interactive chat
NVIDIA T416 GB12–14BQ4llama.cpp4ktightShort context; latency rises with concurrency
NVIDIA T416 GB30B+anydoes not fitDoes not fit in 16 GB
NVIDIA RTX 4070 / 408012–16 GB7–8BQ4Ollama, llama.cpp8kfits1 to 5 users with Ollama
NVIDIA RTX 4070 / 408012–16 GB12–14BQ4llama.cpp4ktightSingle user
NVIDIA L424 GB7–8BFP8 / Q4vLLM, Ollama16kfits5 to 25 users with vLLM
NVIDIA L424 GB12–14BQ4vLLM, llama.cpp8kfitsLow concurrency
NVIDIA L424 GB30–34BQ4llama.cpp4ktightSingle session
NVIDIA A10 / A10G24 GB7–8BFP16 / Q4vLLM, TGI16kfits5 to 25 users with vLLM
NVIDIA A10 / A10G24 GB12–14BQ4vLLM, llama.cpp8kfitsLow concurrency
NVIDIA A10 / A10G24 GB30–34BQ4llama.cpp4ktight
NVIDIA RTX 4090 / 509024–32 GB7–8BFP8 / Q4vLLM, Ollama16kfits5 to 25 users with vLLM
NVIDIA RTX 4090 / 509024–32 GB12–14BQ4vLLM, llama.cpp8kfitsLow concurrency
NVIDIA RTX 4090 / 509024–32 GB30–34BQ4llama.cpp4ktightSingle session
NVIDIA A10040 GB7–14BFP16vLLM, TGI, SGLang32kfits
NVIDIA A10040 GB30–34BQ4 / INT8vLLM8kfits
NVIDIA A10040 GB70BQ4llama.cpp4ktightConsider two GPUs with tensor parallelism
NVIDIA L40S48 GB7–34BFP16 / FP8vLLM, TGI, SGLang32kfits25 to 100 users with vLLM
NVIDIA L40S48 GB70BQ4vLLM, llama.cpp8ktightLow concurrency
NVIDIA A10080 GB7–34BFP16vLLM, TGI, SGLang, LMDeploy32kfits25 to 100 users with vLLM
NVIDIA A10080 GB70BINT8 / Q4vLLM, LMDeploy8kfitsLow concurrency at INT8
NVIDIA H10080 GB7–34BFP16 / FP8vLLM, TGI, SGLang, LMDeploy32k+fits8B Q4_K_M via Ollama: 143 tokens/s; 1.8 s to first token for 1 user, 6.5 s for 10 — Ollama's slot queue, so vLLM for teams
NVIDIA H10080 GB70BFP8 / INT8vLLM, SGLang16kfits
Apple M-series16 GB unified7–8BQ4 (GGUF)Ollama, llama.cpp8kfitsSingle user; a small office at most
Apple M-series16 GB unified12B+anydoes not fitNo room beside the OS
Apple M-series32 GB unified7–8BQ4 (GGUF)Ollama, llama.cpp8kfitsSingle user; evaluation and small teams
Apple M-series32 GB unified12–14BQ4Ollama, llama.cpp4ktight
Apple M-series64 GB unified7–14BQ4–Q8Ollama, llama.cpp8kfitsSingle user
Apple M-series64 GB unified30–34BQ4llama.cpp4ktight
Apple M-series128 GB unified7–34BQ4–Q8Ollama, llama.cpp8kfitsSingle user
Apple M-series128 GB unified70BQ4llama.cpp4ktightSlow generation; single user
CPU-only32 GB RAM1–4BQ4 (GGUF)llama.cpp, Ollama4ktight3B via Ollama on 4 vCPU: 4.3 tokens/s, 42 s to first token — a demo, not a deployment
CPU-only32 GB RAM7–8BQ4llama.cpp4kdoes not fitFits in RAM; 8 to 15 tokens/s even on ~16 fast cores, unusable below
CPU-only64 GB RAM1–4BQ4 (GGUF)llama.cpp, Ollama8ktightDemo only
CPU-only64 GB RAM7–8BQ4llama.cpp4kdoes not fitFits in RAM; too slow for interactive use
CPU-only64 GB RAM12B+anydoes not fitLatency unsuitable for interactive use

Fit by memory: parameters × bytes per weight, plus KV cache for the context and concurrency shown. Latency figures, where given, are measured 2026-09-16.

Sizing: users and model

Enter your concurrent users and where the model runs for a first instance shape. An engineer confirms it in the free on-prem review.

asking at the same time, not named seats · ~1 in 4 named users at peak

Instance shape ·

DocsGPT host
GPU
Serving stack
OCR

Free 30-minute on-prem review

Running without a GPU

DocsGPT itself needs no GPU: its local embeddings (FastEmbed on ONNX Runtime, granite-311m on new installs) run on CPU in every posture, and the footprint table above is entirely CPU. Only generation wants one. llama3.2:3b (Q4) via Ollama on 4 vCPU / 8 GiB, alongside the stack, generates 4.3 tokens/s and evaluates prompts at 29 tokens/s. Through DocsGPT one user waits 42 s for the first token, because the retrieved context is prompt-evaluated first, and 48 s for the answer; three users wait up to 127 s with Ollama pegging all four cores.

A demo, not a deployment: CPU-only local models are not viable for real use on anything under about 16 fast cores, and even then an 8B model lands around 8 to 15 tokens/s. Use CPU-only inference to evaluate the product, then put the model on a card from the table above, or on a cloud endpoint under your own key while documents stay local.

llama.cpp · Ollama · GGUF Q4 · granite-311m on CPU

CPU-only local model
 Measured
Modelllama3.2:3b (Q4) via Ollama
Host4 vCPU / 8 GiB, beside the DocsGPT stack
Generation4.3 tokens/s
Prompt evaluation29 tokens/s
First token, 1 user42 s
Full answer, 1 user48 s
Full answer, 3 usersup to 127 s

Measured 2026-09-16 on DocsGPT 0.21.0. RAM: 3.9 GB for the model, 4.9 GB once the KV cache fills.

Multi-GPU and legacy hardware

Engines such as vLLM, TGI, SGLang and LMDeploy support tensor parallelism across GPUs on one host, and some support pipeline parallelism across hosts. This is the engine's capability, not DocsGPT's: DocsGPT talks to the engine over its API and does not schedule GPUs. Before adding a GPU, check the serving stack: at 25 users on an H100 the card sat mostly idle while Ollama serialised prompt evaluation past its parallel slots. Continuous batching (vLLM) is the fix from about 8 concurrent users; a second card is the fix for a model that does not fit.

Legacy or existing hardware is a sizing question rather than a blocker — a large bank runs model sizes and pipelines tuned to fit its existing T4 GPUs, chosen from several open-source models with custom benchmarks before deployment, and the DWP assistant runs on government infrastructure with local inference.

tensor parallelism · pipeline parallelism · T4 16 GB × n · vLLM continuous batching

24 h → 16 min

A large Central European commercial bank processes 10,000+ inbound documents a day; time-to-action fell from 24 hours to 16 minutes, with over 99.5 % classification accuracy, running fully air-gapped on the bank's existing NVIDIA T4 GPUs.

1–2 days → ~5 min

Transfer-document review that took 1–2 working days (P95) now completes in about 5 minutes, with 12 deterministic and agent checks and human approval for uncertain cases.

Government infrastructure, local inference

UK Department for Work and Pensions: an internal knowledge assistant on government infrastructure, with local inference.

Frequently asked questions

Which GPU is best for running LLM?

It depends on the model size, quantisation and concurrency you need rather than on a brand. An 8B model at Q4 fits a 12 to 16 GB card and serves 1 to 5 users with Ollama; a 24 GB card with vLLM serves 5 to 25; 48 to 80 GB cards serve 25 to 100; a 70B model needs 80 GB or two GPUs. Use the selector above for your card.

Can I run an LLM locally without a GPU?

Yes, for a demo. A 3B model (llama3.2:3b, Q4) via Ollama on 4 vCPU / 8 GiB generates 4.3 tokens/s, and DocsGPT's first token arrives after 42 s because the retrieved context is prompt-evaluated first. DocsGPT itself needs no GPU (its local embeddings, FastEmbed on ONNX Runtime, run on CPU); only the model does. Measured 2026-09-16.

How much RAM does DocsGPT need?

With a cloud model: 2 GiB and 1 vCPU for one person (1 GiB fails — the first ingest is killed out of memory), 4 GiB and 2 vCPU for up to 10 concurrent users, 8 GiB and 4 vCPU for 25 to 50, 16 GiB and 16 vCPU for 100. A local model adds its own RAM or VRAM on top. Measured 2026-09-16 on DocsGPT 0.21.0.

Can you run 2 GPUs for LLM?

Yes, when the inference engine supports tensor or pipeline parallelism — vLLM, TGI, SGLang and LMDeploy do. Multi-GPU is the engine's feature, not DocsGPT's; DocsGPT talks to the engine over its API. For 100 to 500 users the shape is 2 to 8 × 80 GB behind a load balancer, with DocsGPT scaled as in the footprint table.

Can DocsGPT run on an NVIDIA T4?

Yes. A large Central European bank runs a classification pipeline built by the DocsGPT team fully air-gapped on its existing NVIDIA T4 GPUs, processing 10,000+ documents a day. For interactive chat a 16 GB T4 fits an 8B model at Q4 with short context; it is slow compared with an L4 or a consumer 24 GB card.

See DocsGPT on your documents

A 30-minute demo on your use case, or a free on-premises review with an engineer.