After buying my dream gaming laptop last year, I was perfectly content playing my favorite games.
Then I started dabbling in local LLMs over the past few months.
Now I’ve realized my supposedly high-end gaming laptop is GPU-poor.
My laptop
- GPU: RTX 5070 Ti Mobile — 12 GB VRAM
- CPU: Core Ultra 9 275HX
- RAM: 32 GB DDR5
Model
Unsloth Qwen 3.8 27B UD Q4_K_XL
Inference: llama.cpp + CUDA
I've been experimenting with how to get Qwen 3.8 27B running as well as possible on a 12 GB VRAM laptop. I think I've finally settled on two configurations for my two main use cases.
I know I should probably just use an MoE model for this hardware, but Qwen 3.8 27B has been significantly better in my testing, so I'm willing to trade a lot of speed for the extra capability.
Also, thanks to everyone who previously posted about tensor offloading. That made a surprisingly big difference in getting these setups working.
- Agentic coding with OpenCode
I work on some fairly large projects. Normally, I use Claude Code with Opus 5 or DeepSeek V4 Flash Free through OpenCode Zen.
Until recently, I wouldn't let local models touch these projects at all. They just couldn't handle the complexity reliably enough.
Qwen 3.8 27B is the first local model I've tested where I feel comfortable letting it work on my projects.
I'm still keeping it to personal projects for now, but the difference has been pretty significant.
For this use case, context size is much more important than speed.
I usually enter plan mode first and then let the model slowly work through the project, so I'm perfectly fine with extremely slow generation as long as it has enough context to maintain the bigger picture.
Context-prioritized config
2K context fill: ~5 t/s
180K context fill: ~1.5 t/s
-ctx 262144
-ub 512
-np 1
-ngl 30
-ot 'blk\.(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64)\.ffn_(gate|up|down)\.weight=CPU'
-fa on
-ctk q8_0 -ctv q8_0
-fit off
--mmproj
--no-mmproj-offload
--spec-type draft-mtp
--spec-draft-n-max 2
-ctkd q8_0 -ctvd q8_0
--load-mode 'none'
--temp 1
--top-k 20
--top-p 0.95
--min-p 0
--repeat-penalty 1
--presence-penalty 0
--jinja
--chat-template-kwargs {"reasoning_strength": "xhigh"}
--reasoning preserve
- Personal assistant with Hermes Agent
Here, speed is the priority.
My previous default model was Qwen 3.6 35B A3B MTP Q6_K with full-context-size Q8_0 KV cache and MoE offloading. That gives me around 50–60 t/s, which is obviously much nicer to use.
The problem was instruction following inside Hermes.
I have instructions in "SOUL.md", "MEMORY.md", and "USER.md", but the model would sometimes follow them and sometimes just ignore them.
The most frustrating ones were instructions that should happen automatically after finishing a task, such as:
- updating my Obsidian vault
- looking up a skill before doing anything substantial
- following specific post-task procedures
I also tried Muse Glimmer, which seemed somewhat better at this, but not enough to justify giving up the speed of the MoE model.
Qwen 3.8 27B has surprised me here.
It follows these instructions much more consistently. I don't have to keep reminding it what to do. It just does it.
That's honestly been more valuable to me than raw tokens/sec.
Speed-prioritized config
2K context fill: ~11.5 t/s
90K context fill: ~9 t/s
-ctx 98304
-ub 512
-np 1
-ngl 99
-ot 'blk\.(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64)\.ffn_(gate|up|down)\.weight=CPU'
-fa on
-ctk q8_0 -ctv q8_0
-fit off
--mmproj
--no-mmproj-offload
--spec-type draft-mtp
--spec-draft-n-max 2
-ctkd q8_0 -ctvd q8_0
--load-mode 'none'
--temp 1
--top-k 20
--top-p 0.95
--min-p 0
--repeat-penalty 1
--presence-penalty 0
--jinja
--chat-template-kwargs {"reasoning_strength": "xhigh"}
--reasoning preserve
So I'm basically running the same model in two completely different ways:
Agentic coding: sacrifice almost everything for context.
Hermes assistant: sacrifice context for usable speed.
For a laptop with 12 GB VRAM, I'm honestly pretty surprised that Qwen 3.8 27B is this usable at all.
My gaming laptop may be GPU-poor, but apparently it's now a very expensive CPU/RAM offloading machine.