Feat/qwen38 flash next - #1250
Conversation
|
Please add GPU support so this works tiered across SSD, RAM, CPU and GPU like the rest of the engines. |
|
@mohamedmastouri2000-boop @ZacharyZcR @terrizoaguimor o someone else can help here for gpu support? |
|
I reviewed this against the GLM-5.3-Flash work and built it locally. Short version: the methodology is right, the engine is in good shape, and I do not want it rewritten. Longer version below, including one thing that will bite on merge and that you cannot see from your branch. What I verified rather than took on trust
Three things here are more disciplined than what I shipped for GLM-5.3, and I would rather say so than pretend otherwise: the CI gate under ASan and UBSan, the pinned checkpoint revision so an upstream update cannot change the tensor contract underneath you, and
One caveat on my own review: I could not run the oracle, because it needs The thing that will bite on mergeI merged The problem is what git merged without a conflict: Your branch and The conflicts, and who should fix themFor the record, since these exist only because GLM-5.3 landed after you started, so the realignment is our mess and not yours:
With those resolved plus the three counters, all four engines build and the Python and C suites pass here. Say the word and I will push the rebase to your branch rather than making you redo it. Two questions
On the GPU request above: worth doing, not a blocker. DeepSeek V4 also landed CPU-first and grew a CUDA tier afterwards, and I would rather merge a correct CPU engine than hold it for a backend nobody has measured yet. Good work, and thank you for matching the oracle-first approach instead of writing the architecture from the paper. It is the reason this is reviewable at all. |
|
Thanks for the feedback. If you can do the rebase that'd be awesome. For the CUDA stuff, I agree that we can do that in a separate PR. Yes, the description is stale. I was working on some optimizations with SIMD kernels but I think that's beyond scope of this PR - can always open that separately in the future. I added the RAM amounts in |
Resolves the registration-surface conflicts created by GLM-5.3-Flash landing after this branch started, and three counters git merged without a conflict. Conflicts, all unions of the same engine list: ci.yml, release.yml, Makefile, segment_conformance_fixtures.c (renumbered glm53..qwen38 as 1..6) and the three adapter tests. family_registry.py and openai_server.py were both additive, so both sides are kept. resource_plan.py needed a decision rather than a union. dev's _dense_in_ram accounting and dense_disk_bytes are kept alongside this branch's expert_fixed_bytes; the decisions list keeps THIS branch's version, gated on supports_accelerator, because announcing a VRAM tier to a CPU-only engine writes a plan line nobody can act on. The counters are the part no branch could see alone. Both sides raised the same constant from 6 to 7, so git took the identical edit silently and the merged answer was wrong: with both families registered it is 8. test_segment_conformance.c required_families 7 -> 8 test_segment_adapters_registration.c count == 7 -> 8 test_edge_adapters_registration.c count == 7 -> 8 All seven engines build; the Python suites and the three adapter/conformance tests pass.
|
Rebased onto dev and pushed to your branch ( Unions, no judgement needed: One needed a decision. In And the three counters, which is the part neither branch could see alone: Both branches raised the same constant from 6 to 7, so git took the identical edit without flagging anything and the merged result was wrong. Verified here: all seven engines build, the Python suites pass, and Thanks for the RAM table in Next from my side is running |
The merge inserted qwen38 as fixture index 6, which deepseek_v4 already held. The conflict region covered only the five wrappers both branches touched, so the deepseek_v4 line one below it kept an index that the insertion had just invalidated, and DeepSeek V4 opened Qwen3.8's fixture: Segment conformance failed for DeepSeek V4: cannot open fixture segment engine deepseek_v4 is the eighth entry in g_fixtures and g_adapters, so its index is 7. All eight families now pass. Caught by macOS CI rather than by me: my local check piped the test into tail, so the pipeline reported tail's exit status and the failing run looked like a pass on its last printed line.
One conflict, in tools/clean.py, and it is a union: this branch added qwen36 and qwen38 to FILES, dev added qwen36 and glm53 with the comment explaining why the list matters. All three engines are now listed. Adding qwen36 there is what made the ASan step build a sanitized binary for the first time, which surfaced two pre-existing defects in qwen36 -- a dangling Model pointer held by the detached PILOT worker, and a heap overflow in load_meta on a container whose two config files disagree. Both are fixed on dev (JustVugg#1277), so this branch is no longer red for them. Verified here on the merged tree: qwen36 token-exact under ASan with the sanitizer genuinely instrumented (31 __asan symbols), the malformed container refused with the [cfg] message instead of overflowing, and all five engines build.
|
Merging. Seventh family in the engine. I re-checked this more carefully than a docs-clean PR would need, because the risk here is not
The leaks were the part I wanted to be sure about, because the old comment said the jval tree was left in memory on purpose, and freeing it would dangle every retained pointer into it. Checked both sites: The strongest evidence is not the reading. GLM-5.3 stays token-exact from your branch, text and multimodal, logits within 4.77e-07 and 7e-07. It is the engine that leans hardest on Everything else: all eight engines build, qwen36 token-exact at caps 1/8/16, qwen38 token-exact across all eight On that last point, worth stating since it started as your PR being red: adding Thanks for the RAM table, for the pinned checkpoint revision, and for the ASan/UBSan gate in CI β that last one is now the reason this engine is better covered than some of the older ones. Two follow-ups I would like to open next, neither blocking: tool calling (the gateway already has the shared parser, so it is the template plus a pinned template test), and vision, since the checkpoint is multimodal and the engine already accepts the |
Summary
Qwen3.8-Flash-Next joins the flock π¦
The base text engine is implemented and validated, with a few more optimizations still to squeeze out before this leaves draft.
Validation
CPU-only for now
Tracks #1242.