Repository navigation
[Docs] Cross-weight check: it runs on Q2_0 — the profile was the wrong shape (48×256 vs 48×512) - #20
Merged
Conversation
…g shape The Q2_0 arm could not start, and the reason was not the pack: the config pointed --expert-profile at data/expert-profile-mine.bin, which is 48x256, the profile of the PRUNED coder model (GSQ-RCO Coder keeps 256 of 512 experts). The Q2_0 pack declares 48x512 and the tree already ships data/expert-profile.bin at 48x512. Pointed at that, Q2_0 served with no calibration at all. tokens Q2_0 read Q2_0 refill slots per slot IQ1_M read IQ1_M refill 128 1075 ms 75.2 ms 313 0.240 252 ms 71.7 ms 458 1556 ms 81.6 ms 365 0.224 432 ms 82.6 ms 1610 2055 ms 160.9 ms 726 0.222 1245 ms 188.2 ms So the mechanism reproduces on different weights - same phase, same position between read and prompt done, same scaling with lent slots, a different rate (0.22-0.26 against 0.319 ms/slot) as different expert payloads should give. The magnitudes are NOT comparable and are not used: Q2_0 is the unpruned 512-expert model with 19,208 of 24,576 slots resident and 6,761 experts mirrored in 8.70 GiB of pinned host memory, and its dense shard sits on the cold disk. Calibrating Q2_0 from its own traces is blocked three ways, all logged: serve + --dump-routing writes a 0-byte file (SYCL device path does not write it), serve + STRATA_USAGE_DUMP writes nothing, and the one-shot collector dies on "--spec needs the device residency table" - and where it did prefill, 37 tokens took 80.3 s at 0.5 tok/s. Corrects the previous claim that the cross-weight check was blocked.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and result
You asked me to calibrate Q2_0. Attempting it turned up the actual bug, which is better than the calibration: the Q2_0
arm could not start because
--expert-profilepointed atdata/expert-profile-mine.bin— 48×256, the profile of thepruned coder model (GSQ-RCO Coder keeps 256 of 512 experts). The Q2_0 pack declares 48×512, and the tree already
ships
data/expert-profile.binat exactly that shape. With it, Q2_0 served with no calibration at all.The mechanism reproduces on different weights — same phase, same position between the read and
prompt done, samescaling with lent slots, at 0.22–0.26 ms/slot against IQ1_M's 0.319. The magnitudes are not comparable and are not used:
Q2_0 is the unpruned 512-expert model (19,208 of 24,576 slots resident, 6,761 experts mirrored in 8.70 GiB of pinned host
memory) and its dense shard sits on the cold disk.
Calibration itself is blocked, three ways, each logged: serve +
--dump-routingwrites a 0-byte file on the SYCLdevice path; serve +
STRATA_USAGE_DUMPwrites nothing; the documented one-shot collector dies with--spec needs the device residency table, and where it did prefill, 37 tokens took 80.3 s at 0.5 tok/s.This also corrects the claim I published yesterday that the cross-weight check was blocked. It was not; the profile
shape was wrong.
Related discussion
conv_route_batch_after)Approach
--native→ wrong profileshape), instead of treating the first one as the answer.
tools/make_profile.py's docstring, which names the pruned variant (--n-expert 256), and compared the twoprofiles' headers: 48×256 against 48×512.
--dump-routing, serveSTRATA_USAGE_DUMP, the one-shot collector)and recorded each outcome rather than reporting only the failures that were easy to explain.
Validation
Passed:
/v1/statusanswered 0.1.59, 12 ladder samples, and the engine log showsprofile … 24576 ranked pairs, built for 24576 slots— the shape matches.per-slot rate consistent within itself (0.222–0.240).
trace/q2_0/: 12 and 13 prompts served with no output file, and thecollector's
rc 2with the 80.3 s prefill line.:8095returned a completion andloaded: trueafterwards — the
loaded: falseI first saw is the idle state after a restart, not a fault.Failed:
--ple-ggufdoubled as the native shard's sibling on the first attempt (duplicate split shard number); theworking config lets the engine resolve the sibling instead.
Not run:
Limits
for a magnitude.