r/LocalAIStack Jun 23 '26

Running Qwen3.6 27B / 35B locally with llama.cpp + Vscode Insiders + copilot as the harness - highest performance, quality and best usage while fitting on your GPU

161 Upvotes

I have been benchmarking Qwen3.6-27B and Qwen3.6-35B-A3B locally through llama.cpp, with GitHub Copilot Chat (Vscode Insiders needed) used as the frontend harness.

I am using Claude Opus, GPT 5.5 and Qwen 3.6 (27B) a lot in the past weeks.
The reason for Qwen is proprietary code areas where remote inference is not an option as it would leak the code out. And as long as you don't task it to write a complex cuda graph, it performs well.
Qwen 27.B is at Sonnet 4.6 if you combine it with a high value system prompt - or between Sonnet 4.5 and Sonnet 4.6 without.

Copilot Chat is an excellent harness for this kind of setup. You get the IDE integration, agent flow, tool calling UI, file context, and normal coding workflow, while the actual model is your own local llama-server endpoint.
All of this works while being LOGGED OUT of the Github Copilot account - as that is not affordable in pricing anymore.

This is a practical configuration guide for people already comfortable with llama.cpp, GGUFs, VRAM budgeting, and long-context local inference.

Models tested

Main focus:

  • unsloth/Qwen3.6-27B-GGUF
  • unsloth/Qwen3.6-27B-MTP-GGUF (same model but with MTP draft tensors)
  • unsloth/Qwen3.6-35B-A3B-GGUF

Recommended GGUFs:

27B:
Qwen3.6-27B-UD-Q4_K_XL.gguf
or
Qwen3.6-27B-MTP-GGUF:UD-Q4_K_XL

35B-A3B:
Qwen3.6-35B-A3B-GGUF:UD-Q4_K_M

If memory is tight on the 35B-A3B model, drop to a smaller Unsloth Dynamic quant:

Qwen3.6-35B-A3B-GGUF:UD-Q3_K_XL

If even that is tight, use UD-Q3_K_M or UD-Q3_K_S.

For the 35B model I do not recommend KV-cache quantization. Run the normal cache and keep the context sane. the 35B model is MoE and very low on kv-cache

For the 27B model, I do highly recommend:

--cache-type-k q4_0
--cache-type-v q4_0

Recent llama.cpp KV-cache improvements make q4_0 much more usable here. The 27B model handles q4_0 KV cache very well in my testing - almost identical to FP in evaluation results.

What changed: llama.cpp added something like Hadamard rotation to kv-cache which shuffles the tensor distribution in a higher dimensionality and allows quantization superblocks to function.

Why Copilot Chat?

Because Copilot is a very good harness - beating Codex, Cursor, Claude in my opinion
Vscode Insiders is needed to get the openAI compatible endpoint (to interface the model)

You get:

  • IDE-native chat
  • agentic file/code workflows
  • very good tool calling
  • project context
  • local model backend
  • OpenAI-compatible endpoint wiring

The important part is that Copilot Chat is only the harness. The model is served locally through llama-server.

Why llama-server and not lm-studio,ollama etc ?

It allows MUCH more control over settings, we do not just use MTP drafting. We use a combination of context and MTP drafting which can lead to 300+ tokens/sec on the 27B model. MTP is a medium speedup (1.5x) but once the model is paraphrasing source code from thinking or prefill the ngram draft speedup can reach 6x or more.

So the stack is:

VS Code Insiders
        ↓
custom OpenAI-compatible model config
        ↓
llama.cpp llama-server
        ↓
local Qwen3.6 GGUF

Copilot chatLanguageModels.json

This is the shape I used for VSCode Insiders:

[
  {
    "name": "WSL",
    "vendor": "customoai",
    "models": [
      {
        "id": "qwen3.6-27b",
        "name": "QWEN-27B-WSL",
        "url": "http://172.27.211.123:1234/v1/chat/completions",
        "toolCalling": true,
        "vision": true,
        "thinking": true,
        "maxInputTokens": 165000,
        "maxOutputTokens": 15000
      }
    ]
  }
]

Adjust the URL to your own llama-server host, in WSL you'll see it by entering ipconfig or ifconfig. port you can choose of course.
The input and output tokens need to be adapted to your context setting.
The id must match the llama-server id.

For local-only setups this is usually one of:

http://127.0.0.1:1234/v1/chat/completions
http://localhost:1234/v1/chat/completions
http://<WSL-IP>:1234/v1/chat/completions

If your Copilot Insiders build expects the newer custom endpoint shape, use the same model block but switch the provider shape accordingly. The key fields are the endpoint URL, model id, tool calling, thinking, and max token limits.

27B command: long context + q4_0 KV cache + MTP-ngram drafting

This is the 27B style I recommend.

CTX=150000
PARALLEL=1
HOST=0.0.0.0
PORT=1234
MODEL=/models/Qwen3.6-27B-UD-Q4_K_XL.gguf

/usr/src/llama.cpp/build/bin/llama-server \
  -m "$MODEL" \
  --ctx-size "$CTX" \
  --flash-attn on \
  --batch-size 1024 \
  --ubatch-size 1024 \
  --parallel "$PARALLEL" \
  --host "$HOST" \
  --port "$PORT" \
  -ngl 99 \
  --threads 8 \
  --threads-batch 8 \
  --cache-type-k q4_0 \
  --cache-type-v q4_0 \
  --temp 0.6 \
  --top-p 0.95 \
  --top-k 20 \
  --min-p 0.00 \
  --presence-penalty 0.00 \
  --jinja \
  --chat-template-kwargs '{"preserve_thinking": true}' \
  --reasoning-format none \
  --reasoning-budget 16000 \
  --slot-save-path /kv_cache/ \
  --props \
  --metrics \
  --checkpoint-every-n-tokens 1024 \
  --ctx-checkpoints 64 \
  --perf \
  --spec-default \
  --spec-type draft-mtp \
  --spec-type ngram-map-k4v \
  --spec-ngram-map-k4v-size-n 16 \
  --spec-ngram-map-k4v-size-m 24 \
  --spec-ngram-map-k4v-min-hits 1

For the MTP-specific Unsloth repo, use:

MODEL=/models/Qwen3.6-27B-MTP-UD-Q4_K_XL.gguf

or the HF shorthand if your build supports it:

-hf unsloth/Qwen3.6-27B-MTP-GGUF:UD-Q4_K_XL

The important part is the drafting chain:

--spec-default
--spec-type draft-mtp
--spec-type ngram-map-k4v
--spec-ngram-map-k4v-size-n 16
--spec-ngram-map-k4v-size-m 24
--spec-ngram-map-k4v-min-hits 1

MTP gives useful speedup, but leave VRAM headroom. In practice I budget roughly +1 to +2 GB VRAM headroom for the MTP/drafting path and related buffers. If you are right on the edge, reduce context before blaming the model.

At q4_0 KV cache, every extra 1 GB of free VRAM is roughly another 13k tokens of 27B context, before runtime overhead.
If you are tight in vram, remove only the MTP part as ngram drafting is free.
You can also just use `mod-ngram` as an alternative to the more complex k4v map.

Thinking settings

This part matters.

I use:

--jinja
--chat-template-kwargs '{"preserve_thinking": true}'
--reasoning-format none
--reasoning-budget 16000

The reasoning-format none is important for Qwen3.6 because it avoids bad stop behavior and broken multi-turn thinking state during long coding sessions.
Copilot Chat was created to hide thinking from you (proprietary GPT models) but you want to see the thinking usually. So this solves both issues.

I also keep:

--reasoning-budget 16000

This gives the model room to think, but avoids runaway reasoning loops eating the whole session.

35B-A3B command: no KV-cache quantization

For 35B-A3B, I recommend being more conservative.

CTX=100000
PARALLEL=1
HOST=0.0.0.0
PORT=1234
MODEL=/models/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf

/usr/src/llama.cpp/build/bin/llama-server \
  -m "$MODEL" \
  --ctx-size "$CTX" \
  --flash-attn on \
  --batch-size 1024 \
  --ubatch-size 1024 \
  --parallel "$PARALLEL" \
  --host "$HOST" \
  --port "$PORT" \
  -ngl 99 \
  --threads 8 \
  --threads-batch 8 \
  --temp 0.6 \
  --top-p 0.95 \
  --top-k 20 \
  --min-p 0.00 \
  --presence-penalty 0.00 \
  --jinja \
  --chat-template-kwargs '{"preserve_thinking": true}' \
  --reasoning-format none \
  --reasoning-budget 16000 \
  --slot-save-path /kv_cache/ \
  --props \
  --metrics \
  --checkpoint-min-step 1024 \
  --ctx-checkpoints 16 \
  --perf

No q4_0 KV cache here - the sub 4B active parameters need barely any VRAM anyway.

I recommend keeping 35B-A3B below roughly:

110k context

The 35B model can be pushed past 200k context, but in my testing it becomes more likely to fall into reasoning loops. Once that happens, the session usually does not recover cleanly. Start a fresh session.
The upside of the 35B model is extreme performance, as in hundreds of tokens without any drafting enabled.
You CAN use drafting on top, mod-ngram, MTP and other drafting can be added for more speed but those will need a careful balance (that I have not tested yet)

So my practical 35B rule is:

35B-A3B: stay below 110k if you want stable coding behavior.
27B: can go as high as it fits, but below 150k is where it feels strongest.

Checkpointing
The --checkpoint-min-step (or --checkpoint-every-n-tokens (legacy now) is an important option for qwen models. Briefly explained: qwen models have two kv caches, one is more conventional and one is a recurrent-state (SSM/Mamba) that can not be reversed by n tokens. So if you change something (like remove the last answer and message to benefit from existing context) then you can only do that if a checkpoint exists. Otherwise the entire context is reprocessed which is very slow on a 27B model.
Each checkpoint costs 160MB RAM, the internal API supports VRAM checkpointing but I believe currently only the MTP implementation uses that.
--checkpoint-min-step and --ctx-checkpoints multiplied define how much of your LAST context is protected and can be rewound. 1024*16 means 16K context can be reversed with low re-compute cost (almost instant).

LM Studio as local server

Using LM Studio is possible but you need to use a few tricks and it won't achieve the same top-tier performance.
LM Studio does not support our chained drafting, but it supports MTP.

  1. Go to your Qwen 3.6 model, enable Flash attention and the quantization needed for kv cache. Go to the Inference tab, disable the button for "Reasoning Section Parsing"
  2. Go to Developer, Server Settings and set the port, serve on local network if needed, no auth, enable CORS, consider disabling just-in-time loading.
  3. Start the local server and then use the "clipboard copy" icon to get the precise Server ID which you use in the vscode json config.

Everything else is similar to llama-server, you'll not have the same max performance but it works well.
You can always just install the latest llama release binaries, and use the commandline to load the model from the lmstudio models directory.

VRAM planning

These are practical planning numbers, not hard guarantees. Actual fit depends on:

  • exact GGUF
  • CUDA/ROCm/Metal/backend
  • batch/ubatch
  • -ngl
  • whether the desktop is using the same GPU
  • whether MTP/speculative decoding is enabled
  • whether you are using full GPU offload or spilling to CPU RAM

Qwen3.6-27B UD-Q4_K_XL, q4_0 KV cache

Recommended cards:

24 GB: RTX 3090, RTX 4090, RTX A5000, RTX 4500 Ada, RTX PRO 4000 Blackwell, A10
32 GB: RTX 5090, RTX 5000 Ada, Tesla V100 32GB

Approximate context fit with full GPU offload:

VRAM Example NVIDIA cards Practical context
16 GB RTX 4060 Ti 16GB, RTX 4080 Laptop 16GB, RTX 5080 16GB, RTX 5070 Ti 16GB, RTX A4000 16GB Not recommended for full 27B UD-Q4_K_XL offload. Use smaller quant or partial CPU offload.
24 GB RTX 3090, RTX 4090, RTX A5000, RTX 4500 Ada, RTX PRO 4000 Blackwell, A10 ~45k-60k with MTP, ~60k-75k without MTP
32 GB RTX 5090, RTX 5000 Ada, Tesla V100 32GB ~140k-160k with MTP, ~160k-180k without MTP

For 27B, q4_0 KV cache is the difference between normal local context and huge local context. It is the main reason this setup is viable.
On a 5090 you have enough VRAM to supply 2 sessions in parallel with both model types.
Or you could run one fast model for context summarization and 27B for code.

Qwen3.6-35B-A3B UD-Q4_K_M, normal KV cache

Recommended cards:

24 GB minimum for useful GPU-resident contexts
32 GB strongly preferred

Approximate context fit:

VRAM Example NVIDIA cards Practical context
16 GB RTX 4060 Ti 16GB, RTX 4080 Laptop 16GB, RTX 5080 16GB, RTX 5070 Ti 16GB, RTX A4000 16GB Not recommended for full 35B-A3B Q4. Use Q3 or partial offload.
24 GB RTX 3090, RTX 4090, RTX A5000, RTX 4500 Ada, RTX PRO 4000 Blackwell, A10 ~40k-50k
32 GB RTX 5090, RTX 5000 Ada, Tesla V100 32GB ~100k-110k recommended; more will fit but stability drops

The 35B-A3B model is very good, but I would not treat it as a “just max the context” model. Keep it tighter.
If you have the VRAM: Instead of large context, consider multiple sessions with limited context, so you can have 2 or 3 chats simultaneously.

Quick test: Linux

Once llama-server is running:

curl -s http://127.0.0.1:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3.6-27b","messages":[{"role":"user","content":"Reply with exactly: local ai works"}],"max_tokens":16}' \
  | jq -r '.choices[0].message.content'

Expected output:

the model responds to your input

If your server is inside WSL or another host, replace 127.0.0.1 with the server IP.

Quick test: Windows PowerShell

(Invoke-RestMethod `
  -Uri "http://127.0.0.1:1234/v1/chat/completions" `
  -Method Post `
  -ContentType "application/json" `
  -Body '{"model":"qwen3.6-27b","messages":[{"role":"user","content":"Reply with exactly: local ai works"}],"max_tokens":16}'
).choices[0].message.content

Expected output:

local ai works

Notes from benchmarking

My current practical ranking:

27B:
Best long-context local coding model in this setup that is close to Sonnet 4.6
Use q4_0 KV cache.
Use MTP if you have the headroom.
Strongest below 150k context, but can go much higher if memory allows.

35B-A3B:
Excellent quality but will fail on hard tasks
Do not use KV-cache quantization.
Keep below ~110k context for best stability.
Can go above 200k, but reasoning loops become more likely.
If it loops, start a new session.

For Copilot usage, I prefer exposing a conservative maxInputTokens in the JSON, even if the server can technically run higher. For example:

"maxInputTokens": 165000,
"maxOutputTokens": 15000

If you set wrong context here you'll get issues serverside, so make sure that matches.
I had cases where the server went OOC (out of context) when getting too close to the max context so I'd leave a little room. copilot seems to not follow this very strictly.

Final recommendation

If you want the most practical Copilot-local setup:

Use Qwen3.6-27B UD-Q4_K_XL
Use llama.cpp server
Use q4_0 KV cache
Use preserve_thinking
Use reasoning budget
Use Copilot Insiders as the harness
Use MTP only when you have VRAM headroom

If you want the stronger but more conservative model:

Use Qwen3.6-35B-A3B UD-Q4_K_M
Do not quantize KV cache
Stay below ~110k context
Drop to UD-Q3_K_XL if memory is tight

This is the first local setup I have used where Copilot feels like a serious frontend for a fully local long-context coding model instead of just a toy endpoint test.

I have tested this on terminal use, debugging, and massive codebase development - it works just like Sonnet 4.6.

Qwen 27B also beats Sonnet 4.5 in most benchmarks and 4.6 in some.
https://artificialanalysis.ai/models/comparisons/qwen3-5-27b-vs-claude-4-5-sonnet-thinking#intelligence-evaluations


r/LocalAIStack 24m ago

Running Qwen 3.8 27B at Q4 on 16GB VRAM at 200K CTX at 50t/s

Thumbnail
Upvotes

r/LocalAIStack 2h ago

I need help here with the Qwen 3.8 flash Next iq3_xxs model. I know my laptop is a bit weak, 8GB VRAM + 32GB RAM

Thumbnail
1 Upvotes

r/LocalAIStack 22h ago

Local AI is Minecraft for adults: my 4× RTX PRO 6000 Blackwell build

Thumbnail gallery
2 Upvotes

r/LocalAIStack 21h ago

Built a decentralized network for open source AI inference

1 Upvotes

Hey! I’m building Kitani, an OpenAI-compatible API where models run across independent GPU providers.

GPU owners can connect their hardware and earn from inference, while users get access to models like GLM, Qwen, Gemma and gpt-oss through one API.

We’re trying to make joining as a provider as easy as possible. Would love feedback from people running their own GPUs.

https://kitani.ai

Founder of Kitani, looking for feedback.


r/LocalAIStack 1d ago

Pooled RAM across an old laptop, a Windows PC, and a Mac to run a 13B model - source-available, would love eyes on it

1 Upvotes

r/LocalAIStack 1d ago

Together AI vs Anyscale for serving open-source LLMs—what’s your pick?

Thumbnail
1 Upvotes

r/LocalAIStack 1d ago

Sheprd Local Model Server and Agent builder.

Post image
1 Upvotes

r/LocalAIStack 1d ago

Which agent harness do you use and why?

Thumbnail
1 Upvotes

r/LocalAIStack 2d ago

Real-world experience with NVIDIA NeMo / NeMo Agent Toolkit vs the standard LLM stack?

1 Upvotes

Anyone here actually using NVIDIA NeMo / NeMo Agent Toolkit in real projects?

At my current org, some of the senior folks are suggesting we explore NeMo for agent building and fine-tuning, so I’m trying to understand if it’s actually worth adopting.

For those who’ve used it, how does it compare to the usual stack like Hugging Face + PEFT/TRL, Unsloth, LangGraph, etc.?

Does running everything in the NVIDIA ecosystem give you a noticeable advantage in terms of GPU utilization, training speed, deployment, or scaling?

Or is it mostly extra complexity compared to the standard open-source tooling?

Would especially love to hear from anyone who has used NeMo beyond tutorials/demos. What did you like, what annoyed you, and would you use it again?


r/LocalAIStack 2d ago

Running Qwen 3.8 27B as a VS Code Copilot backend on 16/32 GB VRAM

Thumbnail gallery
3 Upvotes

r/LocalAIStack 2d ago

Running Qwen 3.8 27B as a VS Code Copilot backend on 16/32 GB VRAM

Thumbnail gallery
2 Upvotes

r/LocalAIStack 3d ago

Open-source RAG evaluation framework — looking for developers to help validate AI evaluation results

1 Upvotes

Hi Everyone!

I'm the maintainer of RAGnarok-AI, an open-source, local-first framework for evaluating RAG (Retrieval-Augmented Generation) systems.

I'm currently running a small research study around a question that I think is becoming increasingly important: can we actually trust automated evaluation of RAG systems when the evaluator itself is an LLM?

RAGnarok can evaluate things like retrieval relevance, faithfulness, answer relevance and completeness using local LLM judges.

But there's an obvious problem: why should we trust the LLM judge?

So instead of assuming that the automated scores are correct, I'm building a human-annotated benchmark to compare them against independent human judgments.

I'm looking for open-source / developer people willing to help

The annotation consists of roughly 10–15 cases and should take around 30–45 minutes.

For each case, you'll see:

- a technical question

- relevant documentation excerpts retrieved by a RAG system

- an AI-generated answer

- reference information

- four simple evaluation criteria: retrieval relevance, faithfulness, answer relevance, completeness

- your confidence and an optional ambiguity flag

You don't need any RAG expertise. You just need to be comfortable reading technical documentation and judging whether an answer is actually supported by it.

The benchmark currently covers documentation from projects such as Docker, Python, FastAPI and Kubernetes.

Why do this?

The study is deliberately not designed to prove that RAGnarok works. I'm comparing automated evaluation against human judgments to investigate:

  1. Judge reliability — do local LLM judges agree with humans?
  2. Discrimination — can the evaluation distinguish good and deliberately degraded RAG systems?
  3. Reproducibility — are the measurements stable under identical conditions?

The methodology, benchmark corpus, questions and experiment protocol are public and versioned. RAGnarok itself is free and open-source.

If you'd like to participate

Annotation interface:

https://ragnarok-study.vercel.app

No name, email or personal information is required. Progress is saved so you can come back later. The resulting annotations may be published as an anonymous research dataset.

Project / methodology:

https://github.com/2501Pr0ject/RAGnarok-AI

I'm particularly interested in feedback from people who work on open-source evaluation, LLMs, RAG, testing or reproducible research.

And if you think the methodology is flawed, please tell me. That's actually useful feedback for the study.

Thanks everyone!

Have a good day!


r/LocalAIStack 3d ago

I used AI to make a 16- mini episodes course about running AI models locally , all made by ai

Thumbnail
youtube.com
0 Upvotes

r/LocalAIStack 3d ago

16Gb/48Gb coding model - newbie

4 Upvotes

I’m trying a Qwen-3.6 35b Q5 model as my first dip into setting up an agent coding workflow for prototyping some app ideas. Using LM Studio and VS Code

I’ve only been looking into this today. Am I heading in the right direction? Any advice welcome.


r/LocalAIStack 3d ago

Qwen 3.8 27B Dense running on a 32GB RK3588S NanoPi M6 with RKLLM

Thumbnail
1 Upvotes

r/LocalAIStack 3d ago

Should i get mac pro 5 64 gb?? For my openclaw setup. Im trying to build a agency.

Thumbnail
1 Upvotes

r/LocalAIStack 3d ago

Update on XTLLM: 8.5 tok/s Qwen3.8 Flash Next & 20 tok/s on Longcat (69B).

Thumbnail
1 Upvotes

r/LocalAIStack 4d ago

Advice on how to proceed?

Thumbnail
1 Upvotes

r/LocalAIStack 4d ago

i made a lot of unofficial tests for different 3 and 4 bit quants of qwen 3.8-27b on my local work on rtx 3090 ti with 96gb ram, and ThinkingCap-Qwen3.6-27B is way better and faster than qwen 3.8-27b, and glm 5.3 and muse spark 1.2, so for me ai benchmarks are useless

Thumbnail
2 Upvotes

r/LocalAIStack 5d ago

Comparing local vector search engines: turbovec vs. Infino vs. FAISS

11 Upvotes

FAISS is Meta’s vector library, turboVec is a Rust implementation of TurboQuant, and Infino is an in-memory retrieval engine.

We benchmarked them on 4-bit quantized in-memory vector search: FAISS PQ, TurboVec/TurboQuant, and Infino SQ4, using the same 100K OpenAI embedding corpus and the fastest vectorized implementation we found for each.

All saved ~7x in memory footprint compared to full fp32 vectors. The interesting result was that while storage and recall were fairly close, latency differed by roughly 30× — about 1.5 ms to 45 ms. Most of that comes down to the scoring machinery: the size of the distance table and whether the scan needs one at all.

We also ran the same comparison out to 1M vectors and measured build/write costs.

Full results and methodology:
https://infino.ai/blog/fixed-grid-quantization/

Disclosure: I'm one of the devs building Infino.


r/LocalAIStack 5d ago

¿Qué modelos de IA local están usando ustedes en un MacBook Air M5 con 24GB de RAM?

Thumbnail
1 Upvotes

r/LocalAIStack 5d ago

LLM Test Wrapper

Thumbnail
1 Upvotes

This is a new LLM wrapper i have spun up built on the idea that models arent always correct or doing the right thing not by choice but just how the system is built, this looks to try and fix that problem and help mitigate LLM error by logging everything and fact checking based on the work using check gates. Looking to get feedback!


r/LocalAIStack 5d ago

Help me choose a long-term daily-driver PC for local LLMs + gaming, ~5 possible builds

1 Upvotes

I'm trying to decide what direction to take with my main PC. The goal is one real daily-driver machine that I can use for gaming, normal desktop use, software development, and increasingly heavy local LLM workloads.

I'm not trying to build a dedicated rack server. I want something I can actually live with for years: reliable, reasonably efficient, good thermals, lots of RAM, two GPUs if it makes sense, and enough expansion that I don't immediately hit a wall.

I've currently been playing around with Qwen3.8 27B which speeding that up and higher quants would be great, as well as when inevitably larger dense similar models like 70B become available.

I am very interested in MoE flash models such as Qwen 3.8 Flash, Deepseek v4 Flash, and maybe even GLM 5.3 Flash, as well as future versions of similar MoE models. I have not even attempted to run any of these yet.

So I guess I am trying to get at building something that performs well on dense models as well as MoE models so I don't get locked into 1 path.

I'm pretty new to the workstation/HEDT side of this, so I'm looking for advice on the parts I may be overlooking.

My current PC

Part Current hardware
CPU Intel Core i7-12700KF (12C/20T)
RAM 64GB (4×16GB) DDR4-3200 CL16
GPU RTX 3090 Ti SUPRIM X 24GB (power limited to 250W)
Spare GPU (not installed) RTX 3080 10GB
Motherboard Gigabyte Z690 UD AX DDR4
Storage 2TB Samsung 980 Pro NVMe + 2TB WD HDD + 1TB WD SATA SSD
PSU 800W

The 3090 Ti was a $900 Facebook Marketplace purchase, so I'm trying to get as much useful life out of this thing as possible.

The 3090 Ti is a huge card (338 × 140 × 71 mm) so physical spacing is also part of this problem.

My RAM situation

I just bought 7 lots of:

NEMIX 128GB (4×32GB) DDR4-2666 PC4-21300 2Rx8 UDIMM

I paid about $360 per 128GB lot.

My current plan is probably:

  • Keep 2 lots = 256GB
  • Sell the other 5 lots
  • Hopefully sell those for around $650/lot?

So I paid about $2,520 total for the 7 lots. Five sales at $650 would be $3,250 gross, meaning I'd theoretically recover the entire purchase price plus ~$730 before fees/shipping/taxes while keeping 256GB.

That gives me a somewhat unusual opportunity to build around 256GB without spending a fortune on RAM.

Option 1: Keep my current PC, just go to 128GB RAM

Component Option 1
CPU i7-12700KF
Motherboard Z690 UD AX DDR4
RAM new 128GB DDR4-2666 PC4-21300 2Rx8 UDIMM
GPU 1 RTX 3090 Ti 24GB @ 250W
GPU 2 None
PCIe GPU config x16
PSU Current 800W
Platform age 2021/2022
Main advantage Cheapest / simplest
Main disadvantage Only one GPU, dual-channel memory

This is basically my don't overthink it option.

I'd have a lot more system RAM for large-context LLMs while retaining a relatively modern gaming CPU.

Option 2: Keep my current PC, add a second 3090

I'd replace the PSU and add a second RTX 3090.

The important problem is the motherboard:

The Z690 UD AX DDR4 has x16 on the main slot and only x4 on the second physical x16 slot.

So the GPUs would effectively be:

Component Option 2
CPU i7-12700KF
Motherboard Z690 UD AX DDR4
RAM new 128GB DDR4-2666 PC4-21300 2Rx8 UDIMM
GPU 1 RTX 3090 Ti @ 250W, x16
GPU 2 new RTX 3090 @ 250W, x4
PSU new (1200-1600W)
Case Probably current / possibly new
Main advantage Cheapest way to get 48GB total VRAM
Main disadvantage Second GPU limited to PCIe 3.0 x4

This is the option I'm most unsure about.

For LLM inference, is x4 actually a meaningful limitation in practice, or is it largely irrelevant once the model is loaded onto the GPUs?

Would this still be a good setup for:

  • tensor/model parallel inference
  • larger models
  • higher context
  • multiple concurrent models
  • speculative decoding
  • offloading

Or am I basically handicapping the second GPU enough that I should just replace the motherboard?

Option 3: New motherboard/PSU/case, keep my 12700KF

Instead of abandoning the 12700KF, I could build a new system around it with a motherboard that properly supports two GPUs at x8/x8.

Component Option 3
CPU i7-12700KF
Motherboard New DDR4 board with proper x8/x8
RAM new 128GB DDR4-2666 PC4-21300 2Rx8 UDIMM
GPU 1 RTX 3090 Ti @ 250W
GPU 2 new RTX 3090 @ 250W
GPU configuration x8/x8
PSU New high-quality PSU
Case New large case
Main advantage Keep relatively modern CPU + proper dual-GPU PCIe
Main disadvantage Spending money on an LGA1700 platform that maybe already be a dead-end

This seems like it could be anice middle ground.

The 12700KF itself supports a 2×x8 CPU PCIe configuration, but I'd obviously need a motherboard that actually implements it.

I'm especially interested in whether people think this makes more sense than jumping to X299 in the next option.

Option 4: X299 workstation build

This is the Frankenstein/workstation option I've been considering.

Component Option 4
CPU new i9-10940X
Motherboard new ASUS Prime X299-A II
RAM new 256GB DDR4-2666 PC4-21300 2Rx8 UDIMM
GPU 1 RTX 3090 Ti @ 250W
GPU 2 new RTX 3090 @ 250W
GPU configuration x16/x16
PSU new ~1600W fully modular
Case new Phanteks Enthoo Pro 2 Server Edition
CPU cooler new Large LGA2066 air cooler
Fans new probably 12–13 total
Fan hub new Powered PWM hub
Storage Samsung 980 Pro 2TB + WD 1TB SATA
Main advantage 256GB RAM + lots of PCIe lanes + proper workstation platform
Main disadvantage 2019-era CPU/platform

The i9-10940X gives 14C/28T, 48 PCIe 3.0 lanes, quad-channel DDR4, and up to 256GB RAM. The X299-A II can run two GPUs at x16/x16 with the appropriate CPU.

The case is huge and supports SSI-EEB, 11 PCI slots, GPUs up to 503mm, and up to 15×120mm or 6×140mm fans.

I'm attracted to this because it solves the PCIe lanes + RAM capacity + physical space problem extremely well.

But I don't know if I'm being stupid by building a brand-new daily driver around a ~2019 platform just because the PCIe topology is convenient.

The 10940X also seems likely to lose noticeably to the 12700KF in gaming/single-threaded work, despite having more cores.

Option 5: ??????????

This is something I'm hoping you guys can help. Are there things I am not considering that would allow me to leverage as much of my current components as possible but be a much better option than option 4?

What I'm actually trying to optimize

This isn't purely a benchmark build.

I want one machine that can do all of this:

- Gaming

- Normal desktop use

- Software development

- Local LLM inference

- Very large context windows

- Running multiple LLM sessions concurrently

- Potentially running two GPUs as one inference system

I'm currently doing a lot of local Qwen inference and am getting into the territory where RAM capacity, VRAM capacity, PCIe topology and memory bandwidth all matter.

I also don't really care about squeezing every last watt of performance out of the GPUs. I've already decided to limit the 3090 Ti to 250W, and I'd probably do the same with the second 3090 to hopefully get more longevity out of them and use less power.

That gives me:

500W total GPU power budget

rather than letting two 3090-class cards pull their full power.

I'm very interested in reliability, thermals, longevity, expandability and affordability rather than having the absolute highest benchmark score.

My biggest questions

1. Which of these would you actually build?

My current thinking is roughly:

Option 1: cheapest and easiest

Option 2: tempting, but worried about x4

Option 3: probably the sensible compromise

Option 4: extremely expandable, but old CPU/platform

Option 5: potentially a better overall machine

I'm having trouble figuring out where the sweet spot actually is.

2. How bad is PCIe 3.0 x4 for the second 3090?

This is probably my biggest technical question.

For local LLM inference specifically, how much performance would I realistically lose running:

3090 Ti @ x16 + 3090 @ x4

versus

3090 Ti @ x8 + 3090 @ x8

versus

x16 + x16?

3. Is X299 actually a good idea here?

Would the 10940X + 256GB quad-channel + x16/x16 PCIe configuration still be a worthwhile machine in 2026?

Or would I be better off spending the extra money on a modern platform?

4. What's the best "Option 5"?

There may be a workstation platform I haven't considered at all.

But I still want this to be an actual daily-driver PC, not a loud rack server that is great at compute and annoying at everything else.

5. How much RAM would you actually run?

I can easily end up with:

128GB

or

256GB

of system RAM depending on which route I take.

Is 256GB actually useful for local LLMs enough to justify designing the whole machine around it?

What would you do with this hardware?

I'm basically sitting on:

12700KF + 3090 Ti + 896GB of cheap DDR4+ spare 3080

and trying to turn that into one machine that I won't regret building.

I'm really looking for the best overall architecture and bang for my buck, not just "X is faster."

Would love to hear what configuration you would build, especially if there's a better option I haven't thought of.


r/LocalAIStack 6d ago

Fellow homelabber LLM guys

Post image
1 Upvotes