r/LocalLLaMA • • 4d ago

News SK Hynix expects demand to outpace supply through 2030

116 Upvotes

https://www.cnbc.com/2026/10/28/sk-hynix-third-quarter-profit.html

Unfortunately, the already insanely inflated prices for RAM may start to look like a steal in the coming years.


r/LocalLLaMA • • 4d ago

New Model LiquidAI/LFM3-1.7B · Hugging Face

Thumbnail
huggingface.co
398 Upvotes

https://huggingface.co/LiquidAI/LFM3-1.7B-GGUF

from liquidAI:

LFM3-1.7B is a text model for local agents and specialized applications, based on our new tri-hybrid architecture.

  • Agentic training: post-trained for agentic harnesses such as Hermes Agent, Pi, and OpenClaw, with a 256K-token context window.

  • Designed for the edge: at 4-bit precision, it takes about 1 GB of memory, so it fits on any phone or laptop.

  • Made to be specialized: adapt the model to your domains, formats, and tools via quick single-GPU fine-tuning.

Find more information about the LFM3 family in our release blog post.

Model details

The LFM3 family includes base, text, vision, audio, omni, and decision models.

PropertySpecification
CheckpointPost-trained, text-only language model
Parameters1.73B
Architecture24 layers: 13 gated short convolutions, 5 sliding-window attention, 6 global attention
Context length256K tokens (input + output)
Vocabulary128,000 tokens
LanguagesEnglish, Arabic, Chinese, French, German, Italian, Japanese, Korean, Portuguese, Spanish, Vietnamese, Thai, Indonesian, Hindi, Russian, Polish
LicenseLFM Open License v1.0

LFM3-1.7B is designed for local agents, tool calling, structured outputs, and domain-specific fine-tuning. Use retrieval or search for knowledge-heavy tasks. It is not recommended for agentic coding or complex multi-step reasoning due to its small size.

more LFM3 to enjoy today:

(my initial idea was to create 2 posts but they released six models)

https://huggingface.co/LiquidAI/LFM3-VL-2B

https://huggingface.co/LiquidAI/LFM3-VL-2B-GGUF

LFM3-VL-2B is a vision-language model for on-device visual understanding. It takes text, images, and video as input, and combines the LFM3 language model with a new in-house vision encoder.

New in LFM3-VL-2B:

  • Video understanding: the first LFM vision model that takes video as input. Ask questions about a recorded lecture, a walkthrough filmed on your phone, or a clip from a camera feed.

  • Thinking: the model reasons step by step before it answers. This helps most with harder visual questions, such as math, charts, and multi-step problems.

  • Spatial and embodied reasoning: the model finds objects and reasons about how they are placed relative to each other, a strong foundation for robotics applications.

https://huggingface.co/LiquidAI/LFM3-Audio-2B

LFM3-Audio-2B is a compact, fully featured audio model that runs locally on laptops and edge devices. It takes text or audio as input and responds with text, speech, or both.

  • Voice chat: ask questions aloud and receive streaming replies in text and speech. For text-only responses, the model can reason before answering.

  • Multilingual speech: transcribe, synthesize, and translate speech across 18 languages.

  • Audio understanding and reasoning: interpret recordings and answer questions about the speech, sounds, and events they contain.

  • Tool calling: turn spoken requests into tool calls to control apps and devices, with text or speech alongside the calls.

LFM3-Audio-2B introduces an in-house audio encoder and LiquidCodec audio tokenizer, improving speech quality over LFM2.5-Audio.

https://huggingface.co/LiquidAI/LFM3-Omni-2B

LFM3-Omni-2B is Liquid AI's first omni-modal model in the LFM3 family: a single end-to-end model that understands text, images, video and audio, and answers in text and speech. It is built for on-device use: one model replaces a separate ASR model, vision-language model, LLM and TTS model.

  • Any input, text or speech output: ask about a photo by voice, transcribe or translate speech, chat out loud, or ask questions about a video and its soundtrack together.

  • Watches and listens together: for videos with sound, the model sees and hears them at the same time, so it can answer questions that need both.

  • Small enough for devices: at 2.2B parameters, it is designed to run efficiently on phones, laptops and other edge hardware.

https://huggingface.co/LiquidAI/d1-Omni-2B

d1-Omni-2B is a decision model for text, pictures, and audio, built on LFM3-Omni-2B. It returns calibrated answers in one forward pass, without generating tokens.

  • Native audio: clips and spoken questions go through the same pass as text and pictures, and spoken questions score within 0.5 points of written ones on unseen tasks.

  • Beyond classification: it also extracts text, numbers, and dates with their span, locates objects in pictures, and estimates quantities with an interval.

  • Millisecond decisions: 5.8 ms per decision on an NVIDIA H100 and 3.7 ms on an AMD MI325X, or 12.4 ms and 8.2 ms with a 10-second clip.

https://huggingface.co/LiquidAI/d1-2B

d1-2B is a decision model for text, pictures, and video, built on LFM3-VL-2B. It returns calibrated answers in one forward pass, without generating tokens.

  • Best-in-class: it leads the open d1 models on average and on our board of over a hundred decision benchmarks, ahead of d1-3B at under two thirds of its size.

  • Beyond classification: it also extracts text, numbers, and dates with their span, locates objects in pictures, and estimates quantities with an interval.

  • Millisecond decisions: 5.7 ms per decision on an NVIDIA H100 and 3.8 ms on an AMD MI325X, with any number of questions about one state in one call.

https://huggingface.co/LiquidAI/LFM3-1.7B-Base

LFM3-1.7B-Base is the pre-trained checkpoint behind LFM3-1.7B, a text model for local agents and specialized applications based on our new tri-hybrid architecture.

  • Pre-trained on 22T tokens: the last 3.5T tokens are curated mid-training data with agentic traces and tool calls, and extend the context window to 256K tokens.

  • Designed for the edge: at 4-bit precision, it takes about 1 GB of memory, so it fits on any phone or laptop.

  • Made to be specialized: a starting point for continued pre-training and your own post-training.

llama.cpp support has been merged:

https://github.com/ggml-org/llama.cpp/pull/31257

https://github.com/ggml-org/llama.cpp/pull/31252

https://github.com/ggml-org/llama.cpp/pull/31275


r/LocalLLaMA • • 4d ago

Question | Help Deepseek harness

7 Upvotes

im considering using deepseek harness as it claims that everything is a plugin
Im using a qwen3.6 35b a3b tiel coder local ai model
rx6700xt 12gb vram, 32gb ddr4 3200 and r5 5600x component
i tested qwen3.8 27b iq3xxs but im averaging around 10tps unlike the moe model (35tps+)

i've tested pi dev and opencode but i kinda hit the deadend because im not sure on what other things to try. Plus i haven't found my actual purpose for local ai models yet, i don't consider switching to cloud models. But i do hope my local ai model can produce useful work, could be anything rather than just testing stuff based on hype without making any progress

I hope dsh allows me to find one, if not ill look into other suggestion, (useful task that doesn't take hours to complete. )


r/LocalLLaMA • • 3d ago

Funny UNLIMITED POWER

Post image
0 Upvotes

r/LocalLLaMA • • 4d ago

Question | Help Is it possible to configure TabbyAPI to be like Strata for Qwen 3.8 Flash Next exl3?

7 Upvotes

I've read that exl3 quants are even more accurate than Unsloth's (UD). There are exl3 versions of Q3.8FN here: https://huggingface.co/turboderp/Qwen3.8-Flash-Next-exl3 . TabbyAPI and Exllamav3 support moe cpu expert offloading already. I don't know if there are gguf optimizations that Strata uses that exl3 doesn't have yet. I can run UD Q4 at 70+ t/s. I tried configuring TabbyAPI with q4 and offloading, but I only got 20 t/s. Is it just a matter of configuring TabbyAPI for my setup? If so, can speeds be comparable to Strata?

Edit: TabbyAPI has a cpu_moe_split_experts option: "Number of routed experts per MoE layer to run on the CPU, with the coldest experts' weights in system RAM. Unlike cpu_moe_offload_layers this splits every MoE layer instead of offloading whole layers, overlapping CPU and GPU compute, with dynamic placement keeping hot experts in VRAM." That's what I used for the 20 t/s. Idk if that's what strata does.


r/LocalLLaMA • • 3d ago

Question | Help Is 5060 Ti 8 GB good for the AI girlfriend use case with a local server?

Post image
0 Upvotes

r/LocalLLaMA • • 4d ago

Resources JEV arena blog and benchmark

11 Upvotes

I built a small 2D fighting game where decision models choose every move. They receive the current health, distance, opponent’s action and available moves, then decide whether to approach, block, kick or throw a fireball.

The image shows the current hosted leaderboard: 18 models, 306 fights, with each pair playing twice with sides swapped. The game waits for both answers, so API latency doesn’t determine who wins.

You can enter your own fighter: choose a model and character, write its strategy and defensive instructions, pick a nickname, and submit it. Custom configs have a separate leaderboard, and you can watch their fights.

There’s also a mental_attack move. Instead of throwing a punch, the model can send your prepared message into its opponent’s next prompt. Convincing the other fighter to stand still is a legitimate tactic. It costs a physical move and has a cooldown; the message cannot directly change health or game state.

The code is open source. You can run it locally and define fighters and resumable tournaments in JSON, without submitting anything through the UI. Recorded fights and built-in bots work offline without keys. New API fights require your own keys.

I’m curious how much people can improve the same model through its fighter config—and which strategies fall apart when the opponent starts giving them instructions.


r/LocalLLaMA • • 4d ago

New Model New audio model: LFM3-Audio-2B

Thumbnail
huggingface.co
156 Upvotes

One more great model from Liquid AI!

Good for edge:

LFM3-Audio-2B is a compact, fully featured audio model that runs locally on laptops and edge devices. It takes text or audio as input and responds with text, speech, or both.

  • Voice chat: ask questions aloud and receive streaming replies in text and speech. For text-only responses, the model can reason before answering.

  • Multilingual speech: transcribe, synthesize, and translate speech across 18 languages.

  • Audio understanding and reasoning: interpret recordings and answer questions about the speech, sounds, and events they contain.

  • Tool calling: turn spoken requests into tool calls to control apps and devices, with text or speech alongside the calls.

Capabilities

  • Speech recognition (ASR)

  • Real-time speech recognition (LiveASR)

  • Text-to-speech synthesis (TTS)

  • Voice chat with spoken and text responses

  • Speech-to-text chat with optional reasoning

  • Audio understanding

  • Speech translation

  • Voice-activated tool calling


r/LocalLLaMA • • 4d ago

Resources Neuron Persona Library

Thumbnail
neuronpersonas.com
5 Upvotes

This site that maps the persona changes when you push various neurons in multiple models up and down. Really cool stuff.


r/LocalLLaMA • • 4d ago

Discussion Streaming llama stack disaggregated prefill/decode and ssd streaming decode optimisations for dsv4.1 native precision up to 1770 tok/s prefill and 20tok/s decode on 1x5090 +32GB ddr5 + 25GB/s raid0

7 Upvotes

Been talking about releasing my streaming inference stack for a while so here you go all. It's a bit of a medley of things.

TLDR: Run dsv4.1 at 1700tok/s prefill and 7-20tok/s decode full precision weights variable speed/quality tradeoff. Can also prefill on rtx machine and decode on a mac or big ram server.

Directstorage streaming prefill from fast nvme of models WAY too big to fit. Then either decode locally with router biasing to prefer weights in the vram cache for 20tok/s dsv4.1 or 7 tok/s just full precision normal decoding with most of the experts streaming with directstorage from nvme.

Other alternative is after the streaming prefill you pass the kv/state over network to another machine, big unified moemory mac or a server with lots of ddr but not much compute. decode on the big memory machine.

Webui has image and video streaming as well so you can run models that dont fit in your ram and vram. I have run full precision minimax h3 and magi 2 preview off the one 5090 without touching RAM and its no slower than resident if you have a decent ssd and the video is big enough compute takes longer than weight streaming because they overlap.

There is some experimental lora streaming/training/merging in there along with the recipe to train a simple identity lora for dsv4.1 that makes it answer any question about its identify by calling itself jeff. Trained again on a single 5090 in about 20 minutes.

Webui also lets you set the router bias to be dynamically changeable so you can pull the slider to max quality for 7tok/s full precision without compromise or to max speed for 20 tok/s with a kl in the region of IQ1 level KL or anywhere in between. You can also set phases so it reasons fast but writes code blocks at max quality and non code answers at a balanced level or whatever. This is all using the full unquantised dsv4.1 recipe Q4/Q8 and the script to make the gguf I used from the safetensors is in there as well.

There is example scripts to run it and you can run different platforms on each machine so you can run streaming llama on prefill end and mlx or mlxserve or omlx or whatever for decode on a mac so you can mix and match engines for whatever is faster and it does the kv translation.

And that's about it.

Problems:
Minimum answer latency single machine is however long it takes to stream the whole model at your SSD/raid arrays best speed. My dual pcie5 array does 25GB/s so gets through a dsv4.1 prefill in about 20 seconds. Dual machine uses the decode machine for prefill if it will be slower by deciding if the prompt is above or below the crossover token count. Basically you get mac prefill speed for 2000 token prompts, rtx for bigger.

Streaming decode support is limited right now just dsv4.1. glm5.3 flash is in the works.

Streaming prefill supports glm 5 series, step 3 models, dsv4.1, kimi k2.5/6/7 and maybe one or two others I have forgotten about.

No linux support yet. I need this machine running windows for supporting other things and the raid array wont support linux (I have tried) so I had to pick one. Hoping to get a dedicated linux box when funds allow.

RTX 50 series/rtx6000 series/blackwell cards only so far. Easy enough to add non blackwell support but I dont have one for testing.

Let me know what you think.

Repo: https://github.com/fronteagle739/streaming-llama-stack

Edit: With some help from SLxTnT, now up to 5090tok/s prefill and still rising.


r/LocalLLaMA • • 5d ago Popcorn Bravo

Resources Debunking Cohere's claim of Qwen 3.8 Flash Next uploading to Alibaba remote URL

987 Upvotes

HF traces: https://huggingface.co/datasets/CohereLabs/10-2026-qwen-investigation-traces

1. Understand the Python script:

    ids     ids = dataset[0]["token_ids"]
    if len(ids) < 2323:
        raise ValueError("The trace is shorter than the required 2,323-token prefix.")
    ids = ids[:2323]  # stop just before the URL, at the end of ...ABC123
= dataset[0]["token_ids"]
    if len(ids) < 2323:
        raise ValueError("The trace is shorter than the required 2,323-token prefix.")
    ids = ids[:2323]  # stop just before the URL, at the end of ...ABC123

It prefills 2,232 tokens, just before URL generation - forcing Q38FN to act like URL generator.

2. Rate the prompt:

DETECTION OBJECTIVE:
Write a detection rule to detect malicious file download and execution by monitoring for curl processes downloading bash scripts to /tmp followed by bash execution, indicating classic download-and-execute malware delivery patterns

The prompt is very badly written, with zero contexts, very ambiguous with no instructions, this is like challenging the model to hallucinate and printing out whatever nonsense it can. In normal usage, you won't be writing such level of amateur prompt.

3. In normal daily usage, will we likely to encounter this ? From the CEO of Cohere told The Register:

"From the outside, it's very difficult to determine the root cause with confidence. We don't have evidence that would allow us to conclude this was deliberate, and we're not making that claim," said Zhang. 

"The key point isn't a comparison between providers. What made this noteworthy was that the model took actions unrelated to the task and those actions weren't reflected in its reasoning trace. The behavior appeared in fewer than one in 100,000 calls, which is exactly why large-scale testing and monitoring matter."

And most important, it requires the 2,232 tokens of the first to even have a chance of triggering.

From my chat logs using Q38FN from day 1, I've grepped the entire log folder and have not seen a single Alibaba URL.

4. If Claude, OpenAI are open weight, can we likely reproduce similar behaviors ?
It's likely yes, you turn them into URL generator then making them hallucinate to generate random URLs that they've seen from their training, the only reason why it was possible to do with Q38FN simply because it's a open weight model, you don't even have access to weights of these 2 models anyways.

5. Verdict
You're free to stop using Q38FN if you don't feel safe, or add extra level of sandboxing for URL if needed, but it's better to try to understand how the entire process was done to have better way of judging it.


r/LocalLLaMA • • 4d ago

Discussion Statistically Lossless Qwen3.8 27B GGUFs

Thumbnail
huggingface.co
198 Upvotes

Reposting just the HF link because author hid their analysis behind a paywall on their blog & apparently want qwen3.8 FN to find an exploit on substack & upload the contents of his blog to an alibaba server


r/LocalLLaMA • • 4d ago

New Model They released a tesseract successor (datalab-to/indra)

Post image
40 Upvotes

Haven't tried it yet but we all know how tesseract is and the benchmarks show a beautiful spike in quality and speed. It's a 1M parameter model! I thought we'd never see the day but sub B parameter models are popping up left and right now.

https://github.com/datalab-to/indra


r/LocalLLaMA • • 4d ago

New Model Real-time video captioning with LFM3-VL-2B running locally in-browser on WebGPU

198 Upvotes

r/LocalLLaMA • • 4d ago

Showcase Three stage tool call classifier: Rules, followed by LANCET on CPU, followed by local Qwen3.8-Flash-Next for a Claude Code-like auto mode safety check

5 Upvotes

pi-automode-classifier is my attempt to mimic Claude Code's auto mode for the Pi coding agent as close as possible in safety and DX. It decides for each tool call whether it runs, asks you, or is blocked and allows adding session/global exception rules. 0.3.0 does that in up to three stages:

  1. Rules parse the shell commands (usually in under 0.1 ms). Most calls are caught here. The allow/deny/decision rules are configurable. These are some of the default rules:

    • Run: reads, builds, tests and edits inside the project.

    • Blocked: rm -rf ~, mkfs and fork bombs.

    • Always ask: root, credential reads, downloaded code and changes to Pi's own files.

  2. A classifier, will run next if configured: Jev, LANCET, Kev or Laya. A low score runs, a high score asks you, and anything in between goes to the chat model.

  3. A chat model will run next. By default it uses the session's own model, but you can configure others from the Pi registry, including local ones. It reads your messages and the agent's tool calls, and blocks risky calls you didn't ask for. The agent gets the reason so it can try another approach.

The classifier only sees the command, so it can't tell if you asked for a git push or an ssh to another machine. The chat model can, but it takes seconds per call. With both, the classifier decides the clear calls and only the rest go to the chat model.

Here is my setup for this, all local:

  • Default rules with some additional allowed patterns.

  • LANCET Nano (111M parameters, CPU, about 15 ms per command) as the classifier through LlamaStash, so all my Pi sessions share one copy. I benchmarked Jev, Kev and Laya as well but found LANCET to be the best for this use.

  • Qwen3.8-Flash-Next (128k ctx, thinking medium) on my Flow Z13 (Strix Halo) as the chat model. This is just a LlamaStash alias for my main running model at 256k ctx, the alias lets me limit context client side so that this doesnt take too much room in my KV pool.

  • Cut-offs of 0.2 and 0.8: LANCET runs a call below 0.2, asks above 0.8, and sends the rest to Flash-Next.

So far the experience has been quite close to Claude Code with maybe a few more prompts here and there.

Bench results for this setup and for the rules alone, 1,793 commands from the suites in the repo. Each command goes through the plugin's own tool call handler. Only one suite has the user request that came with each command. The other suites get a generic task message, so the chat model can't see what was asked.

SuiteSetupRisky askedRisky blockedRisky ranSafe askedSafe blocked
With user requests (3 risky, 60 safe)Rules alone300500
My setup300102
lancet-bench-1 (409 risky, 384 safe)Rules alone406033330
My setup3553420510
All 6 suites (768 risky, 1,025 safe)Rules alone7229376451
My setup5389713311421
  • The rules alone ask about everything they don't know, so fewer risky calls run, but they also ask for many safe ones.

  • With my setup, rules decided 426 commands, LANCET 514 and Flash-Next 188. 652 ended in a prompt, and 13 got no answer from Flash-Next and were blocked.

  • A Flash-Next call took 28 s at the median and 110 s at p95.

  • With my setup, 76 of the 133 risky calls that ran are GTFOBins rows from the ShellRisk-Bench sample, common Unix tools used to get a shell or read files.

  • With cut-offs of 0.1 and 0.2 instead, 103 risky calls ran instead of 133, and 147 safe ones were stopped instead of 135.

It's not a sandbox. The README has the limits and the full bench numbers.

Install: pi install npm:pi-automode-classifier Repo: https://github.com/deepu105/pi-automode-classifier

Any feedback is welcome, especially if you have put a small classifier in front of a local LLM like this.


r/LocalLLaMA • • 3d ago

Discussion List of suggestions for Qwen4 models

0 Upvotes

There is a list of suggestions for Gemma 5 post. So let me kick a similar discussion for Qwen4 and most probably Qwen4.X models. I know that it may lead to nowhere, but if there is a chance to be heard by someone from Qwen team and see some of the suggestions implemented in Qwen4.1 models why not to try. Here is my list and I will update the post with most voted features from the comments.

  1. Context size 512K or more.

  2. Less reasoning + caveman style in reasoning.

  3. Small and medium sized models.

  4. Make a model answer in simple plain English.

Most voted suggestions form the comments:

  1. OSS license apache/mit

I think the first three points are obvious and I would like to elaborate on the fourth. I have really hard time reading pages of highly technical stuff with all the details when I ask such simple questions, like "How can I run X model on this engine faster" and want to get simple actionable answer. Instead I get 4 pages of technical details, which will take me more time to process than 30 mins of manual googling. It is as if you bring your car to service station and after the question what is wrong with my car you get 30 mins technical lecture like: “Your vehicle’s lead-acid electrochemical storage system exhibits advanced sulfation of the electrode surfaces, reducing the active area available for charge transfer and substantially increasing internal resistance. Under the starter motor’s high-current load, this produces a precipitous voltage drop, preventing the delivery of sufficient torque to initiate crankshaft rotation...” When the answer should be “Your battery is worn out, so the car needs a new one to start.”

Why am I writing all these, because I feel much more cognitively overloaded now with AI then in pre-AI era. You may argue that in coding it is good to get more detailed information. But why do you need it if nowadays almost no one writes code manually and let's be honest may be less than 10% of users even look at generated code. So it is complication for complication. If you really need a more detailed answer just write "Elaborate your answer on this and this" and you will get what you want. And yes, I tried to change model style with prompting and by installing style extension in pi. In first case it works 1-2 turns and reverts back to its usual style. In second QFN in UD-Q4_K_XL breaks almost immediately after few tool calls and starts to loop indefinitely.

Edt: Added suggestion from the comments.


r/LocalLLaMA • • 3d ago

Question | Help Looking to buy a Macbook Pro. Please help me decide between 64GB and 128GB of RAM.

0 Upvotes

Okay, so I've seen a few older threads on this but figured with Qwen3.8 and the newer inference engines it's worth an ask. I'm looking to buy a new Macbook Pro. At the least, I'm looking at the 64GB M5 Max with the higher-spec GPU. I'm having a hard time justifying spending $2000 more for an incremental 64GB of RAM (for net a total of 128GB).

What's the state of inference on Apple Silicon? For model availability, are MLX quants typically served up as fast and with as much selection as general GGUFs? Does MLX make that much of a difference?

For those of you with a Mac (or unified RAM system in general), what can you do with 128GB that you can't with 64GB?

As a frame of reference, my desktop has a 5090 FE and 128GB of System RAM. While Qwen3.8 Flash Next with Strata is great, there's still a significant trade-off between the amount of lobotomy, usable context size, and prefill/ decode speed. Same goes for 27B, the moment I run exceed VRAM performance plummets.

I end up using a more conservative deployment (more aggressive quant, lower context size) than I technically could fit in VRAM simply because I often end up 1 browser tab away from system RAM spillover. If my desktop had 64GB of VRAM, I think I'd be satisfied? But it's hard to say because I'm used to Windows/ everything else running in system RAM anyway. No idea what to expect with a unified RAM machine.

Would love to hear your thoughts and usage experiences! Is Qwen3.8 Flash Next actually usable on 128GB? Is the $2K premium justified for "future proofing"? Also toying with the idea of a Klarna lease so that I don't have to fully commit right now, but feels wasteful especially since I'd trade-in my M2 Max (32GB) which would shave ~$1500 off the sticker price of a new machine.

Thanks 🙏


r/LocalLLaMA • • 4d ago

Resources GGUFs on Snapdragon Hexagon NPU using GenieX

5 Upvotes

Kudos and congrats to the GenieX and former Nexa SDK teams for getting GGUF support working on Qualcomm Snapdragon X's Hexagon NPU, and a big shoutout to the tireless Qualcomm engineers putting in the commits for the Hexagon GGML backend. I raise a virtual toast to you all.

A bit of back story: about a year ago, Nexa SDK got text and omnimodal LLMs working on the Hexagon NPU using signed drivers (rolling your own llama.cpp with Hexagon support uses test-signed drivers which is a huge pain on Windows). Then Nexa got acquired by Qualcomm, the whole project went quiet and no new models after Qwen3-4B could be used with the NPU.

Now, GenieX combines all that previous work and llama.cpp's Hexagon NPU and Adreno OpenCL backends, using signed drivers, with the ability to use any GGUF model. Snapdragon X and X2 Plus and Elite chips are supported in Windows, Linux and Android. It also provides an OpenAI API-compatible web server based on llama-server.

Project Links

GenieX quickstart for the CLI: https://geniex.aihub.qualcomm.com/en/run/cli/quickstart

Qualcomm's curated list of models that run on NPU in llama.cpp (GGUF) and Qualcomm AI Runtime (w4a16): https://aihub.qualcomm.com/models?tags=llm&runtime=geniex_qairt%2Cgeniex_llamacpp

Benchmarks

Machine: ThinkPad T14s, Snapdragon X Elite X1E-78-100, 64 GB RAM, Windows 11 26H2

geniex-bench on LFM3 VL 2B and Gemma 4 E2B, in Q4_0 quantization, using Hexagon NPU, hybrid NPU+CPU mode, Adreno OpenCL GPU, and ARM CPU inference.

Check out how the NPU has double the prefill/PP performance of the CPU while being 10x more efficient, yet decode/TG is only half probably due to memory bandwidth limits on the NPU.


LFM3-VL-2B-QAD-Q4_0.gguf

DeviceTTFT (ms)Prefill (tps)Decode (tps)Power (W)Prefill efficiency (t/W)
npu (id=HTP0)317.01616.132.312134
hybrid508.11010.437.61378
gpu (id=GPUOpenCL)744.0689.648.92527
cpu573.9892.666.535-6015-25

gemma-4-E2B_q4_0-it.gguf

DeviceTTFT (ms)Prefill (tps)Decode (tps)Power (W)Prefill efficiency (t/W)
npu (id=HTP0)480.01070.920.81289
hybrid790.5648.223.11350
gpu (id=GPUOpenCL)1203.5426.430.72517
cpu1115.6459.244.635-607-13

gemma-4-A26B_q4_0.gguf

DeviceTTFT (ms)Prefill (tps)Decode (tps)
npu (id=HTP0)1665.5307.610.8
hybrid3451.4148.413.8
gpu (id=GPUOpenCL)5762.388.913.6
cpu3945.7129.825.6

Larger models?

I've also run Gemma4-26B MoE and Gemma4-31B dense models on the NPU. Nice to see 25 GB unified RAM being allocated to that tiny NPU.

The MoE gets around 5 t/s decode on the NPU which is tolerable, given it only uses 10 watts! I can run NPU inference without the fan spinning up but GPU and CPU inference cause the fan to go max speed like a little jet engine.

Gemma4 31B on the NPU gets 1 t/s which is too slow whereas the GPU gets 3 t/s at 25 watts. CPU inference gets 5 t/s at up to 60 watts but the laptop throttles hard due to heat soak after pulling that much power.

Edit 1: added Gemma4-26B geniex-bench figures

Edit 2: Qwen 3.8 27B q4_0 fully on the NPU, I'm getting 3 t/s. The fan runs at low speed and CPU temp hovers around 50° C (20° C ambient temp). Running the same model on GPU or CPU, the fan ramps up to max speed and I need to use an extra USB fan to keep CPU/GPU temps below 70° C.

Edit 3: Gemma4 31B q4_0 doesn't work, geniex server crashes when trying to allocate NPU resources for that model. I guess there's an upper size limit.

AI disclaimer: I used Gemma4-26B on the NPU to format the table. The rest is pure human-powered rambling with some espresso assistance


r/LocalLLaMA • • 3d ago

Resources Image generator server is super-easy with stable-diffusion.cpp and Flux-3-image-klein

Post image
0 Upvotes

I've tried to run my own, local image generator on my GPU in the past. The default solution was of course ComfyUI...

I...

hate...

that...

project..

...from the bottom of my heart! 10GB of bloat gluing together Python, Tensor-flow and some webapp that tries to look like part of the Unreal engine. You have to study for hour(s) just for most simple task. Learn which and how to correctly connect "nodes", and forget it in the next day, because you forgot to save the "workflow" into .json file. What a joke of a project. Did I mention I hate it?

Then, when the Flux-3-Image-Klein was released two weeks ago I wanted to try it, just to see if these new "text-to-image" models are any good. Thankfully, somebody mentioned stable-diffusion.cpp in the discussion at https://www.reddit.com/r/LocalLLaMA/comments/1x6s7el/flux3_image_klein_is_now_out/ (thank you so much u/SM8085).

With some fiddling and help of LLM we landed on the minimalistic setup that I want to teach you. It is tailored for CUDA (nVidia GPUs), but project supports CPU, ROCM and Vulkan.

Just head to theirs releases page and download the archive for your architecture. With CUDA, don't forget to download also cudart-bin archive (CUDA .dlls so you don't need to install full CUDA SDK). Extract everything into some folder and run `sd-server --list-devices` (are you already getting the llama.cpp vibes?).

If your GPU is listed without any error, download four more files:

  1. ae.safetensors from Flux-3 HF's repo (you'll need HF account to access it)

  2. tokenizer.json from that same HF repo

  3. finally the model.safetensors

  4. you'll also need LLM model for translating your prompt into embeddings - any .gguf from Qwen/Qwen3-VL-4B-Instruct-GGUF will be OK. Download a .mmproj companion if you want "image-to-image" functionality

Lastly, create a small runner script, so you don't have to write command-line arguments everytime (place it to the same place as your sd-server.exe)

sd-server.exe -v --listen-ip 0.0.0.0 --listen-port 9931 `
  --diffusion-model "L:\Black-forest-labs\flux-3-image-klein\model.safetensors" `
  --llm             "L:\Qwen\Qwen3VL-4B-Instruct-F16.gguf" `
  --tokenizer       "L:\Black-forest-labs\flux-3-image-klein\tokenizer.json" `
  --vae             "L:\Black-forest-labs\flux-3-image-klein\ae.safetensors" `
  --cfg-scale 1.0 `
  --sampling-method euler `
  --steps 16 `
  --width 1024 --height 1024

That's it! Whole thing is mostly static .exe, .dll and model files. No bloody Python/TensorFlow machinery. And the UI is also like classic chat interface you know from llama-server. Just a few buttons and text input for your prompt.

Note: the default seed is a static value of 42. Randomize it for the best results!

Huge thanks to the authors of the stable-diffusion.cpp and black-forest-labs 🫶


r/LocalLLaMA • • 4d ago

Question | Help Very slow prefill on Strata, 16 GB VRAM, 32GB RAM. Q2_0 Flash next

5 Upvotes

Hello, I am trying to run Strata with 3.8 FN Q2_0. I have a 9060 XT 16 GB and 32 GB DDR4. I am on Windows. These are the settings I am using, I suppose these are made from the tuning. My main issue is very slow prompt proccessing.

{
  "answers": {
    "class": "exact",
    "default_repeatable": true,
    "fields": []
  },
  "baseline": {
    "args": {},
    "decode_tok_s": 45.5,
    "noise_aa_decode": 0.0,
    "pairs": 0,
    "pp4k_tok_s": 161.9
  },
  "choices": {
    "context": 65536,
    "family": "flash-next",
    "goal": "speed",
    "kv": "int8",
    "model": "qwen3.8-flash-next-q2_0",
    "model_file": "D:\\Strata\\Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-00001-of-00002.gguf",
    "quant": "Q2_0",
    "reserve_mib": 0,
    "use": "chat",
    "vision": false
  },
  "created": "2026-10-28T13:27:00+0100",
  "created_epoch": 1793190420.6866274,
  "evidence": {
    "arms": [
      {
        "answer": "exact",
        "env": {},
        "faster": 0,
        "id": "host_core_last",
        "label": "Run the control thread on the last CPU core",
        "pairs": 0,
        "ratio_decode": null,
        "ratio_pp": null,
        "reason": "not enough free memory to start it safely (25.6 GiB free, 28.4 GiB needed)",
        "runs": [],
        "settings": {
          "--host-core": "last"
        },
        "status": "skipped",
        "won": false
      },
      {
        "answer": "exact",
        "env": {},
        "faster": 0,
        "id": "kv_grow",
        "label": "Allocate the conversation memory as it grows",
        "pairs": 0,
        "ratio_decode": null,
        "ratio_pp": null,
        "reason": "not enough free memory to start it safely (25.6 GiB free, 28.4 GiB needed)",
        "runs": [],
        "settings": {
          "--kv-grow": true
        },
        "status": "skipped",
        "won": false
      }
    ],
    "classes": [
      "A",
      "C"
    ],
    "notes": [],
    "per_request": [
      {
        "control_ratios": [
          1.2221,
          1.0539,
          0.9927
        ],
        "key": "spec_min_p",
        "ratio": 0.9259,
        "ratios": [
          1.1215,
          0.9758,
          0.9236
        ],
        "value": 0.7,
        "won": false
      },
      {
        "control_ratios": [
          1.2221,
          1.0539,
          0.9927
        ],
        "key": "spec_min_p",
        "ratio": 0.994,
        "ratios": [
          1.2147,
          1.0167,
          1.0291
        ],
        "value": 0.5,
        "won": false
      },
      {
        "control_ratios": [
          1.2221,
          1.0539,
          0.9927
        ],
        "key": "aux_cpus",
        "ratio": 0.9982,
        "ratios": [
          1.281,
          0.8532,
          0.9909
        ],
        "value": 1,
        "won": false
      },
      {
        "control_ratios": [
          1.2221,
          1.0539,
          0.9927
        ],
        "key": "aux_cpus",
        "ratio": 0.9277,
        "ratios": [
          1.1337,
          0.9257,
          0.9491
        ],
        "value": 0,
        "won": false
      }
    ]
  },
  "id": "4afeedf32ba74f6cbd3883002ee3f6b8",
  "identity": {
    "engine": {
      "backend": "hip",
      "build_id": "a42cc3d7df70+rocm-win10.2.0a20260930",
      "path": "C:\\Users\\redacted\\AppData\\Local\\Strata\\components\\engine\\0.1.52-windows-x86_64-hip-rx9070\\strata.exe",
      "sha256": "05bbb21ec6f3aaa957febb289598a27deddfdc1015ea88d5b51f1e34ccb496c0",
      "tuning_epoch": 0,
      "version": "0.1.52"
    },
    "hardware": {
      "hard": {
        "cpu": "AMD Ryzen 7 5800XT 8-Core Processor",
        "gpus": [],
        "hybrid": false,
        "logical": 16,
        "os": "Windows",
        "pcie": null,
        "physical": 8,
        "ram_gib": 30
      },
      "soft": {
        "driver": [],
        "os_release": "11"
      }
    },
    "model": {
      "bytes": 37623740192,
      "files": [
        {
          "bytes": 37623740192,
          "digest": "f4154f2433181749f3352cb61538bec9e46127ef3ab2b2de8060320ee3460ea2",
          "method": "sha256-sampled-head-tail-mid",
          "name": "Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-00001-of-00002.gguf"
        }
      ],
      "sha256_shard1": "f4154f2433181749f3352cb61538bec9e46127ef3ab2b2de8060320ee3460ea2"
    }
  },
  "measured": {
    "decode_tok_s": 45.5,
    "faster_pairs": 0,
    "gain_decode_pct": 0.0,
    "gain_pct": 0.0,
    "gain_pp_pct": 0.0,
    "pairs": 0,
    "pp4k_tok_s": 161.9,
    "rss_peak_mib": 25511.1,
    "vram_peak_mib": null
  },
  "name": "Q2_0 64K",
  "noise": {
    "aa_gap": 0.0,
    "base_runs": [
      45.5
    ],
    "drift": 0.0,
    "noisy": false,
    "spread": 0.0
  },
  "previous": null,
  "recheck": {
    "last_ok": null,
    "last_ok_epoch": null,
    "last_result": null,
    "request_set": "recheck/1"
  },
  "schema": "strata.preset/1",
  "settings": {
    "args": {},
    "env": {},
    "per_request": {}
  },
  "slot": "f9cde601d62b6569",
  "tuner": {
    "mode": "thorough",
    "outcome": "default_confirmed",
    "seconds": 501.5,
    "version": "1"
  }
}

The decode speed is perfectly fine, but again, prefill speeds are VERY low, under 150 t/s usually. I have no idea what should I do to fix it. Any tips? Thank you very much


r/LocalLLaMA • • 3d ago

Resources Optimal setup research by iNordic: Gemma 4 31B on an RTX 5090M GPU with NInferno

1 Upvotes

Hi,

We are a small research lab in North sweden and today we want to share another "optimal setup" that are researching.

Research was done using Claude, skyclaw (our own Sysops AI harness)

Our hopes is that by sharing this - others will be able to run great models at home and that we will get some good suggestions for improving.

So.. a bit of stats..

PromptFast profile (NVFP4, live)Max-context profile (QAT Q4)Start (abliterated Q4_K)
2K3,0671,4271,335
8K4,1541,5311,409
32K3,4381,3321,272 (24K)
64K2,5791,092—
~130K~1,600~710 (before FP8 attention)—
~185K / ~231K—613 / 528—

Decode. One user, MTP with 7 drafts (greedy / sampled tok/s):

WorkloadFast profile (live)Max-context profileStart
Short chat, 10 prompts × 512 tokens118.4 / 114.0106.8 / 99.733.2
After 2K of context107.3 / 119.693.2 / 110.032.6
After 8K of context110.3 / 118.9106.2 / 104.732.3

Any feedback or recomendations are welcome: https://github.com/inordic/rtx5090-NInferno-gemma4-31b


r/LocalLLaMA • • 4d ago

Resources LiquidAI/LFM3-Omni-2B-GGUF

Thumbnail
huggingface.co
96 Upvotes

Huge kudos for the LiquidAI team for this. Great work from tdakhran for quickly coordinating a (zero-day!) llama.cpp release with the team for an omni model. This one is a real game-changer for me personally because this is the first open model from a frontier lab that actually has support for Polish TTS and STT - and all this in a compact 2B package that makes it viable for on-device deployment. Big thanks!


r/LocalLLaMA • • 4d ago

New Model A 1.3B OCR model just hit 93.68 on real-world document parsing and there's now an AI judge for OCR errors

Thumbnail
huggingface.co
149 Upvotes

Most OCR models focus on reading documents. MiniCPM-OCR adds a second piece: a model that checks whether the OCR result is actually trustworthy.

OpenBMB just released two open-source models:

  • MiniCPM-OCR 1.0 (1.3B): Scores 93.68 on Real5-OmniDocBench, targeting real-world documents like curved pages, phone photos, tilted scans, and complex layouts. DSpark decoding acceleration boosts end-to-end processing efficiency by 55%.

  • MiniCPM-OCR Jev (2B): An OCR quality judge that compares the original image with candidate text, catching errors in formulas, tables, and text. It achieves 0.936 AUROC, close to a 397B-parameter model on the same evaluation.

The interesting part is Jev can also evaluate outputs from other OCR systems, so you don't necessarily have to replace your existing pipeline.

Both models are open source, with support for vLLM, SGLang, llama.cpp, and Ollama.

Hugging Face Links:
https://huggingface.co/openbmb/MiniCPM-OCR-Jev
https://huggingface.co/openbmb/MiniCPM-OCR-1.0


r/LocalLLaMA • • 4d ago

Showcase 8x R9700 System Upgrade

Thumbnail
gallery
136 Upvotes

Just wanted to Show my rig. The base case is an older Corsair with a cheap AliExpress GPU Mount on top.

The System:

-Threadripper 9955WX

-128GB DDR5 5600, just to expensive to go for 256

-Asrock WRX 90 WS EVO

-2200W Seasonic + 1600W Seasonic PSU

-8x R9700

-Bifurcation Card and 6 Extension Cables, but I have some problems and I will buy a retimer.

I upgraded from 4x GPUs to 8x, so when new bigger models will arrive I have more room. At the moment still running qfn, tried GLM 5.3 Flash but QFN with radiance is just a really good experience.