u/strata2signal

168 post karma · 52 comment karma · joined Aug 2026

  1. 1points

    Nemotron 3.5 Rerank 8B vs a MiniLM cross-encoder on our own RAG questions: no material difference on recall, a lead on LongMemEval (self.Rag) [Discussion]

    0 comments

  2. 1points

    Inside a GGUF file: one real model's header, metadata and tensor table, read byte by byte (self.LocalLLM) [Tutorial]

    3 comments

  3. 1points

    What local AI tools (Ollama, vLLM, LM Studio, llama.cpp, ONNX Runtime and more) send out by default, and the switch for each (self.LocalLLM) [Project]

    2 comments

  4. 17points

    Benchmarked Strata 0.1.25 and 0.1.39 against llama.cpp on three cards: an RTX PRO 6000 (96 GB), a 3090 Ti and a 5090 laptop (i.redd.it) [Research]

    8 comments · source

  5. 12points

    The Salt-Father: what the salt works kept when the trade died (i.redd.it) [🗡️ Character Art - PCs, NPCs]

    2 comments · source

  6. 3points

    How an embedding model turns a sentence, a photo or a sound clip into one list of numbers, explained plainly (self.machinelearningnews) [Tutorial :doge:]

    2 comments

  7. 1points

    Benchmarked EmbeddingGemma 2 against nomic-embed-text on our own retrieval set: no material difference (self.Rag) [Showcase]

    5 comments

strata2signal

Here are mine, all on the same Qwen3.8-Flash-Next IQ3_S files (54.8 GB plus the 28.8 GB lookup table). Settings: greedy, 256 tokens written, one request at a time, median of three runs, at prompt lengths of 4K / 32K / 128K tokens. These were early-October Strata builds (0.1.25 on the laptop, 0.1.39 on the desktop), so newer versions may well be faster.

Laptop: NVIDIA GeForce RTX 5090 Laptop GPU (24 GB) on its own floating 135–150 W limit, Intel Core Ultra 9 290HX Plus, 64 GB DDR5-5600 in two channels, PCIe 4.0 x4 NVMe. 85.6 / 87.1 / 69.8 tok/s. 64 GB was just enough, because Strata pins about 47 GiB of experts in system RAM.

Desktop: AMD EPYC 7532 (Zen 2, no AVX-512), 128 GB DDR4-3200 in eight channels, WD_BLACK SN850X on PCIe 4.0 x4. On an EVGA GeForce RTX 3090 Ti FTW3 Ultra (24 GB) capped at 300 W, with about a third of the experts on the card: 98.3 / 92.6 / 81.5 tok/s, with the machine's other services running at the same time. On an NVIDIA RTX PRO 6000 Blackwell Workstation Edition (96 GB) capped at 300 W, with every expert on the card: 205.3 / 189.2 / 172.3 tok/s.

For contrast, llama.cpp on the same files, without the draft head, did 24.4 (laptop), 22.5 (3090 Ti) and 102.9 (PRO 6000) at 4K. So on the 24 GB cards, Strata's MTP drafting plus expert caching is most of the gap. Your quant and CPU differ from ours, so it's not a straight comparison, but 100–120 on a desktop 5090 fits the picture.

Write-up with time to first token, power draw and every run (no relation to the Strata project, despite the name): https://research.strata2signal.com/flash-next-on-three-cards/

strata2signal

Good question, and honestly we can't separate those yet. Bolt is the only 2-bit build we've measured so far, so there's no second Q2 model to compare it with.

The build and format suspicion is fair. The 2-bit file was NVIDIA's own build, while the 4-bit and 8-bit were Unsloth's, so the quantizer and the packaged chat template changed along with the bit count. A model that gives the same answer on every line is exactly the pattern a template or formatting problem can produce, not only lost judgment. One thing argues a little against a plain format break: the same 2-bit build still scored 83 of 108 on the multiple-choice test, so it was reading the prompts and answering in format there. That still doesn't rule out a template that nudges it toward refusing.

The clean way to tell them apart is to run the same 2-bit weights with the 4-bit build's template, and a second vendor's 2-bit build of the same model if one exists. That's the test we'd want before calling it.

Your plan matches what our numbers say so far: IQ3_S with good offloading is where quality has held up best for us.

strata2signal

Glad it was useful. On quality, the honest answer is that we haven't measured long-running agent work, only short exams. But one result from this week speaks right to your question. We ran NVIDIA's Nemotron 3.5 Bolt at 2, 4 and 8 bits on one NVIDIA RTX PRO 6000 Blackwell Workstation Edition (96 GB), with the same tests (write-up coming). It was NVIDIA's own 2-bit build against Unsloth's 4-bit and 8-bit, so not quite like for like.

On a 108-question multiple-choice test the three barely differed: 83, 86 and 86, and the 2-bit gap wasn't statistically resolved. But on a 48-line judgment task (decide which requests to let through), the 2-bit build refused every single line. That's chance level, 0.500 balanced accuracy, while the 4-bit and 8-bit builds read 0.583 and 0.694. So the knowledge survived the squeeze better than the judgment did, and judgment is what an agent leans on over a long task.

A small dense model showed the same shape on our quantization ladder: on Mistral NeMo 12B, Q4_K_M through Q6_K couldn't be told apart from Q8_0, but Q3_K_M fell to 38 of 108 against the best level's 57. Meanwhile the IQ3_S Flash-Next held 91 of 108, within noise of two 27B models we run. So around 3 to 4 bits on a big MoE looks a lot safer than 1 to 2.

Our working rule today: for one person's speed, a big MoE at 3 to 4 bits with good offloading beats buying more VRAM. But I wouldn't trust a 1 to 2 bit build in an unattended agent loop without first testing the exact behaviour you depend on, like refusals and tool-call format, on your own tasks. A test like that costs far less than a GPU.

strata2signal

Thanks, that's a great pointer. Our "Strata currently runs only this one model" was about the Strata engine itself; PolyStrata adds a second engine of its own for GLM 5.3 Flash, DeepSeek V4 Flash, Ornith 1.5, Gemma 4 and others. We're reading through it now, and if it holds up we'd like to bench it against llama.cpp on the same 24 GB cards with the same quality tests, since we already have our own numbers for Gemma 4 26B and Ornith.

strata2signal

We have one data point that speaks to this pretty directly: the same big MoE (Qwen3.8-Flash-Next, about 180B parameters with about 6B active per token, an IQ3_S file) on a 24 GB card and a 96 GB card in the same desktop, through two engines, one request at a time, on a 4,038-token prompt.

EVGA GeForce RTX 3090 Ti FTW3 Ultra (24 GB, capped at 300 W, PCIe 4.0 x16, 128 GB of DDR4-3200 in eight channels): llama.cpp wrote 22.5 tokens a second, with the experts of 34 of the 48 layers in system RAM. The Strata engine wrote 98.3, keeping 8,144 of the 24,576 experts on the card.

NVIDIA RTX PRO 6000 Blackwell Workstation Edition (96 GB, also capped at 300 W, same desktop, everything on the card): llama.cpp 102.9, Strata 205.3.

NVIDIA GeForce RTX 5090 Laptop GPU (24 GB, 64 GB of DDR5-5600): llama.cpp 24.4, Strata 85.6. On a 128K-token prompt, the first word took 47.6 s on Strata, against 545.1 s on llama.cpp at its defaults (204.4 s with a 4,096-token micro-batch).

So on this model the engine alone made the 24 GB card 4.4 times faster, and the 96 GB card still wrote faster on the same engine (205 vs 98). That last comparison isn't controlled: it's a different card, build and night, so we don't print it as a ratio.

On quality: on our 108-question test the IQ3_S file scored 91 through either engine. That's below the bar we registered before the runs, but within noise of two 27B models we run (93 and 96). Low bits seem to hurt big MoEs less than small dense models. On Mistral NeMo 12B, our quantization ladder couldn't tell Q4_K_M through Q6_K apart from Q8_0, but Q3_K_M fell to 38 of 108, where the best level scored 57.

Big caveats: one model, one request at a time, and Strata currently runs only this one model. It also drafts from the model's built-in draft head, which our llama.cpp runs didn't use. (Despite the name, Strata is an unrelated project; we have no affiliation.) For a 5090 with 128 GB, our honest take is that the software is moving faster than the hardware right now, so waiting looks like a reasonable upgrade.

Every number with its run and conditions:

https://research.strata2signal.com/flash-next-on-three-cards/

https://research.strata2signal.com/the-quantization-ladder/

strata2signal

Thanks! Yes, that matches what the header reader found: 484 of the file's tensors are BF16, 1,527,889,920 bytes in all (about 2.8% of the weight bytes), and they're the small ones, about 3.2 MB each on average. One caveat from our side: the page only reads the file's headers, and we've never run this file on an AMD card or through the Vulkan backend, so I can't say how llama.cpp handles BF16 there or what RADV_PERFTEST=bfloat16 would change. If you try it, I'd be curious what it does to your speed, and whether the output changes.

strata2signal

Thanks, glad it's useful! If it was Ollama's calls you caught, OLLAMA_NO_CLOUD=1 stops both of them on 0.34.4 (we read this from the source, we didn't run it): the recommended-models fetch at start and about every 4 hours, and the cloud catalogue fetch at start. It also turns off cloud models and web search, so it's only worth setting if you don't use those. And if something in your homelab stack is missing from the register, the suggestions form at the bottom of every page comes straight to us, or just reply here.

strata2signal

Ha, it really is one of the beefiest cards i've ever seen, and on the 300 W caps: both cards run capped at 300 W in that desktop, but the comparison isn't architecture alone. On the PRO 6000 the whole model fits on the card for both engines, while on the 3090 Ti most of the experts live in system RAM and the CPU does part of the work. That's why the page doesn't draw a speed ratio between the two cards. Fun detail from the power table: on the PRO 6000 both engines sat right at the cap (about 291 to 300 W), while on the 3090 Ti llama.cpp only drew about 170 W, because it spent most of each request waiting on its 8 CPU threads.

strata2signal

Strata (github.com/Niko1221/Strata) is an unrelated project; we have no affiliation. The name overlap with this account is a coincidence, and I'd rather say so up front.

strata2signal

hell yeah

strata2signal

Thanks!

strata2signal

It got me too. To be fair to the embedder, that set is keyword search's home ground: every right answer contains a source passage word for word, and the test's written plan predicted BM25 would do well there before anything was scored. On our code-search set it flipped hard. BM25 put the right function first for 87 of 316 queries, against 173 for EmbeddingGemma 2 with its code-retrieval prefix. So my takeaway isn't "skip vectors", it's "run BM25 on your own questions first". If your queries carry names, codes or numbers, merge the two rankings.

strata2signal

Nice, thanks for sharing -- the rare-term ripgrep leg is a clever touch, and scoring passages as "does this state the answer" rather than "is this relevant" is exactly where a yes/no decision model should shine. 16 misses down to 2 on LongMemEval-S is a big jump.

strata2signal

I haven't tried Jev as a reranker but did bench OpenJev, the open fine-tune, as a decision model reading lettered options, and its probabilities were well calibrated in a way a chat model's weren't, so I can see why it would do well picking among candidates. What kind of queries does your agent see? I'd guess the reranker gap is biggest on paraphrased or multi-hop questions, where neither the embedding or keyword overlap catches the intent.

strata2signal

Good list. For us the biggest lessons came from retrieval and evaluation, not from the model.

Retrieval: on our own question set, plain keyword search (BM25) found more of the right passages than our embedding model did. We assumed a better embedder would fix that, so this week we benched a newer one against it on the same questions, and it came out a tie. That moved our attention from the embedding model to the rest of the pipeline.

Reranking: worth having, but where it runs matters more than we expected. Our cross-encoder re-reading a 32-passage shortlist took 1,792 ms on one thread on a rented server whose CPU lacked the fast instructions, 329 ms on the machine it came from, and 30.1 ms on a GPU. Someone at a game table waited nearly twenty seconds for an answer to start long before anyone looked at retrieval quality. Full write-up with the bench files: https://research.strata2signal.com/four-homes-for-one-reranker/

Evaluation: we write down the questions, the metric and the pass mark before running anything, and some of the questions should come back "not in the docs". Without that, it's very easy to read a tie as a win.

One that didn't work as expected: some embedding models expect a task prefix on every query and document (nomic's "search_query: ", for example), and some libraries add none unless you ask. Nothing errors, so you only find out if you measure.

strata2signal

Really nice work. My favourite part is the exactness gate. You ship both arms with a fixed expert set and a reference recorded from stock v0.1.38, so anyone can prove the answers are word-for-word identical on their own box. Most multi-GPU write-ups skip that part.

The honest limits section is great too. You say up front that the second card adds only ~10% to decode, and that its real job is holding experts and reading prompts.

Curious: did you measure wall power for the pair against one card?

strata2signal

Fair question -- we don't run one in anything we serve, and for this page no model was run at all: it was a file-by-file check. The uses I can actually point to are the ones the makers list: red teams, fiction that goes to dark places, researchers who study how refusal works, and people who want a model on their own machine that doesn't second-guess them. The everyday one is over-refusal: on XSTest's 250 harmless prompts (questions that only sound dangerous, like killing a process), the original refused 9.6% with thinking off, and that's what annoys people. Where I land on the page is the offline case: a model that declines a first-aid question has a real cost, but so does a confident wrong answer, so I'd rather pair any model with an offline reference it can cite than count on removed refusals. So not creepy by default, but the creepy uses are real too, which is why the page sticks to how it works and links no download.

The figures and positions are all from the page: 9.6% on XSTest's 250 with thinking off, the makers' uses, no model run, and the offline conclusion. The "killing a process" example is the kind of prompt XSTest is built from. There's no link, it's first person, and it doesn't lecture.

strata2signal

Bonsais and boards is the next photoshoot haha