Research
Reports
Public research reports: frozen configurations, results with limitations stated next to them, negative findings included, raw evidence linked. Preregistration applies from the flagship qualification onward — the studies published so far are pipeline-proof work and say so.
In progress
Strix Halo Runtime Qualification v1 — llama.cpp Vulkan vs ROCm on two identical Beelink GTR9 Pro units, AMD gfx1151 vLLM container qualification, long-context ladder and 30-minute endurance. Its preregistration will be committed and published before the first headline run of that study.
- lab_repeated internal researchBeelink GTR9 Pro for local LLMs: what two units measured over a month of serving
Reviews of this box benchmark it for a week. We bought two, froze the workloads, and have been serving from them since: the software stack that works, what the numbers look like, how the two units compare, and the parts we still cannot vouch for.
August 21, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchvLLM at 256K context on DGX Spark: the configuration hunt, and the NVFP4 path that was broken in mainline
The 256K-context configuration hunt on a single GB10: which vLLM attention and MoE backends survived SM_121, why NVFP4 decoded slower than FP8 in the mainline build we pinned, the patched setup that held 260K — and the measured numbers, dated to the versions named inside.
August 21, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchLocal LLM homelab hardware, measured: what to buy for what workload
Every hardware guide for local AI is a spec sheet, a vendor reviewing itself, or an affiliate listicle recycling VRAM tiers. This one starts from the workload, uses only numbers we measured on hardware we own, and marks unmeasured lanes as gaps.
August 21, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchA Russian retrieval embedder in 24M parameters — and the one number that nearly ruined it
The story behind strizh-ru-retriever: layer-pruning RuModernBERT-small into a four-layer encoder, the distillation shortcut that produced a beautiful loss and dead retrieval, what the compression kept — and the leftover config value that silently truncated every input.
August 21, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchA Russian RAG splitter that cuts documents by indices, not by rewriting the text
The story behind agmind-rag-splitter-ru: why a chunker that rewrites text is dangerous for RAG, how a LoRA fine-tune learned to return boundary indices as JSON, the training corpus published alongside it — and the honest gap between teacher agreement and retrieval quality.
August 21, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchStrix Halo memory allocation: why ROCm sees a fraction of your 128 GB, and what to set instead
The classic first failure on a Ryzen AI Max+ 395 box: the model does not fit, or the runtime reports a few gigabytes of VRAM on a 128 GB machine. The BIOS split is usually the wrong lever. Here is what our serving node actually reports, and the setting that matters.
August 21, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchOne box dirty, one box clean: the two-node home AI lab that keeps its numbers honest
Our two identical Strix Halo units live opposite lives: one carries the whole containerized service stack, the other serves a single model and stays otherwise empty. The split is not tidiness — the benchmark harness invalidates any run that finds a GPU neighbor on the host.
August 21, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchllama.cpp, vLLM or Ollama: which inference engine for a home server?
The advice circulating is written from datacenter GPU benchmarks and rarely survives contact with a single box. What each engine is actually for, which one we run where and why, and the defaults question that matters more than the choice itself.
August 21, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchDo local LLMs invent answers when the document doesn't contain them? We measured it
Everyone asks whether a local model hallucinates over their documents; almost nobody measures it. Our workload has an unanswerable control built in: questions the document cannot answer, graded on whether the model admits it. Two model families, two ways to not know.
August 20, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchHow many tokens per second is enough for a local LLM?
The most asked and least measured question in local AI, usually answered with invented round numbers. What speed actually feels like on a real box: the wait before the first useful word, the flow after it, and the failure that makes tokens per second irrelevant.
August 20, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchHow to benchmark a local LLM so the numbers survive scrutiny
Most published local-LLM speeds cannot even be disagreed with: they carry no configuration. A practical protocol from a lab that publishes raw runs — what to pin, what to ask the running server, which tokens to count, and why failures belong in the denominator.
August 20, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchCan a local LLM reliably return strict JSON? Measured across quants, backends and models
Strict-JSON output is the load-bearing wall of local automation, and its reliability is usually asserted, not measured. On one box: quantization did not move it, the backend did not move it, reasoning mode did not move it — switching the model family did.
August 20, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchShould you turn thinking off? What reasoning mode costs on a local LLM, measured
Reasoning mode on a local model delays the first visible word from a blink to a wait and multiplies the cost of automation — and on every task with a hard right answer in our gates it bought nothing. The measured trade, and where it does not apply.
August 20, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchStrix Halo or DGX Spark for local AI? What we measured on both boxes
The most searched comparison in the local-AI mini-box class is answered everywhere by spec sheets and nowhere by one lab measuring both. We own both platforms. Here is what each one demonstrably did, which workload belongs on which box, and the comparison we refuse to fake.
August 20, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchWhat 128 GB of unified memory actually runs: local LLMs, measured
The 128 GB unified-memory class is the current sweet spot for local LLM boxes, and almost everything written about it is spec-sheet arithmetic. Here is what one such box measurably does: which model class it serves, how fast, for how many people, and where 128 GB ends.
August 20, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchDeepSeek-V4-Flash 0731 on two DGX Sparks: the recipe, with its traps marked
The exact serving recipe behind our published GB10 numbers: weights and image pinned, the head-first launch order that avoids a TCPStore hang, the MoE backend flag auto-selection skips, what to monitor when NVML goes silent — and the numbers to expect.
August 16, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchGPU monitoring on DGX Spark: when dcgm-exporter is dead and NVML answers N/A
The standard GPU observability stack half-works on GB10 unified memory: dcgm-exporter does not run and NVML returns N/A on a large share of queries, so Grafana stays green and empty. The collector we actually serve vLLM with, and how to build it.
August 16, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchIs the DGX Spark worth it for local LLM work? A measured answer
The highest-volume buyer question in this niche is answered almost entirely by spec-sheet arithmetic. Here is what a pair of GB10 nodes actually did in our lab — serving a 284B MoE, walking a context curve to a million tokens — and who should and should not buy one.
August 16, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchWhy chatting with a document is slow once, then instant: the llama.cpp prompt cache, measured
A document Q&A session on a Ryzen AI Max+ 395 box: what the first question over a 32k-token file costs, what the second one costs with the prompt cache on and off, and the one condition the cache needs before it saves you anything.
August 16, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchQ8_0 or Q4_K_M? What the bigger quant actually buys you, measured on one box
Same model, same llama.cpp build, same Strix Halo box, only the quantization changed: what Q8_0 costs in decode pace against Q4_K_M, what our quality gates saw, and which shortage should actually drive the choice.
August 16, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchThree hours under load: does a Strix Halo mini PC slow down over a workday?
A continuous three-hour serving pass on two identical Ryzen AI Max+ 395 units at concurrency four: how far the decode pace drifted between the first five minutes and the last, and what share of requests came back complete.
August 16, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchHTTP 200, empty answer: the failure mode your monitoring cannot see
A reasoning model can consume its entire token budget thinking and return a successful response with zero user-visible text. We measured how often that happens on two model families — and why TTFT dashboards look perfect while it does.
August 14, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchThe Cyrillic tax: what Russian text actually costs in tokens, measured
Our long-context corpus was cut by a chars-per-token estimate that held for English and missed Russian by a third. The per-item measured counts are published — here is what they say about planning context windows for Cyrillic, and how we caught our own mislabel.
August 14, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchWhy published DeepSeek-on-DGX-Spark speeds disagree with each other
The same model on the same two GB10 nodes is reported anywhere from the high fifties to the low seventies of tokens per second. Every one of those figures can be correct — here is the configuration behind each, and which number to quote for which question.
August 13, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchHow many people can actually share one 128 GB local AI box?
A measured concurrency ladder on one Strix Halo unit: what the wait looks like at one, four and eight simultaneous chats, what stayed correct, and why 'tokens per second' cannot answer the sizing question at all.
August 12, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchDSpark speculative decoding on two DGX Spark: the 1M-token depth curve
Our fp8 DSpark bring-up on GB10, an independent reproduction of the community NVFP4 build, and the depth data nobody had published: the single-stream curve to a real million-token prompt — plus two negative results, stated as such.
August 5, 2026 · Funding: Self-funded internal research
- lab_single_run internal researchvLLM auto picked the wrong MoE kernel for DeepSeek-V4-Flash on GB10
Serving DeepSeek-V4-Flash-0731 across two DGX Spark nodes: the image ships a MoE kernel built for this model's MXFP4 experts on this silicon — and auto-selection skips it. Picking it by hand is worth double-digit percent of decode. Recipe and raw outputs are public.
August 3, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchSecond model, second quant, second backend: what transfers on one box
Same Strix Halo unit, three swaps measured one at a time: a second model family reproduces the empty-answer failure mode; Q8_0 buys nothing measurable on these workloads; ROCm works on gfx1151 but decodes slower than Vulkan.
August 3, 2026 · Funding: Self-funded internal research
- lab_repeated internal researchTime-to-first-token does not describe a thinking model
On a Strix Halo box the conventional TTFT figure looked excellent while most requests returned an empty answer with HTTP 200. Client-side measurement, three operating settings, evidence bundles included.
August 2, 2026 · Funding: Self-funded internal research
- legacy internal researchDeepSeek-V4-Flash DSpark on 2× DGX Spark: 1M context — legacy results
Bring-up of DSpark speculative decoding on GB10 (sm_121) over 200G RoCE, the 1M-token depth curve nobody had published, an independent reproduction of a community build, and two honest negative results.
July 31, 2026 · Funding: Self-funded internal research
- legacy internal researchMulti-slot LLM inference on Strix Halo — legacy results
What one 128 GB Strix Halo mini-PC did under 32 concurrent chat streams: recipes, an 8→10 concurrency cliff in every tested configuration, and where speculative decoding stops helping. Pre-methodology evidence.
July 31, 2026 · Funding: Self-funded internal research
External publications
Russian-language research articles the lab publishes on Habr. Linked, not mirrored — originals live there.
- DeepSeek 0731 на DGX Spark: разгоняю до 68 tok/s и разбираюсь, почему у автора карточки 57 in Russian
Serving DeepSeek-V4-Flash across two DGX Spark nodes — the long-read behind our MoE-backend report, including chasing down a number that disagreed with ours.
August 3, 2026 · habr.com
- Как я ужал русский эмбеддер до 24 млн параметров — и чуть не испортил его одной цифрой in Russian
Compressing a Russian retrieval embedder and the one-number mistake that nearly ruined it.
July 28, 2026 · habr.com
- Мини-ПК на Strix Halo под параллельной нагрузкой: 236 tok/s на 32 одновременных запросах и три ошибки in Russian
The multi-slot serving study behind our legacy report — including three own mistakes, published.
July 18, 2026 · habr.com
- Два AMD Strix Halo в AI-инфраструктуре: 34 контейнера на одном, ~70 tok/s Qwen3.6 на другом in Russian
How the two-node Strix Halo fleet is actually operated: service stack on one, inference on the other.
July 13, 2026 · habr.com
- DSpark на двух DGX Spark: порт, баг на одну строку и бенчмарки, которые пришлось мерить заново in Russian
Porting DeepSeek’s speculative decoder to GB10 — the one-line bug and re-measured benchmarks.
July 5, 2026 · habr.com
- Как я обучил русский RAG-сплиттер, который режет документы по индексам, а не по тексту in Russian
Training the index-based Russian document splitter now published on Hugging Face.
July 4, 2026 · habr.com
- DeepSeek-V4-Flash на двух DGX Spark: как мы убрали очередь и получили multi-user in Russian
From single-stream queueing to real multi-user serving on the two-node GB10 cluster.
June 22, 2026 · habr.com
- DGX Spark на 256K контексте: тестирую конфигурации vLLM, реальные замеры и почему NVFP4 в mainline сломан in Russian
vLLM configuration sweep at 256K context — and a broken NVFP4 path in mainline, documented.
May 9, 2026 · habr.com
- Кириллица в LLM: почему русский язык в нейросетях стоит дороже и работает медленнее in Russian
Why Cyrillic costs more tokens and runs slower — the tokenization economics of Russian.
May 7, 2026 · habr.com
- DGX Spark: мониторинг unified memory, когда NVML и dcgm-exporter молчат in Russian
Monitoring GB10 unified memory when the standard NVIDIA tooling reports nothing.
May 6, 2026 · habr.com
- Как я собрал на DGX Spark приватный AI-сервер, и теперь рассказываю, что туда вошло in Russian
Building the private AI server stack on DGX Spark — the origin of the AGmind installer line.
May 3, 2026 · habr.com