Tested in this article: peasantsmith/GLM-5.3-Flash-Maya-GGUF IQ2_S ("Maya-M") Hardware: RTX 6000 Blackwell · 96 GB VRAM, 128 GB DDR4 OS: Debian 13 Engine: Project Maya Benchmarks: BFCL v4, MMLU-Pro, IFEval, HumanEval+, MBPP+, Arena-Hard, Word500, (+ harness tests)
📊 Expand Model Config
./maya.sh --setup \
  --port 8123 \
  --gguf-dir /models/glm-5.3-flash/Maya-M \
  --context 262144 \
  --parallel 1

A great deal of the configuration happens by Maya automatically. On load it checks your hardware and runs measurements to figure out exactly the best layer split across the 3 tiers. Even after that, you can configure everything in the GUI and not much has to go into your initial launch. I didn’t want it to download to its default location and wanted it to not use the same port 8080 everything else wants, so i set those myself.

Intro

The neverending wave of specialized inference engines designed to run select models on specific hardware continues to batter the shores of our local machines. This week, Project Maya caught my eye. It’s another expert caching, 3-tier-fitting, streaming engine set to run GLM-5.3-Flash, DeepSeek-V4.1-Flash-1017 and MiniMax-M3.1-Flash.

Project Maya comes with its own nice WebUI and terminal UI.

TerminalWebUI
Maya-M terminal-uiMaya-M WebUI
WebUI Monitor Panel
Maya-M monitor panel, throughput and contextMaya-M monitor panel, expert placement and GPU memoryMaya-M monitor panel, hardware and recent requests

The primary characteristic between the models these engines advertise is lobotomized tiny quants. Yes, you’re getting 200 tok/s decode on your 2 x 3060 12gb rig, but at IQ1_S does it matter? I’ve been hesitant to dive in too much, but I’ve really wanted to try GLM-5.3-Flash so decided to set it up.

Expert cache is the primary point of intrigue here for me, but KV streaming from RAM and the overall 3-tier expert parking is an intelligent layout. I likely would have little interest in a model that tips beyond VRAM+RAM into SSD, but the option is interesting.

I went with the quant labeled “Maya-M” which shows as IQ2_S on HuggingFace since it was the right size to exceed my VRAM, but not by too much. Looking into the quant details in the model card it’s clear that ‘2-bit’ does undersell it to a degree:

TensorsMaya-M
Routed experts, gate and up (42 layers)IQ2_S, rounded with error feedback
Routed experts, downIQ3_S in the first and last four MoE layers, IQ3_XXS in the rest
Attention projections (KDA, MLA/DSA) and shared expertsQ6_K
The three dense layers, embeddings, output, MLA k_b / v_bQ6_K
Small KDA projections, the DSA indexerQ8_0
Router, norms, stream-mixing weightsF32
NextN draft layer expertsQ3_K (gate/up), Q4_K (down)

Doing the math it’s really something more along 2.7-bit (or 2.9-bit if you go just off file size). Still a far step from the minimum 4-bit floor that has felt usable in other models I’ve tried.

My goal with this article is to measure GLM-5.3-Flash at this quant in this engine and determine if the deep quantization doesn’t render the model too damaged AND to consider the speed difference. My current “use 100% of my machine’s brain” model is Qwen3.8-flash-next-nvfp4. This would have to perform pretty impressively and token-efficiently for me to swap. I’ll start with a speed analysis, run the typical benchmark suites, and end with real world style in-harness uses.

Speed & Size

First things first, how fast is this model on my hardware? I originally configured the model to run with MTP, Maya’s measurements said that’s slower. I then tried with the dflash2 draft model - it once again measured and said no dice. So these numbers are without spec of any kind.

Prefill/Decode Sweep

Single stream synthetic sweep for a quick speed check. 512 tokens generated per run, prompt size walked from 1k out to the served --context 262144. Two reps per point; the charts and table are the mean of reps.

📊 Expand Speed Table

Each row is the mean of two reps; the last two columns are the engine’s own reported prefill/decode tok/s for comparison with the client-measured numbers:

PromptPrompt tokensTTFTprefill tok/sdecode tok/ssrv prefillsrv decode
1k9440.71 s1,33677.01,34077.1
8k7,1762.03 s3,53568.33,64668.4
32k28,5477.47 s3,82467.73,92367.9
131k114,02930.89 s3,69164.43,74864.6
262k228,00466.58 s3,42560.73,47260.8

Overall VERY usable numbers. A 3.8k tok/s prefill and 68 tok/s decode at 32k is acceptable for chat and coding. It also maintained some nice stable numbers as context grew, never falling off a cliff. Still a far cry of the 16k / 160 tok/s I experience with Qwen3.8-flash-next-nvfp4 on vLLM.

Concurrency

Same synthetic prompt pushed through 1, 2, 4 and 8 concurrent clients. I of course had to increase the parallel count in the config to accomplish this (I reduced it after).

📊 Expand Concurrency Tables

Table one is the per-client experience - each cell is aggregate prefill tok/s · worst TTFT · per-client decode tok/s at that client count:

Clientsagg prefill tok/sTTFT (worst)per-client decode tok/sagg decode tok/s
13,5902.00 s70.470.4
23,6903.89 s47.992.6
43,6867.79 s28.9108.4
83,61415.89 s15.3111.8

Table two is what the box as a whole puts out, aggregate decode tok/s, and how much of the theoretical 8x survived:

Maya-M
agg decode 1 → 870.4 → 111.8 (x1.59)
per-client retained at 8-78.3%

Clearly not worth running concurrently, and a SUPER far fall behind what I see in vLLM with my golden child model. With that said, I was surprised to see the numbers at n=2 are actually still rather usable single stream and do add up to a net positive. If I needed to support 2 users who didn’t mind a middling decode performance this could be viable.

Size & memory

📊 Expand Memory Table
Maya-M (Maya engine)
QuantIQ2_S, ~2.9-bit effective (experts ~2.7-bit, 2.5/3-bit mix)
VRAM used95 GiB of 96
RAM used48.7 GiB of 128
of which pinned for experts28 GiB
On disk116 GiB

My hardware is nicely set up for this size model through this engine. 86% of the experts sit in VRAM, the rest in ram. Nothing spilled into SSD, so I didn’t really test the FULL stack this engine offers.

The GUI gives a nice breakdown of how everything lays out:

This also gives us a solid anchor to check the effectiveness of the expert cache. Throughout some early tests I saw cache hits range from 96.4% to 99.2%. This range CLEARLY beats a random expert pull against 86%, so the cache is a notable net win.

Traditional Benchmarks

note these are not comparable to leaderboards - different sample size, different Arena Hard judge.

All six typical suites, one model. Ran 5 Nov 2026 through Project Maya at server default temperature and 16k max tokens (64k for Arena-Hard), batch_size 1.

📊 Expand Benchmark Tables

Scores, as percentages:

SuiteSamplesMaya-M (IQ2_S)
BFCL v430079.00
IFEval (prompt-strict)25077.60
MBPP+37892.06
MMLU-Pro42078.81
Arena-Hard (winrate)7590.91
HumanEval+16486.59
mean of the six84.16

IFEval’s other three variants (prompt-strict is what’s charted) - instruction-level strict 84.73, prompt-level loose 82.00, instruction-level loose 87.67.

BFCL v4 by subset, 50 samples each:

SubsetMaya-M
simple_python98
multiple88
parallel86
irrelevance62
live_multiple72
multi_turn_base68

MMLU-Pro by category, 30 samples each:

CategoryMaya-MCategoryMaya-M
biology96.67psychology76.67
math93.33computer science73.33
physics90.00health70.00
chemistry86.67philosophy70.00
business86.67other70.00
economics86.67law63.33
engineering80.00history60.00

Mean wall time per request. The harness runs its own concurrency, so this mixes scheduling in with generation. BFCL’s tracker counts the individual tool-turn requests (931) rather than the 300 samples, so its latency is per turn.

SuiteMean latencyAvg output t/sMean output tokens
BFCL v42.84 s55.7158
HumanEval+1.77 s52.293
IFEval5.46 s70.7386
MBPP+3.73 s62.4233
MMLU-Pro2.74 s34.795
Arena-Hard304.64 s38.711,792

These numbers are outright not impressive. The only of the 6 that are on-par with Qwen3.8-flash-next-nvfp4 is BFCL (Maya-M sits 1 percent higher). Every other value is notably behind. This suggests to me the aggressive quantization most likely hampers this model in all ways besides tool calls. These benchmarks aren’t everything though. As I’ve seen in other benchmark sets, real world use often doesn’t align.

Word500

Back to the puzzle benchmark - guess the five letter word given only the counts of letters in the right place, wrong place, or nowhere. Measures reasoning effectiveness and efficiency.

Details: 6 boards x 10 samples = 60 runs, temp 1.0 / top_p 0.95, max_tokens: 64000, concurrency 1, loop-abort at 10 consecutive repeats. Three boards (Smoke, Poker, Hoard) each run twice: once as a screenshot, once as text only.

📊 Expand Word500 Table
BoardCorrectAccuracyFormat okAvg tokensMax tokens
Smoke9/1090%0/1013,96233,040
Poker7/1070%2/1021,02132,780
Hoard10/10100%1/1018,70725,716
Smoke (text)10/10100%10/108,91212,519
Poker (text)9/1090%10/1023,66632,791
Hoard (text)10/10100%10/1016,49832,784
overall55/6091.67%33/60 (55%)17,12833,040

Overall token stats: total 1,027,653 · median 16,124 · min 5,444 · max 33,040. Two loop aborts (both on the Poker board), zero truncated answers.

Maya-M pulled off a big 55/60 correct result, which puts it on par with Qwen3.8-flash-next-nvfp4 (my benchmark leader) with a big caveat: the vision boards essentially never followed the single-word format (3 of 30). It consistently produced responses in the format of ANSWER [explanation]. I’ve actually only seen tiny models that outright can’t handle the benchmark at all fail to format their answer correctly. Going further, the average token count of 17k is very good, also within error of our current leader’s numbers.

It’s important to observe there generally seems to be a reduction in capability when vision is involved. With just text boards provided, the model only missed one guess. Meanwhile in the vision-testing puzzles it missed 3 more. I would need to run a whole lot more reps to determine the significance, but with how long these runs take with this model that’s not in the cards. Just consider, the mmproj might be a weaker avenue for this model.

In-Harness Tests

Curated suites need something to anchor them to reality. These are the same in-harness jobs I ran in the Swift1.5 NVFP4 comparison (and Spark-X2.6 before that), so Maya-M lines up directly against the models in those entries.

Open-WebUI Chat - Search, Reasoning, Function Calling

The same two-turn job:

  1. Can you find a few recently released unified memory systems with 128gb+ ram and compare their prices/availability/pros and cons?
  2. Can you format that information into a single page pdf so i can share it?

Same expectations as the prior entries: Nvidia RTX/DGX Spark, the M_ Ultra Mac Studios, the various Ryzen AI Max 395 mini pcs, MSRP, real prices, and pros/cons covering availability, memory size, bandwidth and compute. And of course it needs to find and call the PDF creation tool sitting in the harness.

Results

Maya-M (Project Maya · ~2.9-bit)

Open PDF ↗

Perfectly handled task creation, update, and closure. Modulated n for search counts based on the complexity of each search and fetched when appropriate. Cleanest behavior seen on this test so far. Found up-to-date and relevant information, synthesized the report well, and checked the length then revised it to fit the one page ask.

The cleanest result I’ve had with a model in this harness. Most expected contenders can get the search -> fetch tool pattern, fewer properly set the search result count, and not a single other has handled the task creation, update, and closure this well. Very impressed by the model’s behavior and results. The output is accurate to the requirements and formatted cleanly.

Pelican on a Bicycle

The classic silly prompt, as always.

Generate an SVG of a pelican riding a bicycle

Maya-M (Project Maya · ~2.9-bit)

Open SVG ↗

Probably the best pelican of any model run locally so far. Anatomy is great, the bicycle is perfect, and the layering is super clean.

SVG generated by Maya-M

Once again, killed it. This is the best pelican I’ve seen rendered in this test in my harness. Look at the tasteful thickness of the beak. The bicycle is perfectly designed. The layering with the leg behind the bike is incredible. You can compare it here to 3 different Qwen3.8-flash-next quants and here for another few (smaller) models that have done well.

Plex recommendation app

In VScode + Cline - A big, messy, directionless 1-shot attempt at a sort of application I may employ the model to create:

Create a docker compose compatible web app that users can log into with a Plex account to browse popular shows/movies and be given show/movie recommendations based on their watch history and ratings.

First attempts:

The model was able to almost reach a functional state with no input. The Plex login functionality worked, but upon load it suggested it had no TMDB API key despite me providing it in the .env. One quick prompt did clear that issue and get the primary browse page working.

Plex loginMain screen
Maya-M build, Plex loginMaya-M build, main screen

The TMDB key detour:

Maya-M build, TMDB api key error popup

Further refinement prompts:

Despite the Browse page being functional, the For You was not. It simply couldn’t pull watch history or ratings from Plex. It took a few back and forths including me providing a link to the Plex API documentation for the model to succeed at all. But once I did things looked great.

For You, failingFor You, fixed
Maya-M build, For You page failing to pull watch historyMaya-M build, For You page after refinement 1Maya-M build, For You page after refinement 2
Maya-M
First responseFunctional stack, good choice in TMDB integration.
Plex authbuilt correctly; container starts and login works
TMDB keypopup claimed it was missing despite it sitting in the .env
Prompts to fix TMDB key1
Watch history → recommendationsneeded a few rounds of prompts plus links to the Plex API docs
1-shot?no

Just like the qwen3.8-flash-next quants in the Swift1.5 comparison, this problem is too much for a 1-shot for this model in this harness, but it is certainly within the realm of capable with a modicum of research and planning. I’d actually say I preferred both UIs created by Qwen3.8-flash-next in my prior test and liked how they both came up with a creative name.

Designing a server case

In Hermes harness - This is another real world test that mirrors a project I’ve been working on - I’ve designed and built a new case for my LLM rig. Could it 1-shot a 3D representation of the efficient build I brainstormed over weeks? Probably not, but let’s see what it output.

Let’s design a case for a server that supports standard ATX motherboard and power supply. It should support an RTX 6000 Blackwell and an Evga 3090 FTW3.

The primary focus should be keeping the case compact and maximizing airflow.

Your output should be a 3D representation of the case for easy viewing.

The viewer below is the real artifact, drag to orbit and scroll to zoom. Three.js, loaded from a CDN, in a self-contained page. Expand to load it.

🖥 Maya-M build - dual-GPU ATX airflow case, 33.4 L (200 × 459 × 364 mm), interactive 3D

Open full ↗

  • By far the best of the 3 models I’ve run this test on - the resulting model is extremely clear and could nearly actually be built.
  • The design is a little confused about which side of the motherboard is the back, and where the fans should go.
  • It made a big assumption that the motherboard PCIe spacing is large enough to leave a gap between the two GPUs - which is uncommon.
  • Overall the model is clean, includes airflow, modifiable views, clean labels. Did mislabel the units on some measurements (feet vs in).

ONE MILLION CONTEXT

One of the benefits I really didn’t take advantage of with Maya + GLM-5.3-Flash is KV residing in RAM and the model’s native 1M max context. I figured as a bonus I’d reconfigure to sample the performance at this increased value and test how well the system handles tossing the KV over PCIE.

1M Speed

Same single stream sweep, this time with the served context raised to the model’s native 1M. 512 tokens generated per run, prompt size walked from 1k out to --context 1048576. Two reps per point; the charts are the mean of reps.

📊 Expand Speed Table

Each row is the mean of two reps; the last two columns are the engine’s own reported prefill/decode tok/s for comparison with the client-measured numbers:

PromptPrompt tokensTTFTprefill tok/sdecode tok/ssrv prefillsrv decode
1k9440.73 s1,28876.21,29476.4
8k7,1762.12 s3,37968.03,48468.2
32k28,5467.82 s3,65267.73,73767.9
131k114,02932.26 s3,53563.33,58563.5
262k228,00469.22 s3,29459.83,33860.0
524k455,956158.09 s2,88454.52,91754.6
1M911,859394.47 s2,31246.82,33246.9

Even at 1M ctx this is genuinely usable. Sure you’re waiting for 6.5min for your first token, but in situations where you truly need it the prefill and decode are still well within usable range. I’m impressed how well this holds up to a huge KV cache. There really isn’t much downside to having this option as long as you have the spare RAM.

Conclusion

tl;dr

  • Speed is real. Maya does an excellent job finding the best configuration for your hardware.
  • Quality does take a beating. The deep quant is not free, hamstringing benchmark performance, but in real use I couldn’t feel it. Followed instructions and handled my tests in various harnesses as well or better than Qwen3.8-flash-next-nvfp4.
  • Token-efficient, coding capable, and by my observation better at natural sounding prose.
  • Speed scales well into the full 1M context supported by GLM-5.3-Flash

I do like how this model feels in the hand, but where I feel it the gap is only marginally better than my existing best-in-slot. The speed sacrifice on the other hand is substantial. What Maya is doing is notable, unlocking models for subpar hardware, but I still think a smaller model at a more reasonable quantization is the way to go.

If I find some time I may repeat the benchmarks with Maya-L (156GB), or try to get the engine to run a Q4_K_XL (200GB) gguf instead. The 156GB gguf would stress my ram a bit more, and the 200GB one would nearly max it but be in line with quality I’d actually like. I’d also like to try DSV4.1-Flash with the engine.