DEV Community

Cover image for Local GLM 4.7 from Z.ai on dual Nvidia RTX 3090: when the smarter model is the wrong pick
Josh Green
Josh Green

Posted on

Local GLM 4.7 from Z.ai on dual Nvidia RTX 3090: when the smarter model is the wrong pick

Running models at home rewires the question you ask about them. In a hosted console the only thing you ever feel is quality, because a stranger is paying for the silicon. On machines you own, that silicon is the invoice, so every model has to answer something blunter than "is it good," which is "are you worth the card you are sitting on." This is what happened when I put that question to one specific model, Zhipu's GLM 4.7, on a pair of Nvidia RTX 3090s, and got back an answer that flipped on me halfway through.

What a home lab actually asks of a model

I keep a small stack of GPUs busy instead of renting them, so a model does not get to win on vibes. It has to be cheaper per useful token than the alternative already loaded next to it. GLM 4.7 is the interesting kind of candidate: it is a mixture-of-experts build, roughly thirty billion parameters on paper but only about three billion doing work per token, wrapped around a memory trick called Multi-head Latent Attention. On paper that is a model that should be both fast and light. The last time I tried it, on a much weaker box, it was neither, and I wrongly blamed the model before realizing the runtime simply was not doing the latent-attention math. So this round I gave it fair hardware and a fair opponent.

The two contenders, and a slow wire between the cards

The opponent was deliberately boring: an ordinary dense, grouped-query model in the same size class, the sort of thing that never trends but never surprises you either. Both ran under the same server so nothing about the plumbing favored one side. The hardware was two Nvidia RTX 3090s, twenty-four gigabytes apiece, forty-eight together, on a mid-range desktop. No fancy interconnect. The two cards gossip over a link I clocked at about 1.4 gigabytes a second, which is glacial by GPU standards, and that single unglamorous number ended up steering half the results.

Then I stopped theorizing and just clocked both models at every context length from a few thousand tokens out to a hundred and twenty-eight thousand.

Generation speed has a tipping point you can predict

Generation speed against context length: Zhipu's GLM 4.7 starts high and slides, the dense model holds flat, and they meet near 64K tokens

Out of the gate GLM 4.7 was thrilling, close to ninety tokens a second on short prompts, well over double the dense model. And then it leaked speed as the context filled: down through the sixties, forties, twenties, and into the mid-teens at the deep end. The dense model, meanwhile, did almost nothing interesting, holding its lane the entire way with the stubbornness of a machine that has nothing clever to lose. The two curves met somewhere around sixty-four thousand tokens. Below that line the exciting model runs away with it. Above that line, the model nobody writes about is quietly faster.

The tax that never shows up in the demo

Everyone benchmarks generation speed. Almost nobody benchmarks the wait before the first token, the time the machine spends swallowing your prompt, which on long inputs is most of the wait you actually feel.

context Zhipu GLM 4.7 dense model
4K 2626 tok/s 979 tok/s
16K 1849 947
32K 1308 899
64K 805 780
128K 450 631

Same silhouette as before. GLM 4.7 devours a short prompt roughly three times quicker, then bleeds that advantage as the prompt grows, and by the deepest context the plain model is ingesting text faster than it is. The clever model is a sprinter on both halves of the job, and sprinters are not who you want at the back of a long race.

Memory runs the story backwards

Here is the twist that keeps GLM 4.7 in the conversation. The same latent-attention trick that costs it speed deep in a long context also keeps its running memory unusually small, so on a single twenty-four gigabyte card it fits noticeably more context before it has to spill onto the second GPU.

Memory used against context: Zhipu's GLM 4.7 stays under the single-card ceiling longer than the dense model

So the two stories point in opposite directions. On speed the dense model wins the long game. On memory the clever model does, packing a bigger context onto one card. If your problem is "hold an enormous document on a single 3090," GLM 4.7 has a real, physical answer for you, it just charges you generation speed to give it. I even tried shrinking the memory further with a compressed cache and it backfired, slower at every depth for no real headroom, so I left that idea on the floor.

A second card can make things slower, not faster

The most counterintuitive stretch came from trying to use both RTX 3090s at once. Instinct says two cards beat one. For a single conversation at short context, one card actually won outright, because splitting the model across the pair makes every token pay a toll crossing that 1.4 gigabyte wire, and on short prompts the toll costs more than the extra card saves.

One card wins short single-stream work, two cards win long context and win serving throughput by a wide margin

The math only tips once the context grows long enough that the per-token work dwarfs the toll, at which point splitting across both cards roughly doubles the memory bandwidth the model is starved for, and the pair pulls ahead. And the moment you stop chatting and start serving a crowd, it stops being a contest: batched across many streams the two cards together pushed toward five hundred tokens a second in aggregate, several times what one card manages alone. So even "use all my hardware" turned out to be another it-depends.

The decision tree I actually kept

I walked away with a verdict so unexciting it is almost rude:

  • Short, snappy, one person at a keyboard: run Zhipu's GLM 4.7 on a single card, it is genuinely quicker.
  • Long single-user context: run the boring dense model, still on one card, it is faster and simpler.
  • Serving real traffic: split GLM 4.7 across both RTX 3090s and take the throughput.

There is no overall champion, only a right answer per shape of job, and the skill is being honest about which job you are actually doing. I keep a quick model and a dependable model side by side and reach for whichever the task rewards, which is the thing the leaderboards structurally cannot tell you.

None of this benchmarking is academic for me. The same two cards run the small tools I build on ModelDirectory, and the heaviest of them are exactly the short-to-medium GPU jobs where a fast model on one card wins: an STL upscaler that adds real detail to a printable model, and an STL texture generator that paints one from a prompt. The lighter utilities barely warm the GPU, like the print orientation and printability checker and the print cost calculator, and being able to run all of them on hardware I already paid for is the whole reason the run-or-rent math keeps landing on run.

The next thing I want to know is whether that sixty-four thousand token crossover survives contact with real long workloads instead of tidy synthetic ones. That needs a better test rig, and it is where I am headed next.

Top comments (0)