• vicchenai 24 minutes ago

    the practical question is whether the read pattern is sequential enough to actually saturate nvme bandwidth or if the attention layer access pattern ends up being random enough to kill throughput. sequential reads on a decent nvme get you 5-7 GB/s, random reads drop to maybe 500 MB/s depending on queue depth.

    for a 1T model youd need to stream something like 2TB of weights per forward pass at fp16. even at peak sequential thats 300+ seconds per token which is... not great for interactive use but maybe fine for batch inference where you dont care about latency.

    still a cool proof of concept though. the gap between 'can run' and 'runs usefully' is where things get interesting.

    • zozbot234 12 minutes ago

      > for a 1T model youd need to stream something like 2TB of weights per forward pass

      Isn't this missing the point of MoE models completely? MoE inference is sparse, you only read a small fraction of the weights per layer. You still have a problem of each individual expert-layer being quite small (a few MiBs each give or take) but those reads are large enough for the NVMe.

      • visarga 6 minutes ago

        But across a sequence you still have to load most of them.

    • erikcw 21 minutes ago

      Simon Willison wrote a good post about Dan Woods’ work on “Autoresearching Apple's "LLM in a Flash" to run Qwen 397B locally”.

      [0] https://simonwillison.net/2026/Mar/18/llm-in-a-flash/

      • marksully an hour ago

        Where does "1T parameter model" come from? I can only see models with 70B params or less mentioned in the repo.

        • causal an hour ago

          Yeah title comes from nowhere in the link. No doubt it's possible but all that matters is speed and we learn nothing of that here...

        • baq an hour ago

          Intel Optane rolling in its grave.

          • liuliu an hour ago

            Still have 4 brand new ones in my storage unit. Just in case these moments.

            Joke aside (I do have them tho!), I don't think Optane is that much use (not to mention it is only 256GiB for my unit). It is useful legacy crutch if you have legacy software that is not designed to issue multiple reads / writes in parallel. If you do, it is really not faster than NVMe, especially these modern ones.

            • zozbot234 35 minutes ago

              It's not about being faster (except for small reads where latency dominates, which is actually relevant when reading a handful of expert-layers immediately after routing), it's the wearout resistance which opens up the possibility of storing KV-cache (including the "linear" KV-cache of recent Qwen, which is not append-only as it was with the pure attention model) and maybe even per-layer activations - though this has the least use given how ephemeral these are.

            • speedgoose 29 minutes ago

              Is it too late for Intel to bring them back to life?

              • c0balt 24 minutes ago

                Yes, their NAND division has been sold, it is now mostly under solidigm. Maybe solidigm could bring it back, but it seems unlikely (given the previous commercial failure).

              • moffkalast 22 minutes ago

                Wouldn't be Intel if they didn't quit halfway through on a good thing.

                Still, couldn't one get a RAID 0 card with four drives to saturate a 16x lane? That's already the max one could push through PCIe anyhow.

                • 0ptan3 28 minutes ago

                  pmem

                • root_axis 8 minutes ago

                  Are there any 1T parameter open source models?

                  • zozbot234 6 minutes ago

                    Kimi 2.5?

                  • zozbot234 an hour ago

                    It will be interesting to compare this to https://news.ycombinator.com/item?id=47476422 and https://news.ycombinator.com/item?id=47490070 . Very similar design except that this is apparently using mmap, which according to the earlier experiment incurs significant overhead.

                    • salynchnew an hour ago

                      It was written by an LLM, so... yeah.

                      • jeffybefffy519 28 minutes ago

                        Except this isnt using heavily quantised versions of the model thus reducing quality.

                      • Insanity an hour ago

                        This is a pretty cool project! Essentially this is like using Swap memory to extend your RAM, but in a 'smart' way so you don't overload the NVMe unnecessarily.

                        I do wonder in practice how the 'smarts' pan out, because putting a ton of stress on your NVMe during generation is probably not the best choice for it's longevity.

                        • embedding-shape an hour ago

                          > but in a 'smart' way so you don't overload the NVMe unnecessarily

                          "overloading NVMe"? What is that about? First time I've heard anything about it.

                          > because putting a ton of stress on your NVMe during generation

                          Really shouldn't "stress your NVMe", something is severely wrong if that's happening. I've been hammering my SSDs forever, and while write operations "hurt" the longevity of the flash cells themselves, the controller interface really shouldn't be affected by this at all, unless I'm missing something here.

                          • Insanity an hour ago

                            I had assumed heat generation on the controller if it's continuously reading. But maybe it's not actually bad.

                            • throwway120385 14 minutes ago

                              Just pop a heatsink on it and call it good.

                          • zozbot234 an hour ago

                            This is not putting any stress or wear on the NVMe, it's a pure read workload.

                          • speedgoose 24 minutes ago

                            I wonder how many minutes per token on GLM 5.

                            • nullbyte 40 minutes ago

                              I am curious how the TPS compares vs default OS virtual memory paging

                              • monksy an hour ago

                                There needs to be something like this from Ollama. At the moment Ollama has a lot of flaws that prevent it from getting great performance. (My understanding is better GPU/CPU splits, etc). But Ollama is the only way to host an LLM and have it switch out on demand. Sigh.

                                • zozbot234 42 minutes ago

                                  Ollama has very substandard support for mmap at present, which hurts inference with larger models. There are some recent pull requests in flight that should help address this to at least some extent https://github.com/ollama/ollama/pull/14525 https://github.com/ollama/ollama/pull/14134 https://github.com/ollama/ollama/pull/14864 but progress seems to be stalling. Their support for recent Qwen models seems to also have some bespoke incompatibilities with llama.cpp, which doesn't help matters; it's difficult to test the same model with both.

                                  • rubiquity an hour ago

                                    llama.cpp and llama-swap do this better than Ollama and with far more control.

                                  • amelius 26 minutes ago

                                    This is <1 tok/s for the 40GB model.

                                    Come on, "Run" is not the right word. "Crawl" is.

                                    • EnPissant 31 minutes ago

                                      You do not provide any comparison to llama.cpp with mmap.

                                      You do not explain how any kind of predictor can work for MoE experts.

                                      You do not explain how prediction can even be useful. I can predict the layers used in a dense model (all of them are used in order), but that doesn't help me much. It's still bottlenecked on bandwidth (hint: MoE doesn't change this).

                                      • anshulbasia27 33 minutes ago

                                        OS paging would be significantly worse here. The kernel's page fault handler is reactive — it doesn't know you're about to read layer 47's FFN weights, so it can't prefetch. You stall on every fault, wait for the 4KB/16KB page to load, then resume. With 80 layers of dense FFN streaming, that's thousands of cold faults per token.

                                          What makes this approach faster is that the model's access pattern is completely deterministic during         
                                          inference. You know exactly which tensors are needed next because transformer layers execute sequentially. So
                                          you can issue large sequential reads and prefetch the next layer while the current one is computing on Metal. 
                                          The OS page cache can't do that — it has no concept of "layer N+1 comes after layer N."
                                        
                                          For MoE it's even more stark. The OS would page in all 8 experts on the first token that routes to each one,  
                                          then evict them under memory pressure with LRU, which has no idea that expert 3 fires 10x more often than
                                          expert 7. The neuron cache here is basically a domain-specific replacement policy.
                                        • zozbot234 32 minutes ago

                                          > The kernel's page fault handler is reactive — it doesn't know you're about to read layer 47's FFN weights, so it can't prefetch.

                                          man 2 madvise

                                          • EnPissant 28 minutes ago

                                            That assumes you have significant work to do between fetches (so you can prefetch while using the current data). With LLM decode you don't.