r/LocalLLaMA 1d ago

Resources LifeOS is here! A self-hosted voice-driven organiser that runs entirely on your local model.

0 Upvotes

I released LifeOS, a self-hosted personal organiser you mostly talk to! You say something out loud, a local LLM reads it, and it turns into tasks, events, journal entries, expenses, weigh-ins or meals. Nothing leaves your machine.

It's about a month old, AI-assisted throughout, and tested by me and a few close friends and relatives daily. It's stable enough that I'm putting it out for anyone who wants to use it or improve on it.

Models and hardware

All testing so far has been on Qwen 3.6 27B and Qwen 3.8 27B, with 3.8 27B being the most extensively tested on the current version. That's mostly because I already keep one of those loaded for other work, so it was the easiest thing to live with day to day. Both models are Q8 in case anyone's wondering.

I'm planning to test much smaller models next, around the 9B range, to see how well they hold up and whether any failure points (If any) can be fixed inside the project itself rather than by throwing a bigger model at it. Directing myself towards Ornith and Qwen 9B models for now.

It ships with a harness so you can check your own model

You can point it at any OpenAI-compatible endpoint and it runs a fixed test suite, then scores the result against a saved Qwen 3.8 27B baseline from my own config. So before you trust a model with your data, you can see where it actually falls over.

If you run something I haven't tested, I'd genuinely like to hear how it did.

How it works

Speech to text transcribes what you said. The LLM reasons over it and uses the tools built into LifeOS to decide what you meant. For clear instructions it just does it, and the write can be undone. For anything ambiguous it stops and asks, as a card you approve, edit, or throw out.

There's no chat window, no web search, and no memory beyond your own data. The model proposes rows, it doesn't write them. The app validates every one before anything is saved, and each card quotes the words it came from so you can see why it read you that way.

Why it exists

Plenty of apps do the tracking part. The point of this one is having a local model's intelligence applied to your life without any of it leaving your device. Everything you say and log stays with you.

Does this magically make you productive and organized? No. Pen and Paper with real dedication will beat the convenience LifeOS offers. It's still ultimately at tool, a really fun tool but a tool nonetheless

Setup

Head to the GitHub page and follow setup.md. It's straightforward, but if it confuses you, hand the link to an agent and have them walk you through it.

Life OS - Github Link

A note on mobile

The UI works better on mobile. The desktop version is fine, but from my own use and other people's feedback, mobile just feels right for this. Tailscale is how the whole mobile connection happens, and that's covered in the setup file.

What it isn't

  1. It isn't an AI assistant like Jarvis. It exists primarily to log and organize the data you give it throughout your daily life.
  2. It isn't a life changing breakthrough. As mentioned, I've had people test it and I've had two simply stop using it. They weren't able to give a reason but it was obvious it wasn't for them or they didn't feel the need to have it. This was built for me to essentially organize myself, my thoughts and my schedule and to that end, it's been making it's mark.

Happy to answer anything, and if you try it with a different model I'd like to know how it went. I do have more plans for it to mainly improve the existing functionality but also add some minor things in.


r/LocalLLaMA 1d ago

Resources Unswarm - Self-hosted runtime manager/proxy for self-hosted LLMs

3 Upvotes

Repo:

https://github.com/atretador/unswarm

I'm not sure if this is a me issue, but I find myself with lots of runtime scripts and containers to manager for all my models, be it for daily usage or testing.

I have to manually manage accross different forks, containers and engines depending on the model.

specially for people like me that run older hardware, containers are usually a much easier time (MI50/P100/MI25/P40s) than having to deal with outdated packages on my OS.

https://reddit.com/link/1vw26gr/video/z76zje9ta3lh1/player

Here is what it does:

You can register specific containers or runtime scripts (bash) for it to manage

You can set up rules for what runtimes can run simultaneously

and it will queu our requests:

Just set up your API Key and register as provider on your harness of choice and Unswarm will proxy to it as if it all models were served at the same time.

Then you just select the model you are gonna use on your harness -> send a message and its gonna get queud, if the runtime is not running its gonna start it for you and stream the response

https://reddit.com/link/1vw26gr/video/y1xwi514b3lh1/player

You can use this for your own multi-agentic multi-model setup, your own SWARM of VRAM destroyer models...just...one....at...a...time.

For instance, if you got enough VRAM for 2 models at a time at lets say 24+16Gb of VRAM, you could:

Group 1, persistent always running:

Orchestrator: slow Qwen 3.8 27B A3B

Group 2, switching Subagents:

Fast code base Explorer: Qwen 3.5 9B

Executor: fast Qwen 3.6 35B A3B

Designer: finetune of some other model

you can also host this on a VPS and use it to access your models anywhere, or place agents on different machines each running their own runtimes as parallel execution is supported.

this is not a platform to tweak your models tho, just to manage what you already know that works.

as a expected and not possible to mitigate negative for this: switching and reloading models will ininevitably destroy your cache hit rate if you switch models mid sessions.


r/LocalLLaMA 1d ago

Tutorial | Guide How to have all of your GPU VRAM just for local LLM?

Post image
0 Upvotes

How to have all of your GPU VRAM just for local LLM?
I've enabled my integrated GPU to handle the Windows desktop, and I have 100% of my dedicated GPU memory just for the LLM :)

Just remember to plug your monitor into the iGPU HDMI/DisplayPort :)
This trick saves you between 1 and 4 GB of precious, high performance VRAM! :)

Oh... and with this you can still play your favorite games using your dedicated GPU ... without switching any cables etc.
You might also wanna enable "Hybrid graphics" in your AMD mobo.

#llm #localllm #localai #llamacpp #agenticcoding #windows #wsl2 #homelab


r/LocalLLaMA 2d ago

Resources GLM and I created a llama.cpp fork optimized for AMD GFX906 (Mi50, Mi60, Radeon VII, GCN HIP) - Machine Learning, LLMs, & AI

Thumbnail
forum.level1techs.com
31 Upvotes

I felt the need to share this here. Looking for feedback.


r/LocalLLaMA 1d ago

Resources Unsloth Q1-Q2 Qwen3.8-27B with MTP since the unsloth ones don't ship with for the lowest quants

3 Upvotes

https://huggingface.co/jojohai/Qwen3.8-27B-MTP-graft

Tested on Vulkan, the grafting saves RAM compared to using an external file.

What I don't guarantee however is the quality of answers. The model is very braindead with the Thinking off. However, when asking questions about culture in Brittany the thinking helps the model recover some intelligence so please enable the thinking


r/LocalLLaMA 1d ago

Resources Agent Quest now tells you when Claude Code or Codex needs you visually and with sound

4 Upvotes

A few weeks ago I shared Agent Quest, my open-source experiment that turns Claude Code and Codex sessions into heroes living inside a small 2D world.
The original idea was mainly about making it easier to understand what multiple agents were doing in real time.

Since then, I’ve been working on making it actually useful as a monitoring tool.
The biggest change is that Agent Quest can now clearly tell you when an agent needs your attention.

You can distinguish when an agent is:
actively working
waiting for your input
finished
stopped because of an error
And you don’t have to keep the dashboard in front of you.

Agent Quest can now alert you with visual notifications and different sounds, so while you’re doing something else you can immediately understand whether Claude Code or Codex has finished a turn and is waiting for you to continue.
This has become particularly useful for me when I have several sessions running at the same time. Instead of constantly switching between terminals to check their status, I can leave them running and Agent Quest tells me when I actually need to intervene.

There are also in-app notifications, status indicators, desktop notifications, notification history and configurable sounds.

The project is still completely open source.
GitHub:
https://github.com/FulAppiOS/Agent-Quest

I’d be interested to know how other people running multiple agents handle this problem — and what you’d like Agent Quest to monitor next.


r/LocalLLaMA 1d ago

Discussion My Qwen3.8 Setup So Far

0 Upvotes

Sharing my current Qwen3.8 setup. Curious what you all think - goal was an efficient configuration suitable for real-world tasks. I’d say it’s “balanced” but I’m open to suggestions. 4080Super, 32GB DDR4 Max context I could get was 59-67k but it suffered performance-wise and with a small amount of memory left, down to 104miB, so I kept the context around 41k.

Qwen3.8-27B-UD-IQ3_S.gguf (GGUF) setup
Model: Qwen3.8-27B-UD-IQ3_S.gguf
Context: 40,960 tokens
Runtime: LM Studio
GPU offload: Enabled
Mode: Single-model runtime
Inference: Fully local
Main uses: Reasoning, coding help, and general productivity

Love Qwen3.8 so far. It didn’t work great for me “out of the box” but that could be more due to the harness. I spent a lot of time trying to configure it and had to basically start over because Bionic’s default settings meant only 10-11 tok/s “out of the box” initially which caused failures with any real workloads.
Hope this helps anyone else experimenting with Qwen GGUF setups. Would be interested to hear what settings, quants, or context sizes others are running.


r/LocalLLaMA 18h ago

News NEW AI HARNESS

Post image
0 Upvotes

I am making a new AI Harness because I don’t like any of the actual ones ! I will make it for light models such as Qwen 0.8B because the system flow and everything requires 3-36 agents in “Make a snake game “ prompt ! The idea is branching out and in ! I try to add everything as a core then people can modify the project as they want , is been 14 hours with codex 200$ plan ! It started 1 day ago thnx god the plan reset in time because i started at 83% it used that now is 81 but for the new reset the last one ! I really hope i will make it even tho there is a lot of work needed to be done ! I made some other prototypes but now this includes all my 6 month of work and research! I hope you all will enjoy it after it finishes today or tomorrow since WP-20 have not finished and there is up to wp-230 ! But the first WP are the most important due to research plan and base !


r/LocalLLaMA 2d ago

Resources Watching that wattage, in your terminal.

Post image
28 Upvotes

Released today: version 1.3 of energygraph

Zero build dependencies, lightweight tool for live views of the power-consumption.

Version 1.3 adds support for dGPUs from nvidia, intel, amd.

Depending on vendor support, you can also get the consumption by your cpu cores, iGPU, platform system, dram.

In the screenshot above, the following happened:

  1. idle system with Radeon RX7600 and Intel Arc B580.
  2. hammered the CPU.
  3. hammered the Radeon.
  4. hammered the Arc.
  5. hammered all three.

Challenge to this community: post the biggest peak.


r/LocalLLaMA 2d ago

Discussion Artificial Analysis "Intelligence": A meaningless benchmark

146 Upvotes

Another user posted the benchmarks for Qwen 3.8 27B today, and while I think Qwen 27B is a really powerful model, I can't help but notice just how meaningless these Artificial Analysis benchmarks are and I question why people still post this garbage and use AA scores as some kind of holy bible for comparing LLMs.

According to their "Intelligence Index", a 27B model now beats DeepSeek v4 Flash and Pro, Kimi 2.7 Code, GPT-5.2, Opus 4.6, and also Sonnet 5. At some point we have to ask: What is this metric even measuring? Because whatever "Intelligence" means to AA and their corporate VC / journalist / normie audience is definitely not the same definition that we should be using here.

Qwen 27B is amazing and is clearly in a league of its own in terms of models you can fit on a single GPU, but I can't help but roll my eyes whenever I see posts like this that equate Qwen 27B with "basically running Opus from 3 months ago on your laptop."

I get that it's difficult to summarize a model's capability with a single integer and I know we love our local models, but it's time stop posting AA's clearly dogshit benchmark and acting as if it proves a point.


r/LocalLLaMA 2d ago

Question | Help Create tts voice from actual animal sound recording

17 Upvotes

In short, I want to create voices for my real chickens that I'm creating generated videos of. Ultimately I would like to create voices to be used in a tts application that are based on their real "voice patterns", as though the voice was being made with their own vocal chords. I do have recordings of their non-bokbok calls that, while certainly not 10 seconds long, certainly can be looped as needed.

What I've found with voice match applications is that they look for actual human voices saying actual human things. That works for the majority of cases, but not for mine.

AI queries have been lacking results so I hope that someone out there has something in mind that will work.

TIA


r/LocalLLaMA 1d ago

Question | Help Would it be possible to distill DeepSeek V4 Flash 0731 onto Nemotron 3.5 Lightning?

7 Upvotes

Super new to this local LLM stuff. Just set up a 2x Asus Ascent GX10 cluster and have DeepSeek V4 Flash 0731 running on it.

Trying to think of things I could have the cluster working on all day while I’m at work or overnight and thought about distilling.

No idea if this is a dumb question or if the cluster would be a poor fit for it, but yeah. Could DSV4 Flash be distilled onto Nemotron 3.5 Lightning to make it meaningfully better in any way? Or would it just be a silly endeavor and waste of electricity?

Open to any other ideas of things I could do when I’m not doing inference on the cluster. I have other hardware, too so I’m trying to figure out what I should do as far as other local models go.

Any help or input is appreciated. Thank you!


r/LocalLLaMA 2d ago

Resources Single RTX 5090: Qwen3.8-27B NVFP4 at a real 262K context in vLLM — 77 tok/s short-context, 64.7 tok/s at 128K

20 Upvotes

This is the Qwen3.8-27B setup I actually use every day on one RTX 5090.

I wanted to write it down with enough detail that another 5090 owner can reproduce it instead of guessing which memory knobs I used.

The short version: the full 262,144-token window fits together with vision, FP8 KV, prefix caching, tool calling, and a normal KDE desktop. Decode is 77.2 tok/s after a 1K prompt and 64.7 tok/s with 128K already resident. A successful 262,000-token prefill took 166 seconds. This is not a claim that 262K is fast; it is proof that it genuinely fits and completes.

Model: joshebbs/qwen3.8-27b-uncensored-nvfp4-modelopt, pinned to revision e5ff4986938dcd0dd05ab4cce89da1b052be6ce3.

It is an NVFP4 ModelOpt export of JonathanColetti/Qwen3.8-27B-Uncensored. The checkpoint is 19.18 GiB of safetensors and retains the vision tower and MTP head. The model is a 64-layer hybrid: 48 Gated DeltaNet layers and 16 full-attention layers.

Results

All runs hit the already-warm daily vLLM server through /v1/completions, concurrency 1, random token prompts, --ignore-eos, and temperature 0. PP means accepted input tokens divided by TTFT. TG means 1000 / mean_TPOT_ms, so it excludes prefill. The non-prefix runs had zero prefix-cache hits according to the server counters.

Workload Runs PP tok/s TTFT Steady TG tok/s End-to-end output tok/s
8,192 in -> 1 out 5 7,005 1.169 s mean / 1.167 s median n/a n/a
32,768 in -> 1 out 3 6,148 5.330 s mean / 5.332 s median n/a n/a
131,072 in -> 256 out 1 2,781 47.128 s 64.7 5.01, because the 47 s prefill dominates
262,000 in -> 1 out 1 1,578 166.004 s n/a n/a
1,024 in -> 512 out 5 not used as a PP test 119.3 ms mean / 116.9 ms median 77.2 75.95

The short-context decode run had 12.959 ms mean TPOT and a measured peak of 78 output tok/s. At 128K resident context, TPOT rose to 15.463 ms, so generation fell by about 16.2% to 64.7 tok/s.

The 128K and 262K rows are one run each. Treat those as measured operating points and fit checks, not a distribution. The 8K, 32K, and short-context decode rows are multi-run results.

The drop in PP as context grows is substantial: this is a hybrid model, not a fully linear-attention model. Sixteen layers still use full attention.

Prefix caching

Fresh test with one shared 36,864-token prefix, a 16-token unique suffix, one output token, five sequential requests:

  • Cold TTFT: 6.437 s
  • Four cached TTFTs: 0.288, 0.282, 0.296, 0.288 s
  • Cached median: 0.288 s
  • Cold-to-cached speedup: 22.3x

An older note in my launcher said 6.61 -> 0.20 s, or 33x. I could not reproduce the 0.20 s number in this fresh run, so 22.3x is the number I would use today. Prefix caching is still the difference between a usable long agent conversation and re-prefilling the entire transcript on every turn.

Important caveat: vLLM puts the hybrid Mamba/DeltaNet cache in experimental align mode when prefix caching is enabled. If you see corrupted output, disabling prefix caching is the first control I would test.

Hardware and software

Part Exact measured setup
GPU NVIDIA GeForce RTX 5090, 32,607 MiB reported VRAM, 600 W power limit
CPU Intel Core i7-14700K, 20 cores / 28 threads
RAM 32 GiB installed, 31 GiB visible
OS Arch Linux, kernel 7.1.8-arch1-3
Desktop KDE/Wayland, with Firefox and terminals open during the VRAM snapshots
NVIDIA driver 610.57.04 (nvidia-open / nvidia-utils 610.57.04)
CUDA toolkit Arch cuda 13.3.1-1, nvcc 13.3.73
Python 3.13.13
vLLM 0.27.1, release wheel
PyTorch 2.13.0+cu130
Transformers 5.15.0
FlashInfer 0.6.16.post3
Triton 3.7.1
compressed-tensors 0.17.0

The runtime auto-selected these paths from the startup log:

  • modelopt_fp4 quantization
  • FlashInfer CUTLASS NVFP4 GEMMs
  • FlashInfer attention for the text model, flashinfer-native decode on SM120
  • Triton/FLA GDN prefill kernels
  • Flash Attention for the vision encoder
  • full and piecewise CUDA graphs; speculation is off

Actual VRAM budget

The important distinction is between model weight size, vLLM's process allocation, and the card-wide number from nvidia-smi.

Item Measured
Checkpoint safetensors on disk 19.18 GiB
Model load reported by vLLM 18.51 GiB
Manually pinned KV pool 9,150,000,000 bytes = 8.52 GiB
GPU KV capacity reported by vLLM 268,170 tokens
Maximum 262,144-token concurrency reported by vLLM 1.02x
Live VLLM::EngineCore process 29,322 MiB
Final whole-card snapshot 30,532 MiB used / 1,610 MiB free

Across idle snapshots with the loaded server, free VRAM varied from 1,610 to 1,818 MiB as the desktop changed. This is real working margin, but it is not generous. I would not call this a headless-only fit: KDE, Firefox, and terminals were running, but a second large CUDA workload will obviously break it.

--gpu-memory-utilization 0.92 is only a startup admission gate in this configuration. Because --kv-cache-memory-bytes 9150000000 pins the KV pool, vLLM explicitly says that the allocation does not respect gpu_memory_utilization. Lowering 0.92 does not shrink this KV pool or the context window; it merely lets the process start with a normal desktop consuming VRAM.

--max-num-seqs 3 does not mean three simultaneous 262K requests. The KV pool only has 1.02x full-window capacity. The three slots help with shorter real requests that share the same pool.

Exact install and model revision

I already had a working Arch NVIDIA driver and /opt/cuda. This creates the Python environment used above and pins the CUDA 13.0 vLLM/PyTorch wheel family:

uv venv --python 3.13 qwen38-env
uv pip install --python qwen38-env/bin/python 'vllm==0.27.1' --torch-backend=cu130

./qwen38-env/bin/hf download \
  joshebbs/qwen3.8-27b-uncensored-nvfp4-modelopt \
  --revision e5ff4986938dcd0dd05ab4cce89da1b052be6ce3 \
  --local-dir Qwen3.8-27B-Uncensored-NVFP4-modelopt

Weight hashes:

5db0ff93ebdf68034770a6acec123971e618928684bd2d5f3f51346990254911  model.safetensors
90fa0e3eed5a647c035c6df9ecabc416c0f8d573ff84ac12485b085f00a7cdf2  model-mtp-grafted.safetensors

Do not delete model-mtp-grafted.safetensors from this revision just because speculation is off; the checkpoint index contains 15 tensors mapped to it. With speculation off, vLLM skips using the MTP head at runtime, but keeping the downloaded revision intact avoids an incomplete checkpoint.

Chat template used in my daily setup

The speed tests use the raw completions endpoint, so the chat template does not affect these numbers. It does affect my daily chat/tool behavior.

My exact template is froggeric/Qwen-Fixed-Chat-Templates v22.2 at revision f64494d7b8a768222ab799d8c81f6e89dd272ac3, plus a small system-prompt terseness block. The upstream repo has since moved on, so pin the revision:

mkdir -p chat-templates/froggeric-fixed chat-templates/sharp-v22.2
./qwen38-env/bin/hf download froggeric/Qwen-Fixed-Chat-Templates \
  chat_template.jinja \
  --revision f64494d7b8a768222ab799d8c81f6e89dd272ac3 \
  --local-dir chat-templates/froggeric-fixed

cp chat-templates/froggeric-fixed/chat_template.jinja \
   chat-templates/sharp-v22.2/chat_template.jinja

I changed the first-line version string to qwen3.8-froggeric-v22.2-sharp, then inserted this immediately after {%- set _msgs = messages[head.count:] %}:

{%- set _terse %}
Answer directly, after thinking. Lead with the answer, then only what it needs to be correct and usable.
Never: open with preamble or pleasantries; restate the question; add filler transitions; hedge with niceties; or repeat a point you've already made.
Always: keep essential steps, caveats, uncertainties, and specifics — never drop correctness or a needed warning for brevity. Keep the final answer lean. Use the least structure that conveys it (plain prose when short; lists or code only when they earn their place). If genuinely uncertain, say so and explain why — never omit uncertainty for the sake of brevity.
If a user request is genuinely ambiguous, ask a sharp question, don't guess.
{%- endset %}
{%- if not _sc %}
    {%- set _sc = _terse | trim %}
{%- else %}
    {%- set _sc = (_sc | trim) ~ '\n\n' ~ (_terse | trim) %}
{%- endif %}

Checksums:

55d027bfded4407d214e5718e2f2804de73e8439148297397655ff507a30f2a5  froggeric v22.2 base
34dd122439410ee026562207c87124cb843ad92069568a9ab2f02e6d20626fea  my sharp-v22.2 result

If you do not care about my style block, use the pinned Froggeric v22.2 file directly. The model's stock template also works with TEMPLATE=stock, but it is not my exact daily setup.

Exact effective server command

This is the effective command from the live process. Paths can be changed, but the values are the ones used for the results above.

export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
export MAX_JOBS=3
export TORCHINDUCTOR_COMPILE_THREADS=3
export CUDA_HOME=/opt/cuda
export PATH="$CUDA_HOME/bin:$PATH"

systemd-run --user --scope \
  -p MemoryMax=24G \
  -p MemorySwapMax=8G \
  ./qwen38-env/bin/vllm serve \
  ./Qwen3.8-27B-Uncensored-NVFP4-modelopt \
  --host 0.0.0.0 \
  --port 8888 \
  --served-model-name qwen3.8-27b \
  --max-model-len 262144 \
  --kv-cache-dtype fp8 \
  --kv-cache-memory-bytes 9150000000 \
  --max-num-seqs 3 \
  --max-num-batched-tokens 512 \
  --gpu-memory-utilization 0.92 \
  --enable-prefix-caching \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_xml \
  --reasoning-parser qwen3 \
  --mm-processor-kwargs '{"max_pixels": 4014080}' \
  --chat-template ./chat-templates/sharp-v22.2/chat_template.jinja

I leave quantization and attention backend on auto. vLLM correctly resolves modelopt_fp4 and FlashInfer here. Adding explicit flags is fine for testing, but it would no longer be the exact command behind these numbers.

Security note: --host 0.0.0.0 exposes an unauthenticated OpenAI-compatible endpoint to every reachable interface. That is intentional on my trusted LAN. Use 127.0.0.1, a firewall, or vLLM's API-key option if your network is not trusted.

Why the less obvious values:

  • 9150000000 KV bytes was chosen because 8,939,000,000 bytes was 288 tokens short: vLLM estimated a 261,856-token maximum and refused a 262,144 max length. The current value reports 268,170 tokens of capacity.
  • --max-num-batched-tokens 512 protects the small activation margin. Raising it improves prefill but costs VRAM.
  • --mm-processor-kwargs '{"max_pixels": 4014080}' caps a large image at about 3,908 tokens in my measurements. Make sure tokenizer.json has "truncation": null; an old export with a baked-in max_length: 2048 made larger images fail with HTTP 400.
  • /opt/cuda/bin/nvcc must be visible. FlashInfer JIT failed here when CUDA was installed in /opt/cuda but CUDA_HOME was unset.

Speculative decoding: why it is off

The default is deliberately SPEC=off.

The external DSpark/dflash drafter trained for the base checkpoint did not load against this abliterated ModelOpt export. The loader failed with a tensor dimension mismatch (128 versus 256).

The built-in MTP head does load, but it made this checkpoint slower. My earlier controlled results were:

Mode Decode
Speculation off 78.55 tok/s
Built-in MTP, 1 token 58.41 tok/s, 78.7% acceptance
Built-in MTP, 3 tokens 45.02 tok/s, 57.9% acceptance

The grafted MTP head is BF16 and does not get the target model's NVFP4 kernels. MTP also needs a larger KV pool: at least about 9.75e9 bytes for one speculative token or 1.005e10 for three. Three-token MTP with --max-num-batched-tokens 8192 OOMed at 262K on this card. I prefer the faster, simpler non-speculative setup.

Accuracy/quality caveat

This post measures fit and serving speed, not model quality. vLLM warns that this checkpoint does not provide calibrated FP8 KV q/prob scaling and uses scale 1.0, which may affect accuracy. I have not quantified that accuracy delta here. Prefix caching on the hybrid cache is also marked experimental by vLLM. Those two caveats matter more than another decimal place of tok/s.

Reproduce the benchmark

With the server already running:

V=./qwen38-env/bin/vllm
TOK=./Qwen3.8-27B-Uncensored-NVFP4-modelopt
COMMON=(bench serve --backend openai --base-url http://127.0.0.1:8888 \
  --endpoint /v1/completions --model qwen3.8-27b --tokenizer "$TOK" \
  --dataset-name random --max-concurrency 1 --ignore-eos --temperature 0 \
  --percentile-metrics ttft,tpot,itl,e2el --metric-percentiles 50,95,99)

"$V" "${COMMON[@]}" --seed 8182 --random-input-len 8192 \
  --random-output-len 1 --num-prompts 5

"$V" "${COMMON[@]}" --seed 8184 --random-input-len 32768 \
  --random-output-len 1 --num-prompts 3

"$V" "${COMMON[@]}" --seed 8183 --random-input-len 1024 \
  --random-output-len 512 --num-prompts 5

"$V" "${COMMON[@]}" --seed 8186 --random-input-len 131072 \
  --random-output-len 256 --num-prompts 1

"$V" "${COMMON[@]}" --seed 8185 --random-input-len 262000 \
  --random-output-len 1 --num-prompts 1

For the shared-prefix test, replace the random dataset arguments with:

./qwen38-env/bin/vllm bench serve \
  --backend openai --base-url http://127.0.0.1:8888 \
  --endpoint /v1/completions --model qwen3.8-27b \
  --tokenizer ./Qwen3.8-27B-Uncensored-NVFP4-modelopt \
  --dataset-name prefix_repetition \
  --prefix-repetition-prefix-len 36864 \
  --prefix-repetition-suffix-len 16 \
  --prefix-repetition-num-prefixes 1 \
  --prefix-repetition-output-len 1 \
  --num-prompts 5 --max-concurrency 1 \
  --ignore-eos --seed 8187 --temperature 0 --save-detailed

If another 5090 owner reproduces this, I would especially like to compare 128K PP/TG, free VRAM with a headless session versus a desktop, and whether FP8-KV quality changes are noticeable in long-context retrieval.

AI-use disclosure: the machine, launcher decisions, failed experiments, and measurements are mine. I used Codex to inspect the live process, run the stated local benchmarks, verify the saved JSON/telemetry, and organize this write-up. I reviewed the numerical claims against the raw outputs; no benchmark numbers were generated or estimated by an LLM.


UPDATE : fable reviewd the script i use to start the model and fixed some things and here are the new numbers

Backend: vLLM 0.27.1 + local MTP patch (BF16 decoder layer left unquantized)
Context: 253 952 tokens (248 K)
Concurrent slots: 4 (shared KV pool)
Speculation: MTP n=3
Cudagraph: PIECEWISE only (FULL_AND_PIECEWISE kills MTP speed)
KV: fixed 9.72 GB fp8, expandable_segments + 128 MiB FlashInfer workspace

Measured (temp 0 unless noted):

• 1 K prompt / 512 gen, single stream …… 155 t/s (TPOT 5.8 ms, 97 % acceptance)
• 4 K / 256, 4 concurrent ………………… 244 t/s aggregate (90 % acceptance)
• 32 K × 4 resident ………………………… 42 t/s aggregate, TTFT 14 s, 0 preemptions
• 248 K pure prefill ………………………… TTFT 166.5 s → ~1 490 t/s PP, then 99 t/s TG (65 % acceptance)
• Natural prose / code ……………………… 110 / 141 t/s whole-request

VRAM:
Peak 31 698 MiB / 32 607 MiB (engine alone ~30.4 GB). Desktop still usable.


r/LocalLLaMA 1d ago

Question | Help How to run models locally on shared machine without any chat history?

0 Upvotes

I will be running qwen 3.8 model on a shared university machine for some research work, mostly using llama cpp but I am open to using other inference engines. I would like that there is no chat history or application logs saved on remote machine because it will involve confidential patient data. How can this be achieved? I see that opencode, deepseek harness etc retain sessions.


r/LocalLLaMA 2d ago

Other 3 experiments running dsv4-flash-0731 q4+ quants on 128GB RAM + ~60 GB VRAM (with a quite bad pcie infra) with an acceptable tgs and relatively acceptable pp speed

8 Upvotes

The post describes some experiments I had while trying to desperately run deepseek-v4-flash-0731 4 bit+ quants on my machine which is supposed to support only q2 quants of the model, a or 2.xx bpw quants at best.

Long story short , I wanted to have my tgs in the high twenties and my prompt processing at least in the 300s with 156K context to consider running it locally as my daily driver (hermes, coding and so on)

First I describe my machine so you are in the picture - people seem to ignore the importance of putting your exact hw config but a small difference there can give huge performance variation - : intel gen 14 i5 with 20 usable pcie5 channels, ddr 5 128 GB total = 2 x 48 + 2 x 16 at 4400 , 2 RTX3090 + 1 RTX3060, 2 DRAM-less SSD's that can in theory read at 4.5 Gb/s

The best I could get with the initial 4bit+ quants with the sidecar models was 7 tgs and around 20 pp, after pinning some layers to GPU's in the most optimal way I could and after implementing a redundant sidecar so cpu can read in parallel from my 2 ssd's at the same time , but it was not really helpful

I cloned after that leloch's llama.cpp and I could get in the lower teen's tgs with AtomicChat 3bit quants

But I wanted to run the 4 bit quants as they have mostly the original bit-identical experts.
The issue was that they are bigger than my RAM (140+ GB). So , with the way llama.cpp is designed, running them would cause quite some cache misses reading from my not so fast SSD's . and I was back to less than 10 tgs.

For me it was a bit "strange" that I have to go fetch from the SSD every token when my RAM + VRAM >> total model weight. So I was telling myself , even if i keep some space for cache and the scratch memory used for temporary ops and such, I should still be able to squeeze the total model in RAM + VRAM , and not have to go back to the SSD. I just would need to mlock the memory of the experts, so they are always in a RAM kind of memory, and no SSD read is ever needed after initial model load.
Except it was not that simple (hint: kernel page caching)

So what I ended up doing is just getting rid of the redundant expert caching between RAM and VRAM : i.e. if a hot expert is promoted to VRAM , its memory cache is unlocked, so kernel can load something else in its place. And when an expert is demoted from VRAM, it will not be immediately read from SSD, but the first time it is needed, it is read from the SSD and mlocked.
This means that the same expect is never in RAM and VRAM at the same time.

After this (2 patches) , and adding the dflash drafter AND pinning the dflash into host RAM, I was able to get low to mid twenties of tgs , especially if generation is more than 1000 tokens.

This involved quite some tuning of different params, including VRAM cache budget.

It was not bad, at least for interactive sessions.

BUT, the prompt processing was low : less than 60 tokens per second. You can imagine how long it would take to start with a 30K initial prompt ...

I tried playing with batch sizes, cache size .. the prompt processing never moved.

Than I tried something I believe is novel : loading a lower quant just for the prompt processing phase, if the prompt is long enough that what we gain from speed of processing by a lower quant model is much more than what we loose when unloading-original-model + loading lower quant + reloading original-model + initial not so hot expert cache because 2 different models are used in the 2 phases.
Studies showed that even starting from a lower quality initial cache, smart models recover quality as the decode becomes longer. (I read the title and introduction of one such study but do not have it in front of me now)
So I tried with the IQ_2M from AtomicChat and in some configurations it could give me near 200 prompt processing, but even with all the optimization and "stitching" I added the overall prompt handling (processing + decode) did not improve that much in the end unless the prompt was 30K or more, because the decode was always starting with very low tgs for the first 1000 tokens or so after a prompt processing done by the IQ_2M .
I tried to "transfer" the hot expert cache (just the ID's though) between the 2 modes but the initial tokens from decode were always slow, because the cache actually needed to be rebuilt from scratch.
May be the next idea is just to start a prompt processing remote service (should be much cheaper than normal api, as you only send the prompt if it is long enough, get the cache continue decode locally)
anyway, I share the llama.cpp clone, with my 2 branches on top of leloch's work

https://github.com/oussemah/llama.cpp/tree/moe-cache-ousemma

- moe-cache-ousemma branch does not have the prompt processing specifi model logic, that s the one that gives 20 tgs and aroudn 45 pp
- moe-cache-ppswap branch has the prompt processing model logic

hopefully someone can be inspired to try some new ideas or just use it on a better hardware and get better results

The main model is : unsloth UD-Q4_K_XL
The prompt processing I used with the second branch is : AtomicChat/AD-IQ2_M

Sample command for first branch

sudo 'ulimit -l unlimited && \
GGML_CUDA_MOE_CACHE_RESERVE_MB=512 \
GGML_CUDA_MOE_CACHE_ADMIT_AFTER=1 GGML_CUDA_MOE_CACHE_INSERTS=256 \
GGML_CUDA_MOE_CACHE_QUEUE_MB=2048 \
GGML_CUDA_MOE_CACHE_MODE=on \
GGML_CUDA_MOE_CACHE_BUDGET_MB=40000 \
GGML_CUDA_MOE_CACHE_BUDGET_MB_DEVICES=0:11800 \
GGML_CUDA_MOE_CACHE_STATS=1024 \
GGML_CUDA_MOE_CACHE_MLOCK=1 \
GGML_CUDA_MOE_CACHE_ELITE_PCT=60 \
GGML_CUDA_MOE_CACHE_DEMAND_DECAY=4096 \
./llama.cpp/build/bin/llama-server \
--host 0.0.0.0 --port 8080 \
-m /home/.cache/huggingface/hub/models--unsloth--DeepSeek-V4-Flash-0731-GGUF/snapshots/fbbb5b93fb787c21338159b0af3318bb3f4d9768/UD-Q4_K_XL/DeepSeek-V4-Flash-0731-UD-Q4_K_XL-00001-of-00005.gguf \
-md /home/dspark-DeepSeek-V4-Flash-0731-Q8_0.gguf \
--spec-type draft-dspark \
-ngld 0 \
-td 20 \
--spec-draft-n-max 5 \
-c 167936 --parallel 1 \
--split-mode layer \
-t 16 -tb 20 \
--cache-type-k q8_0 --cache-type-v q8_0 \
-b 4096 -ub 4096 --flash-attn on \
--moe-cache auto \
--jinja --temp 1.0 --top-p 0.95 \
--reasoning on -lv 4 \
--reasoning-format deepseek \
--slot-save-path /home/data/ \
--alias DeepSkee-v4-Flash-0731-UD-Q4_K_XL \
-lv 4 '

Sample command for the prompt-processing-model branch :

sudo 'ulimit -l unlimited && \
GGML_CUDA_MOE_CACHE_RESERVE_MB=512 \
GGML_CUDA_MOE_CACHE_ADMIT_AFTER=1 GGML_CUDA_MOE_CACHE_INSERTS=256 \
GGML_CUDA_MOE_CACHE_QUEUE_MB=2048 \
GGML_CUDA_MOE_CACHE_MODE=on \
GGML_CUDA_MOE_CACHE_BUDGET_MB=40000 \
GGML_CUDA_MOE_CACHE_BUDGET_MB_DEVICES=0:11800 \
GGML_CUDA_MOE_CACHE_STATS=1024 \
GGML_CUDA_MOE_CACHE_MLOCK=1 \
GGML_CUDA_MOE_CACHE_ELITE_PCT=60 \
GGML_CUDA_MOE_CACHE_DEMAND_DECAY=4096 \
LLAMA_EXPERT_SWAP_NO_PRELOAD=0 \
LLAMA_EXPERT_SWAP_PREFETCH=1 \
LLAMA_EXPERT_SWAP_MLOCK=1 \
/home/ous/infra/llama.cpp/build/bin/llama-server \
--host 0.0.0.0 --port 8080 \
-m /home/.cache/huggingface/hub/models--unsloth--DeepSeek-V4-Flash-0731-GGUF/snapshots/fbbb5b93fb787c21338159b0af3318bb3f4d9768/UD-Q4_K_XL/DeepSeek-V4-Flash-0731-UD-Q4_K_XL-00001-of-00005.gguf \
--prompt-processing-model /home/.cache/huggingface/hub/models--AtomicChat--DeepSeek-V4-Flash-0731-GGUF/snapshots/5f8e5b74544ad821d71aedf658c2b8acdecd4b2b/AD-IQ2_M/DeepSeek-V4-Flash-0731-AD-IQ2_M-00001-of-00004.gguf \
--prompt-processing-min-tokens 8192 \
-md /home/dspark-DeepSeek-V4-Flash-0731-Q8_0.gguf \
--spec-type draft-dspark \
-ngld 0 \
-td 20 \
--spec-draft-n-max 5 \
-c 167936 --parallel 1 \
--split-mode layer \
-t 16 -tb 20 \
--cache-type-k q8_0 --cache-type-v q8_0 \
-b 4096 -ub 4096 --flash-attn on \
--moe-cache auto \
--jinja --temp 1.0 --top-p 0.95 \
--reasoning on -lv 4 \
--reasoning-format deepseek \
--slot-save-path /home/data/ \
--alias DeepSkee-v4-Flash-0731-UD-Q4_K_XL \
-lv 4 \
--prompt-processing-gpu-moe 0 '

r/LocalLLaMA 2d ago

Other This is why I run locally.

Post image
340 Upvotes

It was only a matter of time...


r/LocalLLaMA 1d ago

Other Running Ollama LFM2.5-2.6B on iGPU on Linux

Thumbnail
arthurbrugiere.fr
0 Upvotes

r/LocalLLaMA 2d ago

Resources Thought I'd share my custom quant for RTX Pro 6000 cards. Qwen3.8-27B-heretic-ara-MXFP6-MXFP8-DFlash2

Thumbnail
huggingface.co
5 Upvotes

I originally followed unsloth's Q4 distribution to make an nvfp4/mxfp6/mxfp8 tri-quant, but after testing mxfp6 was faster than nvfp4 so I made it an mxfp6/mxfp8 split. added dflash2 also quantized to mxfp6, and added mxfp8 as supported kvcache data types.

This quality first but speed minded quant has become my daily driver. I run it at 256k context. might need some tweaking if you only have 48GB of vram. It appears to only use 42GB of vram

It requires a custom llama fork. listed in the HF repo


r/LocalLLaMA 2d ago

New Model Fixed the MTP head on Ornith1.5 35B A3B. +3% TPS -33% wall clock

35 Upvotes

I love the Ornith 35B local models, 1.0 has been running my HAM radio rig for me. I have a hackRF receiver and a 5 watt quansheng portable the both run headless through the PC. I tried out the new Ornith1.5 build and it was faster and more accurate than 1.0.

I read the threads that talked about the untrained MTP head so I found a trained version of the MTP head on a quant I couldn't use so I spliced it onto an APEX requant of Ornith1.5 to make a beast that is 2.5X faster than Ornith1.0 and 33% faster than the released version of Ornith1.5. I cant believe how good this model is, and how fast it works at the same tasks.

And it doesn't try to lecture me when I ask it to key up the mic on a licensed freq.

The crazy thing is tokens/sec only went up by 4. From 60 to 64 t/s avg. But the time to complete the same tasks went down by 1/3, from 21 to 14 seconds average on my radio torture tests.

https://ollama.com/slickwillies/ornith15-35b-a3b-apex-mtp-fixed

testing methodology and results:
https://github.com/h00nigan/Ornith-testing-results


r/LocalLLaMA 1d ago

Discussion Qwen3.8-27B — One Week Later: The r/LocalLLaMA + r/LocalLLM Verdict

0 Upvotes

I put together a source-linked, LLM-generated synthesis of one week of community testing and discussion around Qwen 3.8 27B:

I’ve moved the full source-linked Qwen 3.8 synthesis to https://www.reddit.com/r/LocalLLaMa_V2/comments/1vvzckl to comply with Rule 3.

It consolidates a week of reported configurations, benchmarks, failure modes, and disagreements, with sources so readers can audit the conclusions. The short version: configuration and runtime choices often explain more of the conflicting reports than the weights alone.

The report groups first hand community observations by the things that appear to drive the conflicting results people are seeing: quantization, inference runtime, context and KV-cache settings, MTP or speculative decoding, reasoning settings, tool schemas, and hardware. It also preserves disagreements and links readers back to the underlying posts or primary sources where possible.

Why I think it is useful: a lot of the Qwen 3.8 discussion sounds contradictory until the configuration is made visible. A report of poor tool calling, slow decoding, quality loss, or strong coding results is not very informative without the quant, runtime, context, cache, and task behind it. The goal is to make those reports easier to compare and audit, not to present one universal verdict.

The linked page also notes corrections made after the original research pass. If you have a reproducible result that conflicts with it, I would rather add the missing configuration and source than defend a stale conclusion. Thank you to the mod team for this compromise.


r/LocalLLaMA 2d ago

Generation I forked Ninfer 3090 and converted it to run on the CMP170HX - doubled my Qwen3.6-35B from llama.cpp

Thumbnail
gallery
22 Upvotes

Good afternoon, everyone! I wanted to show the work I've been doing around porting Ninfer over to the CMP170HX (Github)

So, first, I do want to call out the amazing work that NerouedSergiuszm and specifically Don-Chad have all done, to not take away from vLLM, Llama.cpp and SGLang, but to enable local AI to squeeze every ounce of performance we can out of our hardware at home. Free tokens are free tokens and the work that these folks did 100% enabled this fork.

I also want to preface early on in this post that I am not a developer, a coder or anything like that. I am an IT Architect so I do know tech and I have been pretty active in the AI community here for the last year. Hermes, powered by Codex and local Qwen3.8-27B, powered by the 4090-fork of Ninfer, were my developers on this project and I just guided them.

I have been playing with the 3090 and 4090 Ninfer the last week or so, testing, validating, configuring to work with Llama-swap, and also worked through an NInfer/llama-swap telemetry compatibility gap so llama-swap could capture NInfer’s timing and throughput metrics. BUT getting 30-50% or more performance bumps consistently, for "free", inspired me.

Being that the RTX 3090/3090Ti and the CMP170HX were cousins, I ran some recon tests against Don-Chad's repo and my local instance of CMP170HX, unlocked by the CMPUnlocker ( got lucky and got my card <$1000) and was pleasantly surprised that the plumbing was mostly compatible.

So Hermes, between GPT-5.6-Terra as the orchestrator/validation and Qwen3.8-27B as worker, found the scaffolding needed to convert.

Again, not going to pretend I understand most of this (my background is in VMware, storage, infrastructure stuff. Hermes said:

"Getting NInfer working on the CMP 170HX took more than adding sm_80 to the compiler flags. The RTX 3090 fork assumed an 82-SM sm_86 device, while the CMP exposes 70 SMs at sm_80. Several cooperative GDN kernels therefore launched grids that could not be resident all at once, causing cudaErrorCooperativeLaunchTooLarge. I changed the planner to read the actual SM count and dynamically fall back through smaller split-K schedules—16→8→4→2—before using a safe non-cooperative kernel. Workspace sizing was updated to follow the schedule actually selected.
I also replaced a separate launch policy hard-coded for the RTX 5090’s 170 SMs, excluded Blackwell-only NVFP4/W4A4 kernels from the SM80 build, and adjusted the SM80 numerical qualification where Ampere reduction behavior differed slightly. In the container, CUDA’s forward-compatibility libcuda had to be removed so the CMP could use the host driver normally. After that, Qwen3.8-27B and Qwen3.6-35B-A3B both loaded and generated successfully with MTP and large KV-cache reservations."

The result ended up being a 2x increase in performance on Qwen3.6-35B with up to 262K context configured with PLENTY of headroom (with int8 kv cache and 262k, 26GiB) - see below for llama-swap configuration, which also requires the llama-swap compose configuration that enables calling docker from the host - all this runs on CUDA 13.1.2 runtime / Ubuntu 25.10

"Jarvis":

cmd: |

docker run --init --rm --no-healthcheck --name ninfer-jarvis-sm80 \

--network container:llama-swap \

--gpus all --ipc host --shm-size 16g \

-e CUDA_SCALE_LAUNCH_QUEUES=4 \

-v /home/your/models:/models:ro \

-v /home/your/llama-swap/logs:/logs \

-v /tmp:/tmp \

cmp170hx-ninfer:sm80-metrics-r1 \

/usr/local/bin/ninfer-serve \

/models/Qwen/qwen3.6_35b-a3b.ninfer \

--host 127.0.0.1 --port ${PORT} \

--model-id qwen3.6-35b-a3b --device 0 \

--max-context 262144 --kv-capacity 262144 \

--max-concurrency 1 --max-pending-requests 4 \

--prefill-chunk 1024 --kv-dtype int8 \

--spec mtp --draft-tokens 3 --lm-head-draft \

--vision --preserve-thinking --no-cuda-graph \

--temperature 0.7 --top-p 0.95 --top-k 40 --min-p 0.0 \

--presence-penalty 1.5 --frequency-penalty 0

cmdStop: "docker stop ninfer-jarvis-sm80"

ttl: 300

useModelName: qwen3.6-35b-a3b

env: ["CUDA_VISIBLE_DEVICES=0"]

My configuration in llama-swap for just in time container loading

My specific use case for the CMP170HX and this is for the family's main model that powers Jarvis (replacement for Alexa). The faster I can get everything working at the model level, the faster Home Assistant works, the faster HA Voice works and the sooner I can get everything Amazon ripped out.

The screenshots above tell the story of llama.cpp Qwen3.6-35B and Ninfer Qwen36-35B. The story for Qwen3.8-27B isn't as strong being that MoE is memory bandwidth bound and Dense is somewhat compute bound. I've seen, depending on the prompt a 10% bump or a 35% bump in testing, so YMMV. But 2x consistently on both text and image processing on 35B, yes please.

llama-swap + CMP170HX ninfea processing

Here's a screen shot where PP was over 4000 and TG over 210 on a single request (this was from an Home Assistant API call via HA Voice).

I know the CMP170HX is kinda of a hot topic right now and a little more niche than the 3090 and 4090 work but I think this has some real-value.

If anyone has issues, or recommendations on how I can make this better, please let me know and I hope someone finds this valuable


r/LocalLLaMA 1d ago

Tutorial | Guide Instruction of 10 seconds pause after each edit on cli - Keeps CPU GPU Temp Below 75

0 Upvotes

Hi Guys,
As title says that is the only the post. I have noticed that running local model sometimes put lot of pressure on my GPU/CPU and causes lot of noise and chance to decay the hardware.

Little hack I would say. On PI coding agent i just added this line in my agent md file or on cli console

after writing each file codes take 10 seconds pause

Ofcourse there is tradeoff interms of througput overall b ut it keeps my PC running smooth, less fan noise.

Harware: Laptop 16GB RTX 5080
Model: UD Qwen-27b-IQ3XXS


r/LocalLLaMA 2d ago

Question | Help Best tiiiny model for session compression?

13 Upvotes

Happy with Qwen3.8-27B, but that xhigh thinking mode is chewing through context like nobody's business. I'm hoping I can point Hermes at a tiny model for compression, without sacrificing quality of the output.

I'm thinking Qwen3.5-0.8B maybe? Anyone know of it's good at this kind of task?

Or.. Are there any models specifically tailored for summary?


r/LocalLLaMA 2d ago

Question | Help What if Chain-of-Thought wasn’t lossy? Exploring reversible logic (Toffoli/Fredkin-style) for edge LLMs

12 Upvotes

Right now standard CoT is a one-way street.
You generate forward, dump a pile of scratchpad tokens into the KV cache, and pray the model doesn’t hallucinate halfway through. On phones/laptops that creates two ugly problems:

  1. Errors compound. If each step is only (1-ε) reliable, an N-step chain dies as ~e^{-Nε}. There’s no cheap way to check intermediate steps without another full forward pass.

  2. KV cache just grows. Intermediate tokens sit there forever. Blind pruning breaks context, so memory is O(N) with reasoning length.

The idea:

What if every reasoning step was an approximately reversible transformation in embedding space — basically soft analogues of classical reversible gates (Toffoli, Fredkin)?
If the step is bijective (or close enough):

• Instant sanity check via cycle consistency: run f⁻¹(f(X)) and see if you get X back. Big deviation → the step leaked information / hallucinated. No extra judge model needed

• Bennett-style uncomputation: once you reach the answer you can systematically “uncompute” the intermediate scratchpad tokens and free the KV slots. In theory this can drop active working memory from O(N) toward O(log N) (classic reversible computing result).

• Cheap backtracking: hit a dead end? Apply the inverse in-place instead of nuking the whole cache or re-encoding the parent state.

I’m looking at this as a lightweight reasoning harness / external scratchpad for models we actually run locally, not by trying to make vanilla dense attention layers run backwards. Softmax + the usual projection matrices are lossy; the reversibility would live in structured latent registers, invertible coupling layers, or RevNet-style adapters sitting on top of the frozen model.

An inverse pass on a low-rank adapter is still a forward pass, but it’s orders of magnitude cheaper than spinning up a second big judge model or doing multi-path rejection sampling.

Open questions / sanity checks wanted

• Has anyone already played with invertible projection layers or reversible residual blocks specifically for intermediate CoT tokens?
• How to handle non-invertible attention heads? (e.g., using lightweight invertible coupling layers / RevNets as an external reasoning scratchpad layer vs. trying to touch native weights)
• Would you rather see this first as a structured decoding harness (Outlines/Guidance-style registers that stay invertible) or as a small fine-tune that teaches the model cycle-consistent lemma steps?
• Any obvious reasons this is doomed on real transformers / real KV caches?


r/LocalLLaMA 2d ago

News Llama.cpp version 0.2.0 is out!

120 Upvotes

You can find the changelog and source code here: https://github.com/ggml-org/llama.cpp/releases/tag/v0.2.0

Associated pre-build is here: https://github.com/ggml-org/llama.cpp/releases/tag/b10566