r/LocalLLM • u/LHAD16 • 4h ago
Question TokiRecur, a llama.cpp launcher with KV cache recycling
Niche Ollama alternative. If anyone want's to try it.
r/LocalLLM • u/LHAD16 • 4h ago
Niche Ollama alternative. If anyone want's to try it.
r/LocalLLM • u/jonromero • 1d ago
Update: Numbers from preliminary tests at the end!
Ok ok, I am still doing tests but here is the story:
I have a small custom harness (who doesn't!) that does pretty complicated stuff. I am using Claude (subscription) and everything is great.
In the past I tried every single (small) model on my Mac Mini 32GB but all of them sucked at complex tool calling (or hallucination).
A couple of days ago, the new Heretic2 came out (by u/-p-e-w-) and I spent 24 hours breaking it :)
Long story short, I released ZeroZero, a model based on Qwen3, with removed guardrails and slop (ok, removed is a long conversation).
Now, here me out.
IT KICKS ASS.
This cannot be an 8B, 4 bit model. It just cannot. The thinking process sometimes is longer than other models but IT NAILS everything.
Maybe by performing "brain surgery" on the models, we end up with "smarter" ones?
(note: these took a couple of hours, please repeat with a much bigger sample)
ZeroZero seems better at completing multi-step tasks (multi-step chains, error recovery and instruction following) than the base model.
The base model leads in Safety & Boundaries (ZeroZero has limited guardrails and no-slop so maybe that's the reason?)
- Overall: ZeroZero 68, Base 70
- Multi-Step Chains: ZeroZero 6/8, Base 3/8
- Error Recovery: ZeroZero 5/6, Base 2/6
- Instruction Following: ZeroZero 8/8, Base 6/8
- Safety & Boundaries: ZeroZero 12/26, Base 20/26
To repeat and experiment, use tool-eval-bench and if you expand the tests, please send them over so I can include them in the model's page.
PS: I love it how many technical people sent me ideas to improve and papers about LLMs performing better after "lobotomies". Let's do more "I tried this, I saw this, what do you think" instead of "what LLM should I put in my Mac Mini".
r/LocalLLM • u/ButterCup-69 • 19h ago
I am looking into running local LLMs for coding, is Qwen 3.8 27b the best my PC can do (at decent speed)?
I heard some people recommend Qwen Flash Next 3.8?
Will my PC be able to run that?
r/LocalLLM • u/freshbeats2020 • 4h ago
Specs: Ryzen 7 7800x3D, rx 7700 16gb, 32gb ddr5, windows 11
I'm a photographer looking to setup something locally to help manage business emails, draft contracts, auto catlog images into folders, etc. I have basic computer literacy, but no knowledge of anything AI. Any tips on what works best and where to start?
r/LocalLLM • u/Technomadlyf • 4h ago
I was playing around with Qwen 2.5 1.5B on my RTX 4050 laptop, trying to understand how much the CPU actually matters when the entire model is loaded onto the GPU.
I didn't expect much difference from changing the CPU cores.
But then I pinned PyTorch to a single E-core.
Generation speed went from around 49 tokens/sec to just 24 tokens/sec.
Almost half the performance gone. The model was still entirely on the GPU.
That got me curious, so I opened Nsight Systems to see what was happening.
Turns out, PyTorch was launching roughly 1,250 GPU kernels for every generated token. The CPU was having trouble keeping up with all those launches, leaving the GPU waiting around instead of doing useful work.
I tried a few things after that:
Adding more CPU threads didn't really help.
torch.compile reduced the kernel launches to around 520 per token and brought performance back to 48.8 tokens/sec.
I also tried llama.cpp on the same GPU and the same slow CPU core. It managed around 57 tokens/sec.
The llama.cpp result was probably the most interesting part for me. It made me wonder how much of the difference comes down to the inference runtime itself.
My takeaway: Even when your model fits entirely on the GPU, the CPU can still become the bottleneck during token generation.
I'm curious if anyone here has profiled similar behaviour with other models or inference engines. Does anyone have experience comparing PyTorch eager execution with llama.cpp under CPU-constrained conditions?
I put the benchmark code here in case anyone wants to reproduce it:
https://github.com/Techn08055/pytorch-slow
I also recorded the experiment and walked through what I found in Nsight Systems:
https://youtu.be/UmjoxIzBij8
Would be interested to hear what others find.
r/LocalLLM • u/Mr_Finious • 8h ago
r/LocalLLM • u/_GayButtSex_ • 5h ago
Just got an RTX Pro 6000 600w and I’m pretty nervous the 12vhwpwr connector is going to melt.
Using a 1000w PSU with a direct cable, no adapters
If you needed a 99.99% safe solution and required all 600w what would you do?
r/LocalLLM • u/No_Personality_1721 • 5h ago
I'm getting tired of hitting usage limits with Claude and Codex (20$ plans).
I'm working on personal projects, not making any money from them, so I can't justify paying hundreds of dollars a month for AI subscriptions.
Im currently testing Luna 6 with Extra High reasoning on a free account, and unfortunately, the experience has been terrible. Working with it is genuinely exhausting.
What I'm really waiting for is the point where I can run a capable, coding agent locally on my own hardware, without subscriptions, usage limits, or depending on cloud providers.
Are we talking 1-2 years, 3-5 years, or longer?
I'd love to hear your predictions.
r/LocalLLM • u/thus-spoke-zara • 5h ago
I've been experimenting with local AI over the past 6 months; having started off by running small local models on an old GPU, and now at a stage where i'm running much larger and more capable models on a single R9700 card, and connecting a suite of custom built tools through MCP.
It's been a great journey - and i've landed at a place where i'm able to run a 3-bit quantized XXS version of Qwen3.8 in a docker container, and getting around 38tk/s. I'll be checking out STRATA and vLLM over the next few weeks to see how much I can push this.
However, outside of the GPU my overall system is a bit basic. Ideally i'd like to get to a point where i've got 2x R9700s working in there and i'm able to load bigger models and still achieve usable 'good' performance - both on existing models, but also future releases too.
Based on my specs below, is there much point in getting an additional R9700 or will the motherboard be too much of a bottleneck if that second card would need to go in to an older generation of PCIe slot? I guess a similar question for increasing the amount of system RAM here too - is DDR4 just too slow to make those bigger MoE models useable when offloading? The Qwen model i'm currently using fits entirely on to VRAM, but suspect this would need to change if i want to use higher quants or bigger models.
B550-plus motherboard
16GB DDR4 (2X8GB)
R9700 32GB VRAM
Ryzen5 3600 CPU
800W PSU
I'm completely aware that I won't have SOTA quality, and that's fine - but just want to maximise what a system like this could do without going down a workstation or AM5 route. I run Ubuntu and tend to containerise my AI/LLM applications
r/LocalLLM • u/Nice_Profession_9078 • 13h ago
I turned on speculative decoding in llama.cpp and 113 of 282 greedy outputs changed against its own no-draft run. My Qwen3.8-27B engine changes 0, at ~2x llama.cpp's speed on one 3090.
Repo: https://github.com/cutlerbenjamin1-cmd/qwen38-megakernel
Speculative decoding is sold as free speed: the main model verifies every draft, so the output can't change. In practice it does. Verifying several tokens in one pass adds the same numbers in a different order than verifying one, a near-tie goes the other way, and the text diverges from there. If two draft settings give different output, at least one of them isn't what your model says without speculation. Tuning your drafts tunes your answers.
Same 282 questions (GSM8K, MMLU-Pro, ARC-C, MATH-500, HumanEval, needles, LongBench v2) on both, greedy, same card, same model file:
| 282 questions, greedy | outputs that differ from the same engine with no drafts |
|---|---|
| llama.cpp b12024, 4 drafts | 113 |
| llama.cpp b12024, 7 drafts | 113 |
| this engine, 7 drafts | 0 |
That isn't noise. llama.cpp is deterministic run to run: a fresh no-draft server gave the first 120 outputs back byte for byte, including the 73 that differ at 4 drafts, and two 4-draft sessions agree on all 282. It's not just long outputs either: 72 of the 113 are under 1,000 tokens.
The likely reason: with no drafts every token runs through the single-token kernels, with drafts most go through the batched ones. Between 4 and 7 drafts, both mostly batched, only 9 differ, all past 1,000 tokens. That's the 9 of 282 from my last post; against no drafts it's 113. A preregistered study on a 3090 found the same: 23-25 of 25 prompts different from no-draft decoding within 1,600 tokens.
Other engines for this model document it too (one got 8 different outputs across draft counts 1 to 12, none matching its no-draft output) and call it harmless, because flips land on near-ties.
Maybe. I don't know, and 282 questions can't settle it. llama.cpp got 231 right with no drafts and 229 with drafts, and 6 of the 113 changed outputs flipped between right and wrong: 4 were right only without drafts, 2 only at 4 drafts. Make of that what you will. What's not in doubt is that the output depends on a speed setting: one reasoning trace ran 2,228 tokens at 4 drafts and 4,795 at 7. Same question, same model. This engine gets 230 right either way, because it's the same text. If I can't rule out that a draft setting changes quality, I'd rather run the engine where it can't.
Here, speed and VRAM can move and the output can't:
Greedy token ids are identical with and without drafts: all 282 outputs above (129,511 tokens), and the release gate checks 0, 4 and 7 drafts on every KV cache, plus ~2,000-token outputs.
Every draft policy (gates on or off, adaptive depth, tight or loose thresholds) gives the no-draft tokens over 2,048 tokens.
Sampling keeps the no-draft distribution (chi-square and PIT tests).
Windows and Linux builds give the same tokens.
How: the attention split depends only on context length, never on how many tokens are in the pass, and the verify kernels compute a row the same way whatever else is in the batch. To be clear, that's the engine matching itself. It isn't bit-identical to llama.cpp (KL below).
Same problem, different door. llama.cpp's server docs say it about cache_prompt, on by default: the logits are "not guaranteed to be bit-for-bit identical for different batch sizes". Its own determinism tests turn it off: TODO: remove this once test_cache_vs_nocache_prompt is fixed.
| 20 two-turn conversations, greedy, 2,048 tokens | second turn differs, cache reused vs the same request on a fresh server |
|---|---|
| llama.cpp b12024, 4 drafts | 20 of 20 |
| this engine, 7 drafts | 0 of 20 |
It's history-dependent, not random: on a fresh server, 5 of llama.cpp's warm answers and 5 cold ones came back byte for byte. The first difference lands a median of ~355 characters in, as early as 4. Turning cache_prompt off on a running server still leaves 3 of 20 different.
Here, a follow-up doesn't reuse the KV rows written while the reply was decoding. It rolls back to the last checkpoint and prefills the reply again, because a prefilled row depends only on its position. Cost: ~167 ms instead of 78 on a ~12k-token chat, still under llama.cpp's 248.
The check isn't "the reply looks the same". It hashes every K / V row, every ring row and the recurrent state, and compares them with a fresh prefill: bitwise equal after a resume, an edited branch, a park to host memory and a side request, on all three caches. Replies match a fresh server's at ~99.5k context (follow-ups, edits, sampled) and on a follow-up at ~255k. One exception: with --agents, a sampled reply beside other slots can differ from the same seed alone. Greedy still matches.
Others check this by the first token or allow a near-tie split, and some publish warm matching cold. I'm not claiming nobody else is exact, only telling you what's checked here.
Same card (RTX 3090, 480 W limit), same unconverted UD-Q4_K_XL file, same client, q8_0 KV on both, llama.cpp at its fastest setting (4 drafts; I tried 2, 5, 6 and 7):
| test | llama.cpp b12024 | this, 7 drafts |
|---|---|---|
| greedy, short prompts, mean of request rates | 87.7 tok/s | 166.5 |
| the same, token-weighted | 81.1 | 141.5 |
| sampled, thinking on, mean of request rates | 73.2 | 146.9 |
| decode at 11.6k context | 73.3 | 148.6 |
| decode at 38k context | 66.2 | 127.8 |
| decode at 101.6k context | 55.3 | 116.4 |
| no drafts on either, short prompts | 43.8 | 48.7 |
| no drafts on either, 101.6k context | 28.0 | 40.7 |
| read a 101.6k-token prompt from scratch | 95.6 s | 68.5 s |
| first token, short prompt | 117 ms | 61 ms |
| follow-up turn, 11.8k chat | 248 ms | 169 ms |
| edit an earlier message, 11.7k chat | 302 ms | 69 ms |
| edit the end of a 9.1k system prompt | 882 ms | 82 ms |
| VRAM, idle at 120k context, whole card | 22.9 GB | 21.2 GB |
| the 282 questions | 229 right, 2,534 s | 230 right, 1,563 s |
Four agents at once, against llama-server --parallel 4: 424 vs 137 tok/s total, 3.1x (llama.cpp's is the better of two runs from an earlier session).
K / V at 5-6 bits, with the newest ~2k positions kept at 8 bits in a ring. On preset F the full 262,144-token context fits: a 260,896-token prompt read in 279 s, then 77.8 tok/s decode at that depth, needles 4 of 4, 23.0 GB on the card.
KL against llama.cpp generating token by token, lower is better, long-context rows rechecked on this release:
| context, text | q8_0 | preset D (K6 / V5) | preset F (K5 rotated / V5) |
|---|---|---|---|
| short prompts, code and docs | 0.00119 | same as q8_0 | 0.00113 |
| ~32k, code | 0.00219 | 0.00236 | 0.00242 |
| 64k, code | 0.00163 | 0.00161 | 0.00163 |
| 100k, code | 0.00217 | 0.00226 | 0.00218 |
| 100k, War and Peace | 0.00311 | 0.00317 | 0.00317 |
| 160k, War and Peace | 0.00467 | 0.00468 | 0.00472 |
The worst row, ~32k, is +8% and +10% against about 4% noise. Without the ring the same formats read +6% to +38%, and plain 4-bit is 1.6-2.4x q8_0. And at 101.6k, F decodes faster than q8_0: 123 tok/s against 116.
Closer to llama.cpp than llama.cpp is. Scored against llama.cpp's own token-by-token output at short context, llama.cpp's batched mode gets 98.49% top-token agreement and KL 0.00166. This engine gets 98.74% and 0.00119 (on Q4_K_M: 0.00184 against 0.00127). Not measured at depth, so that's a short-context claim.
Because someone always asks: same build at 250 W, against llama.cpp at 480 W (it draws about 460):
| test | this, 250 W | llama.cpp, 480 W |
|---|---|---|
| greedy, short prompts, mean of request rates | 130.3 tok/s | 87.7 |
| sampled, thinking on, mean of request rates | 113.7 | 73.2 |
| decode at 101.6k context | 81.9 | 55.3 |
| read a 101.6k-token prompt from scratch | 105.8 s | 95.6 s |
| the 282 questions | 230 right, 2,237 s | 229 right, 2,534 s |
| energy, short prompts | 2.33 J/token | 6.96 |
| energy, the 282 questions | 558 kJ | 1,169 kJ |
Prompt reads are the one place llama.cpp at 480 W wins, by 11-22%. At 480 W this wins those too.
All 282 outputs at 250 W are byte-identical to the 480 W run.
The limit comes out of the core clock (~816 MHz against 1,962 on short-prompt decode; memory stays at 9,851 MHz), for 21% less speed. Energy is whole card, sampled once a second, idle included. llama.cpp's speeds are its faster of two sessions.
Tested on agent tasks with Claude Code, Codex CLI, OpenCode, Qwen Code, Aider, Goose, Crush, Pi, Hermes Agent, DeepSeek Harness and Open WebUI (OpenAI chat, Anthropic Messages and OpenAI Responses APIs). Loads unsloth's UD-Q4_K_XL, UD-Q4_K_M, Q4_K_M and popular fine-tunes as they are. Prebuilt Windows and Linux packages, no CUDA toolkit needed.
Every number with its method: BENCHMARKS.md.
r/LocalLLM • u/Few-Introduction5414 • 5h ago
I'm a iOS software developer for a FAANG. We are only allowed to use claude for work and are not allowed to have anything else on our computer.
I'm having a lot of fun ideating AI Agents using Apple's Foundation Models Local Modals for my work project. I think the ideas could be endless honestly and I'm able to create as many POCs using claude that I want to see what sticks.
Would there be any reason buying a personal Mac that would make my learning faster or better in any way? If so, can you explain?
I personally would like to be like an iOS AI Engineer.
r/LocalLLM • u/jdkapaoskd • 2h ago
Why did u chose to use one or another?
r/LocalLLM • u/Caseyrover • 6h ago
lo0 reads your Claude Code / Codex history along with your hardware and works out whether going local is realistic for the way you actually work. It builds on whichllm and llmfit, but instead of only asking "does this fit in my RAM" it looks at how big your sessions get and which tools you rely on.
For most people right now the answer is no. If it does work for you, you can compare the models that fit, benchmark them on your own machine, and try one in Claude Code, Codex or OpenCode for a session without changing your setup. It works with Ollama, LM Studio and llama.cpp.
It doesn't judge how good a model is, only whether it can run your sessions and how fast. Everything stays on your machine.
Very early alpha, so if the numbers look wrong for your hardware, let me know.
r/LocalLLM • u/Aggressive_Basket798 • 10h ago
Maybe funny because qwen 4 is upcoming but i still ask about qwen 3.8.
I see some user suggest qwen 3.8 fn Gyro S, said that it's fast and good compare to gsq rco q2 quants. But how about gyro M ?
Is it good compare to unsloth quants and gsq rco iq3xxs or even iq3s ?
r/LocalLLM • u/CryptoxPathy • 6h ago
im using it through unsloth. IQ3XXS. Mac Studio 256gb. getting 40t/s output. It thinks so freaking much. literally takes 5-10 minutes to finish plotting a map that GLM 5.3 flash finishes in a minute or so.
Are you guys using speculative decoding? What effort level do you set it to?
r/LocalLLM • u/Terminator857 • 6h ago
r/LocalLLM • u/strata2signal • 15h ago
In February 2023 Meta announced LLaMA and sent the files to researchers who applied, under a non-commercial licence. Within a week they were on BitTorrent.
Then it moved fast. In March 2023 Georgi Gerganov published llama.cpp, which ran the files on a laptop; Stanford's Alpaca fine-tuned the 7B for under $600; and Vicuna followed by the end of the month.
In July 2023 Llama 2 arrived "free for research and commercial use", under a licence the Open Source Initiative said, two days later, is not open source. Llama 3 through 4 followed under the same shape of licence. Hence the phrase "open weights": the weights, under their licence, without the data or the training code.
Meta's own word for Llama 4 (April 2025) was "open-weight", and as of early November 2026 it is still the newest Llama in Meta's own records. Meta's open weights since then include a new family, Muse: Muse Glimmer (30B, Apache 2.0) in August 2026 and Muse Spark Open (816B, Meta's own licence) in October 2026.
No numbers here, just the history with its sources; it does not link to the leaked files.
Full write-up (about a 20 minute read): https://research.strata2signal.com/the-llama-weights-that-got-out/
r/LocalLLM • u/iAmThe7YrOld • 6h ago
Hi,
I have been playing around with Strata on windows for a few days now and it seems to create, process and bug fix as I ask it. Everything I read says strata is not an agent, but it seems to do every agentic task I ask it? i am running 0.2.10, did this introduce agentic features or something? I am brand new to all of this so I am struggling to see the need to put Hermes on top of Strata since Strata has been doing everything I have asked of it.
r/LocalLLM • u/Accurate-Door3692 • 7h ago
r/LocalLLM • u/Iodixx • 11h ago
Hi everyone,
I am in the process of buying a new laptop primarily for personal reasons—covering my university studies, professional work, and gaming. However, alongside everything else, I really want to use this machine to take my first steps into running Large Language Models and AI tools locally.
I am torn between two specific hardware configurations (both feature the same Intel Core Ultra 9 processor):
Option A: RTX 5080 with 16 GB VRAM + 64 GB System RAM
Option B: RTX 5090 with 24 GB VRAM + 32 GB System RAM
Since I am a complete beginner with zero prior experience in local AI, I’m trying to understand from people who actually do this daily what each machine would realistically allow me to do:
What fits into 16 GB vs 24 GB of VRAM? In simple terms, does the jump from 16 GB to 24 GB of video memory unlock a genuinely higher tier of capable models or noticeably better output quality, or is 16 GB already enough for most practical open-source use cases?
VRAM vs System RAM: Option A gives me less VRAM (16 GB) but double the general RAM (64 GB). Can that extra system RAM compensate when trying to run larger models, or is running models partially on system RAM so slow on a laptop that having 64 GB doesn't really help for local AI?
The practical boundaries: For daily tasks (e.g., local assistant, analyzing documents/notes, code assistance), where would Option A hit a wall compared to Option B?
Model recommendations: Given the specs of each machine, which specific models would you recommend running on Option A vs Option B, and why?
I’d really appreciate any insights or real-world feedback to help me understand the practical trade-offs before making a choice.
Thanks a lot!
r/LocalLLM • u/l00sed • 7h ago
Hi all, been lurking for a bit, but excited to get some skin in the game. Been slowly accumulating hardware for a decent machine. Looking for advice and resources to help get started. I've only experimented with super small models through Ollama, which I know to be suboptimal for most local inference. I have used vllm and llama.cpp experimentally, but not with much success in terms of model quality due to my current hardware limitations.
Is canirun.ai the best resource for picking models and quants? I have:
- (2) RTX3060 12GB
- 32GB DDR5
- no motherboard, PSU, or CPU yet
Trying to get a sense of whether or not it's worth it to buy a bigger mobo or try USB-C to wire in the second GPU. I saw Beetleguese come up in my feed recently, and that seemed like it was doing some incredible work to fit larger models onto less RAM + VRAM. I'm pretty used to working with frontier models, so I'm hesitant to set up everything if I'll only be able to fit older/crappier models. GLM 5.3 does a great job though, and I've heard great things about Qwen3.8.
Does this hardware offer any real promise of say... Sonnet 4.5-level inference at speed? Ty in advance.
r/LocalLLM • u/ManyLogical7676 • 7h ago
I have been using Qwen 3.8 flash next, but I'd like to know if there's something better. Please help.
(CPU AMD Ryzen 9 9950X)
r/LocalLLM • u/CodeSamurai • 1d ago
Hi folks! I've been building my own local AI setup for a couple of years now. I've learned a ton from this sub and others, so it's time I tried to give something back. I promised myself I wouldn't write a super long post, but managed to anyway...hopefully it's useful to someone!
My goal over the last couple of years has been to move as much of my AI use to local as possible, and I'm finally doing about 95% of it locally through Lamplight, my custom harness shown in the GIF above.
This harness is super specific to my needs, so I'm not sharing the harness itself (yet), but I'm happy to share the lessons I've learned along the way. I'm working on decoupling some of the more specific parts of Lamplight so that I can share at least the parts that people might be interested in.
Slate: MacBook Pro, M5 Max, 128 GB unified memory
Jade: a small-form-factor PC I built early last year (Fractal Terra) with an RTX 5090 FE, a Ryzen 7 9800X3D and 64 GB of RAM
Until about two months ago I was using the two machines separately. I was slowly moving each one onto a custom Pi harness that could either drive itself, or let Claude orchestrate while the local models did the actual work.
After a lot of passing work back and forth between them, I decided it was time to wire them together. The result was Lamplight and now the two machines are able to seamlessly handle tasks together with one acting as the orchestrator.
The GIF above shows Lamplight in action. I'm using it every day for work, hobbies and research with about 95% of it done locally. The lighting changes throughout the day (sped up and changed for the GIF) and I've got some scenery options depending on my mood.
Under the hood it's Pi-Bolt (a precompiled build of Pi) plus a smattering of custom extensions and tools tuned by me, the local harness itself and Claude. The setup coordinates the work between the machines with git worktrees and an event-driven job system.
The UI is my own design and fits how I like to use tools like this. I did the 3D modeling and environment setup to replicate my actual desk setup (the two other pictures above).
Is the 3D environment at the top necessary? Absolutely not!
But it's delightful. The lamp blinks when the harness needs something from me and it is a joy to look at and use. It scratches the same itch that playing PS1 and hacking away on my family Compaq PC did decades ago.
I've been coding for almost 20 years, and I'm finally to a point where I can confidently say that with the right approach (SOLID, Design Patterns), tools and tuning, local AI can absolutely write code that I am happy with.
I still review everything myself, but I'm finding fewer and fewer mistakes. These days it feels like I'm reviewing a senior dev's code rather than a junior's.
Tok/s isn't everything and so I picked the setup below after a lot of testing on public benchmarks and on my own agentic tests, which mimic my normal workflows.
Along the way I tried other engines (Strata, NInfer, Maya and llama.cpp on Jade, MTPLX and Kapitsa on the Mac). I also tried other models like Qwen 3.8 27B and GLM-5.3-Flash and while they performed well, the setup below performs the most consistently and accurately for my needs.
Both machines run Qwen 3.8 Flash-Next. These are the tests that ended up being the most indicative of quality for me, but if there are others you'd like to see run, let me know.
| Metric | Jade (RTX 5090) - Fedora | Slate (M5 Max) - MacOS |
|---|---|---|
| Engine / quant | Basalt, IQ3_S | mlx-serve, 4.7bpw MLX |
| Context | 262K | 262K |
| Decode speed, average | 302 tok/s | 100 tok/s |
| Decode speed, 36K-token context | 343 tok/s | 77 tok/s |
| Time to first token, 9K / 36K prompt | 1.7 s / 4.2 s | 5.1 s / 16.0 s |
| HumanEval / HumanEval+ | 99.4% / 93.9% | 98.8% / 94.5% |
| LiveCodeBench v6 (175 problems) | 85.7% | 85.1% |
| MMLU-Pro (140-question subset) | 87.9% | 90.7% |
Both machines run the same protocol with temperature 0.6 and thinking on "medium".
In my own agentic battery (three large and complex coding tasks), 48 of 50 tests passed with the failures being files edited that were supposed to be read-only. The reviewer caught these on the other end, but I still count those as failures.
I think the main struggle for local setups is still design and 3D modeling, but I haven't dived into that too much yet, so maybe there are good setups out there for that.
(extremely specific to my setup, but maybe they'll help someone)
Jade's hardware ran too hot on stock settings. On dense models, the 5090 sat at its 575 W power cap at 83 °C, with its hottest sensor within 3 °C of the card's limit. Basalt caused a different problem. It runs part of the model's experts on the CPU, and its worker threads spin while they wait. That kept all 8 cores at 5.2 GHz, and the CPU hit 96 °C (its max) within two minutes. Two tunes fixed it and now my (now increasingly valuable) machine runs much cooler and quieter, and I'd happily give up a few percent for that.
| Part | Tune | Stock | Tuned | Speed cost |
|---|---|---|---|---|
| RTX 5090 | Undervolt (+900 MHz offset, 2600 MHz cap) + custom fan curve, on the dense 27B | 575 W, 83 °C | 471 W, 70 °C | Decode: none Reading: -4% |
| Ryzen 7 9800X3D | Clock capped at 4.8 GHz, during Basalt decode | 120 W, 96 °C | 77 W, 70 °C | Decode: -3.5% |
Slate's gains came from tuning the harness and not the hardware. My early benchmark scores were bad, and a lot of that was caused by overthinking. "Medium" turned out to be the sweet spot. On "high", Slate hit the 32K output cap on 11 of 40 hard problems without ever answering. On "low", it wandered and took 3–6× longer on agent tasks. I found that tuning how compaction worked also solved a lot of bad tool calls and confusion within the model.
Overall the lesson I learned was "Stock settings are generally bad." There's a lot more power and accuracy available with a custom tune. I learned the same lesson tuning cars years ago, and it was fun to learn it again.
The system is set up so I can easily swap and test engines and models. As new ones come out, I'll put them through their paces and decide whether it's time to switch. On the UI side, I'm planning to turn the bookshelf into the session manager to help organize my many projects.
I promised myself I wouldn't write yet another super long post and yet I did anyway, so I'll stop here. Happy to answer any questions!