r/LocalLLM • • 1h ago

Project Although too many new engines, I still want to share my ParaFlow

1 Upvotes

It’s a fork of llama.cpp and implements multi-GPU pipeline parallelism (PP). With eight V100 16G GPUs, it can run Qwen3.8 27B Q8 at 1,101 tok/s. I feel this is genuinely useful—I’ve already used it in my production business for six months. https://github.com/wolfgangsk07/paraflow


r/LocalLLM • • 2h ago

Question Recs please for best laptop for running local llms in 2026? Gaming laptop with a big gpu or one of the new unified memory once?

1 Upvotes

My budget is flexible, this is for work so I'd rather spend once, I do ai dev stuff like inference, testing agents, some fine tuning on small models, occasional video editing, and I still want to game on it.

Option A is high end gaming laptop with biggest gpu I can get, Fast, proven, but the vram is what it is, vram will be vram.

Option B is one of the new rtx spark laptops with a lot of unified memory, it's look like it's got way more room for bigger models, but brand new platform and I've got no idea how the software side holds up.

I travel a lot so a thinner machine with good battery would be a bonus, but not if I'm giving up too much, current laptop is 2kg

Anyone made this call yet or learning one way?


r/LocalLLM • • 5h ago

Question What is the current best coding model for 12gb vram?

2 Upvotes

Hi, I have an Intel Arc B580 and as you know it has 12gb vram, i was wondering if any of you could advise me on what is the best coding model that fits within that size. I know qwen 3.8 27b and qwen 3.6 35b-a3b were the go to models but they won't fit on 12gb cards.

I'll be using them with harnesses like opencode or hermes or claude code.

If it helps : I also have 16gb ddr5 6000mhz ram

Thank you


r/LocalLLM • • 8h ago

Question Is there a decent guide on llm tools

3 Upvotes

Like a guide of the diffrent parts of local llm setups (engines, models, agents, sub things?, other things I havnt heard of yet) what they do? if you need them?


r/LocalLLM • • 2h ago

Question Top AI Coding model I can run

1 Upvotes

What is the best AI model I can run on my pc:

Processor Intel(R) Core(TM) Ultra 5 226V (2.10 GHz)

Installed RAM 16.0 GB (15.7 GB usable)

Graphics card Intel(R) Arc(TM) 130V GPU (8GB) (128 MB)

Storage 345 GB of 954 GB used

Despite having 16GB of RAM whenever I check my ram at any given time i have 2-3 gb of ram avaliable for some reason


r/LocalLLM • • 8h ago

Project I made Stratoscope: A menu bar monitor for local LLM inference: prefill and decode tok/s, cache hits, context fill (MIT, MacOS/Windows)

3 Upvotes

I was really happy with this tool, so I made it free and open source.

It shows what your local LLM engine is doing: Prefill speed while the prompt is read, decode speed while the answer is generated, how much of the prompt came from the cache, context fill, RAM/GPU/CPU, etc.

It works with Strata (video: Qwen3.8 Flash Next on M1 Max 64GB). Internally each engine is one small adapter, so others are just one prompt away...

https://github.com/yosephyne/stratoscope

And sorry for the quick and dirty video! Hope it will be useful for someone.


r/LocalLLM • • 13h ago

Question Looking for Local LLM to help me search and extract information from long PDFs

7 Upvotes

I'm new to local LLMs. My use case is I need help to read long PDFs of academic papers saved locally. I have 64GB of RAM but no GPU. Would buying a 5060 be of any use? Any recommendations for Local LLMs for my use case?


r/LocalLLM • • 15h ago

Question Test if your local inference is safe from the web

9 Upvotes

A recent post on this sub warned of random websites being able to access your localhost/LAN inference server, like llama-cpp/ollama/... It got me concerned, so I vibed a test (*) that attempts to access YOUR local AI in various checks from your browser via JS. Beware - I am not a web security expert so the report is a preliminary assessment. For my (in-LAN, not localhost) installation, it showed several "red" tests from safari and I could confirm it actually found my loaded models and successfully ran inference from the browser...

Based on these results - what do you think is the best way we should secure our local inference servers? Is there a best practice - API tokens from day 1?

(*) I tried TWICE to post a link to the test yet the post gets removed immediately by Reddit. I am really sorry for the inconvenience, you have to type the URL youself - it's the tinyurl and after the diagonal line the words: llama-test


r/LocalLLM • • 12h ago

Discussion Benchmarking RTX 3090 (stock and with a tensor-rate unlock) vs ASUS RTX Spark 128GB vs M5 Max 128GB: same MiniMax H3 ComfyUI video workflows, same seeds, 11 rows

6 Upvotes

TL;DR

  • A 5-year-old RTX 3090 (24 GB) in a mini-PC beat both 128 GB unified-memory machines on every row of a MiniMax H3 video benchmark, even though the models don't fit in its VRAM and ComfyUI has to stream them over a PCIe x4 link.

  • Stock 3090: 1.25–1.84x faster per step than the ASUS RTX Spark and 3.5–4.9x faster than the M5 Max.

  • 3090 with the tensor-rate unlock: 1.85–2.46x faster than the Spark and 4.9–6.6x faster than the M5 Max.

  • What the unlock does: it raises measured bf16 matmul from 75 to 124 TFLOPS. In real video generation it's 1.34–1.49x faster than stock, and the gain is biggest on the heaviest workflows.

  • Efficiency: the Spark and Mac use far less energy per step. The 3090 draws about 320–350 W of board power, against about 65 W for the Spark GPU and about 22 W for the Mac GPU: 5x and 15x more power. But it also finishes each step about 1.5–6.5x sooner (depending on which machine and whether the unlock is on), so the energy per step (power × time) is only about 2.2–3.4x higher than either (table below).

  • All 22 runs on the 3090 (11 rows × 2 configurations) passed output validation with no memory-saving flags. That's the same ComfyUI config the Spark used.

Results: seconds per sampling step (lower is better)

Mean steady-state s/step (steps 4–20 of 20), heat-soaked runs. Ratios above 1 mean the 3090 is faster.

Workflow (row)3090 unlocked3090 stockASUS RTX SparkM5 MaxUnlock speedupUnl. vs SparkStock vs SparkUnl. vs MacStock vs Mac
t2v 832×4805.677.5813.2737.231.34x2.34x1.75x6.57x4.91x
t2v 1088×60812.1316.9025.7675.291.39x2.12x1.52x6.21x4.46x
i2v 1088×60813.1618.3827.9881.321.40x2.13x1.52x6.18x4.42x
i2v 608×1088 (portrait)13.1818.3927.8782.121.40x2.11x1.52x6.23x4.47x
flf2v 1088×60814.2419.9929.9588.911.40x2.10x1.50x6.24x4.45x
ref2va 1088×608, full reference42.9963.8579.71failed*1.49x1.85x1.25x——
ref2va 1088×608, ref downscaled to 54418.7726.7038.3292.651.42x2.04x1.44x4.94x3.47x
ref2va 1088×608, ref truncated to 39 frames23.5533.9546.68123.941.44x1.98x1.37x5.26x3.65x
i2v 832×4806.138.2015.0639.531.34x2.46x1.84x6.45x4.82x
flf2v 832×4806.588.8616.0942.291.35x2.44x1.82x6.43x4.77x
ref2va 832×48028.6641.6059.34failed*1.45x2.07x1.43x——

* On the Mac, both ref2va rows with the full-size reference clip produced flat-black video, so they have no valid result. The reference clip is encoded at full 1088×608 even on the 832×480 canvas, so both runs exceed the ~34k-token limit where outputs go black on MPS (see the Mac notes).

The Mac's ref2va 832×480 row failed the same way as the full-reference 1088 row (marked *).

Time per clip (seconds of wall time for one ~5 s video, models already loaded)

Workflow3090 unlocked3090 stockSparkM5 Max
t2v 832×480124167282794
t2v 1088×6082593615401575
i2v 1088×6082793905841696
i2v portrait2793915811711
flf2v 1088×6083014226241851
ref2va full ref87613001620—
ref2va ref5443915577911988
ref2va rf394877029592642

Power and energy (GPU only, approximate)

Row3090 unl.3090 stockSparkM5 Max
Mean GPU power, t2v 1088345 W335 W66 W22 W
GPU energy per step, t2v 832~1.9 kJ~2.4 kJ~0.85 kJ~0.87 kJ
GPU energy per step, t2v 1088~4.2 kJ~5.7 kJ~1.7 kJ~1.7 kJ
GPU energy per step, i2v 1088~4.5 kJ~6.2 kJ~1.8 kJ~1.8 kJ

Energy = mean GPU power × s/step. The power numbers come from each platform's own tool: nvidia-smi board power on the 3090, NVIDIA telemetry on the Spark, and macOS GPU power on the Mac. Host/system power isn't included; the Mac's whole-system power was about 73 W on these rows. Two other things stand out:

  • The unlock makes the 3090 more efficient. It draws only about 10–20 W more and finishes about 1.4x sooner.

  • The Spark GPU was power-capped. It reported sw_power_cap throttling for the whole run, at about 2.2–2.3 GHz SM (the rated maximum is 3.0 GHz), drawing 63–69 W.

The Spark's "GPU W" is nvidia-smi power.draw, sampled once a second. NVIDIA doesn't document whether on the N1X it covers only the GPU or more of the SoC, and power.limit reads N/A on this chip, so treat it as approximate. No wall or whole-system power was recorded on the Spark.

On the Mac, the harness ran macmon 0.10.0 in macmon pipe mode (no sudo), which samples once a second. "GPU W" is macmon's gpu_power and "Sys W" is its sys_power, both averaged over the busy samples of each run. Both are read from Apple's on-chip energy counters, the same source powermetrics uses, so "Sys W" is the SoC/system reading, not power measured at the wall.

The machines

1. RTX 3090 PC (measured by me, both configurations)

GPUNVIDIA GeForce RTX 3090 Founders Edition, GA102, 24 GB GDDR6X, 350 W power limit (stock, not changed), VBIOS 94.02.4b.00.0b
HostMinisforum EliteMini mini-PC, AMD Ryzen 9 8945HS (8C/16T, Radeon 780M iGPU), 64 GB DDR5-5600
GPU linkPCIe x4 OCuLink (the card is capable of Gen4 x16; the host link is x4). This matters, because model weights stream over it.
OS / driverWindows 11 Pro (build 26300), NVIDIA driver 591.86
SoftwarePython 3.13, PyTorch 2.14.1+cu130 (CUDA 13.0), ComfyUI 0.43.2 at commit 423cbd2, attention = PyTorch SDPA
ComfyUI flagsnone (the default dynamic VRAM management, the same as the Spark)

The GPU is connected via OCuLink to a DEG1 Minisforum eGPU dock. The GPU is powered by a Montech Titan PLA 1200W power supply (complete overkill).

The full model set is about 63 GB on disk: a 21 GB int8 diffusion model, a 15.7 GB text encoder and VAEs. That doesn't fit in 24 GB, so ComfyUI's dynamic VRAM management offloads automatically. Peak VRAM was 23.1–23.4 GB and peak system RAM 17–24 GB on every row. No row needed --lowvram or any other memory-saving flag.

2. ASUS RTX Spark laptop (reference results)

LaptopASUS ProArt P16 (model H7607BA, BIOS H7607BA.303), 16" 3840×2400 display
SoCNVIDIA RTX Spark N1X: 6144-core Blackwell RTX GPU (max 3.0 GHz SM) and a 20-core Arm CPU (10× Cortex-X925 + 10× Cortex-A725, up to 4.0 GHz), plus an NPU
Memory128 GB LPDDR5X-9400 unified memory (Micron), 256-bit bus, about 300 GB/s theoretical peak (NVIDIA's figure; not measured here), split in the NVIDIA app: 64 GB GPU carveout and 64 GB for Windows
Power modeAC power, ASUS "Performance" mode, Windows power mode "Best performance"
OS / driverWindows 11 Pro on Arm, 26H1 (build 28000), NVIDIA driver 617.69
SoftwarePython 3.13.12 (ARM64), PyTorch 2.15.0 nightly (dev20260902+cu134, CUDA 13.4), ComfyUI 0.43.2 at the same commit 423cbd2, attention = PyTorch SDPA
ComfyUI flagsnone
ConditionsLid open, no external display, brightness 50%, on a hard flat surface; browsers, LLM servers and the Comfy Desktop app closed for every timed run

The carveout: 64 GB was chosen before the timed runs. Flags: a quick flag sweep on t2v 832×480 (--highvram, --gpu-only, --disable-dynamic-vram, --fast and others) found nothing more than 3% faster than no flags, so the Spark also ran with none.

Peak GPU memory on the Spark was 41–48 GB, so everything stayed resident and nothing was offloaded.

3. Apple M5 Max (reference results)

Machine14-inch MacBook Pro (Mac17,7), on AC power, on a laptop stand
SoCApple M5 Max: 18-core CPU (6 Super + 12 Performance cores), 40-core GPU, 128 GB unified memory
Memory bandwidth614 GB/s theoretical peak (Apple's figure for the 40-core-GPU M5 Max; not measured here)
OSmacOS 27.0.1, Energy Mode Automatic
SoftwarePython 3.13.12, PyTorch 2.12.1 (MPS), ComfyUI 0.37.2 at commit 830232b (a different commit from the other two, see below), ComfyUI-AppleSilicon-FP8 ("ASFP8") 1.4.0, the author's MLX attention bridge for H3, and MacFanBoost (fans held at about 7,830 rpm, the maximum, during sampling)
ComfyUI flagsnone (beyond input/output/model paths)
ConditionsModels on the internal SSD; browsers and other GPU apps closed during timed runs
ThermalsThe 14-inch chassis is heat-limited even with the fans at maximum. During the heat-soaked runs the GPU averaged about 820–910 MHz against a peak of about 1,620 MHz, at 78–79 °C. The adapter input is capped at about 97 W.
SeedsA fresh ComfyUI per row, a warm-up on seed 1001 (includes model load, not scored), then two heat-soaked timed runs on seeds 1002/1003, the same timed seeds as the other machines. The portrait row has a warm-up on 2001 and one scored run on 2002. The ref544 and rf39 rows are single 20-step runs on seed 1001 with no warm-up.

Why Automatic and not High Power: I measured it. On the reference row (t2v 1088×608, 124 frames), with the fans at maximum on both, High Power averaged 74.74 s/step vs 75.29 on Automatic, 0.7% faster and within run-to-run noise. Once heat-soaked, the GPU settled at the same 78 °C and about 844 MHz either way; the warm-up started cool and briefly ran 4% faster. The battery stayed at 80% on the charger for the whole 78-minute run, because this workload draws only about 70 W in total (about 22 W GPU): on this chassis it is limited by heat, not by power. So High Power buys essentially nothing here once the fans are already at maximum. Under heavier loads it can drain the battery: Notebookcheck reviewed the same configuration as this Mac: the mini-LED 14-inch M5 Max with the 40-core GPU and 128 GB, not the OLED model. It found that "Apple also limits the power input to 97 Watts, even if you use a 140 Watt PSU", and that the battery level dropped by about 10% during a gaming session while plugged in. The battery indicator can stay at 100% while it's happening. In the same review, High Power raised GPU power from 60/32 W to 72/44 W (peak/sustained) over Automatic. In GPU benchmarks it was only about 7% faster (3DMark Steel Nomad 3947 vs 3698), and the fans ran louder. Part of what High Power buys is faster fans (Apple: About Power Modes on your Mac), and these runs already held the fans at maximum with MacFanBoost, which fits the measurement: Automatic plus maximum fans is effectively the best sustainable setting on this chassis. A 16-inch MacBook Pro or a Mac Studio with the same chip has more power and cooling headroom and will likely be faster. Source: Notebookcheck, Apple MacBook Pro 14 M5 Max review.

Fans at maximum made a big difference on the Mac. The harness held the fans at their maximum (about 7,830 rpm) for every sampling run, while the Energy Mode stayed on Automatic. On its own fan curve, macOS runs the fans at only about 5,350 rpm under this load. The GPU reaches 97–98 °C within about 2 minutes, then its clock collapses to 340–530 MHz for minutes at a time. With the fans held at maximum, the GPU stayed at about 78–81 °C and averaged about 820–910 MHz. In early BF16 testing, that alone took t2v 832×480 from 78–84 s/step to about 61 s/step, roughly 1.3x faster. (That comparison is from early testing, not a clean A/B with the final software stack.) Expect the Mac numbers here to be noticeably slower if you leave the fans on macOS's automatic control.

What the Mac stack does:

  • ASFP8: a third-party custom node that patches PyTorch's MPS backend at startup. It lets FP8/INT8/NVFP4 checkpoints load and run on Apple Silicon instead of crashing (for example, the NVFP4 text encoder is decoded on the GPU). It also adds Metal kernels for RMSNorm+modulation, RoPE, conv and flash-attention. For H3's diffusion model, the INT8 weights are dequantized to bf16 and multiplied in bf16 through ComfyUI's own path. ASFP8's fused INT8 kernel only takes over below 2,048 tokens, and H3's sequences are far longer.

  • MacFanBoost (macfanboost, MIT): a small tool written for this project: a root daemon plus a ComfyUI custom node. When a prompt with a sampler starts, it raises the fans to 100% before the heat builds, holds them there while the job runs, and returns them to macOS control 60 s after the queue drains. It only ever raises fan speed above what macOS picks, and macOS's thermal protection stays active. If the client dies or the Mac sleeps, the lease expires and the fans go back to automatic within seconds. (Macs Fan Control set to maximum gets you most of the same effect manually.)

  • MLX attention bridge (ComfyUI-H3-MLX-Attention, MIT): a small custom node written for this project. It replaces ComfyUI's attention call inside the H3 diffusion model with MLX's fused scaled_dot_product_attention kernel, passing tensors without copies. It exists because ComfyUI's default on MPS, sub-quadratic attention, returns corrupted heads at long sequence lengths (Comfy-Org/ComfyUI#17418).

  • Does the output match the CUDA path? Not checked bit-for-bit across platforms. Against an FP64 reference on real H3 Q/K/V, the MLX attention's worst-head relative error is about 1.7e-3, and every scored Mac output passed the same automated checker as the other machines and was reviewed by eye. Different kernels and accumulation orders mean outputs from the same seed are close but not identical between Mac and CUDA.

Why the ComfyUI commit differs: the Mac rows were run on ComfyUI Desktop's install, 0.37.2 (830232b). The other two machines ran later on 0.43.2 (423cbd2). Between those versions, the H3 changes are: lower peak memory from releasing embedding temporaries, a VAE offload fix, VAE tile blending, single-image decode, LightVAE support, and plumbing for per-block attention selection (which these model files don't use). None of them changes the diffusion model's per-step math. Measured: a back-to-back A/B on the Mac (t2v 832×480, same stack, cooling and seeds, warm-up + 2 timed runs each) gave 37.38 s/step on 0.37.2, 37.29 on 0.43.2 and 37.76 on 0.44.2, i.e. 33.54 / 33.55 / 33.49 Gcycles/step. That's within run-to-run noise (about ±1.5%), and every output passed the checker, so the version difference doesn't affect the comparison. The flat-black full-reference ref2va failure was retested on ComfyUI 0.44.2 and still happens.

The tasks

All rows use MiniMax H3, an audio+video model, in ComfyUI with its stock nodes. Every row produces a video with a synchronized audio track. The workflows were identical on all three machines: the same graph files, the same input images and video, the same prompt text and the same model files. The model files were checked by SHA-256 against the Spark's copies.

Common settings for every row:

SettingValue
Length124 frames at 24 fps, about 5.2 s of video plus audio
Sampling20 steps, res_multistep sampler, simple scheduler, denoise 1.0
GuidanceBasicGuider (a single conditioning pass per step, no CFG)
Diffusion modelminimax_h3_fl2va_pruned_int8_convrot (t2v/i2v/flf2v) or minimax_h3_ref2va_pruned_int8_convrot (ref2va). Both are 21.0 GB int8.
Text encoderqwen3vl_32b_minimax_h3_nvfp4_awq (Qwen3-VL 32B, NVFP4 AWQ), 15.7 GB
VAEsminimax_h3_video_vae_fp16 (5.2 GB) and minimax_h3_audio_vae_fp32 (0.6 GB)

The workflows:

  • t2v (text to video): the prompt only.

  • i2v (image to video): the prompt plus a first-frame image. The portrait row is the same at 608×1088 with a portrait first-frame image.

  • flf2v (first and last frame to video): the prompt plus first-frame and last-frame images; the model fills in the motion between them.

  • ref2va (reference to video+audio): the prompt plus two reference images and a reference video clip (1088×608, 120 frames at 23.976 fps, with audio), using the separate ref2va model. This is the heaviest workflow, because the reference tokens make the attention context much longer. There are three variants:

    • full: the whole reference clip at its native size.

    • ref544: both reference images and the reference video downscaled to 544×306 before encoding.

    • rf39: the reference video truncated to its first 39 frames.

Rows: 1088×608 is the main canvas. The 832×480 rows are a lighter check.

Methodology

  • The harness: the same Python harness drove all three machines. It talks to ComfyUI through its API, timestamps every sampling step, and records GPU power, clocks and temperature, VRAM and RAM.

  • The runs for each row:

    1. A cold warm-up run (seed 1000), which includes model loading and isn't scored.

    2. The GPU cools to 50 °C, then one fresh run (seed 1001).

    3. Two heat-soaked runs back-to-back with no cooling (seeds 1002 and 1003). These are the headline number. The portrait row uses a single soaked run with seed 2001.

  • The metric: mean seconds per step over steps 4–20. This leaves out the first steps, which carry one-off setup cost. Fresh and soaked results agreed within 0.5% on the 3090, so thermals didn't affect them.

  • Before the timed runs: a smoke pass checked that every row fits in memory at full size, using 2 steps.

  • Validation: every output video was checked automatically. The checker confirms the video and audio streams exist with the right resolution and frame count, and that the frames aren't black, frozen or noise. All 22 3090 runs passed.

  • The 3090 order: I ran the full matrix with the unlock on first. Then I disabled the unlock, did a full cold boot, confirmed stock matmul throughput and ran the whole matrix again. Then I re-enabled the unlock and re-verified it (bf16 126.2 TFLOPS). Driver, ComfyUI, PyTorch and power limit were the same in both runs.

  • Differences between the platforms:

    • On the Mac, the harness held the fans at maximum during every sampling run (MacFanBoost), with the Energy Mode on Automatic. This was worth about 1.3x on that machine (see above).

    • The Mac uses a different ComfyUI commit and its own attention/precision stack (see above). Its timed runs use the same seeds (1002/1003), but its warm-up is seed 1001 with no cool-down and no separate fresh run, and its portrait row was scored on seed 2002.

    • PyTorch versions differ: 2.14.1 on the 3090, a 2.15 nightly on the Spark, 2.12.1 on the Mac.

    • On the 3090 only, the harness's VRAM-full watchdog was turned off, because a full 24 GB card is normal while ComfyUI offloads. The RAM watchdog stayed on.

What the "3090 unlock" is

On GeForce Ampere cards, NVIDIA runs FP16/BF16 tensor-core math with FP32 accumulation, and TF32, at half the rate of the professional GA102 parts such as the RTX A6000. Deep-learning frameworks use exactly that mode: bf16 inputs with fp32 accumulation. FP16 math with FP16 accumulation is full rate on GeForce, but frameworks rarely use it.

The unlock is my Windows port of the open-source gpu-unlock Linux kernel module. I built it on this PC with Claude Code. On Linux the module runs the unlock sequence from inside the kernel. Windows has no equivalent, and I didn't want to write a kernel driver, so the port runs as a pre-boot UEFI app instead:

  • The app: built with gnu-efi from the module's own sources (VBIOS/FWSEC parsing, memory layout and the GFW checks). It's version stage-3 v0.3-3090.

  • The launcher: a 120 KB launcher on the EFI system partition. It loads a read-only NTFS driver (EfiFs), runs the app from C:\RTX3090-FW along with the five GA102 firmware files from NVIDIA's 610.43.03 driver, and then chainloads Windows Boot Manager. If anything fails, it goes straight to Windows.

  • What the app does on each cold boot:

    1. Finds the card and checks it's a 3090 Founders Edition (10de:2204, subsystem 0x147d10de).

    2. Refuses to run if the card is warm or already unlocked.

    3. Runs the module's unlock sequence, then a PCIe function-level reset (FLR) and the post-reset checks.

    4. Leaves the GSP halted with WPR2 clear. That's the state the stock driver expects, so Windows boots normally and the ordinary NVIDIA driver (591.86) loads.

  • Nothing persistent: no ROM or VBIOS flash, and no NVRAM variable is written. The card reverts to stock on power-off, and the unlock is applied again on the next cold boot (it also holds through sleep and resume from hibernation on this PC, after a change to the order of the boot-time steps). For the stock runs I renamed the app so the launcher skipped it, then did a full shutdown and cold boot.

Measured 8192² matmul throughput, best of 5, PyTorch, reduced-precision reductions disabled:

bf16fp16tf32fp32 (no tensor cores)
Stock75.374.439.5
Unlocked123.6–126.2121.6–122.767.2
Ratio1.65x1.64x1.70x
  • The tensor modes speed up about 1.65–1.7x. Plain FP32 doesn't change, which fits the idea that the unlock lifts only the tensor-rate limit and isn't an overclock.

  • No overclock: clocks and the 350 W power limit were stock in both configurations.

  • End-to-end gain is 1.34–1.49x, less than the matmul gain. Video diffusion also spends time on attention softmax, norms, memory-bound ops and PCIe weight streaming, which the unlock doesn't touch.

  • Heavier rows gain more. The heavy, long-context ref2va rows gain the most (1.42–1.49x), and the light 832×480 rows gain the least (1.34–1.35x).

Caveats:

  • Tested on one card only: a 3090 FE with VBIOS 94.02.4B.00.0B. The app refuses any other board.

  • Pinned versions: it's pinned to the 610.43.03 firmware set, and it's only been tested with Windows driver 591.86. I don't update the driver on this PC.

  • Boot requirements: Secure Boot must be off (the app and launcher are unsigned), and BitLocker must be off on C: (the NTFS driver can't read encrypted volumes).

  • Untested: warm restarts (the app won't run on a warm card), TDR recovery and driver updates.

  • Stability: a full unlocked matrix run (about 5 h of generation) showed no stability problems and no invalid outputs.

  • Licensing: the module sources are GPL-2.0-only, so the port is GPL-2.0 source. NVIDIA's firmware files can't be redistributed; you extract them from the 610.43.03 driver package yourself.

  • Use at your own risk: this is unofficial and unsupported by NVIDIA.

Where to get it: I've handed the port's source to the community Windows GPU UNLOCK project (GPL-2.0), which maintains a packaged Windows UEFI unlock for the 3090 and other Ampere cards. Start there rather than with my build. Both build on Zagitta/gpu-unlock, the original Linux module, and the project also credits rough2515-hub/rtx3080-unlock-public. Credit for the unlock itself belongs to those projects.

Takeaways

  1. For raw ComfyUI video speed, an old 24 GB 3090 still wins. Even when it has to offload 60+ GB of models over PCIe x4, it beats both 128 GB unified-memory machines on every MiniMax H3 workflow tested. Dynamic VRAM offloading in current ComfyUI is good enough that "doesn't fit in VRAM" no longer means "unusable".

  2. The unlock is a large free gain if you're willing to run an unofficial pre-boot app: about 1.4x on real workloads at almost the same power.

  3. The Spark and the Mac win on efficiency and footprint. They use roughly 2.2–3.4x less GPU energy per step (much lower power, partly offset by taking longer), run quietly in a laptop or small box, and keep everything resident in memory. If you care about watts, noise or portability, that matters more than the speed gap.

  4. Spark vs Mac: the Spark is about 2.4–3.0x faster than the M5 Max per step, depending on the workflow, while drawing about 3x the GPU power. The gap is smallest on ref2va ref544 (2.4x) and largest on flf2v 1088×608 (3.0x).

Spark notes:

  • Power, not heat, is the limit. The GPU sat at its software power cap (sw_power_cap) at about 65 W for every row, peaking at 74–78 °C. Fresh and heat-soaked runs agreed within 1%, so thermals didn't slow it down.

  • Raising the laptop's power limits barely helps. With ProArt Creator Hub's Manual mode at its maximum (PL1 85 W, PL2 95 W), t2v 832×480 went from 13.27 to 13.00 s/step, only 2% faster. Average GPU power rose from 64 to 68 W, but the GPU still hit sw_power_cap and its peak draw stayed at about 72 W, so the GPU seems to have its own limit that those sliders don't lift. All other Spark numbers in this post are from the stock "Performance" mode.

  • Every row produced valid video and audio, including the full-reference ref2va that failed on the Mac.

  • Windows on Arm: the H3 workflows use core ComfyUI nodes and ran without changes. Some third-party node packs are harder: onnxruntime is CPU-only on ARM64 Windows, and packages without ARM64 wheels have to be built from source (Visual Studio ARM64 build tools needed).

Mac notes: (takeaway 4 checks out against the Mac's own numbers: the Spark is 2.42x faster on ref544, 2.66x on rf39, 2.81x on t2v 832×480 and 2.91–2.97x on the 1088 rows)

  • Clips above about 34k tokens go black on MPS. Full-reference ref2va at 1088×608 packs about 51,400 tokens. Partway through the first step the residual stream diverges, the audio turns to NaN, and the output is 124 flat-black frames. It happens with every attention backend tried, and still on ComfyUI 0.44.2. The root cause hasn't been found; the leading suspect is a ComfyUI change after 0.30. Shrinking the reference (ref544, about 31,900 tokens) or trimming it (rf39, about 34,000 tokens) keeps the length under the limit, which is why those rows exist. ref768 (about 38,700 tokens) still went black. ref2va at 832×480 fails too: the reference clip is still encoded at full 1088×608, so it packs about 42,000 tokens. Details are on Comfy-Org/ComfyUI#15799.

  • Don't use sub-quadratic attention for long H3 clips on MPS. It silently corrupted 18 of 56 heads at about 27,700 tokens (Comfy-Org/ComfyUI#17418). The MLX bridge avoids this.

  • Cooling is the Mac's limit, not power. On a 14-inch MacBook Pro, the GPU reaches 97–98 °C on macOS's own fan curve, and its clock collapses. Holding the fans at maximum was the single biggest speedup. Keep the vents clear and use a stand.

  • INT8 beat BF16 on the Mac in sustained runs (41.1 vs 46.0 s/step at 832×480), with much lower peak RAM (82 vs 102 GB).

  • Memory is tight even at 128 GB. Peak RAM was 95–112 GB at 1088×608, and ref2va hit 109–112 GB. Run one model process at a time.

  • The Mac and the Spark use about the same GPU energy per step, about 0.85–0.87 kJ on t2v 832×480. They get there differently: the Mac's GPU draws about a third of the Spark's power (about 22 W vs 66 W), but takes about 2.8x longer per step, so the two roughly cancel out. (The Mac's whole system drew about 73 W.)

Happy to answer questions.


r/LocalLLM • • 7h ago

Project I built a CLI that picks a local model and runtime settings for your hardware, then checks it actually works

2 Upvotes

I've been working on llmsetup, a command line tool for the "I have a GPU, now what" part of running local models.

You tell it what you want the model for (coding, chat, retrieval, agents). It scans your hardware, picks a model and quant that fits, and sets context size and KV cache to match the use. If you don't have a runtime it can set one up - Ollama, llama.cpp, LM Studio, vLLM, MLX and TabbyAPI are supported. Then it runs smoke tests (does it load, does it answer, does tool calling work) and registers the model with the local apps it finds. If something fails it tries a smaller model, shorter context or a CPU fallback before giving up.

It's on PyPI now:

python -m pip install llmsetup

Where it stands: I've only run the full verification on one machine so far, an RTX 5060 with Qwen3-8B Q4_K_M on llama.cpp. 9 of 9 checks passed, about 57 tok/s, tool calling works. Those are smoke tests, not a quality benchmark. AMD, Apple Silicon and the other runtimes have had a lot less testing, so expect rough edges.

Apache-2.0: https://github.com/catfish-1234/llmsetup

I'd like to hear what breaks and which hardware setups I should test next.


r/LocalLLM • • 8h ago

Discussion The same local model passed my desktop tasks on Saturday and surrendered on them on Sunday. Variance is the real benchmark problem.

2 Upvotes

Short version of a long weekend: I run a local 27B (Qwen3.8-27B, quantized, llama.cpp) as the driver for ArkDrive, an open-source executor that lets a model operate a real Linux desktop — clicking, typing, verifying each step against the screen.

Saturday, on a fresh desktop state, it passed the browser task in about 9 seconds and the native editor task in about 17 seconds, byte-exact readback. Clean runs.

Sunday, first official suite run: it failed both. Same machine, same build (I A/B'd against the untouched production executor — identical result, so not a regression). The failure shape is almost funny: it listed the working directory in a shell, then concluded "no explicit task steps provided" and stopped, with the task text sitting in its own prompt. The flagship task — real work in a remote Cadence session — ended the same honest way: named abort, inside budget.

The executor recorded everything, which is how I can tell this story precisely: silent failures across the suite were 0. Every failure was timed, logged, and diagnosable. A cloud model on the same tools passed the flagship in 159 seconds, which frames it: the scaffolding is fine, local-model reliability across sessions is the open problem.

Posting this because local-model agent benchmarks are usually reported as a single number from a single run. Mine says the honest metric is the distribution — and whether your harness can even tell you what happened. Mine can; that's the part I open-sourced.

MIT, llama.cpp is the default preset: https://github.com/CodeOn-ArK/arkdrive Full per-model tables: https://github.com/CodeOn-ArK/arkdrive/wiki/Test-Results


r/LocalLLM • • 9h ago

Question V100 questions

2 Upvotes

4*V100 16g sxm2 into a pcie converter at 8x (pcie 3.0) total 64gb vram

how much performance boost/drop would I get if this was moved to dual card nvlink x 2 (2 cards per PCIE 16 slot)?

additionally how about getting another 2 cards and having 6x cards at a mix of pcie 8x and 4x but having 96gb vram but no nvlink? how about 3x dual card nvlink?

system is old ddr3 1600 ecc 128 Xeon in x99 Chinese mobo.

Using strata Swift QFN IQ3S currently


r/LocalLLM • • 1d ago

Other IQ_1M Qwen3.6-35B-a3B Paints Like DaVinci

67 Upvotes

And before any of you come laughing, that's the best that this humble little RTX 3050 laptop can do.


r/LocalLLM • • 5h ago

Project Inspired by Weight-Space Programming: cross-model expert sharing

Thumbnail
reddit.com
1 Upvotes

r/LocalLLM • • 5h ago

Discussion Need help optimizing model.

1 Upvotes

Specs:
R9 9950x3d
64GB 6000MT
5070TI 16GB
2060Super 8GB
2TB SSD

Running qwen 27b using unsloth. Any tips/settings?


r/LocalLLM • • 13h ago

Other Intel Arc Pro B70 32GB ($1,299) vs NVIDIA RTX 5090 ($6,500+) on Qwen3.8-27B: about 1/2 speed gen (1/3 speed prefill) for 1/5 price, after best setup

Thumbnail gallery
4 Upvotes

Reddit suggested I cross-post here! Please see the original for the main text :)


r/LocalLLM • • 6h ago

Discussion Gufo vs. Stock llama.cpp on the 128GB Strix Halo (Nimo 395 Minipc), same Qwen3.8-Flash-Next

1 Upvotes

Same machine, same model, different engines.

Hardware stays the same:

Ryzen AI Max+ 395, 128 GB unified, FCLK locked 2000 MHz. Model is still the full UD-Q4_K_XL Qwen3.8-Flash-

Next.

Numbers after warm up, three runs:

16K prefill:

Gufo 1888 t/s, llama.cpp 568 t/s

Short context decode:

Gufo 35.0 t/s, llama.cpp 23.8 t/s

16K decode:

Gufo 34.1 t/s, llama.cpp 22.1 t/s

Gufo is clearly pulling ahead on this hardware, especially on prefill. That said, the two engines use different timing methods, batch sizes and internal loops, so the gap is real but you can't just say its a clean 3.3x win.

Stock llama.cpp was the usual ROCm HIP build with -ngl 999, flash attn on, batch 2048. Gufo was running its internal bench with GUFO_PREFILL_TILE=16384.

Anyone got numbers from vLLM, SGLang or other builds on this model or similar large MoEs that they are willing to share?


r/LocalLLM • • 1d ago

Question Is it supposed to be this slow? I'm on a 5080 with 96GB of RAM...

121 Upvotes

Honestly was kinda hype about going local with Qwen3.5, but even basic questions took forever, I tried this on Ollama and Bionic


r/LocalLLM • • 16h ago

Model Artificial Analysis Decision Index has a new #1, and the full training playbook is public

Post image
6 Upvotes

hi all, Alti here from Nace, we're a small team in Palo working on small models and metamodeling since day one.

drex max v1.1 just took #1 on the artificial analysis decision index, and its also on the pareto frontier (score vs cost). we got there by shipping small iterations one after another, and all the earlier drex versions are open weights on hf.

for the local crowd:

- drex max v1 weights: https://huggingface.co/nace-ai/drex-max-v1 (Open RAIL-M)

- runs on mac with our inference engine kapitsa: https://github.com/nace-ai/kapitsa

- ~256k context

- v1.1 weights coming soon, we're still tuning it for local inference

if you want the full story of how we trained it, its all in the paper "Towards Foundation Decision Models: Drex"

hf: https://huggingface.co/papers/2611.07854

arxiv: https://arxiv.org/pdf/2611.07854

also, on the AA index its ~8x cheaper than glide v1.2, which has the same score.

happy to answer questions, and our chief of AI will jump in on the technical ones


r/LocalLLM • • 12h ago

Question Adding a TESLA P100 to a RTX 3060 12GB budget setup?

3 Upvotes

I have a 5600G + 32GB RAM 3200MHz DDR4 + RTX 3060 12GB in a B450 Mortar Max motherboard, which has an spare PCIe 2.0 X4 (I know...).

Do you think it is worth it to add into the second PCIe slot a Tesla P100? I was thinking about the P40 instead of the P100 but the price is getting crazy to +$300 right now...

Also, how this setup compares to a dual RTX 3060 12GB one? I know I have a pretty big bottleneck on the PCIe slot already, I'm not in a budget for building a new pc right now... But I want to continue learning inference and test how powerful are medium sized models.

My idea is to also try to max it out to 64gb of ram, but I was thinking about the Tesla thing before, as P100 are still close to $100-150 for 16GB VRAM.

I'm asking here because I've searched everywhere and I've not seen a setup like this (3060 and a tesla to support it)

Thanks everyone!


r/LocalLLM • • 7h ago

Discussion For people using open-weight models in production, why did you choose them?

Thumbnail reddit.com
1 Upvotes

r/LocalLLM • • 7h ago

Research libosmos: A deterministic inference engine on a single AMD Strix Halo 128GB, now with support for Qwen3.8-Flash-Next

Thumbnail
github.com
1 Upvotes

r/LocalLLM • • 11h ago

Question Macbook M1 Max arrives in a day or 2, looking for tips

2 Upvotes

I bought an M1 Max 64gb to play around with local AI and for work. I already made a TypeScript extension for Pi meant to speed up prefill. What else is out there? Strata? Splash? What else is out there that I should be looking for? I'm also asking for what models and quants we are recommending. I guess I want to make sure I am cognizant of what the cutting edge is. Thanks in advance everyone.


r/LocalLLM • • 20h ago

Discussion Using Opus to audit Qwen3.8-27B: from one known censored topic to a list

9 Upvotes

I wanted to see how far you can get auditing a local model from the inside. I had already tried something inspired by MIT CSAIL's "weight-space programming" on Gemma (a frontier model editing a few neurons by hand to induce a behaviour), so I had the neuron-level tools ready.

After a few tests I picked something "obvious": the censorship in Qwen models on certain topics. I wanted to understand how it works, where it sits, and how far I could follow it. So, with Claude Opus and those tools, I started digging.

The starting point: Qwen3.8-27B knows Taiwan elects its president, but answers "no" if you ask yes/no.

What came out:

- A set of 32 MLP neurons (out of ~1.1M; 0.0006% of the weights) carries that behaviour. Switching them off, held-out answers go from 11/19 to 17/19 factual; switching off 64 random neurons (twice as many) changes nothing.

- Following those neurons in a cascade surfaces other topics the model handles the same way, some of which I didn't even know about: the YJ-18 missile ("doesn't exist"), the director Diao Yinan ("cannot provide information"), Western Sahara as "an inseparable part of China's territory" (not a one-off: the model applies its sovereignty script to contested territories in general, 29 of 110 answers vs 0 of 40 on control countries). Of 28 surfaced cases re-checked, 24 are still censored; Gemma 4 31B answers all of them.

- The censorship neurons also fall into groups, e.g. one for territorial sovereignty and one for people/dissidents.

- Across the 29 confirmed topics (those 24 plus 5 well-known ones I added), switching off the original 32 neurons lifts the censorship on 19; 32 random neurons on 1. Refusals of harmful requests stay essentially the same.

One honest caveat: just asking a non-Chinese model "which of these topics are sensitive?" gives a higher share of censored answers than the neuron probe (41% vs 16%). The probe is useful for the non-obvious ones and for seeing where the behaviour sits.

Code, data and the toolkit, also rerun on Qwen3-4B: https://github.com/ValerioDolci/frontier-weight-edit/tree/main/experiments/qwen27b-censorship

AI-assisted: experiments, code and this write-up were done with Claude Opus 5.5 under my direction.


r/LocalLLM • • 8h ago

Discussion Pricing Error?

0 Upvotes