Show HN: Getting GLM 5.2 running on my slow computer

(github.com)

153 points | by vforno 14 hours ago

15 comments

  • walrus01 1 hour ago
    My main question is whether when put into practical use, this can be measured in tokens/second, or more like 1 token per minute... I have seen locally hosted LLM that are as slow as 1 tok/second still be very useful if you give it a project to do something overnight and metaphorically walk away from it, check back with what it has done in 6 or 8 hours.

    0.05 to 0.1 tok/s on the other hand, as reported in the URL for the lowest class of hardware, isn't really usable for much.

    edit: I think this is a fantastic project in general concept, and look forward to seeing more efforts towards the general idea of being able to run a 350B to 900B size model locally, even if as slow as 1 tok/s, on hardware that ordinary people can afford. Anything along the general concept of "we have fast read NVME SSD storage, we have a big ass model on local disk, we'll read it at 11GB/tok as we need it, not try to load the whole thing".

    • vforno 1 hour ago
      In the readme you can see benchmark which everyone with different hardware is running Colibrì, and I have to say I've seen great times! I'm always doing more to improve!
      • walrus01 1 hour ago
        I have a 16-core system with 256GB RAM here I could try it with but regretfully it's so old the CPUs aren't AVX2 capable. Otherwise it makes a fairly good llama-server test system for CPU only stuff. Oh well. Time to upgrade (painful to the wallet these days).
        • vforno 1 hour ago
          Maybe we can see some integration!
  • Cieric 39 minutes ago
    I was actually just working on the same thing as this, but I went down the route of mmapping the entire model into memory to avoid the extra ram usage. I also had Claude implement Medusa[1] on the model to try and avoid loading an additional model into memory but still get the benefits of MTP. Currently at a stop light so I can't list everything and I didn't get to read your full post either yet.

    To expand since I just got home, I'm making all of my modifications to llama.cpp, the goal was to eventually put this on a SBC of some kind with an nvme to handle the mmapped files. I think the theoretical limit of my current setup is about 1.8 tok/s based on prior testing but that is also with the additional medusa heads not fully trained (I honestly don't know if the counting it's generated tokens or not.)

    In the end it seems like the idea we had is similar, I just don't know how to write an llm parser/runner from scratch yet and instead of specifying what needed to stay in memory I just let the linux kernel handle it.

    Oh last note, I also capped llama.cpp usage to 16GB of my 32GB, so it might be possible to get it down even lower.

    [1] https://arxiv.org/abs/2401.10774

    • vforno 7 minutes ago
      if you like, colibrì always needs to improve so if you have ideas or anything else you are welcome for pull request issues and also benchmarks!
  • kodablah 38 minutes ago
    I've taken a similar strategy w/ image/video gen at https://github.com/cretz/thinfer (see video branch for a ton of work).

    Basically I kept needing an inference engine that could stream weights in and out as needed in an LRU manner. So I ended up vibe coding this thing that accepts a `--vram-budget` and stays under it (mostly). It turns out moving mmap'd bytes in and out of VRAM is way cheap compared to compute. Coupled with some pipelining/double-buffering, I almost always end up compute bound not memory bound. Granted I use way smaller models heh.

  • Datagenerator 4 minutes ago
    Great job, it's unique!
    • vforno 3 minutes ago
      Thanks really thanks!
  • shrinks99 1 hour ago
    Pretty cool! I've also been playing around with GLM 5.2 this week and was equally impressed. At work we're running it locally on some crazy expensive hardware as a test before starting another project so it's great to see people taking this massive FOSS model release and running it on an average machine, even if it's not terribly practical at this point.

    Nice work!

    • vforno 1 hour ago
      Really thanks!!
  • miohtama 1 hour ago
    This is the hacker spirit
    • vforno 1 hour ago
      Thank you so much, it's true! It all started with this spirit!
  • khalic 1 hour ago
    I love seeing that kind of tinkering
    • vforno 1 hour ago
      Really thanks!
  • mariopt 1 hour ago
    I wonder if you could replicate this in a Colourful GeForce RTX 50-series GPU, they ship it with 2 NVMe drive slots.
    • vforno 1 hour ago
      I'd love to! Right now I only have a very consumer-grade computer that I've had fun with! We'll see!
  • bobim 57 minutes ago
    I'm not fully understanding this business of MoE so please forgive me if this is a dumb question, but would it be possible to use MPI with a small cluster to distribute the load?
    • vforno 53 minutes ago
      It’s a good question.

      In theory MPI could distribute experts across nodes. In practice, for small clusters the added network latency usually hurts more than it helps.

      Better suited for big clusters with fast interconnects. For now we're focusing on single-machine speed (caching, GPU hybrid, etc.).

  • xfalcox 1 hour ago
    Question to the OP, have you tested this on a machine where the entire model and context fit in RAM ?
    • walrus01 1 hour ago
      I think if you had something like a theoretical used/refurb 2U rackmount server with two older multi core CPUs, 768GB of RAM, you would see faster performance loading a Q6 or Q8 GGUF of GLM5.2 into a freshly-compiled latest copy of llama-server, with the "no-mmap" option turned on to intentionally load the whole thing into RAM at the time the llama-server daemon launches.

      If you want a CPU-only machine with 512GB to 1024GB of RAM, despite extreme cost rises, there are still some great options out there from companies selling ex-lease stuff that's 3, 4, 5 years old. It'll be loud as hell under full CPU load when running inference, so if you plan to use it at home, put it in your garage or basement or laundry room or somewhere similar on the far end of a network cable.

      The software that OP has published appears to be specifically designed to hold only the active parameters in RAM (<100GB) and read content off local NVME SSD as needed on the fly. All that NVME SSD read wouldn't be necessary if you can hold the model in RAM, even in the absence of any GPUs.

    • vforno 1 hour ago
      No because I have only 32gb of ram too low
  • kzrdude 1 hour ago
    Your coding style is halfway to IOCCC. I'm just jealous though :)
  • stavros 26 minutes ago
    This is great, well done! I love seeing people run things where they weren't meant to be run.
  • Pragmata 1 hour ago
    Would this cause issues with SSD lifespan?
    • vforno 1 hour ago
      What causes problems is the rewriting in this case are only read while writing is the cache! However, I'm working to improve more and more and make some parts lighter!
      • Pragmata 35 minutes ago
        Is it possible to run this into an agent? pi, claude code, etc..? I've only tried it with LM studio, but i'm guessing this is a bit different
    • xfalcox 1 hour ago
  • nerder92 1 hour ago
    Is this inspired by antirez work on ds4?

    Amazing job!

    • vforno 1 hour ago
      Antirez is the number one!thanks really thanks!