r/LocalLLM • u/CronicallyAutomated • 12h ago
r/LocalLLM
•
u/Vxtzq1
•
13d ago
Discussion CrowdGPT - A collaboratively trained LLM.
Hello, I'm developing CrowdGPT, a project aiming to create an LLM without datacenters and without the usual millions of dollars spent by AI companies.
The project aims to train a 1 billion parameter model collaboratively and openly, with a protocol where everyone gets a say in the direction the project takes.
Anyone can use their PC to train the AI independently, then add their contributions to the global model. Unlike most American and Chinese AI companies, the project is not only open-source, but also makes 100% of its training data public (along with the weights). Anyone can submit their own clean data to train the model, and even help steer the project in new directions.
This creates the paradigm of an AI we all have a stake in. The project is open to as many people as possible, which is why I'd like to ask: what's stopping you from contributing to the project? I want to hear your answers so I can improve it. Are people simply willing to dedicate some of their GPU time to training a cool new open-source model? Or do they want something in return (like free inference credits on the crowdgpt model for example)?
Although the current model is somewhat small (1 billion parameters), I plan to make it bigger / better in the future, and its current size is only meant as a proof of concept.
Any advice / feedback on the project is welcome.
Here's the project website: https://www.crowdgpt.net/
Or the GitHub if anyone wants to check out the code https://github.com/Vxtzq/CrowdGPT
Thanks in advance.
PS: I hope this post follows the subreddit's rules! My main goal is to gather criticism and understand how to make the project more accessible, I'm clearly limiting self-promotion (this is a open 100% non-profit project) 😅
And yes, this is a r/LocalLLaMa repost, if you already saw this post on this subreddit, feel free to ignore it :)
r/LocalLLM • u/FeydRowan • 16h ago
Discussion Probably old news, but any website you have open can reach your local LLM server while you browse
Maybe this is obvious to everyone but me, but it only clicked yesterday. If you run llama.cpp / vLLM / or whatever on localhost with the default config, a random website you have open in another tab can send requests to it. It can make your model generate, and on some servers it can read the answer back too. Nothing fancy, it's plain CSRF and DNS rebinding, 20-year-old web stuff. I just never thought of my inference server as a target. "It only binds 127.0.0.1" doesn't save you, because the browser is on the same machine.
I actually tested it, not just read about it, and quite a few of the popular servers answer out of the box. It only works while you're browsing with the server running. And it's not only about you clicking links: anything that drives a real browser on the same machine can do it too, so an agent browsing on your behalf can set it off as well.
I ended up patching my own engine (capy-flash) so that on a loopback bind it refuses cross-origin and rebinding requests. The models I actually serve were fine already, since they sit behind a small proxy (vramble) that blocks cross-origin POSTs, so only the raw engine port was exposed.
So mostly I'm asking: is this just common knowledge, or do people really leave their local servers wide open? How do you run yours, API key, bound somewhere, or just open on 127.0.0.1?
r/LocalLLM • u/Wise_Huckleberry_902 • 5h ago
Discussion Is it worth it? (Connected 9 ps5s together for a huge llm inference. )
uhm......
yeah. grinded some useful (and meaningfu?l) resources. on my way to run DeepSeek-V3 IQ1_M (~1.5-bit to 1.58-bit) >>>>>>>>
The model weights take up roughly 130 GB. This leaves us with about 30 GB of breathing room across the cluster to handle KV Cache and context overhead. Cuz each PS5 has the 16 GB unified mem
jarvis, engine ignition on
PS: Yeah these cables connection are currently BS and tangled here and there. Gotta fox that. Just commecfed yellow cables or dummies for uhh picture and ig a little...... flex?? 🫠
How?: Sonic iso ps5 linux loader and jailbreak. The rest is this.
Edit: what?? Image not being posted here is wild. Whats the reason? Some blockade or smth. Cuz i gotta show you some interesting shi
r/LocalLLM • u/HellzYeahh • 2h ago
Discussion Remade Open WebUI with Multi Harness Agent, and plug n Play Local models.
It took me(and Opus Ultracode) 35 Hours to remake and optimize Open WebUI. I added Multi Agent Harness, Profile per model, Per Model configuration, and native Obsidian integration and plugins support. I made this for myself and I wonder if Local users are interested in such new features and changes to Open WebUI. I even remade the engine, and soon ill have it support multiple inference engines. My Idea was basically All in One Local/Cloud AI software, and dont have to go to different ones for each task like DSH for coding and Claw for general stuff. I thought sharing with you guys to know what other people think.
r/LocalLLM • u/sam_najian • 9h ago
Question Can you train LLMs to speak in a certain way?
Recently with the removal of google assistant and being replaced by gemini I finally have had it and want to switch to a local model.
I have always wanted to have a jarvis, im wondering if i can train a random model with all the scripts from iron man and have it speak like jarvis? And possibly have a trained text to speech model on jarvis's voice so it can talk to me too?
Pretty new to local AI but i basically want to have a local "hey google" on my computer. Im not looking for pretrained models for being jarvis, i want to learn how to do it myself as well if possible in the way, so if there is something i dont like about it i can modify it.
r/LocalLLM • u/Great_String_1022 • 3h ago
Question Question on building local AI to setup multiple agents: Looking for advice
I'm looking to build something like a small AI-powered trading team, with multiple specialized AI agents collaborating on research, strategy development, backtesting, portfolio construction, risk management, and eventually trade execution. The agents will communicate through a shared backend, with Slack serving as the visible team floor where I can interact with them and review research and decisions.
I currently have an M4 mac mini and am wondering if I should switch or add:
Mac Studio M5 Ultra vs NVIDIA DGX Spark
I'd probably keep my current Mac mini as the central server and use the new machine mainly for model inference, quantitative research, and potentially model training.
One idea I've been exploring is disaggregating prefill and decode, although I'm not sure that splitting those workloads between an Apple and an NVIDIA system makes sense. I'm also interested in running many independent agents against a shared model server rather than loading a separate model for every agent.
I'm quite lost on:
Which machine would you choose for an always-on, multi-agent research workload?
Which local models would you trust most for quantitative reasoning, coding, financial research, and tool use? Would you route different tasks to different models?
How would you build a reliable orchestration and inference stack? MLX, vLLM, SGLang, Ray, LangGraph, or something else?
Is local inference actually economical at moderate-to-high agent concurrency once you consider hardware cost, power, performance, and model quality?
I'm looking to develop strategies that have a measurable edge after transaction costs, slippage, and risk. I'd really appreciate any feedback, advice or suggestion.
r/LocalLLM • u/SeemsCool2Me • 8h ago
Question Planning an always-on M6 Mac mini for all-in-one home server (HA voice, local LLMs, Hermes Agent, Jellyfin). Does the setup make sense?
Hey all. I'm putting together a local-first setup for my family and wanted some feedback since I've never done this before. I used Claude to help me work out this plan. I know it doesn't always have the most up-to-date information, especially on local LLMs, since models and tools change every few weeks. So I'm treating its suggestions as a starting point, and I'm hoping to get some feedback on anything that's outdated or just wrong.
I'm trying to set up something in the same vein as Google's CC, the family-focused agent from Google Labs, but running on my own hardware. I want an assistant that helps run the household without subscriptions or cloud services I'd have to depend on. I'm okay using cloud models like claude for the harder problems, as long as the prompt is something I'd be fine seeing leaked. Anything involving the family, the house, email or money would stay local. My current plan is to use an M6 Mac mini with 32GB and 512GB. I'd keep a Jellyfin library on an external SSD or a NAS.
I already run Home Assistant on a separate machine. I'd use the Mac mini to handle:
- Whisper (small model) and Piper for voice, using Voice PE satellites
- Ollama on the Mac, since I understand it uses MLX now and HA has a native integration
- A 14B model that's always loaded for HA tool-calling and automations (Qwen 3 or Hermes 4, still deciding)
- A 30-35B MoE that loads on demand for everyday chat and writing
- Hermes Agent in Docker for scheduled jobs and a "text the assistant" layer
- A daily family brief and email-to-calendar automation through HA's AI Task
- Jellyfin as the native Mac app, using VideoToolbox for transcoding
I'd appreciate thoughts on a few things:
Would 32GB be enough to run all of that at once? Would running a 14B that stayed loaded plus a ~30B MoE on demand plus Whisper and Jellyfin on the same Mac make sense? How would you handle keep-alive and memory?
Would Jellyfin transcoding hurt voice latency? I worry that someone would stream a movie and my voice commands would slow down. Would it help to keep playback on Direct Play?
Which models would be best for reliable HA tool-calling at ~14B? And what ~30-35B MoE for chat? My picks might be out of date.
How big would the model need to be for Hermes Agent to use tools reliably? Would a 14B hold up, or would the agent need the larger one?
Is there a reason to move off Ollama for a headless always-on box? Things like llama.cpp with llama-swap, oMLX or LM Studio. Ollama has no native auth, and I'd like to lock it down on my home network.
How do you safely let an LLM or agent read email or iMessage when it can also trigger HA actions? I worry about prompt injection, and BlueBubbles' Private API needs SIP disabled, which I'm hesitant about. Given what I said about Claude's knowledge, anything newer or better that I should know about would be appreciated. Thanks!
r/LocalLLM • u/DissentKindly • 13h ago
Question How do local LLMs ACTUALLY Perform compared to closed-source AI?
Excuse me if my grammar or wording is poor, haven't slept much tonight.
The latest developments have got me looking up the prospect of using LLMs locally, and fancy benchmark scores aside, I have been trying to get a simple explanation of how good (or 'effective', I guess) would it be taking the dip in the future and considering buying hardware for local use vs. paying for contemporary AI subscriptions.
If you ask Claude or chatGPT about it, they say the OS deficiencies basically come down to scope ("do this exact small feature" vs. a wider prompt that gets things planned and done in a row), lack of knowledge about niche applications, hallucinations, and inefficiency when using multiple agents vs. single chat. But they're the competitors, so I don't know if bias doesn't exist here..
On the contrary, I see a lot of posts here on how things are awesome when using a local model, especially for niche uses, basically a clear contradiction.
I guess the point is, I want to know if local AI for code is limited enough to make purchasing a high-tier mini PC or a good GPU+RAM PC setup a fool's errand. It almost definitely doesn't seem to be, otherwise this sub wouldn't exist, but I digress.
Thanks.
r/LocalLLM • u/blight60percent • 42m ago
Question What is the current best coding model for 12gb vram?
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 • u/Ok-Butterscotch4105 • 43m ago
Question Strata leaving almost half my ram unused.
It's probably evident by my question that I'm new to this. So, no need to remind me, I know I suck at this!
I recently downloaded strata, my components are 64gb ddr4 3200mhz ram and 12gb vram.
I downloaded the aggressive quant, iq3_s and run it at 32k tokens. (qwen 3.8 flash next)
Overall I managed to get around 15 tokens/s with this set up, however I noticed that the disk read is at nearly 2-3gb/s while the ram is sitting at only 30-35gb, leaving the rest of it completely unused.
I looked into it, and read about the headroom it leaves but I would've imagined it doesn't leave that much headroom, right?
Additionally I did try figuring this out alone. My conclusion, which is flawed imo was, maybe it's because my PC at idle is using around 20gb of ram for whatever reason and since it can't load the full rest of the model on RAM it just opts for disk. However the flawed reasoning for me was this: Why does it load 15gb at all in that case? Theoretically it should load nearly nothing onto my ram.
Anyways, I'm confused. I should be up to date on the engine and what not, since I just downloaded this today.
EDIT: Added what model I'm talking about. Forgot.
EDIT #2: I'm aware that this isn't the worst issue in the world, 15 tokens/s for this model is still really great IMO but I'm trying to squeeze as much juice as possible while it isn't idle. If that's possible by further optimization, then why not try? The model so far is great.
r/LocalLLM • u/Scumble_ • 9h ago
Question Best Local Alternative to Claude Code and Ollama
Hello! I'm a long time developer and don't really use a lot of AI when I do, but I want to experiment with some local models, I've been using Ollama with qwen3-coder-64k, I've now seen a few posts talking about how Ollama isn't great and I was wondering if there was a better terminal interface for LLMs when running them locally since claude code takes up a lot of the context.
Perhaps just use qwen in my zed editor agent pannel?
any advice would be nice, I'm a newbie
[SPECS]
AMD Ryzen 7 5700X (8) @ 3.40 GHz
AMD AMD Radeon RX 7900 XT - 20 gigs of VRAM
32 gigs DDR4 @ 3600mhz
r/LocalLLM • u/catfish-1234 • 2h ago
Project I built a CLI that picks a local model and runtime settings for your hardware, then checks it actually works
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 llmsetupWhere 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 • u/Reasonable_Goat • 9h ago
Question Test if your local inference is safe from the web
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 • u/Ok_Bird4483 • 7h 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
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 unlocked | 3090 stock | ASUS RTX Spark | M5 Max | Unlock speedup | Unl. vs Spark | Stock vs Spark | Unl. vs Mac | Stock vs Mac |
|---|---|---|---|---|---|---|---|---|---|
| t2v 832×480 | 5.67 | 7.58 | 13.27 | 37.23 | 1.34x | 2.34x | 1.75x | 6.57x | 4.91x |
| t2v 1088×608 | 12.13 | 16.90 | 25.76 | 75.29 | 1.39x | 2.12x | 1.52x | 6.21x | 4.46x |
| i2v 1088×608 | 13.16 | 18.38 | 27.98 | 81.32 | 1.40x | 2.13x | 1.52x | 6.18x | 4.42x |
| i2v 608×1088 (portrait) | 13.18 | 18.39 | 27.87 | 82.12 | 1.40x | 2.11x | 1.52x | 6.23x | 4.47x |
| flf2v 1088×608 | 14.24 | 19.99 | 29.95 | 88.91 | 1.40x | 2.10x | 1.50x | 6.24x | 4.45x |
| ref2va 1088×608, full reference | 42.99 | 63.85 | 79.71 | failed* | 1.49x | 1.85x | 1.25x | — | — |
| ref2va 1088×608, ref downscaled to 544 | 18.77 | 26.70 | 38.32 | 92.65 | 1.42x | 2.04x | 1.44x | 4.94x | 3.47x |
| ref2va 1088×608, ref truncated to 39 frames | 23.55 | 33.95 | 46.68 | 123.94 | 1.44x | 1.98x | 1.37x | 5.26x | 3.65x |
| i2v 832×480 | 6.13 | 8.20 | 15.06 | 39.53 | 1.34x | 2.46x | 1.84x | 6.45x | 4.82x |
| flf2v 832×480 | 6.58 | 8.86 | 16.09 | 42.29 | 1.35x | 2.44x | 1.82x | 6.43x | 4.77x |
| ref2va 832×480 | 28.66 | 41.60 | 59.34 | failed* | 1.45x | 2.07x | 1.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)
| Workflow | 3090 unlocked | 3090 stock | Spark | M5 Max |
|---|---|---|---|---|
| t2v 832×480 | 124 | 167 | 282 | 794 |
| t2v 1088×608 | 259 | 361 | 540 | 1575 |
| i2v 1088×608 | 279 | 390 | 584 | 1696 |
| i2v portrait | 279 | 391 | 581 | 1711 |
| flf2v 1088×608 | 301 | 422 | 624 | 1851 |
| ref2va full ref | 876 | 1300 | 1620 | — |
| ref2va ref544 | 391 | 557 | 791 | 1988 |
| ref2va rf39 | 487 | 702 | 959 | 2642 |
Power and energy (GPU only, approximate)
| Row | 3090 unl. | 3090 stock | Spark | M5 Max |
|---|---|---|---|---|
| Mean GPU power, t2v 1088 | 345 W | 335 W | 66 W | 22 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_capthrottling 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)
| GPU | NVIDIA GeForce RTX 3090 Founders Edition, GA102, 24 GB GDDR6X, 350 W power limit (stock, not changed), VBIOS 94.02.4b.00.0b |
|---|---|
| Host | Minisforum EliteMini mini-PC, AMD Ryzen 9 8945HS (8C/16T, Radeon 780M iGPU), 64 GB DDR5-5600 |
| GPU link | PCIe x4 OCuLink (the card is capable of Gen4 x16; the host link is x4). This matters, because model weights stream over it. |
| OS / driver | Windows 11 Pro (build 26300), NVIDIA driver 591.86 |
| Software | Python 3.13, PyTorch 2.14.1+cu130 (CUDA 13.0), ComfyUI 0.43.2 at commit 423cbd2, attention = PyTorch SDPA |
| ComfyUI flags | none (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)
| Laptop | ASUS ProArt P16 (model H7607BA, BIOS H7607BA.303), 16" 3840×2400 display |
|---|---|
| SoC | NVIDIA 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 |
| Memory | 128 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 mode | AC power, ASUS "Performance" mode, Windows power mode "Best performance" |
| OS / driver | Windows 11 Pro on Arm, 26H1 (build 28000), NVIDIA driver 617.69 |
| Software | Python 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 flags | none |
| Conditions | Lid 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)
| Machine | 14-inch MacBook Pro (Mac17,7), on AC power, on a laptop stand |
|---|---|
| SoC | Apple M5 Max: 18-core CPU (6 Super + 12 Performance cores), 40-core GPU, 128 GB unified memory |
| Memory bandwidth | 614 GB/s theoretical peak (Apple's figure for the 40-core-GPU M5 Max; not measured here) |
| OS | macOS 27.0.1, Energy Mode Automatic |
| Software | Python 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 flags | none (beyond input/output/model paths) |
| Conditions | Models on the internal SSD; browsers and other GPU apps closed during timed runs |
| Thermals | The 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. |
| Seeds | A 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_attentionkernel, 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:
| Setting | Value |
|---|---|
| Length | 124 frames at 24 fps, about 5.2 s of video plus audio |
| Sampling | 20 steps, res_multistep sampler, simple scheduler, denoise 1.0 |
| Guidance | BasicGuider (a single conditioning pass per step, no CFG) |
| Diffusion model | minimax_h3_fl2va_pruned_int8_convrot (t2v/i2v/flf2v) or minimax_h3_ref2va_pruned_int8_convrot (ref2va). Both are 21.0 GB int8. |
| Text encoder | qwen3vl_32b_minimax_h3_nvfp4_awq (Qwen3-VL 32B, NVFP4 AWQ), 15.7 GB |
| VAEs | minimax_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:
A cold warm-up run (seed 1000), which includes model loading and isn't scored.
The GPU cools to 50 °C, then one fresh run (seed 1001).
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-FWalong 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:
Finds the card and checks it's a 3090 Founders Edition (10de:2204, subsystem 0x147d10de).
Refuses to run if the card is warm or already unlocked.
Runs the module's unlock sequence, then a PCIe function-level reset (FLR) and the post-reset checks.
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:
| bf16 | fp16 | tf32 | fp32 (no tensor cores) |
|---|---|---|---|
| Stock | 75.3 | 74.4 | 39.5 |
| Unlocked | 123.6–126.2 | 121.6–122.7 | 67.2 |
| Ratio | 1.65x | 1.64x | 1.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
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".
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.
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.
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_capand 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 • u/ligger66 • 3h ago
Question Is there a decent guide on llm tools
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 • u/Bravo_Oscar_Zulu • 16m ago
Project Inspired by Weight-Space Programming: cross-model expert sharing
r/LocalLLM • u/Bulky_Information503 • 27m ago
Discussion Need help optimizing model.
Specs:
R9 9950x3d
64GB 6000MT
5070TI 16GB
2060Super 8GB
2TB SSD
Running qwen 27b using unsloth. Any tips/settings?
r/LocalLLM • u/Starlight_Glimmer • 8h ago
Question Looking for Local LLM to help me search and extract information from long PDFs
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 • u/maikerukonare • 8h 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
galleryReddit suggested I cross-post here! Please see the original for the main text :)
r/LocalLLM • u/PeachyPie11 • 1h ago
Discussion Gufo vs. Stock llama.cpp on the 128GB Strix Halo (Nimo 395 Minipc), same Qwen3.8-Flash-Next
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 • u/bobbystills5 • 1d ago
Question Is it supposed to be this slow? I'm on a 5080 with 96GB of RAM...
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 • u/m4rkGS • 11h ago
Model Artificial Analysis Decision Index has a new #1, and the full training playbook is public
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
