GPU guide

Open-weight coding models: which to self-host, and on what GPU

Open-weight coding models by GPU memory: licence, context, vLLM tool-calling flags, dated benchmark scores, and what to run on 48 GB and 96 GB cards.

Faiz Ahmed12 min read

The open-weight coding model I would self-host first is Qwen3.8-27B: it is Apache-2.0, it has a 262,144-token context, its tool calls work in vLLM with the qwen3_coder parser, and at 79.8% it has the highest Terminal-Bench 2.1 score, in Artificial Analysis's own runs, of the models here that fit one GPU. Its FP8 build fits a 48 GB card and its full-precision weights fit an 80 or 96 GB card. The model I would test against it is Nanbeige4.3-33B, which is the only one of them that gets anywhere on the newer Terminal-Bench 4.0. The dedicated coder models have fallen behind the general ones: Qwen3-Coder-Next scores 38.2% on the same run.

The models, with their licences and vLLM flags#

A coding agent needs three things from a model: tool calls the server can parse, a long context, and a licence you can ship under. The table is sorted by the size of the maker's own checkpoint, read from Hugging Face on 2026-11-12.

ModelFitsLicenceContextWeights on diskTool calling in vLLM, after --enable-auto-tool-choice
gpt-oss-20b48 GBApache-2.0131,07213.76 GB--tool-call-parser openai
Gemma 4 31B48 GB in Google's 4-bit build, 80 GB in BF16Apache-2.0256K23.27 GB, or 62.55 GB--tool-call-parser gemma4 --chat-template examples/tool_chat_template_gemma4.jinja
Devstral Small 248 GBApache-2.0256k25.79 GB, FP8--tool-call-parser mistral
Qwen3.8-27B48 GB in FP8, 80 GB in BF16Apache-2.0262,14430.87 GB, or 55.56 GB--tool-call-parser qwen3_coder --reasoning-parser qwen3
Qwen3-Coder-30B-A3B-Instruct48 GB in FP8, 80 GB in BF16Apache-2.0262,14431.18 GB, or 61.07 GB--tool-call-parser qwen3_coder
Nanbeige4.3-33B48 GB in FP8 with a short context, 80 GB in BF16Apache-2.0524,28835.52 GB, or 66.24 GB--tool-call-parser qwen3_coder --reasoning-parser qwen3
Qwen3.6-35B-A3B48 GB in FP8Apache-2.0262,14437.46 GB--tool-call-parser qwen3_coder --reasoning-parser qwen3
Muse Glimmer 30B80 to 96 GBApache-2.0, with a usage policy131,07259.55 GB--tool-call-parser muse_glimmer --reasoning-parser muse_glimmer
GLM-4.7-Flash80 to 96 GBMIT202,75262.44 GB--tool-call-parser glm47 --reasoning-parser glm45
gpt-oss-120b80 to 96 GBApache-2.0131,07265.25 GB--tool-call-parser openai
Qwen3-Coder-Next96 GB in FP8Apache-2.0262,14480.38 GB, or 159.36 GB in BF16--tool-call-parser qwen3_coder
Devstral 2141 GB with a short context, 192 GBModified MIT256k128.25 GB, FP8--tool-call-parser mistral
DeepSeek V4 Flash 0731192 GB on paperMIT1M166.89 GB--tokenizer-mode deepseek_v4 --tool-call-parser deepseek_v4
Qwen3.8-Flash-Next2x H200 NVL in FP8Qwen Community License 1.0262,144185.52 GB--tool-call-parser qwen3_coder --reasoning-parser qwen3
DeepSeek V4.1 Flash 10174x H200 NVLMIT1M510.30 GB--tokenizer-mode deepseek_v41 --tool-call-parser deepseek_v41
Kimi K2.7 Code8x H200 NVLModified MIT256K595.18 GB--tool-call-parser kimi_k2 --reasoning-parser kimi_k2
GLM-5.38x H200 NVLGLM-5.3 License1M755.63 GB--tool-call-parser glm47 --reasoning-parser glm47
Kimi K3.1 Pro8x B300Kimi K3.1-Pro License1,048,5761,561.29 GBSee its sizing guide

The flags come from vLLM's parser registry at v0.33.0 and from vLLM's recipe for each model. Where there is no recipe, they come from the maker's own serve command (Devstral, GLM-4.7-Flash, Nanbeige and Qwen3-Coder-Next), or for Qwen3-Coder-30B-A3B-Instruct, whose card has none, from vLLM's tool calling docs. Those docs list the Qwen3-Coder parser as qwen3_xml, and qwen3_coder is a second name for the same parser. The Fits column is our calculation from the file size against 92% of the memory each GPU reports, and open-weight LLMs by GPU memory shows that arithmetic and the licences in full. Five licences in this table carry conditions. Devstral 2's Modified MIT gives no rights to a company with more than $20 million in monthly revenue. Qwen3.8-Flash-Next's licence requires a separate licence from Qwen for any business that sells model access or an AI work assistant, which it defines as a product for AI-assisted coding or office work. Kimi K2.7 Code's Modified MIT asks only that a product with more than 100 million monthly users or $20 million in monthly revenue show the model's name, and the roundup's licence table summarises the Kimi K3.1-Pro and GLM-5.3 licences.

What the public benchmarks say#

The one thing I always check is who ran the benchmark. Artificial Analysis runs Terminal-Bench itself, with the same harness for every model, so its two columns compare like with like. The third column is what each maker published about its own model. All figures were read on 2026-11-12.

ModelTerminal-Bench 2.1, Artificial AnalysisTerminal-Bench 4.0, Artificial AnalysisThe maker's own figure
Qwen3.8-27B, highest effort79.8%5.6%SWE-bench Pro 61.7, Terminal Bench 2.1 73.0
Nanbeige4.3-33BNot listed29.8%SWE-Bench Pro 60.3, Terminal-Bench 2.1 80.9
Muse Glimmer 30B, high effort51.7%0.5%SWE-Bench Verified 76.0, SWE-Bench Pro 51.2
Qwen3.6-35B-A3B, reasoning44.9%0.0%SWE-bench Verified 73.4, SWE-bench Pro 49.5
Gemma 4 31B, reasoning43.4%0.0%LiveCodeBench v6 80.0%
Qwen3-Coder-Next38.2%0.0%Charts only, no figure in text
gpt-oss-120b, high effort26.2%0.0%None on the card
gpt-oss-20b, high effort13.9%0.0%None on the card
Devstral Small 2Not listedNot listedSWE-bench Verified 68.0%, Terminal Bench 2 22.5%
GLM-4.7-FlashNot listedNot listedSWE-bench Verified 59.2
Qwen3-Coder-30B-A3B-InstructNot listedNot listedCharts only, no figure in text
Devstral 2Not listedNot listedSWE-bench Verified 72.2%, Terminal Bench 2 32.6%
Qwen3.8-Flash-Next86.1%25.3%See its card
Kimi K2.7 Code67.4%1.0%Program Bench 53.6
GLM-5.3, max effort83.9%41.9%Terminal Bench 2.1 88.2
DeepSeek V4.1 Flash 1017, max effortNot listed33.8%Terminal-Bench 4.0 42.3
Kimi K3.1 ProNot listed67.2%See its card

Artificial Analysis runs all 89 tasks of Terminal-Bench 2.1 with the Terminus 2 harness and all 66 tasks of Terminal-Bench 4.0 with mini-swe-agent, and reports pass@1 averaged over three runs of each task. The official Terminal-Bench 4.1 leaderboard, updated on 2026-11-11, lists no model that fits one GPU: its open-weight entries are GLM-5.3 at 41.2% and GLM-5.3-Flash at 35.5%, against 65.8% for the top closed model.

What the scores do and do not tell you#

The core problem with coding scores is that the same model gets different numbers from different people. Qwen reports 73.0 for Qwen3.8-27B on Terminal-Bench 2.1, Nanbeige's card lists the same 73.0 for it, and Artificial Analysis gets 79.8%, all three with the Terminus harness. A gap of a few points between two models is inside that noise.

A maker's figure also depends on the harness it chose. DeepSeek's 82.7 for V4 Flash on Terminal-Bench 2.1 was run with its own harness, which it had not released when the card was written. Qwen's SWE-bench Pro figures use the Claude Code harness with a 256K context. None of that is hidden, but it means you cannot line the third column up across rows.

Old benchmarks stop separating models, and new ones are harsh. Six of the eight single-GPU models that Artificial Analysis ran on Terminal-Bench 4.0 score under 1%, including three that pass 40% on version 2.1. SWE-bench Verified has the opposite problem: its own leaderboard has not added an entry since 2026-02-26, so every later figure for it is self-reported. Qwen reports 73.4 on it for Qwen3.6-35B-A3B. SWE-rebench, which draws its problems from a dated window of repositories, has the same model at 24.7% for 2026-05-15 to 2026-07-01, and Qwen3.6-27B at 31.2%.

Three things no leaderboard measures for you. The scores are for the full-precision model or the maker's own format, so a 4-bit build may behave differently. They say nothing about tokens per second on your GPU. And they are not your repository: an hour with your own tasks tells you more than a five-point lead.

Context is the memory cost that decides the GPU#

An agent session fills its context with files, tool output and the model's own reasoning, so the cache matters as much as the weights. Ollama's docs ask for a context of 64k or more for Claude Code and OpenCode. This table is our calculation: the memory left after the weights inside vLLM's default 92%, divided by each model's cache per token.

Model and buildGPULeft after the weightsCache per tokenContext that fits
Qwen3.8-27B, FP848 GB12.6 GiB64 KiBAbout 207,000 tokens
Qwen3.8-27B, BF1696 GB36.2 GiB64 KiBAbout 593,000 tokens
Qwen3.6-35B-A3B, FP848 GB6.5 GiB20 KiBAbout 341,000 tokens
Qwen3-Coder-30B-A3B-Instruct, FP848 GB12.4 GiB96 KiBAbout 135,000 tokens
Devstral Small 2, FP848 GB17.4 GiB160 KiBAbout 114,000 tokens
Nanbeige4.3-33B, FP848 GB8.3 GiB208 KiBAbout 42,000 tokens
Nanbeige4.3-33B, FP896 GB54.9 GiB208 KiBAbout 277,000 tokens
Nanbeige4.3-33B, BF1696 GB26.3 GiB208 KiBAbout 132,000 tokens
Qwen3-Coder-Next, FP896 GB13.1 GiB24 KiBAbout 572,000 tokens
Devstral 2, FP8141 GB9.7 GiB352 KiBAbout 29,000 tokens
Devstral 2, FP82x 96 GB56.5 GiB352 KiBAbout 168,000 tokens

The totals are shared by every request the server is handling, and they are upper bounds: activations, the vision encoder and vLLM's own workspace come out of the same budget. The Qwen models keep a small cache because only one layer in four uses full attention. Dense models such as Devstral and Nanbeige4.3-33B pay for every layer, which is why Devstral 2 fits a 141 GB H200 NVL but leaves it no room to work. --kv-cache-dtype fp8 halves the cache per token, and the KV cache guide covers what that costs. The 48 GB rows assume ECC is on. vLLM's recipe lists Qwen's FP8 build for Hopper and Blackwell GPUs, so on an Ada or Ampere 48 GB card treat it as untested.

What I would run on 48 GB and on 96 GB#

On a 48 GB card I would run Qwen3.8-27B in FP8 with --max-model-len 131072. One full context of that length takes 8 GiB of the 12.6 GiB that is left, so it is a one-developer server. If the FP8 build gives trouble in vLLM on that card, Ollama's qwen3.8:27b tag is an 18 GB quantized build of the same model.

On a 96 GB RTX PRO 6000 I would run Qwen3.8-27B in BF16, with room for two full 262,144-token sessions. vLLM's recipe marks the RTX PRO 6000 as verified hardware for this model and carries a BF16 profile for it. Then I would test Nanbeige4.3-33B in FP8 against it on my own repository, because it scores 29.8% where Qwen3.8-27B scores 5.6% on Terminal-Bench 4.0. It is a new model from a smaller lab, its repository is under three weeks old, and it has no vLLM recipe yet, so I would not start there.

GPUMemoryFromAvailable now
RTX A600048 GB$0.48/GPU-hrYes
L40S48 GB$1.09/GPU-hrYes
RTX PRO 6000 Blackwell96 GB$2.16/GPU-hrYes
H200 NVL-Not listedNo

Prices checked 14 Nov 2026, 09:38 UTC

Running a coding agent against your own GPU has the serve command and the settings for Claude Code, OpenCode and Qwen Code. Past one GPU, the models at the bottom of the first table need four or eight GPUs: two H200 NVLs or four RTX PRO 6000s are on-demand configurations when the catalog lists them, and anything larger is reserved capacity that we order and build to your spec. Send a capacity brief with the model and the number of developers.

Questions about open-weight coding models#

What is the best local LLM for coding?

On one GPU, by independent scores, it is Qwen3.8-27B: 79.8% on Terminal-Bench 2.1 in Artificial Analysis's run, Apache-2.0, and small enough in FP8 for a 48 GB card. Nanbeige4.3-33B is the one to watch, with 29.8% on Terminal-Bench 4.0.

What is the best Ollama model for coding?

Ollama's library has qwen3.8:27b at 18 GB, qwen3-coder:30b at 19 GB, devstral-small-2:24b at 15 GB and qwen3.6:35b at 23 GB, all of which fit a 48 GB card. I would start with qwen3.8:27b for the reasons above, and set the context to 64k or more: Ollama context length shows how.

Is Qwen3-Coder still worth running?

Less than it was. Qwen3-Coder-Next scores 38.2% on Terminal-Bench 2.1 and 0.0% on 4.0 in Artificial Analysis's runs, against 79.8% and 5.6% for Qwen3.8-27B, and it needs a 96 GB card where Qwen3.8-27B fits 48 GB. Qwen3-Coder-30B-A3B-Instruct is the smaller one people search for, at 31.18 GB in FP8, and I found no independent score for it on the leaderboards above.

Can I use Devstral 2 commercially?

Only if your company's monthly revenue is $20 million or less. Above that, Mistral's Modified MIT licence gives you no rights and you need a commercial licence from Mistral. Devstral Small 2 is Apache-2.0 with no such limit.

How much context does a coding agent need?

Ollama's integration docs ask for 64k or more for Claude Code and OpenCode. I would plan for 131,072 tokens per developer, which costs 8 GiB of cache on Qwen3.8-27B and about 26 GiB on Nanbeige4.3-33B.


My decision rule: choose by an independent score on a current benchmark, then check that the context you need fits beside the weights, then read the licence. Today that gives Qwen3.8-27B on either card, with Nanbeige4.3-33B as the model to test against it on 96 GB. The LLM VRAM calculator checks the fit for your own context and number of developers.

Launch an RTX PRO 6000 Blackwell Launch an RTX A6000

Keep building

Choose your next step.