Repository navigation
Conversation
|
@ashhart Final-head device and checkpoint receipts for https://gist.github.com/yguanrong/cd89ee85d655093ef37e22a36a13253b
The exact-head repeat has now started under the already published frozen base1/new1/new2/base2 method, with separate output artifacts, unchanged workload/thresholds and no parallel compilation. The predecessor's strict21/24 failure remains unchanged. The PR stays draft and the performance checklist remains unchecked until the complete repeat and your interpretation are available. |
|
Thanks @yguanrong. This covers everything we asked on #2319. The refusals now include DSpine, On speed, the gate is settled. Your exact-head receipt shows all 116 embedded fatbins are byte-identical to main's, and the change runs once at open. So both sides decode with the same kernels, and the 0.1-0.8% drafted-chat misses are noise. You don't need the timed repeat you've started. The full kernel-contract run wasn't needed either: the template asks for Two small edits, then it's ready:
Then mark it ready for review. Before landing we'll check on a GB10 that the default Qwen path starts and decodes as on main. On #2809: keep your order. That PR is ours, and we'll fit its checks around yours when it rebases. One note, not a blocker: EXL3 checkpoints (
|
|
@ashhart The exact final-head quiet four-phase repeat is complete. Full24-row table,896 per-request decode receipts,32cold receipts,clock summaries and rerunnable analyzer: https://gist.github.com/yguanrong/15f1aab59a7798abfb458dd484b4aec9 Base The independently frozen zero-tolerance decode rule is 20/24, not passed; analyzer exit1. Four rows fail in new2 relative to min(base1,base2): chat greedy width1 plain -0.1895%; chat sampled width1 plain -0.0074%; chat sampled width4 drafted -1.5644%; code sampled width1 plain -0.2537%. The earlier006566740d21/24result remains unchanged at the previous evidence link. The failed-cell set differs between the rounds; I am not claiming that proves noise. Cold first TTFT2k:3.559389/3.545296/3.545845/3.551591s;8k:14.483654/14.480751/14.491142/14.476264s. Cached tokens0. new2 at8k is slower than both bases, so no blanket prompt-speed pass. All phase GPC/memory medians1.386/4.266GHz, all frequency samples nonzero. Device peak bytes23,846,883,104/23,855,552,288/23,846,883,104/23,855,552,288. Final-head complete device/checkpoint and literal embedded-fatbin identity receipts are already in the description and previous comment. This startup-only change has no kernel or per-request changes. Both rounds are now posted for your assessment under your stated startup-only/equal-token/embedded-fatbin gate. The PR remains draft, strict performance checkbox unchecked; no waiver or pass is implied. |
|
Thanks @yguanrong, and for the care in the repeat. For this change, the four rows that miss your zero-tolerance rule (at most 0.19%, mixed in sign across phases) are run-to-run noise. The change runs once at server start, its fatbins are byte-identical to main's, and nothing on the request path differs. The 8K cold TTFT spread is under 0.1% too. No further timing is needed. Two small edits from our last note are still open on
Once those are in, we'll run a short start-and-serve check on a GB10 and land it.
|
818102d to
6182325
Compare
What this changes
Qwen CUDA development builds on SM110 refuse unqualified serving opt-ins by name before paging, sharing or weight loading. Existing BF16 and DFlash2 paths keep their kernels, arithmetic and lane scheduling.
Issue: Refs CUDA: qualify Jetson AGX Thor (sm_110) for native Qwen3.8-27B MLX 4-bit and DFlash2 #2319. This is Qwen development-target admission; product targeting and packaging remain separate.
Stacked on: rebased onto
a9f3f959d75fcc32e6d1ed5c049dd54e72db91f9; currentmainisd001c28f296a0b886876afa158dd8d9151da03c4. A read-only merge-tree against currentmainis clean and GitHub reportsMERGEABLE. No parent PR.atc overlap --json: Final audit on 2026-11-13 against the pinned main: 324/324 current open PR heads and 27/27 other local worktrees, zero unknown, zero added conflict files and zero added conflict blocks in candidate-touched files versus main. One transient object-write error cleared on serial retry. Native ATC still fails withunexpected errorafter an extended deadline (earlier otherPullRequestsLimit/pullFilesLimit); a fresh rebase-head attempt on 2026-11-14 again returnedunexpected error, so this supplemental audit is not labeled a complete native ATC result. Windows: source-build the 5090 preview as tensorfold.exe #2809 now has the same five conflict files and 12 blocks as main, including one block incuda_native.zig; the additional startup block is removed. The guard follows the existing captured-kernel and slide-format refusals and precedes paging/sharing.Rebase scope: all 11 commits were replayed.
git range-diffshows commits 4-10 exactly equal; commits 1-3 changed onlyCHANGELOG.mdconflict context, and the final docs commit moved(#3057)to the currentUnreleased. The final diff still touches the same 11 files.git diff --checkand the conflict-marker scan pass.Checks
6182325c48830b5954f3c75c0daa4d3f29969cdd, verified on the remote branch. The rebased functional source commit is609b309d7788a8b94fa6b9c676eb62ecb49d97b5;git range-diffshows it is exactly equivalent to the historically measured4bde3c04de85434729263ec1d412fd8708beb9f8. The final commit changes onlyCHANGELOG.mdanddocs/recipes/qwen3.8-27b.md. Device receipts below remain tied to the historical original-base binary and are not relabeled as exact receipts for the rebased merged tree.python tools/pr_check.py --base upstream/main --pr 3057: 0 errors, 0 warnings; lean 341 vs 341, 0 new.zig build test-qwen35-sm110-host test-qwen35-request-starts-host test-qwen35-draft-config-host -j2 --summary all: 11/11 steps, 59/59 tests, exit 0. Linux ARM64zig build native test-qwen35-sm110-host test-qwen35-request-starts-host test-qwen35-draft-config-host -Dnvcc=/usr/local/cuda/bin/nvcc -Dsm=110 -j2 --summary all: 135/135 steps, 59/59 tests, exit 0. Negative control on the measured functional head4bde3c04de85434729263ec1d412fd8708beb9f8with the guards disabled: 18/20 tests, two expected startup failures, exit 1; restored source passes.git diff --checkpasses. Full-treezig fmt --check build.zig zigfindscuda.zigandcuda_native_explain.zig; both also fail the same check on base. Focused new/modified guard files andcuda_native.zigpass formatting.zigwas cancelled at 1h0m17s by the repository's 60-minute job timeout: https://github.com/ashhart/TensorFold/actions/runs/43532254037 . Within that job,zig build test-hostandzig build test-kernel-contractboth succeeded;zig build test-goldenreported322/335 equal to server goldens, 0 unexpected differencesbefore the runner cancelled it, and five later steps were skipped. The cancellation is not recorded as a pass. A failed-job rerun was requested withgh run rerun --failed, but GitHub refused it because this account has no repository admin rights. Historical context: all eight applicable checks passed on the prior docs-only tip818102d657431a8761d40f4d431d81d4f7628b68in https://github.com/ashhart/TensorFold/actions/runs/43350914812 .cuda.stagerfailure isevery byte lands where the mapping would have put it, for any copies and read limit, atzig/src/families/drama3/cuda/stager.zig:294,expectEqualSlices(u8, want, got), with the build tree on ext4. This is tracked separately from the Qwen admission change. Metal, HIP, XPU and other CUDA targets were not device-tested because those devices are unavailable.Historical receipt (pre-rebase)
4bde3c04deagainst the same main: complete base1/new1/new2/base2, 20/24 strict decode rows; not passed, analyzer exit 1; drafted/plain 12/12 pairs in both candidates; 896 decode and 32 cold requests, zero token differences. Four failed rows are new2 chat greedy width1 plain -0.1895%, chat sampled width1 plain -0.0074%, chat sampled width4 drafted -1.5644%, code sampled width1 plain -0.2537%. Deltas usemin(base1,base2), no tolerance. The failed-cell set differs from the prior round; this does not by itself prove noise. The maintainer subsequently reviewed both rounds together with the token equality, startup scope and embedded fatbin identity evidence and determined the misses are run-to-run noise; the raw strict result remains recorded unchanged.006566740dea1e73be59f8c38dbfc77547946763, before the final startup-order adjustment. Strict zero-tolerance decode result: 21/24 rows; not passed. Drafted/plain: 12/12 pairs in both new phases. These results are not relabeled as exact-head timings of the final commit or as noise.--slide, DSpine drafter andTF_DSPINE_WINDOW; DFlash2 remains admitted.6c5cef8941b27d86b06a986834e13deb9b515e1e, measured functional head4bde3c04de85434729263ec1d412fd8708beb9f8, documentation-only tip818102d657431a8761d40f4d431d81d4f7628b68; NVIDIA Thor SM110, Linux ARM64, Zig 0.17.0, NVCC 13 from runtime image IDsha256:62e412469ae102e21a939d3c65dbcd38c9999162681052ebb431a259f59e9b63. TensorFold native binary built from source and mounted read-only over that runtime image. TensorFold/Qwen3.8-27B-MLX-4bit and z-lab/Qwen3.8-27B-DFlash2 contents pinned by SHA256 manifest in the public JSON; no model files added. Final native SHA256d17f9e74f52c2c6ded8c675d1e5fe066065e4456de09c27c43490aca8ce62b3a; measured predecessor native SHA2568085ecd9aacd33297522ab3f1b624ae03cb6ac8271f2cc40a2ee21650dbc7673; main native SHA25631c939181d03adf412fa2c2648f6cf66afea25a0515ee19ef82b6117cadc9333.tools/bench_concurrent.py --alone --serialortoken_shaagainst"draft": false: measured predecessor has zero mismatches across 896 decode requests and 32 cold requests. Its full conformance is 6 pass, 0 fail, 1 agreed skip (evict), exit 0; drafted/plain 10/10, repeat 10/10, concurrent/solo 44/44, refusal 4/4, cancel 4/4. Separate text/PNG checks, 7424-token long prompt, vision concurrency widths 2/4 and post-cancel next request match. Final-head checkpoint verification completed: startup refusals 14/14 expected, device smoke/state/vision exit 0, and conformance 6 pass/0 fail/1 agreed skip, exit 0. Drafted/plain 10/10, repeat 10/10, concurrent/solo 44/44, resumed/fresh 6/6, refusal 4/4 and cancellation 4/4; 7424-token long prompt, image inputs, vision widths 2/4 greedy/sampled and post-cancel next requests match. Sanitized per-case receipts are in the public evidence. An exact-head four-phase repeat is frozen before timing in comparison-method-4bde3c04de.md in the public receipt; it completed after all device/correctness and corrected-limit jobs, with distinct artifacts and unchanged thresholds. The preceding 21/24 verdict is retained.Supplemental full device-contract receipts
No GPU kernel is new or changed. The measured predecessor's 114 production fatbins and 114 normalized SM110 SASS listings match main. On the final served binaries, all 116 literal fatbin blobs found embedded in both binaries are byte-identical, with no embedding-membership differences. All 148 images in the post-contract asset directories are byte-identical and all 148 normalized SM110 SASS listings match (exit 0); that larger directory set includes contract assets and is not mislabeled as 148 production images. Exact lists, hashes and embedded membership are public in
embedded-fatbins-sass-4bde3c04de.json. Base full kernel-contract completed with exit 1:SUMMARY 610 kernels: 610 pass gates 1-4, 0 fail, 8 known findings; 407 controls: 407 red as planted, 0 missed; 168 limit problems; gates 5387675 ms, limits 1125357 ms. This is not a full pass. The first standalone base limits invocation exited 127 because the verification script expected an installed runner instead of the actual cached runner; this is not a contract pass and the correction is retained separately. The predecessor full run was deliberately stopped as superseded (incomplete, not passed) so the final-head full run takes priority. Final head full kernel-contract also completed with exit 1:SUMMARY 610 kernels: 610 pass gates 1-4, 0 fail, 8 known findings; 407 controls: 407 red as planted, 0 missed; 168 limit problems; gates 5208888 ms, limits 1114689 ms. A line-for-line multiset comparison finds zero added/removed known findings and zero added/removed limit messages against the pinned base. All 168 problems are inherited missing compile-usage records; seven additional limits messages are N/A. Both full runs remain nonzero, not full passes. The sanitized complete summaries and finding comparison are public asdevice-contract-comparison-4bde3c04de.jsonin the receipt. Final-head standalonekernel-contract-limitscompleted with exit 0: every registered launch fits SM110 from compiled cubins, both controls red. This distinct SM110 cubin audit does not erase the full-run release-record findings. The corrected base standalone invocation also completed with exit 0: 942 passing launch records and two red controls on each side; all messages are identical. The first queued checkpoint driver exited 1 before testing because its shell lacked the required sudo environment; this invocation failure is retained and a corrected retry is queued after base limits. The corrected checkpoint retry completed with exit 0 and the receipts above. Exact-head timing completed as reported above: the raw analyzer remains 20/24 with zero token differences, and the maintainer reviewed that startup-only, fatbin-identical change and settled the performance gate.Checklist
"draft": false, a resumed prompt equals a fresh one, and concurrent equals solo.--drafter, no slower than without it, greedy and sampled. The raw strict receipt remains 20/24 above; the maintainer reviewed the change that runs only at startup, retains equal tokens and has byte-identical embedded fatbins and determined the misses are noise, completing this gate.The maintainer reviewed the final performance round and explicitly settled the gate on 2026-11-12, then requested the two documentation corrections now applied in
6182325c48. This source revision is ready for the maintainer’s GB10 default Qwen start-and-serve check; the only remaining automated item is a rerun of the Linuxzigjob that the hosted runner cancelled at its timeout.