What LLMs can two RTX 3090 GPUs run?

Two RTX 3090 GPUs (48 GB in all) run 40 of the 69 open models tracked here at Q4_K_M with 8K context; the largest is Llama 3.1 70B (70.6B parameters, 47.5 GB). They read memory at 1,872 GB/s in total. 3 more fit at a lower precision. Each fit leaves at least 0.5 GB free on 2× RTX 3090 (why a card does not give a model all its memory). The speeds assume tensor parallelism, as in vLLM or SGLang; llama.cpp splits layers across cards by default and then writes at about the speed of one card. How the model is divided between the cards, and what each one holds.

Models that fit on 2× RTX 3090

The most precise weights that still fit with 8K tokens of context and one request, the memory that takes, the longest context at that precision and the writing speed. Bigger models come first. Memory is for the whole group: weights, cache and 10% split across the 2 cards, plus 0.5 GB of runtime on each card (1 GB in all). gpt-oss-20b (15.3 GB, 123–246 tokens/s on 2× RTX 3090) is listed at MXFP4 only, as published.

Model Best precision Memory Longest context Tokens/s
AliceAI Foundation 80B-A3B 81.3B, 3B active GGUF Q3_K_M 41.9 GB 224K 155–325
Qwen3-Coder-Next 79.7B, 3B active GGUF Q3_K_M 41.1 GB 256K (full) 155–325
Kolibri-1 78.1B, 3.5B active GGUF Q3_K_M 40.4 GB 256K (full) 143–294
Llama 3.1 70B 70.6B GGUF Q4_K_M 47.5 GB 7K 21–30
K2-Horizon MoVA 36B-A4B 37.4B, 4B active GGUF Q8_0 43.4 GB 27K 72–132
Ornith 1.5 35B-A3B 36.0B, 3B active GGUF Q8_0 40.3 GB 256K (full) 106–205
Qwen3.6 35B-A3B 36.0B, 3B active GGUF Q8_0 40.3 GB 256K (full) 106–205
Ornith 1.0 35B 35.1B, 3B active GGUF Q8_0 39.4 GB 256K (full) 106–205
LLM-jp-4.1 32B-A3B Thinking 32.1B, 3.8B active GGUF Q8_0 36.5 GB 64K (full) 85–161
Nemotron 3 Nano 30B-A3B 31.6B, 3.5B active GGUF Q8_0 35.4 GB 256K (full) 98–188
Gemma 4 31B 31.3B GGUF Q8_0 37.0 GB 129K 27–38
GLM-4.7 Flash 31.2B, 3B active GGUF Q8_0 35.4 GB 198K (full) 100–193
Xing 4.0 29B-A4B 31.2B, 4B active GGUF Q8_0 35.4 GB 256K (full) 85–160
Qwen3-Coder 30B-A3B 30.5B, 3.3B active GGUF Q8_0 35.1 GB 128K 89–169
Qwen3 30B-A3B 30.5B, 3.3B active GGUF Q8_0 35.1 GB 40K (full) 89–169
Muse Glimmer 30B 29.8B GGUF Q8_0 33.6 GB 128K (full) 29–42
Granite 4.2 30B 29.3B GGUF Q8_0 35.1 GB 53K 28–40
ThinkingCap Qwen3.8 27B 27.8B GGUF Q8_0 31.8 GB 236K 31–44
Qwen3.6 27B 27.8B GGUF Q8_0 31.8 GB 236K 31–44
Qwen3.8 27B 27.8B GGUF Q8_0 31.8 GB 236K 31–44
Hemmingway-1 27B 27.3B GGUF Q8_0 31.3 GB 243K 31–45
Gemma 4 26B-A4B 25.8B, 4B active GGUF Q8_0 29.6 GB 256K (full) 84–157
gpt-oss-20b 20.9B, 3.6B active As published (MXFP4) 15.3 GB 128K (full) 123–246
Gemma 4 12B 12.0B FP16 / BF16 26.2 GB 256K (full) 37–53
ZDTaichu 5.0 9B 9.8B FP16 / BF16 21.3 GB 128K (full) 44–65
Ornith 1.5 9B 9.7B FP16 / BF16 21.1 GB 256K (full) 44–66
Qwen3.5 9B 9.7B FP16 / BF16 21.1 GB 256K (full) 44–66
LensVLM 9B 9.4B FP16 / BF16 20.6 GB 256K (full) 45–67
Ornith 1.0 9B 9.4B FP16 / BF16 20.6 GB 256K (full) 45–67
MiMo V2.6 Distill Qwen 9B 9.4B FP16 / BF16 20.6 GB 256K (full) 45–67
Bespoke Nimble 9B 9.0B FP16 / BF16 19.6 GB 8K (full) 47–70
Granite 4.2 8B 8.8B FP16 / BF16 20.4 GB 128K (full) 46–68
LFM2.5 8B-A1B 8.5B, 1.5B active FP16 / BF16 18.5 GB 128,000 (full) 111–217
Qwen3 8B 8.2B FP16 / BF16 19.0 GB 40K (full) 49–72
Llama 3.1 8B 8.0B FP16 / BF16 18.6 GB 128K (full) 50–74
Gemma 4 E4B 8.0B FP16 / BF16 17.6 GB 128K (full) 52–78
Ling 3.0 Tiny 7.9B-A1.3B 7.9B, 1.3B active FP16 / BF16 17.2 GB 128K (full) 121–242
LightOnOCR-3 4B 4.5B FP16 / BF16 10.6 GB 256K (full) 80–126
Spark-X2.5 4B 4.1B FP16 / BF16 9.85 GB 981K 84–134
Nemotron 3 Nano 4B 4.0B FP16 / BF16 9.28 GB 256K (full) 88–142
Granite 4.2 3B 3.7B FP16 / BF16 9.19 GB 128K (full) 89–143
MiniCPM5 2B 2.5B FP16 / BF16 6.52 GB 128K (full) 115–195
Limite 1B Violetto 1.0B FP16 / BF16 3.29 GB 128K (full) 176–346

Too big for 2× RTX 3090 at 8K context

How many RTX 3090 cards these need at Q4_K_M (gpt-oss-120b at MXFP4) with 8K context and 0.5 GB to spare, in one tensor-parallel group; some need more than 8.

Best models for 2× RTX 3090 with room for long context

The biggest models that still fit at Q4_K_M with 32,768 tokens of context (or their whole window, if shorter), the memory left over, the longest context the group takes at that precision and the writing speed with that context in the cache, from 1,872 GB/s of bandwidth. Memory is for the whole group: weights, cache and 10% split across the 2 cards, plus 0.5 GB of runtime on each card (1 GB in all). Memory and left over add up to the group's 48 GB.

ModelContextMemoryLeft overLongest contextTokens/s
K2-Horizon MoVA 36B-A4B 37.4B 32K 30.8 GB 17.2 GB 112K 52–93
Ornith 1.5 35B-A3B 36.0B 32K 24.0 GB 24.0 GB 256K (full) 126–253
Qwen3.6 35B-A3B 36.0B 32K 24.0 GB 24.0 GB 256K (full) 126–253
Ornith 1.0 35B 35.1B 32K 23.4 GB 24.6 GB 256K (full) 126–253
LLM-jp-4.1 32B-A3B Thinking 32.1B 32K 23.1 GB 24.9 GB 64K (full) 87–165

llama-server commands for 2× RTX 3090

GGUF repos checked 2026-09-29; -c is the longest context with 0.5 GB free on 2× RTX 3090. No -ngl: llama.cpp’s -fit, on by default since b7440, places the layers.

K2-Horizon MoVA 36B-A4B, Q4_K_M with 112K tokens: 21–36 tokens/s on 2× RTX 3090

llama-server -hf IFM/K2-Horizon-MoVA-36B-A4B-GGUF:Q4_K_M -c 114688

K2-Horizon-MoVA-36B-A4B-Q4_K_M.gguf, 22.4 GB: 47.3 GB used and 709 MB free of 2× RTX 3090's 48 GB, 21–36 tokens/s once the 112K cache is full.

Ornith 1.5 35B-A3B, Q4_K_M with 256K tokens: 61–111 tokens/s on 2× RTX 3090

llama-server -hf bartowski/Ornith-1.5-35B-A3B-GGUF:Q4_K_M -c 262144

Ornith-1.5-35B-A3B-Q4_K_M.gguf, 21.9 GB: 28.9 GB used and 19.1 GB free of 2× RTX 3090's 48 GB, 61–111 tokens/s once the 256K cache is full.

How fast 2× RTX 3090 writes as the context fills

Tokens per second at Q4_K_M for the biggest models that fit with 32K tokens, with 8K and 32K tokens in the cache and at the longest context the group holds, and at Q8_0 with 8K where that fits. Each token reads the active weights and the whole cache once, so the speed follows the 1,872 GB/s of bandwidth and falls as the cache grows. The ceiling is that bandwidth divided by the bytes read per token, which no runtime reaches; the reply time is for 1,000 new tokens with 32K (or the longest context) in the cache, prompt processing aside. With the same memory, M4 Pro Mac (64 GB), 273 GB/s, writes 85% slower by bandwidth; L40S, 864 GB/s, writes 54% slower by bandwidth; 2× RTX 4090, 2,016 GB/s, writes 8% faster by bandwidth.

Model8K32KLongestAt the longestQ8_0 at 8KBandwidth ceiling at 8K1,000-token reply at 32K
K2-Horizon MoVA 36B-A4B 94–178 52–93 112K 21–36 72–132 464 11–19 s
Ornith 1.5 35B-A3B 142–293 126–253 256K 61–111 106–205 944 4–8 s
Qwen3.6 35B-A3B 142–293 126–253 256K 61–111 106–205 944 4–8 s
Ornith 1.0 35B 142–293 126–253 256K 61–111 106–205 944 4–8 s
LLM-jp-4.1 32B-A3B Thinking 117–230 87–165 64K 65–120 85–161 656 6–11 s
Nemotron 3 Nano 30B-A3B 136–277 131–265 256K 99–189 98–188 864 4–8 s
Gemma 4 31B 42–62 39–57 256K 23–32 27–38 90 18–26 s
GLM-4.7 Flash 133–269 101–195 198K 38–67 100–193 829 5–10 s
Xing 4.0 29B-A4B 118–233 95–182 256K 34–60 85–160 669 5–10 s
Qwen3-Coder 30B-A3B 118–233 78–145 256K 19–32 89–169 668 7–13 s

Near misses on 2× RTX 3090

Models that miss at Q4_K_M with 32,768 tokens of context (or their whole window), or leave under 0.5 GB free there, but fit with a shorter context or 3-bit weights, or are short by at most a quarter of the memory and fit with MoE offload. Smallest shortfall first.

ModelShort by at Q4_K_MFits instead
Kolibri-1 78.1B 2.20 GB GGUF Q3_K_M with 32K, 40.9 GB
Qwen3-Coder-Next 79.7B 3.21 GB GGUF Q3_K_M with 32K, 41.7 GB
AliceAI Foundation 80B-A3B 81.3B 4.21 GB GGUF Q3_K_M with 32K, 42.5 GB
Llama 3.1 70B 70.6B 7.73 GB GGUF Q3_K_M with 32K, 47.3 GB

What more cards or MoE offload unlock

4× RTX 3090 (96 GB) would add 8 models at Q4_K_M with 8K context: Kolibri-1, Qwen3-Coder-Next, AliceAI Foundation 80B-A3B, gpt-oss-120b, Nemotron 3 Super 120B-A12B, Nemotron 3.5 Super VL 120B-A12B, Qwen3.5 122B-A10B, Mistral Medium 3.5 128B.

Run locally or rent two RTX 3090 GPUs?

Renting two RTX 3090 GPUs costs a median of $0.54 an hour on demand ($0.27 per card), across the providers getdeploying.com tracks (checked ), so every $1,000 of purchase price equals about 1,852 hours of rent, 77 days around the clock. At that rate K2-Horizon MoVA 36B-A4B at Q4_K_M with 32K tokens, the biggest model here that fits with a long context, writes 52–93 tokens/s for one request: about $1.6–2.9 per million generated tokens. Electricity and resale value are left out, and no card prices are listed because 2026 street prices vary widely between sellers; compare current ones before you decide.

Serving with vLLM on 2× RTX 3090

The KV cache pool vLLM builds with --tensor-parallel-size 2 at its default --gpu-memory-utilization 0.92 and --max-model-len 32768, weights as published, from the vLLM KV cache calculator. The pool is shared by every request; the last column assumes 4,096 tokens each.

ModelKV cache per GPUPool (tokens)At 32KRequests at 4K
gpt-oss-20b 13.4 GB 1,035,400 31.60x 142
Qwen3 8B 12.5 GB 182,720 5.58x 44

How these numbers are worked out

Memory is the weights at each precision plus the KV cache for 8,192 tokens in FP16 and runtime overhead (0.5 GB on each card plus 10%), computed from each model's files on Hugging Face with the LLM VRAM Calculator. Speed is estimated from memory bandwidth and the parameters read per token with the LLM Speed Calculator. Both tools take any other model from Hugging Face.

Nearby GPUs and setups

How many of the tracked models each one holds at Q4_K_M with 8K context, against 40 here.

SetupHow it relatesMemoryBandwidthModels at Q4_K_M
M4 Pro Mac (64 GB) Same memory 48 GB usable 273 GB/s 40 (same)
L40S Same memory 48 GB 864 GB/s 40 (same)
2× RTX 4090 Same memory 48 GB 2,016 GB/s 40 (same)
RTX 5090 Next size down 32 GB 1,792 GB/s 39 (−1)
2× RTX 5090 Next size up 64 GB 3,584 GB/s 43 (+3)
RTX 3090 Fewer of this card 24 GB 936 GB/s 38 (−2)
4× RTX 3090 More of this card 96 GB 3,744 GB/s 48 (+8)

Model numbers read from Hugging Face on .