CanRun

Running MoE models bigger than your GPU: gpt-oss-120b with system RAM

By CanRun · Updated October 15, 2026

A mixture-of-experts (MoE) model needs memory for its whole file, but each token reads only a small part of it, so the expert weights that do not fit in VRAM can sit in system RAM. In CanRun's calculation, the 63.4 GB gpt-oss-120b file fits on a 12GB RTX 3060 with 64GB of system RAM but not with 32GB. An 8GB RTX 4060 misses 64GB by a hair in CanRun's calculation, so CanRun lists 96GB. The speed then depends mostly on your RAM, and CanRun labels it a theoretical estimate.

How MoE models differ from dense models

In a dense model such as Qwen3 32B, every token passes through every weight, so the speed of generation follows the size of the whole file. In an MoE model, most of each layer is split into many small feed-forward blocks called experts, and a router picks a few of them for each token. According to their configuration files, gpt-oss-120b has 128 experts per layer and uses 4 for each token, while Qwen3.6 35B-A3B has 256 and uses 8 plus one shared expert. The Parameters column below gives both counts: the total, which sets the memory need, and the active part, which sets most of the work per token.

Graphics card memory a model needs at 8k context: weights of the default quant loaded on the GPU + f16 KV cache + compute buffer
ModelParametersDefault quant, weights on the GPUKV cache at 8kTotal at 8k
Qwen3 32B32.8BQ4_K_M · 19.3 GB2.1 GB22.0 GB
gpt-oss-20b20.9B (3.6B active)MXFP4 · 11.5 GB0.2 GB12.3 GB
Gemma 4 26B-A4B26.54B (4B active)Q4_K_M · 16.9 GB0.2 GB17.7 GB
Qwen3 30B-A3B (2507)30.5B (3.3B active)Q4_K_M · 18.4 GB0.8 GB19.8 GB
Qwen3.6 35B-A3B35.95B (3B active)Q4_K_M · 21.1 GB0.2 GB21.8 GB
gpt-oss-120b116.8B (5.1B active)MXFP4 · 62.8 GB0.3 GB63.6 GB
Solar Open 100B102.65B (12B active)Q4_K_M · 61.8 GB1.6 GB64.0 GB
Qwen3.5 122B-A10B125.09B (10B active)Q4_K_M · 75.9 GB0.2 GB76.6 GB

On a graphics card the OS keeps some VRAM (about 0.6 GB on a Windows display GPU). llama.cpp keeps the input embedding table in system RAM and does not load an MTP block by default, so the weights here are a little smaller than the file; a Mac counts the whole file.

Two models of similar size show what this means in practice. At 8k, Qwen3 32B needs 22.0 GB and Qwen3.6 35B-A3B needs 21.8 GB. Both are more than the 15.4 GB a 16GB RTX 5060 Ti can use. The dense model has to read the layers left in system RAM in full for every token, so on that card it Runs slowly, a calibrated estimate. The MoE model reads only the experts the router picked, and it Runs well, a theoretical estimate.

The router can pick any expert, so every expert has to be in memory somewhere. An MoE model therefore needs as much memory as a dense model with the same total, as How much VRAM do local LLMs need? 8–32 GB tiers (2026) explains. What MoE changes is where that memory can be. Nearly all of an MoE file is expert weights: in the gpt-oss-120b file, the non-expert (shared) weights, such as attention, come to only a few percent. That small part and the KV cache (the memory that holds the context) should stay on the GPU for speed. The experts can sit in system RAM, and only the few that each token uses are read from there.

How the experts end up in system RAM

llama.cpp, the engine behind Ollama 0.30 and later and many other local tools, has two options for this. --cpu-moe keeps all MoE weights in system RAM. --n-cpu-moe N keeps only the expert weights of the first N layers there, so the experts of the other layers stay on the GPU. Since build b7410 (December 2025), llama.cpp also makes this split by default: its --fit option puts the non-expert weights ("dense weights" in the PR) on the GPU first and moves expert weights to system RAM only as far as it has to.

CanRun's calculation follows the same order. It puts the non-expert weights, the KV cache and the compute buffer (the runtime's working memory) on the GPU first. It then fills the remaining VRAM with the experts of whole layers, keeps one layer's worth free as a margin, and leaves the experts of the remaining layers in system RAM. The expert and non-expert sizes come from each GGUF file's header, not from a formula. The N that results is the number our combo pages print in the llama.cpp command.

Qwen3.6 35B-A3B on the RTX 3060 12GB shows the split. It needs 21.8 GB at 8k, against the 11.4 GB the card can use. The GPU bar below is full except for the one layer kept free, and the system RAM bar holds the remaining experts. CanRun keeps 4GB of RAM aside for Windows and other programs, so a 32GB PC counts as 28GB usable.

Where the memory goes: Qwen3.6 35B-A3B (Q4_K_M) on the GeForce RTX 3060 12GB

Weights, KV cache and compute buffer are the model; the OS reservation is the display driver.
GPU memory
System RAM
Weights
9.9 GB
KV cache
0.2 GB
Compute buffer
0.6 GB
OS reserve
0.6 GB
Free
0.8 GB
Weights in system RAM
12.4 GB

The system RAM share above also counts the 0.90 GB MTP (multi-token prediction) block, which llama.cpp does not load by default, so it errs on the safe side. Turning on MTP speculative decoding (llama.cpp --spec-type draft-mtp) loads that block and needs KV cache for it too.

In this setup it Runs well, a theoretical estimate. The verdict legend further down applies a stricter rule to this mode: Runs well is the best it can get, and it takes the speed that Runs great needs on a full GPU. Qwen3.6 35B-A3B thinks by default, so the stricter thresholds for thinking models apply on top. The Qwen3.6 35B-A3B page compares every card.

A longer context costs speed first

In this mode the KV cache stays on the GPU. A longer context therefore moves more experts to system RAM instead of knocking the model off the card, and the speed drops step by step. For Qwen3.6 35B-A3B on the RTX 3060 12GB, 64k and 128k with an f16 KV cache still Run well, while 256k with an f16 cache falls to Runs slowly, all theoretical estimates. A q8_0 (8-bit) KV cache brings 256k back to Runs well, also a theoretical estimate. According to its configuration file, only one layer in four of Qwen3.6 35B-A3B uses full attention, and the others keep a fixed-size state, so its KV cache grows slowly. Models with full attention on every layer start to slow down at shorter contexts (see KV cache explained: how context length eats VRAM). Once system RAM runs out, the model stops fitting: gpt-oss-120b on the RTX 3060 12GB with 64GB does not fit at 128k with an f16 cache.

Qwen3.6 35B-A3B on the GeForce RTX 3060 12GB (Q4_K_M): memory and verdict by context length and KV cache type
ContextKV f16KV q8_0KV q4_0
4k
21.7 GBRuns well
est. 55.7 tok/s39.0–72.4theoretical estimate ±30%
21.7 GBRuns well
est. 56.2 tok/s39.3–73.0theoretical estimate ±30%
21.7 GBRuns well
est. 56.4 tok/s39.5–73.4theoretical estimate ±30%
8k
21.8 GBRuns well
est. 54.7 tok/s38.3–71.1theoretical estimate ±30%
21.8 GBRuns well
est. 55.6 tok/s38.9–72.3theoretical estimate ±30%
21.7 GBRuns well
est. 56.1 tok/s39.3–73.0theoretical estimate ±30%
16k
22.1 GBRuns well
est. 52.8 tok/s36.9–68.6theoretical estimate ±30%
21.9 GBRuns well
est. 54.5 tok/s38.2–70.9theoretical estimate ±30%
21.8 GBRuns well
est. 55.5 tok/s38.9–72.2theoretical estimate ±30%
32k
22.6 GBRuns well
est. 48.6 tok/s34.0–63.2theoretical estimate ±30%
22.2 GBRuns well
est. 51.7 tok/s36.2–67.3theoretical estimate ±30%
22.1 GBRuns well
est. 54.4 tok/s38.1–70.7theoretical estimate ±30%
64k
23.5 GBRuns well
est. 42.0 tok/s29.4–54.7theoretical estimate ±30%
22.9 GBRuns well
est. 47.5 tok/s33.3–61.8theoretical estimate ±30%
22.6 GBRuns well
est. 51.5 tok/s36.0–66.9theoretical estimate ±30%
128k
25.5 GBRuns well
est. 33.1 tok/s23.2–43.0theoretical estimate ±30%
24.2 GBRuns well
est. 40.5 tok/s28.3–52.6theoretical estimate ±30%
23.6 GBRuns well
est. 46.5 tok/s32.6–60.5theoretical estimate ±30%
256k
29.4 GBRuns slowly
est. 23.2 tok/s16.2–30.1theoretical estimate ±30%
26.9 GBRuns well
est. 31.4 tok/s22.0–40.9theoretical estimate ±30%
25.5 GBRuns well
est. 39.0 tok/s27.3–50.7theoretical estimate ±30%

S = Runs great · A = Runs well · B = Runs slowly · F = Won't run

How much system RAM each card needs

The grid crosses six MoE models with five NVIDIA cards from 8GB to 32GB. Every verdict assumes an 8k context, an f16 KV cache, 32GB of DDR5 system RAM and Windows. When 32GB is not enough, the line under the badge gives the smallest RAM size that works in CanRun's calculation and the verdict it would get there. CanRun checks 64GB, 96GB and 128GB.

Verdicts at 8k context with an f16 KV cache, assuming 32 GB of DDR5 system RAM and Windows on PCs (unified-memory machines: the memory size shown in the cell). Speeds are estimates with an error band and a confidence label.
Hardwaregpt-oss-20bGemma 4 26B-A4BQwen3 30B-A3B (2507)Qwen3.6 35B-A3Bgpt-oss-120bQwen3.5 122B-A10B
GeForce RTX 40608 GB
Runs well
est. 36.9 tok/s25.9–48.0theoretical estimate ±30%
gpt-oss-20b verdict on the GeForce RTX 4060
Runs well
est. 30.6 tok/s21.4–39.7theoretical estimate ±30%
Runs well
est. 32.4 tok/s22.6–42.1theoretical estimate ±30%
Qwen3 30B-A3B (2507) verdict on the GeForce RTX 4060
Runs well
est. 43.6 tok/s30.5–56.6theoretical estimate ±30%
Won't runWith 96 GB RAM: Runs slowlygpt-oss-120b verdict on the GeForce RTX 4060
Won't runWith 96 GB RAM: Runs slowly
GeForce RTX 3060 12GB12 GB
Runs well
est. 63.9 tok/s44.8–83.1theoretical estimate ±30%
gpt-oss-20b verdict on the GeForce RTX 3060 12GB
Runs well
est. 40.7 tok/s28.5–53.0theoretical estimate ±30%
Runs well
est. 42.0 tok/s29.4–54.6theoretical estimate ±30%
Qwen3 30B-A3B (2507) verdict on the GeForce RTX 3060 12GB
Runs well
est. 54.7 tok/s38.3–71.1theoretical estimate ±30%
Won't runWith 64 GB RAM: Runs slowlygpt-oss-120b verdict on the GeForce RTX 3060 12GB
Won't runWith 96 GB RAM: Runs slowly
GeForce RTX 5060 Ti 16GB16 GB
Runs great
111.6 tok/s8k estimate 104.3 tok/s (83.5–125.2, calibrated estimate ±20%)measured (1 run, 2k context)
gpt-oss-20b verdict on the GeForce RTX 5060 Ti 16GB
Runs well
est. 59.2 tok/s41.4–76.9theoretical estimate ±30%
Runs well
est. 57.7 tok/s40.4–75.1theoretical estimate ±30%
Qwen3 30B-A3B (2507) verdict on the GeForce RTX 5060 Ti 16GB
Runs well
est. 69.5 tok/s48.7–90.4theoretical estimate ±30%
Won't runWith 64 GB RAM: Runs slowlygpt-oss-120b verdict on the GeForce RTX 5060 Ti 16GB
Won't runWith 96 GB RAM: Runs slowly
GeForce RTX 309024 GB
Runs great
162.0 tok/s8k estimate 201.1 tok/s (160.9–241.3, calibrated estimate ±20%)measured (1 run, 2k context)
gpt-oss-20b verdict on the GeForce RTX 3090
Runs great
108.0 tok/s8k estimate 134.9 tok/s (108.0–161.9, calibrated estimate ±20%)measured (1 run, 32k context)
Runs great
est. 140.6 tok/s112.5–168.7calibrated estimate ±20%
Qwen3 30B-A3B (2507) verdict on the GeForce RTX 3090
Runs great
est. 164.6 tok/s131.6–197.5calibrated estimate ±20%
Won't runWith 64 GB RAM: Runs slowlygpt-oss-120b verdict on the GeForce RTX 3090
Won't runTry UD-Q2_K_XL (heavy quality loss): Runs well
est. 41.3 tok/s28.9–53.6theoretical estimate ±30%
GeForce RTX 509032 GB
Runs great
282.3 tok/s8k estimate 338.9 tok/s (271.1–406.7, calibrated estimate ±20%)measured (1 run, 2k context)
gpt-oss-20b verdict on the GeForce RTX 5090
Runs great
216.1 tok/s8k estimate 210.4 tok/s (168.3–252.4, calibrated estimate ±20%)measured (2 runs, 512/8k context)
Runs great
est. 195.0 tok/s156.0–234.1calibrated estimate ±20%
Qwen3 30B-A3B (2507) verdict on the GeForce RTX 5090
Runs great
est. 229.8 tok/s183.9–275.8calibrated estimate ±20%
Won't runWith 64 GB RAM: Runs wellgpt-oss-120b verdict on the GeForce RTX 5090
Won't runTry UD-Q2_K_XL (heavy quality loss): Runs well
est. 66.4 tok/s46.5–86.3theoretical estimate ±30%

Theoretical estimates (±30%) mark setups whose real speed varies a lot, such as MoE experts kept in system RAM. There we assume as many experts as fit stay on the GPU and only the rest sit in RAM.

The hint uses the same split as above: the expert layers that do not fit beside the non-expert weights, the KV cache and one free layer go to RAM, and they must fit after the 4GB kept for the system. A 32GB RTX 5090 can use 31.4 GB, so more than half of the 63.4 GB gpt-oss-120b file still has to sit in RAM. That is more than a 32GB PC has left, and 64GB is enough.

gpt-oss-120b

In CanRun's calculation, every card in the grid from 12GB up needs 64GB of system RAM for gpt-oss-120b. The 8GB RTX 4060 misses 64GB by a hair, so CanRun lists 96GB. That gap comes from the margins CanRun keeps, 4GB of RAM for the system and one free layer of VRAM; if you try 64GB, check the split with ollama ps or the llama.cpp log.

With 64GB, gpt-oss-120b Runs slowly on the RTX 3060 12GB, the RTX 5060 Ti 16GB and the RTX 3090, and Runs well on the RTX 5090. These are theoretical estimates, and gpt-oss always thinks, so the stricter thresholds apply. The RTX 3090 estimate sits close to the Runs well line, so a small difference in real speed could put it on either side.

More RAM than the model needs does not make it faster in this calculation. How many expert layers stay on the GPU depends on VRAM, so the RTX 3060 12GB gets the same estimate with 128GB as with 64GB. Our page for gpt-oss-120b on the GeForce RTX 3060 12GB shows the command and the memory split at 64GB.

Qwen3.5 122B-A10B and Solar Open 100B

Qwen3.5 122B-A10B is a little larger and has about twice the active parameters of gpt-oss-120b, so each token reads roughly twice as much. On the 8GB to 16GB cards it needs 96GB of RAM, and on the 24GB and 32GB cards 64GB. With that much RAM it Runs slowly on every card in the grid, even the RTX 5090, as a theoretical estimate.

On the RTX 3090 and RTX 5090, the grid cell suggests a different file. With 32GB of RAM only the UD-Q2_K_XL file fits, and CanRun rates it Runs well on the RTX 3090, a theoretical estimate. It is a 2-bit quant in the Heavy loss group, and CanRun recommends one only when every other quant is rated Won't run. For what the quality groups mean, see GGUF quantization: Q4_K_M vs IQ4_XS vs Q8_0 — which to download.

Solar Open 100B, Upstage's Korean model in the memory table, is not in the grid, but on its five cards it needs 64GB of RAM. That includes the 8GB RTX 4060, where CanRun's calculation leaves only about a gigabyte of RAM to spare. With 64GB it Runs slowly on all five cards, a theoretical estimate.

30B-class MoE models and 16GB of RAM

With the grid's 32GB of RAM, the four smaller models fit on every card in it, down to the 8GB RTX 4060. On the 24GB RTX 3090, Qwen3 30B-A3B and Qwen3.6 35B-A3B fit fully on the GPU and Run great. On the 8GB to 16GB cards they keep part of their experts in RAM, so 16GB of RAM can be too little. With 16GB, neither fits on the RTX 4060, only Qwen3 30B-A3B fits on the RTX 3060 12GB, and both fit on the RTX 5060 Ti 16GB, which holds more experts in VRAM.

Size alone does not set the speed. Gemma 4 26B-A4B is the smaller file, but each token reads more of it than Qwen3.6 35B-A3B (4B active parameters against 3B, and a larger shared part). On the 8GB RTX 3050 it Runs slowly while Qwen3.6 35B-A3B Runs well; both are theoretical estimates under the stricter thresholds for thinking models.

RAM speed sets the pace

In this mode each token reads two things. The chosen experts of the layers in system RAM come from RAM, and everything on the GPU, including its experts and the KV cache, comes from VRAM. RAM is far slower. DDR5-5600 in dual channel moves 90 GB/s, against 360 GB/s on the RTX 3060 12GB. CanRun's formula counts on only half of the RAM figure for this part, a factor fitted to public measurements. The more experts sit in RAM, the more the RAM sets the speed.

Bandwidth is the transfer rate times eight bytes per channel times the number of channels. DDR4-3200 in dual channel gives 51 GB/s, a little over half of DDR5-5600. In CanRun's calculation, moving gpt-oss-120b from DDR5-5600 to DDR4-3200 lowers the estimate by a third to two-fifths on the 12GB to 32GB cards, where most of its experts are in RAM. For Qwen3.6 35B-A3B on the RTX 3060 12GB, where a larger share of each token's work happens on the GPU, it drops by about a fifth. The calculator's RAM type field (DDR4-3200, DDR5-5600 or DDR5-6000) shows the effect on your own setup.

Mainstream desktop processors have two memory channels. Intel's specification page for the Core Ultra 9 285K and AMD's for the Ryzen 7 9700X both list two. More sticks add capacity, not channels, and they can lower the rated speed: AMD lists the Ryzen 7 9700X at DDR5-5600 with two sticks but DDR5-3600 with four, about two-thirds of the bandwidth. When you add RAM for a large MoE model, check what your processor and motherboard support with four sticks before you count on the full speed.

Running it: llama.cpp and Ollama commands

On Windows, llama.cpp ships ready-made builds on its GitHub releases page; for an NVIDIA card, take the CUDA build together with the matching cudart file. Unzip both into one folder and open PowerShell in that folder; on macOS or Linux, run llama-server instead of .\llama-server.exe. With a build from December 2025 or later, the simplest command leaves the split to --fit:

.\llama-server.exe -hf ggml-org/gpt-oss-120b-GGUF:MXFP4 -c 8192

To fix the split yourself, set -ngl and --n-cpu-moe; --fit leaves options you set alone. This is the command our page prints for gpt-oss-120b on the RTX 3060 12GB with 64GB of RAM (the N for other cards is on each combo page):

.\llama-server.exe -hf ggml-org/gpt-oss-120b-GGUF:MXFP4 -c 8192 -ngl all --n-cpu-moe 32 -fa on

-ngl all puts every layer on the GPU, and --n-cpu-moe 32 then sends the experts of the first 32 layers back to system RAM. If loading fails for lack of VRAM, for example after you raise the context, raise N by one or two: each step moves one more layer's experts to RAM.

With Ollama, quit the Ollama app from the taskbar, then start the server with the context you want and run the model from Hugging Face in a second PowerShell window:

$env:OLLAMA_CONTEXT_LENGTH="8192"; ollama serve
ollama run hf.co/ggml-org/gpt-oss-120b-GGUF:MXFP4

On macOS or Linux the first line is OLLAMA_CONTEXT_LENGTH=8192 ollama serve. Ollama decides the split on its own: unless you set num_gpu, it starts llama-server without a GPU layer count, and llama.cpp's --fit places the experts. For how to set the context permanently, see Ollama slow or forgetting your prompt? Context length defaults. In LM Studio, the "Force Model Expert Weights onto CPU" load setting keeps all expert weights in RAM, the same as --cpu-moe.

Check where the model landed

Run ollama ps while the model is loaded: the PROCESSOR column shows the split between CPU and GPU. With llama.cpp, the startup log reports how much of the model went to each device. A model whose experts sit partly in RAM always shows a split; what matters is that the GPU share is as large as your VRAM allows.

On Windows, NVIDIA's driver can borrow shared system memory when VRAM runs out, so with N set too low llama.cpp may run far below the estimate without an error. NVIDIA's support article shows how to turn this off for one program: in the NVIDIA Control Panel, under Manage 3D settings and Program Settings, add llama-server.exe and set "CUDA - Sysmem Fallback Policy" to "Prefer No Sysmem Fallback". A split that is too tight then fails with an out-of-memory error instead.

How sure are these numbers?

Fit is calculated by formula. CanRun reads each MoE file's expert and non-expert sizes from its GGUF header, adds the KV cache and the compute buffer, and compares the parts with the VRAM and system RAM the PC can use. Whether a model fits with a given amount of RAM is therefore a calculation, not an estimate. Results right at a RAM step, such as gpt-oss-120b on an 8GB card with 64GB, depend on the margins CanRun keeps: 4GB of RAM for the system and one free layer of VRAM.

All speeds here are generation speeds. With experts in system RAM they are theoretical estimates (±30%). Against 42 public measurements, the formula's average error was about 11%; on the 35 measured on NVIDIA cards it was about 10%, and 89% of them landed within ±20%. Some setups were off by close to 40%, depending on the OS, the backend and the RAM, so the label stays theoretical. Setups the formula does not describe well were left out of that check: the Vulkan backend, 8-channel server memory and very long contexts of 32k and beyond.

All of this assumes Windows with the card driving the display, DDR5-5600 dual-channel RAM, an 8k context, an f16 KV cache, one model loaded and one request at a time. llama.cpp's automatic split keeps its own margin of free VRAM on each GPU, so the N it picks can differ from CanRun's by a layer or so.

Models with a thinking mode face 1.5× stricter speed thresholds, which the legend below does not show: with thinking on, each answer costs many more tokens. Among the models here, gpt-oss-20b and gpt-oss-120b always think. Qwen3.6 35B-A3B, Qwen3.5 122B-A10B, Solar Open 100B and Qwen3 32B think by default, and Gemma 4 26B-A4B can think but has it off by default. Qwen3 30B-A3B (2507) has no thinking mode. The thresholds:

How to read the verdicts

Runs great
Fully on the GPU at 20 tok/s or more
Runs well
Fully on the GPU at 8–20 tok/s; MoE experts in system RAM at 20 tok/s or more; or at least 90% on the GPU at 8 tok/s or more
Runs slowly
2–8 tok/s; CPU-only; less than 90% on the GPU; or MoE experts in system RAM below 20 tok/s
Won't run
Does not fit, or under 2 tok/s

Where to go next

FAQ

What hardware do I need to run gpt-oss-120b?

In CanRun's calculation at an 8k context, a graphics card with 12GB or more plus 64GB of system RAM. An 8GB card misses 64GB by a hair, so CanRun lists 96GB for it. With 32GB of RAM it does not fit even on a 32GB RTX 5090. The file is 63.4 GB, and its model card targets a single 80GB GPU. Unified-memory machines with 128GB, such as the Ryzen AI Max+ 395 (Strix Halo) and the NVIDIA DGX Spark, hold the whole file in memory, and public measurements put it at Runs great on both.

Can I run gpt-oss-120b without a graphics card?

In CanRun's calculation, yes, with 96GB of RAM. On a CPU with DDR5-5600 dual-channel memory, CanRun rates it Runs slowly, a calibrated estimate; CPU-only setups are capped at that verdict. With 64GB of RAM the file does not fit after the share CanRun keeps for the system. An 8GB card lowers the need, but only to just over what 64GB leaves after the 4GB CanRun keeps for the system; if you try 64GB, check the split with ollama ps or the llama.cpp log. From 12GB of VRAM up, 64GB of RAM is enough.

Should I add RAM or get a card with more VRAM?

Add RAM first if the model does not fit at all; once it fits, more RAM does not raise CanRun's estimate. After that, more VRAM keeps more expert layers on the GPU and faster RAM speeds up the rest; the grid above shows each card. When you plan new RAM, aim for the smallest size at which your model fits, in a stick count your processor supports at full speed.

Why is my MoE model slow even though it fits?

Usually because more of it sits in system RAM than needed, or the RAM is slower than you think. Check the split with ollama ps or the llama.cpp log; if Ollama's GPU share is far below your VRAM, look for a leftover num_gpu setting or try llama.cpp with --n-cpu-moe. --cpu-moe puts every expert in RAM even when some would fit, four sticks of RAM may run at a lower rated speed than two, and a long context moves more experts to RAM. On Windows, a split that is too tight can spill into shared GPU memory, as the commands section explains.

Should I use --cpu-moe or --n-cpu-moe?

Use --n-cpu-moe N when you set the split yourself, because it keeps as many expert layers on the GPU as fit. --cpu-moe is the same as putting every layer's experts in RAM, which is slower whenever the card has room for some of them. With a llama.cpp build from December 2025 or later you can leave both out and let --fit choose, but keep -c: without it, --fit may shorten the context before it moves any weights. Our combo pages print the N CanRun calculated for each card.

Sources

Speeds on this page are estimates with an error band and a confidence label, or public measurements with their source. Verdicts assume the setup stated with each table.