Match Qwen head-chunked attention execution
This commit is contained in:
1 parent
7b894fbfee
commit
d9026aa7bf
70 files changed
+4979
-10
No files matched your search
@@ -0,0 +1,123 @@
|
|||||||
|
# Qwen head-chunked SDPA (#113)
|
||||||
|
|
||||||
|
The dense Qwen attention consumer now follows pinned MTPLX `_verify_sdpa`:
|
||||||
|
when enabled (default) and `rows * GQA > 32` with `rows <= 32`, split query
|
||||||
|
heads inside each KV group into `min(GQA, 32 / rows)` heads, preserve remainder
|
||||||
|
heads, call the existing SDPA primitive with that group's K/V, then concatenate
|
||||||
|
in original head order. The first engagement is logged. Explicit false/off/no/0
|
||||||
|
keeps the prior consumer. Policy is resolved through the existing Qwen lookup;
|
||||||
|
no process environment mutation or shared-family SDPA change was introduced.
|
||||||
|
|
||||||
|
Oracle: MTPLX `9882703f3105363ddc37eca9f97aa09a1d387112` / MLX 0.32.2.
|
||||||
|
Artifact: Bare-Speed `74559cdf34fbfc0b593de72d17e93f37fd4f9ea7`; environment
|
||||||
|
and artifact fingerprints in ../issue104-ar/environment.json. Pre-port native
|
||||||
|
commit: `7b894fbfeed81d2944b9cf479e60638ef04987c7`.
|
||||||
|
|
||||||
|
## Exact scope found during review
|
||||||
|
|
||||||
|
The wrapper's name does not restrict it to verification. It is the final dense
|
||||||
|
consumer after sparse/gather branches in `Attention.__call__`, in any phase.
|
||||||
|
Thus short prefills also use it. Existing sparse selections, gathered consumers,
|
||||||
|
gates, projection order, RoPE and cache offsets are unchanged.
|
||||||
|
|
||||||
|
The pinned `_sdpa_head_chunked` passes `mask` **unchanged** to each subcall. It
|
||||||
|
does not slice a full-query-head mask. Broadcast-compatible masks work; a mask
|
||||||
|
whose head dimension cannot broadcast to a chunk is rejected. The fixtures
|
||||||
|
preserve these errors as well as valid head-specific masks. This resolves the
|
||||||
|
issue body's tentative mask-slicing wording against the actual pinned source.
|
||||||
|
|
||||||
|
For installed head dimension 256, MLX 0.32.2 uses the vector primitive only
|
||||||
|
through eight query rows. The wrapper still splits heads for eligible rows
|
||||||
|
9–32, and those subcalls retain the existing fallback primitive. The port does
|
||||||
|
not force a vector route merely because the wrapper docstring describes it.
|
||||||
|
Wide rows above 32 pass through unchanged.
|
||||||
|
|
||||||
|
## Cache compatibility
|
||||||
|
|
||||||
|
Checkpoint identity now records the head-chunk policy. Missing metadata means
|
||||||
|
the actual old unchunked route. A policy difference rejects all MTP states and
|
||||||
|
AR states with four or more tokens, before reading or allocating tensor blobs.
|
||||||
|
MTP can retain a short frontier from a wider verify window; an AR prefix of at
|
||||||
|
most three tokens cannot have executed a three-row prefill body and remains
|
||||||
|
restorable. Existing format and unrelated identity checks remain intact. Policy
|
||||||
|
changes in both directions are covered, including current/legacy metadata.
|
||||||
|
|
||||||
|
The product test rejects an actual pre-port checkpoint produced during #109,
|
||||||
|
without changing the live session, then saves/reopens corrected state and
|
||||||
|
compares the complete warm frontier. The explicit-off control restores that
|
||||||
|
same actual old file exactly. Fake tiny checkpoint fixtures additionally cover
|
||||||
|
AR/MTP × 1/3/4-token frontiers × both producing/consuming policies and missing
|
||||||
|
metadata; affected files stop after header/manifest reads.
|
||||||
|
|
||||||
|
## Isolated oracle evidence
|
||||||
|
|
||||||
|
- 520 independent plan cases cover boundary/invalid head counts and rows.
|
||||||
|
- 216 installed-dimension attention cases include single/grouped/ungrouped
|
||||||
|
heads, remainder heads, batch two, offset/strided Q/K/V, no/bool/additive/
|
||||||
|
two-dimensional/full-head/chunk-local masks, default on and explicit off,
|
||||||
|
short KV, and contexts through 4097 tokens. All 159 successful outputs match
|
||||||
|
raw BF16 bits and all 57 invalid cases match oracle rejection. Native graph
|
||||||
|
subcall shapes, fused primitive counts, vector dispatches and fallback
|
||||||
|
softmax counts match the independently captured oracle route.
|
||||||
|
- The exact reported request (`Count from one to ten.`, low reasoning, seed 1,
|
||||||
|
greedy, depth 3, max 12, context-copy disabled) is checked cold, warm and after
|
||||||
|
disk reopen. Default and off controls have separate native/reference runs.
|
||||||
|
Every verify input row, output logit/hidden byte, emitted token, final array
|
||||||
|
and saved trunk/MTP cache bit is compared; no zero-sign or numeric tolerance
|
||||||
|
exception is allowed in this issue's oracle tool.
|
||||||
|
|
||||||
|
Comparisons use the same snapshot stage as the server: lazy hybrid trunk and
|
||||||
|
cloned MTP head. Taking an extra deep clone while measuring a lazy key array
|
||||||
|
would add zero and change signed-zero bits. Warm suffix prefill's final hidden
|
||||||
|
row is compared after the same final-row selection used by the upstream owner
|
||||||
|
(`generation.py::_prefill_restored_prompt_suffix`), not against its unsliced
|
||||||
|
multi-row intermediate. Verify-row arrays themselves are compared in full.
|
||||||
|
|
||||||
|
## Reproduction
|
||||||
|
|
||||||
|
Generate the independent fixture using isolated MLX 0.32.2 Python:
|
||||||
|
`tools/issue113-reference.py PINNED_CHECKOUT tests/fixtures/mtplx-head-chunk.json`.
|
||||||
|
Build the release test executable with `cargo test --release --all-features
|
||||||
|
--bin ds4-server issue113 --no-run`, then copy the executable outside `target`
|
||||||
|
before running it. Run `issue113_plan_and_policy_match_pinned_oracle` normally.
|
||||||
|
|
||||||
|
Run the ignored tests serially under `target/debug/test-supervisor MEMORY_MIB
|
||||||
|
60 120 --command TEST_BINARY FILTER --ignored --nocapture --test-threads=1`:
|
||||||
|
|
||||||
|
- `issue113_head_chunk_outputs_and_dispatch`: 4096 MiB.
|
||||||
|
- `qwen_checkpoint_roundtrip_and_failed_restore_preserve_live_state`: 4096 MiB,
|
||||||
|
with `DS4_QWEN38_CHECKPOINT_DIR` set to an empty output directory.
|
||||||
|
- `issue113_default_verify_and_checkpoint`: 114688 MiB, with
|
||||||
|
`DS4_QWEN38_ARTIFACTS=MODEL_DIR`, `MTPLX_CONTEXT_COPY=0`,
|
||||||
|
`DS4_ISSUE109_DIR=OUTPUT_DIRECTORY` (shared real-request harness), and
|
||||||
|
`DS4_ISSUE113_OLD=ACTUAL_PRE_PORT_CHECKPOINT`. Repeat separately with
|
||||||
|
`MTPLX_QWEN4_VERIFY_SDPA_HEAD_CHUNK=0` for the off control.
|
||||||
|
|
||||||
|
For each model run, use isolated reference Python to execute
|
||||||
|
`tools/issue113-model-reference.py PINNED_CHECKOUT MODEL_DIR NATIVE_OUTPUT
|
||||||
|
ORACLE_OUTPUT`, with the matching default/off switch. Keep child output
|
||||||
|
separate from supervisor resource logs to avoid interleaved JSON records.
|
||||||
|
|
||||||
|
## Completion review
|
||||||
|
|
||||||
|
The four-row reproduction `[760,1156,369,9859]` now takes four vector calls
|
||||||
|
(8+4 query heads for each of two KV groups). Its logits and hidden arrays differ
|
||||||
|
from the old ordinary fallback and match the default pinned oracle exactly.
|
||||||
|
Both cold and warm turns have four verify forwards and 12 emitted tokens; the
|
||||||
|
warm turn restores 58 tokens. All verify rows, prefill final-row state, final
|
||||||
|
logits/hidden, trunk arrays and MTP arrays match raw reference bits. Disk reopen
|
||||||
|
reproduces the entire warm state. The off route matches all retained #109
|
||||||
|
pre-port verify, final-logit/hidden and full cache-array evidence byte for byte.
|
||||||
|
|
||||||
|
Regression controls pass for the QSA eager selector, dense masks, tiled prefill
|
||||||
|
gather, row gather, unchunked SDPA, complete QSA modules with TF32 off/on, and
|
||||||
|
exhaustive gate/injection laws. Installed DeepSeek resident-session switching
|
||||||
|
and GLM verifier/recurrent-state controls pass. Review confirms no production
|
||||||
|
DS4/GLM code or shader changed and no shared-family helper was redirected.
|
||||||
|
This is the pinned Qwen execution route, not a DS4Server-only feature.
|
||||||
|
|
||||||
|
All commit gates pass: formatting, warning-free Clippy, signed application
|
||||||
|
bundle, and all-features tests (313 application + 8 tool tests, 236 explicitly
|
||||||
|
ignored hardware/reference tests). Relevant ignored tests ran separately under
|
||||||
|
the resource supervisor; their receipts and the complete gate outputs are
|
||||||
|
stored here. No implementation or acceptance item is stubbed or deferred.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
cargo build --release --all-targets --all-features
|
||||||
|
Compiling ds4-server v0.1.0 (/Users/gb/Projects/DS4Server)
|
||||||
|
Finished `release` profile [optimized] target(s) in 21.46s
|
||||||
|
warning: the following packages contain code that will be rejected by a future version of Rust: block v0.1.6
|
||||||
|
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
|
||||||
|
cargo packager --release --formats app
|
||||||
|
codesign --force --deep --sign - --timestamp=none target/release/DS4Server.app
|
||||||
|
target/release/DS4Server.app: replacing existing signature
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
running 1 test
|
||||||
|
test engine::metal::qwen_mtplx::session_checkpoint::qwen_checkpoint_roundtrip_and_failed_restore_preserve_live_state ... ds4: Metal device Apple M5 Max, 128.00 GiB RAM
|
||||||
|
ds4: Metal 4 tensor API enabled for Tensor kernels
|
||||||
|
ds4: drift-patch flags hc_stable=on norm_unify=on kv_raw_f32=off rope_exp2_log2=off math_safe=off tensor_matmul=on
|
||||||
|
ds4: Qwen reference kernels: Powered by MTPLX — https://github.com/youssofal/mtplx
|
||||||
|
#113 SDPA policy: legacy/current, both directions, AR/MTP, 1/3/4-token frontiers; exact compatible restore and incompatible rejection before tensor reads
|
||||||
|
Qwen sorted-gather checkpoint policy: old short state exact, possibly affected long state rejected before restore
|
||||||
|
Qwen checkpoint: exact roundtrip, cancellation/corruption controls, old MTP rejected and old AR restored
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.13s
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Checking ds4-server v0.1.0 (/Users/gb/Projects/DS4Server)
|
||||||
|
Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.49s
|
||||||
|
warning: the following packages contain code that will be rejected by a future version of Rust: block v0.1.6
|
||||||
|
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
running 1 test
|
||||||
|
test engine::metal::tests::resident_multi_session_switching_preserves_each_kv_frontier ... ds4: Metal device Apple M5 Max, 128.00 GiB RAM
|
||||||
|
ds4: Metal 4 tensor API enabled for Tensor kernels
|
||||||
|
ds4: drift-patch flags hc_stable=on norm_unify=on kv_raw_f32=off rope_exp2_log2=off math_safe=off tensor_matmul=on
|
||||||
|
ds4: Metal model views created in 1.885 ms, residency requested in 9117.538 ms, warmup 3.450 ms (mapped 82697.67 MiB from offset 5.09 MiB)
|
||||||
|
ds4: Metal mapped mmaped model as 2 overlapping shared buffers
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 9.69s
|
||||||
Whitespace-only changes.
@@ -0,0 +1,11 @@
|
|||||||
|
ds4: GLM MTP draft 5733 at position 12 in 2.3 ms
|
||||||
|
verify2 scalar boundary cap=2 cancelled=true passed
|
||||||
|
verify2 prefill 0
|
||||||
|
verify2 prefill 4
|
||||||
|
verify2 prefill 8
|
||||||
|
verify2 prefill 12
|
||||||
|
ds4: GLM MTP draft 5733 at position 12 in 2.3 ms
|
||||||
|
engine-lifetime counters across new and restored chats passed
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 11.91s
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
MTPLX canonical qsa_dense_mask_8_17_7_8_False_False: exact
|
||||||
|
MTPLX canonical qsa_dense_mask_8_17_7_8_False_True: exact
|
||||||
|
MTPLX canonical qsa_dense_mask_8_17_7_8_True_False: exact
|
||||||
|
MTPLX canonical qsa_dense_mask_8_17_7_8_True_True: exact
|
||||||
|
MTPLX canonical qsa_dense_mask_0_0_4_0_False_False: exact
|
||||||
|
MTPLX canonical qsa_dense_mask_0_0_4_0_False_True: exact
|
||||||
|
MTPLX canonical qsa_dense_mask_0_0_4_0_True_False: exact
|
||||||
|
MTPLX canonical qsa_dense_mask_0_0_4_0_True_True: exact
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.75s
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
MTPLX canonical qsa_eager_graph_float32_16_tf1: exact
|
||||||
|
MTPLX canonical qsa_eager_graph_float32_17_tf1: exact
|
||||||
|
MTPLX canonical qsa_eager_graph_float32_18_tf1: exact
|
||||||
|
MTPLX canonical qsa_eager_graph_float32_19_tf1: exact
|
||||||
|
MTPLX canonical qsa_eager_graph_float32_20_tf1: exact
|
||||||
|
MTPLX canonical qsa_eager_graph_float32_21_tf1: exact
|
||||||
|
MTPLX canonical qsa_eager_graph_float32_22_tf1: exact
|
||||||
|
MTPLX canonical qsa_eager_graph_float32_23_tf1: exact
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 1.06s
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
MTPLX canonical qsa_prefill_gather_h2_s7_p0_r1_t4_strided0: exact
|
||||||
|
MTPLX canonical qsa_prefill_gather_h2_s7_p0_r1_t4_strided1: exact
|
||||||
|
MTPLX canonical qsa_prefill_gather_h2_s7_p0_r1_t64_strided0: exact
|
||||||
|
MTPLX canonical qsa_prefill_gather_h2_s7_p0_r1_t64_strided1: exact
|
||||||
|
MTPLX canonical qsa_prefill_gather_h2_s2048_p0_r4_t64_strided0: exact
|
||||||
|
MTPLX canonical qsa_prefill_gather_h2_s2048_p0_r4_t64_strided1: exact
|
||||||
|
MTPLX canonical qsa_prefill_gather_h2_s2048_p0_r4_t2048_strided0: exact
|
||||||
|
MTPLX canonical qsa_prefill_gather_h2_s2048_p0_r4_t2048_strided1: exact
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.51s
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
MTPLX canonical qsa_rows_attention_h24_s64_t113_k17_offset: exact
|
||||||
|
MTPLX canonical qsa_rows_attention_h24_s64_t113_k17_strided: exact
|
||||||
|
MTPLX canonical qsa_rows_attention_h2_s3_t33_k8_plain: exact
|
||||||
|
MTPLX canonical qsa_rows_attention_h2_s3_t33_k8_offset: exact
|
||||||
|
MTPLX canonical qsa_rows_attention_h2_s3_t33_k8_strided: exact
|
||||||
|
MTPLX canonical qsa_rows_attention_h2_s16_t1057_k1025_plain: exact
|
||||||
|
MTPLX canonical qsa_rows_attention_h2_s16_t1057_k1025_offset: exact
|
||||||
|
MTPLX canonical qsa_rows_attention_h2_s16_t1057_k1025_strided: exact
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.25s
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
MTPLX canonical sdpa_fallback_B1_h24_r2048_t2048_bool: exact
|
||||||
|
MTPLX canonical sdpa_fallback_B1_h24_r2048_t2048_add: exact
|
||||||
|
MTPLX canonical sdpa_fallback_B2_h24_r3_t17_none: exact
|
||||||
|
MTPLX canonical sdpa_fallback_B2_h24_r3_t17_bool: exact
|
||||||
|
MTPLX canonical sdpa_fallback_B2_h24_r3_t17_add: exact
|
||||||
|
MTPLX canonical sdpa_fallback_B1_h2_r16_t33_none: exact
|
||||||
|
MTPLX canonical sdpa_fallback_B1_h2_r16_t33_bool: exact
|
||||||
|
MTPLX canonical sdpa_fallback_B1_h2_r16_t33_add: exact
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.74s
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"trunk":[[{"shape":[1,3,10240],"sha256":"1dadce7f74c7b48ad423170b8884bf5024c3d6dd91b2f9d800afca7d32679d7b","value_sha256":"1dadce7f74c7b48ad423170b8884bf5024c3d6dd91b2f9d800afca7d32679d7b"},{"shape":[1,48,128,128],"sha256":"d7436faf9d50e278f7fa095e9c217467020a6f534a48195775c212caa0ece52d","value_sha256":"d7436faf9d50e278f7fa095e9c217467020a6f534a48195775c212caa0ece52d"}],[{"shape":[1,3,10240],"sha256":"ca1b3cf93598b62575f01aea05ff0d0f087c00fdf1b63654626ef5ec3487715a","value_sha256":"ca1b3cf93598b62575f01aea05ff0d0f087c00fdf1b63654626ef5ec3487715a"},{"shape":[1,48,128,128],"sha256":"f1364bb8165b9189279b7769e4081f213c562f4e0541acc5962cf2ae9f42a831","value_sha256":"f1364bb8165b9189279b7769e4081f213c562f4e0541acc5962cf2ae9f42a831"},{"shape":[1,9,10240],"sha256":"c9110c820fc39f8c19c770594c15e0997693015090a3c7af4b6c8ec9a31ebc4e","value_sha256":"c9110c820fc39f8c19c770594c15e0997693015090a3c7af4b6c8ec9a31ebc4e"},{"shape":[1,2],"sha256":"9febaa06152dac026dba5f2c1151c11ff6a1b2f00e92278cdfd2905c87cf2c2f","value_sha256":"9febaa06152dac026dba5f2c1151c11ff6a1b2f00e92278cdfd2905c87cf2c2f"}],[{"shape":[1,3,10240],"sha256":"320fdcf9c7ab899133952e093d1f3de613ba5581b3aaad45c4ad7b1b4e43f1f3","value_sha256":"320fdcf9c7ab899133952e093d1f3de613ba5581b3aaad45c4ad7b1b4e43f1f3"},{"shape":[1,48,128,128],"sha256":"8cae4ba20fd0e54f8da130e5f8681ece7c54672b7a6404800cded8e64a977e08","value_sha256":"8cae4ba20fd0e54f8da130e5f8681ece7c54672b7a6404800cded8e64a977e08"}],[{"shape":[1,2,58,256],"sha256":"404510256f371f0bc2e7b8af2d1f7eb2ae0322d42eb9a0ee5827a9a5c8d489c0","value_sha256":"404510256f371f0bc2e7b8af2d1f7eb2ae0322d42eb9a0ee5827a9a5c8d489c0"},{"shape":[1,2,58,256],"sha256":"f14afc7fe1c5e4c62c84121e804e14aa484db378861904d4e234ffeef10252ef","value_sha256":"f14afc7fe1c5e4c62c84121e804e14aa484db378861904d4e234ffeef10252ef"},{"shape":[1,58,128],"sha256":"ca2d0b2f09e87fab8d0a6aede7073ec53bc37b584851f0342c76244f05ca3e12","value_sha256":"ca2d0b2f09e87fab8d0a6aede7073ec53bc37b584851f0342c76244f05ca3e12"},{"shape":[1,14,128],"sha256":"a609a4f52c9b3dc0fb5d6554019786bebecdad220bf5ae6b40d4939821f12c8b","value_sha256":"a609a4f52c9b3dc0fb5d6554019786bebecdad220bf5ae6b40d4939821f12c8b"}],[{"shape":[1,3,10240],"sha256":"0c5bdce8d9cbd2a24162139582f1889f0413632feafdba4e79cdd88353e6abc2","value_sha256":"0c5bdce8d9cbd2a24162139582f1889f0413632feafdba4e79cdd88353e6abc2"},{"shape":[1,48,128,128],"sha256":"d47c0c965fb6c41a7e1824144ef61546a7e40ead8d8606822173e21a17a4fc0f","value_sha256":"d47c0c965fb6c41a7e1824144ef61546a7e40ead8d8606822173e21a17a4fc0f"}],[{"shape":[1,3,10240],"sha256":"66014c1bce9cbbd223ec6af2f5517de66f71ce443721088167dad0c0186289fb","value_sha256":"66014c1bce9cbbd223ec6af2f5517de66f71ce443721088167dad0c0186289fb"},{"shape":[1,48,128,128],"sha256":"2593987c9ca9aeb30910e7eb69f8d6bd61c1e035861915cbe27b0838e26f3098","value_sha256":"2593987c9ca9aeb30910e7eb69f8d6bd61c1e035861915cbe27b0838e26f3098"}],[{"shape":[1,3,10240],"sha256":"45a3dbbf3dc7a79b7db631fe4c2802d6e1f4433f4b03e961df072147e8c242a2","value_sha256":"45a3dbbf3dc7a79b7db631fe4c2802d6e1f4433f4b03e961df072147e8c242a2"},{"shape":[1,48,128,128],"sha256":"e266e3456f01268de8868258a750ee18c5f8b1ff4391f647aec60a39d56f98a0","value_sha256":"e266e3456f01268de8868258a750ee18c5f8b1ff4391f647aec60a39d56f98a0"}],[{"shape":[1,2,58,256],"sha256":"ba60b2860a5717f46a4a7ffef0257799f96acb37de1a00ba88ddfc149bf44ca2","value_sha256":"ba60b2860a5717f46a4a7ffef0257799f96acb37de1a00ba88ddfc149bf44ca2"},{"shape":[1,2,58,256],"sha256":"57d040a722a1427e9b0744ee652aecca9ec30cc7b617e3db9534e772d79f42e4","value_sha256":"57d040a722a1427e9b0744ee652aecca9ec30cc7b617e3db9534e772d79f42e4"},{"shape":[1,58,128],"sha256":"84d339a2f8558893f3d73e751d5ee3d81bb1f3b1184c0b35555bf5456fdc5a22","value_sha256":"84d339a2f8558893f3d73e751d5ee3d81bb1f3b1184c0b35555bf5456fdc5a22"},{"shape":[1,14,128],"sha256":"a5378133f448c4b6380dc4711420d3b069dd8491ffc797fd16e023294405b707","value_sha256":"a5378133f448c4b6380dc4711420d3b069dd8491ffc797fd16e023294405b707"}],[{"shape":[1,3,10240],"sha256":"e6d4afab81c6a58f08c8d252991e91d25d2d60e497c3fc00614451edd0ea908c","value_sha256":"e6d4afab81c6a58f08c8d252991e91d25d2d60e497c3fc00614451edd0ea908c"},{"shape":[1,48,128,128],"sha256":"f94349b9898b0d1a5770f4aca791d4c114abad341641688012de2e2fcaa6237c","value_sha256":"f94349b9898b0d1a5770f4aca791d4c114abad341641688012de2e2fcaa6237c"}],[{"shape":[1,3,10240],"sha256":"54d2e63c68f9fc1412178f3f21bcf5897ab228967e01f709ed9d5ba0e6d0c016","value_sha256":"54d2e63c68f9fc1412178f3f21bcf5897ab228967e01f709ed9d5ba0e6d0c016"},{"shape":[1,48,128,128],"sha256":"868155f0fd6a62a46decb4f87c3e2f27310f9da38796fe0a8d926844248c7259","value_sha256":"868155f0fd6a62a46decb4f87c3e2f27310f9da38796fe0a8d926844248c7259"}],[{"shape":[1,3,10240],"sha256":"0073cc8754020915aedaad03803669a61281e18cb2dd389cb19ef7b5ed769b84","value_sha256":"0073cc8754020915aedaad03803669a61281e18cb2dd389cb19ef7b5ed769b84"},{"shape":[1,48,128,128],"sha256":"abd539c013e58f489c23c48dfc168be7a9e2145deee859432cb83d0dLine truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"case":"cold","prompt":[248045,8678,198,24342,286,4879,369,716,310,3238,13,13262,678,7047,9522,321,10419,11,6992,5774,310,279,16198,1973,24366,24150,362,13,248046,198,248045,846,198,2427,494,799,310,5600,13,248046,198,248045,74455,198,248068,198],"tokens":[760,1156,6587,728,310,1698,494,799,310,5600,13,1061],"cached":0,"state_sha256":"eb61c20e4a89bb55c0284d86587966af49d6c601e5421b50eff0762ecf6842b1"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":0,"ids":[760,1156,369,9859],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"16ff543d6e28cdbe7dbd56891e061ddd4b04291a9ca25bdf1f4437b4e3c5528d"},"hidden":{"shape":[1,4,10240],"sha256":"b9cc3aa8c913e508793b7486f77a10e7acd4698436060b1b6bf8abfbd59edee6"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":1,"ids":[6587,728,310,1698],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"24e58b3561aac59d52bf55183bc9b911432481e9613a5b98f1442945bfd6903a"},"hidden":{"shape":[1,4,10240],"sha256":"eddb5de99ea61034c3f0eb46ef1a515cae10c92333d069afce68cc4a5e5f9e3e"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":2,"ids":[494,799,310,5600],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"f5f2c33a36fce4088f222ec7448389865dd74ea4c017e4e2e49f157693a33d64"},"hidden":{"shape":[1,4,10240],"sha256":"330d68ed62e77a12e38fe7677ffd2b9548f655c7d33e6e1607e431d1b8957e86"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":3,"ids":[13,1061],"verify":true,"logits":{"shape":[1,2,248320],"sha256":"f44498bbf6e6e9d8d909c0e4db24b5ef9bda5866b4a6a14e188865432538643c"},"hidden":{"shape":[1,2,10240],"sha256":"dec8b787a562878d091c854235120732e98f5781751b6d6a428e5cd02228deb0"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"trunk":[[{"shape":[1,3,10240],"sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84","value_sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84"},{"shape":[1,48,128,128],"sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf","value_sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf"}],[{"shape":[1,3,10240],"sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232","value_sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232"},{"shape":[1,48,128,128],"sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf","value_sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf"},{"shape":[1,9,10240],"sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08","value_sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08"},{"shape":[1,2],"sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152","value_sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152"}],[{"shape":[1,3,10240],"sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2","value_sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2"},{"shape":[1,48,128,128],"sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34","value_sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34"}],[{"shape":[1,2,88,256],"sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f","value_sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f"},{"shape":[1,2,88,256],"sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24","value_sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24"},{"shape":[1,88,128],"sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748","value_sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748"},{"shape":[1,22,128],"sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a","value_sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a"}],[{"shape":[1,3,10240],"sha256":"431c351776e8973a28d2206fee9c9262c74df879b561ecb28fdf53f1c6941dda","value_sha256":"431c351776e8973a28d2206fee9c9262c74df879b561ecb28fdf53f1c6941dda"},{"shape":[1,48,128,128],"sha256":"c8d64ecbf9dab273a4be2d0b7b00b4fccbb59d25d99ef47ba26a3488dc1ba28f","value_sha256":"c8d64ecbf9dab273a4be2d0b7b00b4fccbb59d25d99ef47ba26a3488dc1ba28f"}],[{"shape":[1,3,10240],"sha256":"f4ce935821cd12c5981db92dc849ca6fb25d845a8b38f0ca2ac7f98afa99666a","value_sha256":"f4ce935821cd12c5981db92dc849ca6fb25d845a8b38f0ca2ac7f98afa99666a"},{"shape":[1,48,128,128],"sha256":"8093f937ad983da7c65154990a2a163c7ab09d7e776c7d2b84a8310469433d6f","value_sha256":"8093f937ad983da7c65154990a2a163c7ab09d7e776c7d2b84a8310469433d6f"}],[{"shape":[1,3,10240],"sha256":"3c1051a65bbd484bd5bc7ff79919bbb0f8b99f899215efc47ad415541c4ccc7d","value_sha256":"3c1051a65bbd484bd5bc7ff79919bbb0f8b99f899215efc47ad415541c4ccc7d"},{"shape":[1,48,128,128],"sha256":"bcbf58854152187ff9556062117970701ac56898d9af860d2b9b3840eaf84b1f","value_sha256":"bcbf58854152187ff9556062117970701ac56898d9af860d2b9b3840eaf84b1f"}],[{"shape":[1,2,88,256],"sha256":"9e6bc46ee9a8170bf6bfe9a0cd592543b15d24225ba39e71bddb4aeef947555b","value_sha256":"9e6bc46ee9a8170bf6bfe9a0cd592543b15d24225ba39e71bddb4aeef947555b"},{"shape":[1,2,88,256],"sha256":"b84ee35f5c3e0ac8181df0ae66e2278a03db0783c0ea83e4bbabc21bdf47f7ba","value_sha256":"b84ee35f5c3e0ac8181df0ae66e2278a03db0783c0ea83e4bbabc21bdf47f7ba"},{"shape":[1,88,128],"sha256":"491cccffe6e1c810e6ce8d32fe160005762d1964da055d58746febef7000f5ae","value_sha256":"491cccffe6e1c810e6ce8d32fe160005762d1964da055d58746febef7000f5ae"},{"shape":[1,22,128],"sha256":"104bbc74bbb75851ad6a7466e2f2e1a1421a9c93fc0d62aaaf37aa60e2a1dcdb","value_sha256":"104bbc74bbb75851ad6a7466e2f2e1a1421a9c93fc0d62aaaf37aa60e2a1dcdb"}],[{"shape":[1,3,10240],"sha256":"e87be44991fddef0510651dc23006f2a056a56cf0a61a5f8b38daa34be0c8b57","value_sha256":"e87be44991fddef0510651dc23006f2a056a56cf0a61a5f8b38daa34be0c8b57"},{"shape":[1,48,128,128],"sha256":"0645fe9e0d09d4d55d3919d729ea1340b4ade128dec572010ebb07a5de306f43","value_sha256":"0645fe9e0d09d4d55d3919d729ea1340b4ade128dec572010ebb07a5de306f43"}],[{"shape":[1,3,10240],"sha256":"f2904788ae98c816e237db5ecc398c269205f38acb680a17e7d00b53289400d0","value_sha256":"f2904788ae98c816e237db5ecc398c269205f38acb680a17e7d00b53289400d0"},{"shape":[1,48,128,128],"sha256":"75f9e87f1c559b714f5d07911976152045b4b283c50d49794c68cdc66a3cea52","value_sha256":"75f9e87f1c559b714f5d07911976152045b4b283c50d49794c68cdc66a3cea52"}],[{"shape":[1,3,10240],"sha256":"c23b7e524522714aaf620c9e0bbb6b1d3db3585971f0cffafd7fe7e2018176dc","value_sha256":"c23b7e524522714aaf620c9e0bbb6b1d3db3585971f0cffafd7fe7e2018176dc"},{"shape":[1,48,128,128],"sha256":"4ce5d0905ec5e5ae834215c16b25d810a5ef6e54a6d7d96f95e47720Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"case":"reopened","prompt":[248045,8678,198,24342,286,4879,369,716,310,3238,13,13262,678,7047,9522,321,10419,11,6992,5774,310,279,16198,1973,24366,24150,362,13,248046,198,248045,846,198,2427,494,799,310,5600,13,248046,198,248045,74455,198,248068,198,760,1156,6587,728,310,1698,494,799,310,5600,13,1061,198,248069,271,248046,198,248045,846,198,22791,24217,13,248046,198,248045,74455,198,248068,198],"tokens":[760,1156,6587,728,310,2962,24217,13,353,8334,29014,494],"cached":58,"state_sha256":"e6cb7355aaa92a3569a365c94c55aa7a50bd731dc04f6fa320da8520d182e2f8"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":0,"ids":[760,1156,6587,728],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"dbab0d12f25f2be2234d58d45f86219af62deb20e22b0d73a77aa5e7b722d082"},"hidden":{"shape":[1,4,10240],"sha256":"8f9aebc38d1a3e550bed6a4663eedac7a5ed3ce61d836d1cecdfa11da67ebd0d"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":1,"ids":[310,2962,24217,494],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"d6b8e6afe3c6f5af068f240e0e69b3875311aac6929b3d5a38ab3aeaa1bf227c"},"hidden":{"shape":[1,4,10240],"sha256":"52f20217ed43d8e59ddbe037cb77f56cc3d8ef473fd1963948fff6faf8ad4212"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":2,"ids":[13,353,2582,3804],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"048e9343d4268d98455a01f7c73ee47af78bc811ef9e7680a72cae59336b9989"},"hidden":{"shape":[1,4,10240],"sha256":"8e8b07fb20baa33ad64cc76ff64403a434d520c627a182a224cf033a5a14e5d4"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":3,"ids":[8334,29014,494],"verify":true,"logits":{"shape":[1,3,248320],"sha256":"82d671c6ac7b3a0952e60ef554ca670562fd01ef25c37bd10bc27025768ea0f2"},"hidden":{"shape":[1,3,10240],"sha256":"d1bc90f284364eae8bac80a5da6ab64c9c76d6994bb09ed463a17d67e25c016e"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"trunk":[[{"shape":[1,3,10240],"sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84","value_sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84"},{"shape":[1,48,128,128],"sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf","value_sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf"}],[{"shape":[1,3,10240],"sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232","value_sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232"},{"shape":[1,48,128,128],"sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf","value_sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf"},{"shape":[1,9,10240],"sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08","value_sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08"},{"shape":[1,2],"sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152","value_sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152"}],[{"shape":[1,3,10240],"sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2","value_sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2"},{"shape":[1,48,128,128],"sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34","value_sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34"}],[{"shape":[1,2,88,256],"sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f","value_sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f"},{"shape":[1,2,88,256],"sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24","value_sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24"},{"shape":[1,88,128],"sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748","value_sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748"},{"shape":[1,22,128],"sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a","value_sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a"}],[{"shape":[1,3,10240],"sha256":"431c351776e8973a28d2206fee9c9262c74df879b561ecb28fdf53f1c6941dda","value_sha256":"431c351776e8973a28d2206fee9c9262c74df879b561ecb28fdf53f1c6941dda"},{"shape":[1,48,128,128],"sha256":"c8d64ecbf9dab273a4be2d0b7b00b4fccbb59d25d99ef47ba26a3488dc1ba28f","value_sha256":"c8d64ecbf9dab273a4be2d0b7b00b4fccbb59d25d99ef47ba26a3488dc1ba28f"}],[{"shape":[1,3,10240],"sha256":"f4ce935821cd12c5981db92dc849ca6fb25d845a8b38f0ca2ac7f98afa99666a","value_sha256":"f4ce935821cd12c5981db92dc849ca6fb25d845a8b38f0ca2ac7f98afa99666a"},{"shape":[1,48,128,128],"sha256":"8093f937ad983da7c65154990a2a163c7ab09d7e776c7d2b84a8310469433d6f","value_sha256":"8093f937ad983da7c65154990a2a163c7ab09d7e776c7d2b84a8310469433d6f"}],[{"shape":[1,3,10240],"sha256":"3c1051a65bbd484bd5bc7ff79919bbb0f8b99f899215efc47ad415541c4ccc7d","value_sha256":"3c1051a65bbd484bd5bc7ff79919bbb0f8b99f899215efc47ad415541c4ccc7d"},{"shape":[1,48,128,128],"sha256":"bcbf58854152187ff9556062117970701ac56898d9af860d2b9b3840eaf84b1f","value_sha256":"bcbf58854152187ff9556062117970701ac56898d9af860d2b9b3840eaf84b1f"}],[{"shape":[1,2,88,256],"sha256":"9e6bc46ee9a8170bf6bfe9a0cd592543b15d24225ba39e71bddb4aeef947555b","value_sha256":"9e6bc46ee9a8170bf6bfe9a0cd592543b15d24225ba39e71bddb4aeef947555b"},{"shape":[1,2,88,256],"sha256":"b84ee35f5c3e0ac8181df0ae66e2278a03db0783c0ea83e4bbabc21bdf47f7ba","value_sha256":"b84ee35f5c3e0ac8181df0ae66e2278a03db0783c0ea83e4bbabc21bdf47f7ba"},{"shape":[1,88,128],"sha256":"491cccffe6e1c810e6ce8d32fe160005762d1964da055d58746febef7000f5ae","value_sha256":"491cccffe6e1c810e6ce8d32fe160005762d1964da055d58746febef7000f5ae"},{"shape":[1,22,128],"sha256":"104bbc74bbb75851ad6a7466e2f2e1a1421a9c93fc0d62aaaf37aa60e2a1dcdb","value_sha256":"104bbc74bbb75851ad6a7466e2f2e1a1421a9c93fc0d62aaaf37aa60e2a1dcdb"}],[{"shape":[1,3,10240],"sha256":"e87be44991fddef0510651dc23006f2a056a56cf0a61a5f8b38daa34be0c8b57","value_sha256":"e87be44991fddef0510651dc23006f2a056a56cf0a61a5f8b38daa34be0c8b57"},{"shape":[1,48,128,128],"sha256":"0645fe9e0d09d4d55d3919d729ea1340b4ade128dec572010ebb07a5de306f43","value_sha256":"0645fe9e0d09d4d55d3919d729ea1340b4ade128dec572010ebb07a5de306f43"}],[{"shape":[1,3,10240],"sha256":"f2904788ae98c816e237db5ecc398c269205f38acb680a17e7d00b53289400d0","value_sha256":"f2904788ae98c816e237db5ecc398c269205f38acb680a17e7d00b53289400d0"},{"shape":[1,48,128,128],"sha256":"75f9e87f1c559b714f5d07911976152045b4b283c50d49794c68cdc66a3cea52","value_sha256":"75f9e87f1c559b714f5d07911976152045b4b283c50d49794c68cdc66a3cea52"}],[{"shape":[1,3,10240],"sha256":"c23b7e524522714aaf620c9e0bbb6b1d3db3585971f0cffafd7fe7e2018176dc","value_sha256":"c23b7e524522714aaf620c9e0bbb6b1d3db3585971f0cffafd7fe7e2018176dc"},{"shape":[1,48,128,128],"sha256":"4ce5d0905ec5e5ae834215c16b25d810a5ef6e54a6d7d96f95e47720Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"case":"warm","prompt":[248045,8678,198,24342,286,4879,369,716,310,3238,13,13262,678,7047,9522,321,10419,11,6992,5774,310,279,16198,1973,24366,24150,362,13,248046,198,248045,846,198,2427,494,799,310,5600,13,248046,198,248045,74455,198,248068,198,760,1156,6587,728,310,1698,494,799,310,5600,13,1061,198,248069,271,248046,198,248045,846,198,22791,24217,13,248046,198,248045,74455,198,248068,198],"tokens":[760,1156,6587,728,310,2962,24217,13,353,8334,29014,494],"cached":58,"state_sha256":"e6cb7355aaa92a3569a365c94c55aa7a50bd731dc04f6fa320da8520d182e2f8"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":0,"ids":[760,1156,6587,728],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"dbab0d12f25f2be2234d58d45f86219af62deb20e22b0d73a77aa5e7b722d082"},"hidden":{"shape":[1,4,10240],"sha256":"8f9aebc38d1a3e550bed6a4663eedac7a5ed3ce61d836d1cecdfa11da67ebd0d"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":1,"ids":[310,2962,24217,494],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"d6b8e6afe3c6f5af068f240e0e69b3875311aac6929b3d5a38ab3aeaa1bf227c"},"hidden":{"shape":[1,4,10240],"sha256":"52f20217ed43d8e59ddbe037cb77f56cc3d8ef473fd1963948fff6faf8ad4212"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":2,"ids":[13,353,2582,3804],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"048e9343d4268d98455a01f7c73ee47af78bc811ef9e7680a72cae59336b9989"},"hidden":{"shape":[1,4,10240],"sha256":"8e8b07fb20baa33ad64cc76ff64403a434d520c627a182a224cf033a5a14e5d4"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":3,"ids":[8334,29014,494],"verify":true,"logits":{"shape":[1,3,248320],"sha256":"82d671c6ac7b3a0952e60ef554ca670562fd01ef25c37bd10bc27025768ea0f2"},"hidden":{"shape":[1,3,10240],"sha256":"d1bc90f284364eae8bac80a5da6ab64c9c76d6994bb09ed463a17d67e25c016e"}}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
running 1 test
|
||||||
|
test engine::metal::qwen_mtplx::verify_sdpa::issue113_plan_and_policy_match_pinned_oracle ... ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.00s
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"trunk":[[{"shape":[1,3,10240],"sha256":"1dadce7f74c7b48ad423170b8884bf5024c3d6dd91b2f9d800afca7d32679d7b","value_sha256":"1dadce7f74c7b48ad423170b8884bf5024c3d6dd91b2f9d800afca7d32679d7b"},{"shape":[1,48,128,128],"sha256":"d7436faf9d50e278f7fa095e9c217467020a6f534a48195775c212caa0ece52d","value_sha256":"d7436faf9d50e278f7fa095e9c217467020a6f534a48195775c212caa0ece52d"}],[{"shape":[1,3,10240],"sha256":"ca1b3cf93598b62575f01aea05ff0d0f087c00fdf1b63654626ef5ec3487715a","value_sha256":"ca1b3cf93598b62575f01aea05ff0d0f087c00fdf1b63654626ef5ec3487715a"},{"shape":[1,48,128,128],"sha256":"f1364bb8165b9189279b7769e4081f213c562f4e0541acc5962cf2ae9f42a831","value_sha256":"f1364bb8165b9189279b7769e4081f213c562f4e0541acc5962cf2ae9f42a831"},{"shape":[1,9,10240],"sha256":"c9110c820fc39f8c19c770594c15e0997693015090a3c7af4b6c8ec9a31ebc4e","value_sha256":"c9110c820fc39f8c19c770594c15e0997693015090a3c7af4b6c8ec9a31ebc4e"},{"shape":[1,2],"sha256":"9febaa06152dac026dba5f2c1151c11ff6a1b2f00e92278cdfd2905c87cf2c2f","value_sha256":"9febaa06152dac026dba5f2c1151c11ff6a1b2f00e92278cdfd2905c87cf2c2f"}],[{"shape":[1,3,10240],"sha256":"320fdcf9c7ab899133952e093d1f3de613ba5581b3aaad45c4ad7b1b4e43f1f3","value_sha256":"320fdcf9c7ab899133952e093d1f3de613ba5581b3aaad45c4ad7b1b4e43f1f3"},{"shape":[1,48,128,128],"sha256":"8cae4ba20fd0e54f8da130e5f8681ece7c54672b7a6404800cded8e64a977e08","value_sha256":"8cae4ba20fd0e54f8da130e5f8681ece7c54672b7a6404800cded8e64a977e08"}],[{"shape":[1,2,58,256],"sha256":"404510256f371f0bc2e7b8af2d1f7eb2ae0322d42eb9a0ee5827a9a5c8d489c0","value_sha256":"404510256f371f0bc2e7b8af2d1f7eb2ae0322d42eb9a0ee5827a9a5c8d489c0"},{"shape":[1,2,58,256],"sha256":"f14afc7fe1c5e4c62c84121e804e14aa484db378861904d4e234ffeef10252ef","value_sha256":"f14afc7fe1c5e4c62c84121e804e14aa484db378861904d4e234ffeef10252ef"},{"shape":[1,58,128],"sha256":"ca2d0b2f09e87fab8d0a6aede7073ec53bc37b584851f0342c76244f05ca3e12","value_sha256":"ca2d0b2f09e87fab8d0a6aede7073ec53bc37b584851f0342c76244f05ca3e12"},{"shape":[1,14,128],"sha256":"a609a4f52c9b3dc0fb5d6554019786bebecdad220bf5ae6b40d4939821f12c8b","value_sha256":"a609a4f52c9b3dc0fb5d6554019786bebecdad220bf5ae6b40d4939821f12c8b"}],[{"shape":[1,3,10240],"sha256":"c14f586416a8e772fa53002514ff980ab579060981040071c3e4636fc9762070","value_sha256":"c14f586416a8e772fa53002514ff980ab579060981040071c3e4636fc9762070"},{"shape":[1,48,128,128],"sha256":"3dd403eccb148601e1ab505dee16956ad59128e2d51f1c0ad5fbe20509b6d4fc","value_sha256":"3dd403eccb148601e1ab505dee16956ad59128e2d51f1c0ad5fbe20509b6d4fc"}],[{"shape":[1,3,10240],"sha256":"d3506442712f1e9433327907d1390a1166912fac6ce36d7c339a50f9adb570fb","value_sha256":"d3506442712f1e9433327907d1390a1166912fac6ce36d7c339a50f9adb570fb"},{"shape":[1,48,128,128],"sha256":"1d5a82226d350ca721e1b3a12e5c28ae175d9116e36fccda4218efca9fe699f1","value_sha256":"1d5a82226d350ca721e1b3a12e5c28ae175d9116e36fccda4218efca9fe699f1"}],[{"shape":[1,3,10240],"sha256":"e1f5a0ab427dca8d091996febccbeebd5cbc987d7189ed1badbfe57dc14f8747","value_sha256":"e1f5a0ab427dca8d091996febccbeebd5cbc987d7189ed1badbfe57dc14f8747"},{"shape":[1,48,128,128],"sha256":"17feff27d8744d9a3b9b115b3c723b650a581c22c32cef569d827bbc24de7206","value_sha256":"17feff27d8744d9a3b9b115b3c723b650a581c22c32cef569d827bbc24de7206"}],[{"shape":[1,2,58,256],"sha256":"364736a6d66b0aa29df064c406d3f7190f05fa385ffc10b031760541dc3cc8b5","value_sha256":"364736a6d66b0aa29df064c406d3f7190f05fa385ffc10b031760541dc3cc8b5"},{"shape":[1,2,58,256],"sha256":"22369eed488919ec8c7aea527654f8c8e335ef0a995620b06e0a1ec391f91b30","value_sha256":"22369eed488919ec8c7aea527654f8c8e335ef0a995620b06e0a1ec391f91b30"},{"shape":[1,58,128],"sha256":"20dd11e3fd1a655cf5d52fe260518fd0bc896ba7abf9709d590ab891d8e75120","value_sha256":"20dd11e3fd1a655cf5d52fe260518fd0bc896ba7abf9709d590ab891d8e75120"},{"shape":[1,14,128],"sha256":"378afa222e09564605d3ccd930cc86a2c4456ca99e122c8075def851bb453568","value_sha256":"378afa222e09564605d3ccd930cc86a2c4456ca99e122c8075def851bb453568"}],[{"shape":[1,3,10240],"sha256":"3ae083450733c47e30d8564cecca1056ab20d358acd48d3c81d63eae3577980d","value_sha256":"3ae083450733c47e30d8564cecca1056ab20d358acd48d3c81d63eae3577980d"},{"shape":[1,48,128,128],"sha256":"5044b96ba3ff509a76564d5a63a68de9744bdac90c2df5e191af4f12e5478f48","value_sha256":"5044b96ba3ff509a76564d5a63a68de9744bdac90c2df5e191af4f12e5478f48"}],[{"shape":[1,3,10240],"sha256":"b827dfbf602825d83f60b7f079a9cd3a67123ae1ad08ab046bd3878b411fa6c3","value_sha256":"b827dfbf602825d83f60b7f079a9cd3a67123ae1ad08ab046bd3878b411fa6c3"},{"shape":[1,48,128,128],"sha256":"70af0a5e7ad8fa8b63c40b40cc09c225378faf36ab648ffffc5c3bd4746802c7","value_sha256":"70af0a5e7ad8fa8b63c40b40cc09c225378faf36ab648ffffc5c3bd4746802c7"}],[{"shape":[1,3,10240],"sha256":"63f127bb20b6544b831d9cb3c476f4a093024fd425376a57538755be07e517df","value_sha256":"63f127bb20b6544b831d9cb3c476f4a093024fd425376a57538755be07e517df"},{"shape":[1,48,128,128],"sha256":"1d5d23064fbf2193615d4a1f83aa1897ed9c48e4c61a217abda7fd16Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"case":"cold","prompt":[248045,8678,198,24342,286,4879,369,716,310,3238,13,13262,678,7047,9522,321,10419,11,6992,5774,310,279,16198,1973,24366,24150,362,13,248046,198,248045,846,198,2427,494,799,310,5600,13,248046,198,248045,74455,198,248068,198],"tokens":[760,1156,6587,728,310,1698,494,799,310,5600,13,1061],"cached":0,"state_sha256":"ed07c44dec46cebe4471ac26a136c9d8ece3d88b4abeaa7f688247a13f3b1276"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":0,"ids":[760,1156,369,9859],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"e3ba038c8570911a72fadeba867f1c33e5103108ef9881bfcdc008907de90839"},"hidden":{"shape":[1,4,10240],"sha256":"b3c2ef7bb9c3dfa85748d7af883210ae4393bd1b5af5397f243d632fc437552b"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":1,"ids":[6587,728,310,1698],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"955ff038997bab8ca6a84642b1ad8cf88dade0d2075d5ea11c736c9f74a7d563"},"hidden":{"shape":[1,4,10240],"sha256":"e3a029cc190a3cbdee1e2ec34bd94181f6013a6495c56b60dcccd67130fcfbd4"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":2,"ids":[494,799,310,5600],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"e201b5e579d7c8f58432ae495c120c66cd595241046dd9cd32d42cab72009b3b"},"hidden":{"shape":[1,4,10240],"sha256":"d56aba5df3172aeca9d26bccfe6143d8045d30e5af45f1fc6815d61634f78d2c"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":3,"ids":[13,1061],"verify":true,"logits":{"shape":[1,2,248320],"sha256":"ecf42a91034a5bd6739a3d5bc94ffdcbac8214261f5712a3196bb6b99be67860"},"hidden":{"shape":[1,2,10240],"sha256":"0296bbc47e09e0312470a1ada7ef90177009d80cef5ba79398190177bb4be7c3"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"trunk":[[{"shape":[1,3,10240],"sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84","value_sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84"},{"shape":[1,48,128,128],"sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf","value_sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf"}],[{"shape":[1,3,10240],"sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232","value_sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232"},{"shape":[1,48,128,128],"sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf","value_sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf"},{"shape":[1,9,10240],"sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08","value_sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08"},{"shape":[1,2],"sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152","value_sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152"}],[{"shape":[1,3,10240],"sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2","value_sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2"},{"shape":[1,48,128,128],"sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34","value_sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34"}],[{"shape":[1,2,88,256],"sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f","value_sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f"},{"shape":[1,2,88,256],"sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24","value_sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24"},{"shape":[1,88,128],"sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748","value_sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748"},{"shape":[1,22,128],"sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a","value_sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a"}],[{"shape":[1,3,10240],"sha256":"23af29f2397aace825e958a5faa77cb734a968ef2a7a7f058f5dc543b582c847","value_sha256":"23af29f2397aace825e958a5faa77cb734a968ef2a7a7f058f5dc543b582c847"},{"shape":[1,48,128,128],"sha256":"d4c4e8b85d76cfb913593521150b144cb2bb6a6a3aed2bfe511fad2f716616ae","value_sha256":"d4c4e8b85d76cfb913593521150b144cb2bb6a6a3aed2bfe511fad2f716616ae"}],[{"shape":[1,3,10240],"sha256":"a342824984d9f603f852b6419dbd2be196dd3c2ad66b8d272ba1c723bfc58854","value_sha256":"a342824984d9f603f852b6419dbd2be196dd3c2ad66b8d272ba1c723bfc58854"},{"shape":[1,48,128,128],"sha256":"a46384ccc56e527d39df7582277baeba2229d208cc0529ecaeafd3e53b8d6db2","value_sha256":"a46384ccc56e527d39df7582277baeba2229d208cc0529ecaeafd3e53b8d6db2"}],[{"shape":[1,3,10240],"sha256":"21a78ff13a7b64234bd2db960ccfcae99cc575c3f42b185eb8831473666547e8","value_sha256":"21a78ff13a7b64234bd2db960ccfcae99cc575c3f42b185eb8831473666547e8"},{"shape":[1,48,128,128],"sha256":"69cea0bd54b8996f97bdc9f718cb4ddba75dd4c416a1f1590a1118a4503235ee","value_sha256":"69cea0bd54b8996f97bdc9f718cb4ddba75dd4c416a1f1590a1118a4503235ee"}],[{"shape":[1,2,88,256],"sha256":"75ca9e3382094e7fb1d1fb79c1b492164178b9dc028a75a084d82cba8c719b37","value_sha256":"75ca9e3382094e7fb1d1fb79c1b492164178b9dc028a75a084d82cba8c719b37"},{"shape":[1,2,88,256],"sha256":"2ceb5beed581a848481bd02f8d09b07901c37fbda93fd92d94ba1344579c65e0","value_sha256":"2ceb5beed581a848481bd02f8d09b07901c37fbda93fd92d94ba1344579c65e0"},{"shape":[1,88,128],"sha256":"bdbd34eb86fe22271437831df743bf44efb01a7dce240a9e6b6321d0c6356cde","value_sha256":"bdbd34eb86fe22271437831df743bf44efb01a7dce240a9e6b6321d0c6356cde"},{"shape":[1,22,128],"sha256":"bd0a7f30f06069bd50a87a8981cfd1657a172fe5407b78f666899f49aa1a96fc","value_sha256":"bd0a7f30f06069bd50a87a8981cfd1657a172fe5407b78f666899f49aa1a96fc"}],[{"shape":[1,3,10240],"sha256":"ef974274168dd5c569007e254179cf0ac745e7a7b28d2fbda9f06bc58c618158","value_sha256":"ef974274168dd5c569007e254179cf0ac745e7a7b28d2fbda9f06bc58c618158"},{"shape":[1,48,128,128],"sha256":"6706d6620ead67281abd40ad7239479a760992e42f0e2b8bfd2d3841c1bde52f","value_sha256":"6706d6620ead67281abd40ad7239479a760992e42f0e2b8bfd2d3841c1bde52f"}],[{"shape":[1,3,10240],"sha256":"1c6b6c06774bcfb8190cd48a437e99c9796d88d9fa6619f461f3fc90155ac15f","value_sha256":"1c6b6c06774bcfb8190cd48a437e99c9796d88d9fa6619f461f3fc90155ac15f"},{"shape":[1,48,128,128],"sha256":"78d2709f54d5687657883f8bd9216eb981d83ea4554959108c29dc0494e85f9f","value_sha256":"78d2709f54d5687657883f8bd9216eb981d83ea4554959108c29dc0494e85f9f"}],[{"shape":[1,3,10240],"sha256":"57977ed3fb0c1ed17d8b10bd2f525f28d63aad65eb434c513b490c9eb940352f","value_sha256":"57977ed3fb0c1ed17d8b10bd2f525f28d63aad65eb434c513b490c9eb940352f"},{"shape":[1,48,128,128],"sha256":"c33c4474957879b91be8e0ca721ce66ba6a6eb533028aa3cf9509a23Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"case":"reopened","prompt":[248045,8678,198,24342,286,4879,369,716,310,3238,13,13262,678,7047,9522,321,10419,11,6992,5774,310,279,16198,1973,24366,24150,362,13,248046,198,248045,846,198,2427,494,799,310,5600,13,248046,198,248045,74455,198,248068,198,760,1156,6587,728,310,1698,494,799,310,5600,13,1061,198,248069,271,248046,198,248045,846,198,22791,24217,13,248046,198,248045,74455,198,248068,198],"tokens":[760,1156,6587,728,310,2962,24217,13,353,8334,29014,494],"cached":58,"state_sha256":"257714fbbf6f6a92b5562f554fae93c36abaff2e72bac7ad61a0d874e14e8234"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":0,"ids":[760,1156,6587,728],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"0d002e5ab00ee76250e5deca14358353c777fd1f1804937070ca229f74cdc9f6"},"hidden":{"shape":[1,4,10240],"sha256":"cb6bc68f9d37d0ffb544b2c635144d8f91a715c5172fa31a32be7aab84d5941b"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":1,"ids":[310,2962,24217,494],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"e052a03d4908e670c534c18453447dcb7190bf180dd281ffd3ace950675174e1"},"hidden":{"shape":[1,4,10240],"sha256":"2caa9c5b1d863080a4ec81e55103e9b3429261933f13cac971dfc09a8a1c130f"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":2,"ids":[13,353,2582,3804],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"f64c3236f08fa43f85ee491cc1121d5f584dfd1fbcd58b1bf9ef69b441813036"},"hidden":{"shape":[1,4,10240],"sha256":"eba14099db5411740f69183e22dbe7d50aef3e5cfde093319eaa39008fbd11c8"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":3,"ids":[8334,29014,494],"verify":true,"logits":{"shape":[1,3,248320],"sha256":"6821599090afcd8e042f955477276a52843d0087c6074a1a77a43b9768cd2c0c"},"hidden":{"shape":[1,3,10240],"sha256":"e358aa99aa0738c30f102ad646ebef5244b7740ca7ccaa3804469e3dc8ac217c"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"trunk":[[{"shape":[1,3,10240],"sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84","value_sha256":"1df54fa91eb80b88e8b4c0d566828d36540f3508099fc1751dd700d9bd904a84"},{"shape":[1,48,128,128],"sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf","value_sha256":"1cc66986fdbef7d449d321ff6c558b4e862d2d9211d74038325c72c4f2f0cebf"}],[{"shape":[1,3,10240],"sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232","value_sha256":"1ba5aa461d83294641ab065813f2a27ce3a1aa280890046cdc6d839d49c86232"},{"shape":[1,48,128,128],"sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf","value_sha256":"b789c69d02395058a02c548725e7897e906176c9647e88b5c413a9c743a73aaf"},{"shape":[1,9,10240],"sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08","value_sha256":"eaffcb3f7958776a888b3134ef5f9fa1285f21c242d76b0ebc19c64d75d26c08"},{"shape":[1,2],"sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152","value_sha256":"b5e055307f70d9b61bc8427b1da30e8f711b4da0c73d28a34879de8c3f253152"}],[{"shape":[1,3,10240],"sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2","value_sha256":"1ebb9fb3628cf830f4c16a815ecaa0c9ccc2049bff2b14d32cb4e3f08f1b91b2"},{"shape":[1,48,128,128],"sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34","value_sha256":"403226ed2eeae9becd4b498b0fa14de8152beac9138bff0c118698cd4c4fcc34"}],[{"shape":[1,2,88,256],"sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f","value_sha256":"b4995a3d443eb57598940e4a80ece426f8e8442e07f30b8168b247baebfc422f"},{"shape":[1,2,88,256],"sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24","value_sha256":"eb25629ce30b96850b39bf034124fb8d627c82402baeb89d72e24869005ace24"},{"shape":[1,88,128],"sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748","value_sha256":"1561cf66bb84117ff09036ee128d5c2e5aa21f69db459b82000dc467527df748"},{"shape":[1,22,128],"sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a","value_sha256":"4366612cb46ecc942d06aabe6043fea79b494a34f08f797fec5e0a76ff067a1a"}],[{"shape":[1,3,10240],"sha256":"23af29f2397aace825e958a5faa77cb734a968ef2a7a7f058f5dc543b582c847","value_sha256":"23af29f2397aace825e958a5faa77cb734a968ef2a7a7f058f5dc543b582c847"},{"shape":[1,48,128,128],"sha256":"d4c4e8b85d76cfb913593521150b144cb2bb6a6a3aed2bfe511fad2f716616ae","value_sha256":"d4c4e8b85d76cfb913593521150b144cb2bb6a6a3aed2bfe511fad2f716616ae"}],[{"shape":[1,3,10240],"sha256":"a342824984d9f603f852b6419dbd2be196dd3c2ad66b8d272ba1c723bfc58854","value_sha256":"a342824984d9f603f852b6419dbd2be196dd3c2ad66b8d272ba1c723bfc58854"},{"shape":[1,48,128,128],"sha256":"a46384ccc56e527d39df7582277baeba2229d208cc0529ecaeafd3e53b8d6db2","value_sha256":"a46384ccc56e527d39df7582277baeba2229d208cc0529ecaeafd3e53b8d6db2"}],[{"shape":[1,3,10240],"sha256":"21a78ff13a7b64234bd2db960ccfcae99cc575c3f42b185eb8831473666547e8","value_sha256":"21a78ff13a7b64234bd2db960ccfcae99cc575c3f42b185eb8831473666547e8"},{"shape":[1,48,128,128],"sha256":"69cea0bd54b8996f97bdc9f718cb4ddba75dd4c416a1f1590a1118a4503235ee","value_sha256":"69cea0bd54b8996f97bdc9f718cb4ddba75dd4c416a1f1590a1118a4503235ee"}],[{"shape":[1,2,88,256],"sha256":"75ca9e3382094e7fb1d1fb79c1b492164178b9dc028a75a084d82cba8c719b37","value_sha256":"75ca9e3382094e7fb1d1fb79c1b492164178b9dc028a75a084d82cba8c719b37"},{"shape":[1,2,88,256],"sha256":"2ceb5beed581a848481bd02f8d09b07901c37fbda93fd92d94ba1344579c65e0","value_sha256":"2ceb5beed581a848481bd02f8d09b07901c37fbda93fd92d94ba1344579c65e0"},{"shape":[1,88,128],"sha256":"bdbd34eb86fe22271437831df743bf44efb01a7dce240a9e6b6321d0c6356cde","value_sha256":"bdbd34eb86fe22271437831df743bf44efb01a7dce240a9e6b6321d0c6356cde"},{"shape":[1,22,128],"sha256":"bd0a7f30f06069bd50a87a8981cfd1657a172fe5407b78f666899f49aa1a96fc","value_sha256":"bd0a7f30f06069bd50a87a8981cfd1657a172fe5407b78f666899f49aa1a96fc"}],[{"shape":[1,3,10240],"sha256":"ef974274168dd5c569007e254179cf0ac745e7a7b28d2fbda9f06bc58c618158","value_sha256":"ef974274168dd5c569007e254179cf0ac745e7a7b28d2fbda9f06bc58c618158"},{"shape":[1,48,128,128],"sha256":"6706d6620ead67281abd40ad7239479a760992e42f0e2b8bfd2d3841c1bde52f","value_sha256":"6706d6620ead67281abd40ad7239479a760992e42f0e2b8bfd2d3841c1bde52f"}],[{"shape":[1,3,10240],"sha256":"1c6b6c06774bcfb8190cd48a437e99c9796d88d9fa6619f461f3fc90155ac15f","value_sha256":"1c6b6c06774bcfb8190cd48a437e99c9796d88d9fa6619f461f3fc90155ac15f"},{"shape":[1,48,128,128],"sha256":"78d2709f54d5687657883f8bd9216eb981d83ea4554959108c29dc0494e85f9f","value_sha256":"78d2709f54d5687657883f8bd9216eb981d83ea4554959108c29dc0494e85f9f"}],[{"shape":[1,3,10240],"sha256":"57977ed3fb0c1ed17d8b10bd2f525f28d63aad65eb434c513b490c9eb940352f","value_sha256":"57977ed3fb0c1ed17d8b10bd2f525f28d63aad65eb434c513b490c9eb940352f"},{"shape":[1,48,128,128],"sha256":"c33c4474957879b91be8e0ca721ce66ba6a6eb533028aa3cf9509a23Line truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"case":"warm","prompt":[248045,8678,198,24342,286,4879,369,716,310,3238,13,13262,678,7047,9522,321,10419,11,6992,5774,310,279,16198,1973,24366,24150,362,13,248046,198,248045,846,198,2427,494,799,310,5600,13,248046,198,248045,74455,198,248068,198,760,1156,6587,728,310,1698,494,799,310,5600,13,1061,198,248069,271,248046,198,248045,846,198,22791,24217,13,248046,198,248045,74455,198,248068,198],"tokens":[760,1156,6587,728,310,2962,24217,13,353,8334,29014,494],"cached":58,"state_sha256":"257714fbbf6f6a92b5562f554fae93c36abaff2e72bac7ad61a0d874e14e8234"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":0,"ids":[760,1156,6587,728],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"0d002e5ab00ee76250e5deca14358353c777fd1f1804937070ca229f74cdc9f6"},"hidden":{"shape":[1,4,10240],"sha256":"cb6bc68f9d37d0ffb544b2c635144d8f91a715c5172fa31a32be7aab84d5941b"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":1,"ids":[310,2962,24217,494],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"e052a03d4908e670c534c18453447dcb7190bf180dd281ffd3ace950675174e1"},"hidden":{"shape":[1,4,10240],"sha256":"2caa9c5b1d863080a4ec81e55103e9b3429261933f13cac971dfc09a8a1c130f"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":2,"ids":[13,353,2582,3804],"verify":true,"logits":{"shape":[1,4,248320],"sha256":"f64c3236f08fa43f85ee491cc1121d5f584dfd1fbcd58b1bf9ef69b441813036"},"hidden":{"shape":[1,4,10240],"sha256":"eba14099db5411740f69183e22dbe7d50aef3e5cfde093319eaa39008fbd11c8"}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"index":3,"ids":[8334,29014,494],"verify":true,"logits":{"shape":[1,3,248320],"sha256":"6821599090afcd8e042f955477276a52843d0087c6074a1a77a43b9768cd2c0c"},"hidden":{"shape":[1,3,10240],"sha256":"e358aa99aa0738c30f102ad646ebef5244b7740ca7ccaa3804469e3dc8ac217c"}}
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
{
|
||||||
|
"baseline": "7b894fbfeed81d2944b9cf479e60638ef04987c7",
|
||||||
|
"oracle": "9882703f3105363ddc37eca9f97aa09a1d387112",
|
||||||
|
"mlx": "0.32.2",
|
||||||
|
"old_checkpoint": {
|
||||||
|
"sha256": "0e090c9a590b1c7ac1de088db4a4a4637205267e4ff170dec53bd82f0153895c",
|
||||||
|
"identity": {
|
||||||
|
"model": [
|
||||||
|
241,
|
||||||
|
186,
|
||||||
|
133,
|
||||||
|
5,
|
||||||
|
200,
|
||||||
|
173,
|
||||||
|
242,
|
||||||
|
119,
|
||||||
|
171,
|
||||||
|
239,
|
||||||
|
119,
|
||||||
|
94,
|
||||||
|
213,
|
||||||
|
34,
|
||||||
|
200,
|
||||||
|
231,
|
||||||
|
175,
|
||||||
|
107,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
31,
|
||||||
|
178,
|
||||||
|
144,
|
||||||
|
116,
|
||||||
|
167,
|
||||||
|
229,
|
||||||
|
84,
|
||||||
|
1,
|
||||||
|
48,
|
||||||
|
163
|
||||||
|
],
|
||||||
|
"context": 8192,
|
||||||
|
"vocabulary": 248320,
|
||||||
|
"mtp": true
|
||||||
|
},
|
||||||
|
"tokens": [
|
||||||
|
248045,
|
||||||
|
8678,
|
||||||
|
198,
|
||||||
|
24342,
|
||||||
|
286,
|
||||||
|
4879,
|
||||||
|
369,
|
||||||
|
716,
|
||||||
|
310,
|
||||||
|
3238,
|
||||||
|
13,
|
||||||
|
13262,
|
||||||
|
678,
|
||||||
|
7047,
|
||||||
|
9522,
|
||||||
|
321,
|
||||||
|
10419,
|
||||||
|
11,
|
||||||
|
6992,
|
||||||
|
5774,
|
||||||
|
310,
|
||||||
|
279,
|
||||||
|
16198,
|
||||||
|
1973,
|
||||||
|
24366,
|
||||||
|
24150,
|
||||||
|
362,
|
||||||
|
13,
|
||||||
|
248046,
|
||||||
|
198,
|
||||||
|
248045,
|
||||||
|
846,
|
||||||
|
198,
|
||||||
|
2427,
|
||||||
|
494,
|
||||||
|
799,
|
||||||
|
310,
|
||||||
|
5600,
|
||||||
|
13,
|
||||||
|
248046,
|
||||||
|
198,
|
||||||
|
248045,
|
||||||
|
74455,
|
||||||
|
198,
|
||||||
|
248068,
|
||||||
|
198,
|
||||||
|
760,
|
||||||
|
1156,
|
||||||
|
6587,
|
||||||
|
728,
|
||||||
|
310,
|
||||||
|
1698,
|
||||||
|
494,
|
||||||
|
799,
|
||||||
|
310,
|
||||||
|
5600,
|
||||||
|
13,
|
||||||
|
1061
|
||||||
|
],
|
||||||
|
"verify_gate": true
|
||||||
|
},
|
||||||
|
"sha256": {
|
||||||
|
"tests/fixtures/mtplx-head-chunk.json": "57ff569dafb00b9defe1f8e7d184b90943dca1eaac21677984d8f22434c01fa2",
|
||||||
|
"/private/tmp/ds4-issue113-final-test": "f15440399c642860ea4ad1fb0e7811f2ed799b0410f823606d21812003051436",
|
||||||
|
"/private/tmp/ds4-issue113-product/new.bin": "f0e249f2792c4242ba630eeacca6e4443045f27bd7d4dc7d575d9a480c86ce2a",
|
||||||
|
"/private/tmp/ds4-issue113-off-product/new.bin": "907471e846658d6c13a744dc89e7332d79ec3dc7a4de55ca0c22333495b12b58"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
running 1 test
|
||||||
|
test engine::metal::qwen_mtplx::qsa_attention::mtplx_qsa_attention_module_matches_reference ... ds4: Metal device Apple M5 Max, 128.00 GiB RAM
|
||||||
|
ds4: Metal 4 tensor API enabled for Tensor kernels
|
||||||
|
ds4: drift-patch flags hc_stable=on norm_unify=on kv_raw_f32=off rope_exp2_log2=off math_safe=off tensor_matmul=on
|
||||||
|
ds4: Qwen reference kernels: Powered by MTPLX — https://github.com/youssofal/mtplx
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.94s
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
running 1 test
|
||||||
|
test engine::metal::qwen_mtplx::qsa_attention::mtplx_qsa_attention_module_matches_reference ... ds4: Metal device Apple M5 Max, 128.00 GiB RAM
|
||||||
|
ds4: Metal 4 tensor API enabled for Tensor kernels
|
||||||
|
ds4: drift-patch flags hc_stable=on norm_unify=on kv_raw_f32=off rope_exp2_log2=off math_safe=off tensor_matmul=on
|
||||||
|
ds4: Qwen reference kernels: Powered by MTPLX — https://github.com/youssofal/mtplx
|
||||||
|
ok
|
||||||
|
|
||||||
|
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 548 filtered out; finished in 0.93s
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,210 @@
|
|||||||
|
{
|
||||||
|
"fixtures": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 1393,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 97251291,
|
||||||
|
"resident_bytes": 70975488,
|
||||||
|
"physical_bytes": 177374120,
|
||||||
|
"peak_physical_bytes": 178209680,
|
||||||
|
"disk_read_bytes": 3022848,
|
||||||
|
"disk_write_bytes": 32768
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"checkpoint": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 547,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 42551583,
|
||||||
|
"resident_bytes": 60342272,
|
||||||
|
"physical_bytes": 29934312,
|
||||||
|
"peak_physical_bytes": 29934312,
|
||||||
|
"disk_read_bytes": 11739136,
|
||||||
|
"disk_write_bytes": 49152
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 11862,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 13477662708,
|
||||||
|
"resident_bytes": 25462865920,
|
||||||
|
"physical_bytes": 77020489800,
|
||||||
|
"peak_physical_bytes": 77020489800,
|
||||||
|
"disk_read_bytes": 73493147648,
|
||||||
|
"disk_write_bytes": 286756864
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"off-product": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 11658,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 15682090666,
|
||||||
|
"resident_bytes": 25093898240,
|
||||||
|
"physical_bytes": 76906686368,
|
||||||
|
"peak_physical_bytes": 76906686368,
|
||||||
|
"disk_read_bytes": 73721593856,
|
||||||
|
"disk_write_bytes": 286756864
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"model-oracle": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 15366,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 17251837750,
|
||||||
|
"resident_bytes": 25390841856,
|
||||||
|
"physical_bytes": 76987541504,
|
||||||
|
"peak_physical_bytes": 76988311456,
|
||||||
|
"disk_read_bytes": 105532772352,
|
||||||
|
"disk_write_bytes": 18446744073709305856
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"off-oracle": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 14548,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 16934928666,
|
||||||
|
"resident_bytes": 24856903680,
|
||||||
|
"physical_bytes": 76988049384,
|
||||||
|
"peak_physical_bytes": 76988835696,
|
||||||
|
"disk_read_bytes": 103881760768,
|
||||||
|
"disk_write_bytes": 32665600
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"mtplx_qsa_eager_array_graph_matches_reference": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 1150,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 838671541,
|
||||||
|
"resident_bytes": 114753536,
|
||||||
|
"physical_bytes": 281641800,
|
||||||
|
"peak_physical_bytes": 289866592,
|
||||||
|
"disk_read_bytes": 29503488,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"mtplx_qsa_dense_mask_graph_matches_reference": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 839,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 633162250,
|
||||||
|
"resident_bytes": 194674688,
|
||||||
|
"physical_bytes": 353747832,
|
||||||
|
"peak_physical_bytes": 364217208,
|
||||||
|
"disk_read_bytes": 458752,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"mtplx_qsa_prefill_gather_graph_matches_reference": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 525,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 332477666,
|
||||||
|
"resident_bytes": 79740928,
|
||||||
|
"physical_bytes": 256574184,
|
||||||
|
"peak_physical_bytes": 262914792,
|
||||||
|
"disk_read_bytes": 245760,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"mtplx_qsa_rows_gather_graph_matches_reference": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 310,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 164053875,
|
||||||
|
"resident_bytes": 84410368,
|
||||||
|
"physical_bytes": 301417192,
|
||||||
|
"peak_physical_bytes": 326026008,
|
||||||
|
"disk_read_bytes": 0,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"mtplx_sdpa_fallback_graph_matches_reference": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 841,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 643992875,
|
||||||
|
"resident_bytes": 195117056,
|
||||||
|
"physical_bytes": 501580664,
|
||||||
|
"peak_physical_bytes": 504791928,
|
||||||
|
"disk_read_bytes": 376832,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"qsa-module-0": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 1038,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 689164750,
|
||||||
|
"resident_bytes": 544718848,
|
||||||
|
"physical_bytes": 1604994344,
|
||||||
|
"peak_physical_bytes": 1607386432,
|
||||||
|
"disk_read_bytes": 4894720,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"qsa-module-1": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 1048,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 712567875,
|
||||||
|
"resident_bytes": 545734656,
|
||||||
|
"physical_bytes": 1605911824,
|
||||||
|
"peak_physical_bytes": 1605944592,
|
||||||
|
"disk_read_bytes": 114688,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"gates": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 312,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 54212208,
|
||||||
|
"resident_bytes": 65257472,
|
||||||
|
"physical_bytes": 153076432,
|
||||||
|
"peak_physical_bytes": 153404112,
|
||||||
|
"disk_read_bytes": 5132288,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"deepseek": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 9789,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 2929129750,
|
||||||
|
"resident_bytes": 130400256,
|
||||||
|
"physical_bytes": 308790112,
|
||||||
|
"peak_physical_bytes": 319767392,
|
||||||
|
"disk_read_bytes": 86721708032,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
},
|
||||||
|
"glm": {
|
||||||
|
"event": "test_resource_summary",
|
||||||
|
"elapsed_ms": 11991,
|
||||||
|
"peak": {
|
||||||
|
"cpu_time_ns": 3695045041,
|
||||||
|
"resident_bytes": 905674752,
|
||||||
|
"physical_bytes": 1337132544,
|
||||||
|
"peak_physical_bytes": 1488602768,
|
||||||
|
"disk_read_bytes": 96508018688,
|
||||||
|
"disk_write_bytes": 0
|
||||||
|
},
|
||||||
|
"error": null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,592 @@
|
|||||||
|
Compiling ds4-server v0.1.0 (/Users/gb/Projects/DS4Server)
|
||||||
|
Finished `test` profile [unoptimized + debuginfo] target(s) in 14.50s
|
||||||
|
warning: the following packages contain code that will be rejected by a future version of Rust: block v0.1.6
|
||||||
|
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
|
||||||
|
Running unittests src/main.rs (target/debug/deps/ds4_server-5679c54d8848b708)
|
||||||
|
|
||||||
|
running 549 tests
|
||||||
|
test agent::tests::anchored_edits_require_unique_head_and_tail ... ok
|
||||||
|
test a2ui::tests::streaming_parser_only_accepts_complete_a2ui_jsonl_lines ... ok
|
||||||
|
test agent::tests::ai_risk_response_requires_structured_risk_and_reason ... ok
|
||||||
|
test agent::tests::ai_shell_risk_assessment_receives_the_dev_brain_root ... ok
|
||||||
|
test a2ui::tests::embedded_catalog_and_validator_cover_the_same_components ... ok
|
||||||
|
test agent::tests::dev_brain_paths_are_trusted_by_shell_risk_assessment ... ok
|
||||||
|
test a2ui::tests::basic_formatters_follow_catalog_examples ... ok
|
||||||
|
test a2ui::tests::dismissal_boundaries_replay_history_and_a_fresh_active_epoch ... ok
|
||||||
|
test a2ui::tests::catalog_accepts_pie_donut_and_heatmap_charts ... ok
|
||||||
|
test a2ui::tests::catalog_validation_rejects_invalid_variants_and_function_arguments ... ok
|
||||||
|
test a2ui::tests::latest_created_surface_is_the_active_surface ... ok
|
||||||
|
test a2ui::tests::lifecycle_updates_incrementally_and_json_pointer_upserts ... ok
|
||||||
|
test a2ui::tests::catalog_validation_and_actions_use_current_local_data ... ok
|
||||||
|
test agent::tests::ralph_loop_stops_on_cap_blocker_failure_and_cancellation ... ok
|
||||||
|
test agent::tests::present_svg_parsers_recover_exact_source_for_both_model_transports ... ok
|
||||||
|
test a2ui::tests::v1_action_and_function_round_trips_follow_current_schema ... ok
|
||||||
|
test a2ui::tests::all_basics_compose_into_one_surface ... ok
|
||||||
|
test agent::tests::ralph_report_semantics_and_handoff_bound_are_enforced ... ok
|
||||||
|
test agent::tests::risky_shell_commands_require_one_time_approval ... ok
|
||||||
|
test agent::tests::model_adapters_preserve_primitives_and_report_recoverable_syntax_errors ... ok
|
||||||
|
test agent::tests::scripted_ralph_backend_gets_fresh_prompts_and_only_validated_handoffs ... ok
|
||||||
|
test agent::tests::generated_schemas_match_the_executable_tool_contracts ... ok
|
||||||
|
test agent::tests::project_boundary_rejects_parent_paths ... ok
|
||||||
|
test agent::tests::repeated_call_advisories_use_canonical_arguments_and_reset_per_user_turn ... ok
|
||||||
|
test a2ui::export::tests::static_svg_renderer_covers_the_complete_catalog ... ok
|
||||||
|
test agent::tests::stored_tool_cards_restore_ai_approval_reasons_by_call ... ok
|
||||||
|
test agent::tests::ralph_report_schemas_are_child_only_and_parse_for_both_models ... ok
|
||||||
|
test agent::tests::present_svg_executes_without_side_effects_and_maps_only_completed_cards ... ok
|
||||||
|
test agent::tests::tool_output_keeps_terminal_lines_but_parameter_summaries_do_not ... ok
|
||||||
|
test agent::web::tests::browser_helpers_preserve_ds4_wire_values ... ok
|
||||||
|
test agent::web::tests::headless_browser_extracts_a_local_page ... ignored, requires an installed Chrome browser
|
||||||
|
test agent::tests::glob_confinement_skips_symlinks_and_honors_cancellation ... ok
|
||||||
|
test agent::tests::validation_is_precise_and_prevents_side_effects_until_corrected ... ok
|
||||||
|
test app::generation::tests::attached_image_marker_is_model_only ... ok
|
||||||
|
test agent::tests::present_svg_validation_enforces_the_static_vector_boundary ... ok
|
||||||
|
test agent::tests::prompts_and_parsers_expose_the_reference_tool_set ... ok
|
||||||
|
test agent::tests::successful_structured_file_tools_report_project_paths ... ok
|
||||||
|
test agent::tests::glob_finds_all_regular_file_names_deterministically_without_reading_them ... ok
|
||||||
|
test agent::tests::standard_agent_skills_are_discovered_prompted_and_read_only ... ok
|
||||||
|
test agent::tests::ralph_round_contexts_are_unique_and_child_jobs_are_cleaned_up ... ok
|
||||||
|
test app::generation::tests::plain_chat_uses_the_same_unmodified_prompt_in_ui_and_headless ... ok
|
||||||
|
test agent::tests::shell_commands_skip_user_startup_files ... ok
|
||||||
|
test app::generation::tests::queued_guidance_is_one_reference_style_user_turn ... ok
|
||||||
|
test app::generation::tests::title_context_starts_at_the_first_user_and_ignores_system_rows ... ok
|
||||||
|
test app::generation::tests::turn_summary_accumulates_model_continuations ... ok
|
||||||
|
test agent::tests::shell_environment_is_loaded_once_from_login_and_interactive_startup_files ... ok
|
||||||
|
test agent::tests::standard_file_tools_can_maintain_only_managed_dev_brain_pages ... ok
|
||||||
|
test app::git::tests::unified_diff_parser_aligns_replacements_for_split_view ... ok
|
||||||
|
test app::git::tests::unstage_works_before_the_first_commit ... ok
|
||||||
|
test app::git::tests::configured_git_diff_options_change_the_rendered_patch ... ok
|
||||||
|
test app::preferences::tests::runtime_config_updates_after_lock_poisoning ... ok
|
||||||
|
test app::git::tests::libgit2_status_merges_staged_and_worktree_changes ... ok
|
||||||
|
test app::projects::tests::discarding_a_session_removes_every_checkpoint_stage ... ok
|
||||||
|
test app::projects::tests::draft_titles_follow_the_stored_session_count ... ok
|
||||||
|
test agent::tests::denial_and_stop_cancel_commands_awaiting_approval ... ok
|
||||||
|
test app::projects::tests::session_states_are_exclusive_and_ordered ... ok
|
||||||
|
test app::projects::tests::sweeping_removes_checkpoints_of_sessions_that_no_longer_exist ... ok
|
||||||
|
test app::projects::tests::git_state_lists_and_switches_local_branches ... ok
|
||||||
|
test app::tests::background_activity_drives_polling_indicators_and_quit_confirmation ... ok
|
||||||
|
test app::git::tests::origin_fetch_pull_and_push_use_the_current_branch ... ok
|
||||||
|
test agent::tests::shell_environment_probe_stops_blocked_startup_files ... ok
|
||||||
|
test app::tests::chat_html_export_embeds_loaded_a2ui_images_as_data_urls ... ok
|
||||||
|
test agent::tests::oversized_shell_output_is_bounded_and_retained_until_cleanup ... ok
|
||||||
|
test app::tests::chat_only_follows_updates_while_near_the_tail ... ok
|
||||||
|
test app::tests::ds4_gib_and_streaming_cache_inputs_are_typed ... ok
|
||||||
|
test app::tests::one_shot_titles_are_reduced_to_a_single_sidebar_line ... ok
|
||||||
|
test app::tests::owned_runtime_paths_stay_in_application_support ... ok
|
||||||
|
test app::tests::preferences_shortcut_and_dspark_support_are_explicit ... ok
|
||||||
|
test app::tests::source_does_not_depend_on_a_sibling_ds4_checkout ... ok
|
||||||
|
test app::tests::stored_session_always_selects_its_model ... ok
|
||||||
|
test app::tests::tab_scrolls_a_field_back_into_the_preferences_viewport ... ok
|
||||||
|
test app::view::a2ui::tests::renderer_input_helpers_cover_dates_numbers_choices_and_weights ... ok
|
||||||
|
test app::view::chat::tests::chat_divider_groups_token_counts_by_thousands ... ok
|
||||||
|
test app::view::chat::tests::composer_uses_shift_enter_for_line_breaks ... ok
|
||||||
|
test app::view::git::tests::split_diff_width_covers_the_longest_side_and_tabs ... ok
|
||||||
|
test app::tests::chat_export_preserves_completed_svg_and_keeps_failures_generic ... ok
|
||||||
|
test app::view::tests::action_buttons_share_geometry ... ok
|
||||||
|
test app::view::tests::context_pie_wedge_follows_the_fill_grade ... ok
|
||||||
|
test app::view::tests::download_measurements_are_readable ... ok
|
||||||
|
test app::view::tests::raised_surfaces_stay_dark ... ok
|
||||||
|
test compaction::tests::a_new_summary_replaces_the_previous_rebuild_summary ... ok
|
||||||
|
test compaction::tests::hard_trigger_and_retry_reserve_match_the_reference ... ok
|
||||||
|
test compaction::tests::soft_trigger_matches_reference_thresholds ... ok
|
||||||
|
test compaction::tests::summary_budget_keeps_answer_room_and_rejects_exhausted_contexts ... ok
|
||||||
|
test compaction::tests::summary_control_markup_is_private ... ok
|
||||||
|
test compaction::tests::tail_prefers_the_first_user_boundary_after_target ... ok
|
||||||
|
test config::tests::defaults_write_an_empty_file_and_reload_unchanged ... ok
|
||||||
|
test config::tests::deprecated_flash_config_migrates_and_persists_only_0731 ... ok
|
||||||
|
test config::tests::explicit_0731_dspark_opt_out_survives_the_default ... ok
|
||||||
|
test app::preferences::tests::selectors_rehydrate_their_generation_and_model_profiles ... ok
|
||||||
|
test config::tests::invalid_files_are_reported_instead_of_reset ... ok
|
||||||
|
test config::tests::model_profiles_expose_only_their_upstream_thinking_modes ... ok
|
||||||
|
test config::tests::legacy_flat_model_settings_are_dropped_but_the_prompt_is_kept ... ok
|
||||||
|
test config::tests::only_changed_values_are_written_and_read_back ... ok
|
||||||
|
test config::tests::qwen_selection_and_native_defaults_survive_restart ... ok
|
||||||
|
test app::generation::tests::model_history_uses_persisted_content_without_changing_the_transcript ... ok
|
||||||
|
test app::preferences::tests::multiline_system_prompt_round_trips_through_the_editor ... ok
|
||||||
|
test app::generation::tests::legacy_generation_rows_collapse_into_their_user_turn ... ok
|
||||||
|
test app::generation::tests::assistant_markdown_keeps_llm_tables ... ok
|
||||||
|
test app::generation::tests::forced_compaction_requires_new_visible_chat ... ok
|
||||||
|
test app::tests::assistant_stream_keeps_reasoning_separate_from_the_answer ... ok
|
||||||
|
test app::tests::chat_export_formats_visible_turns_reasoning_and_bash_tools ... ok
|
||||||
|
test app::generation::tests::complete_tool_call_in_reasoning_gets_one_correction ... ok
|
||||||
|
test app::view::stats::tests::current_session_summary_uses_persisted_chat_facts ... ok
|
||||||
|
test app::generation::tests::extension_context_deduplicates_session_start_and_rearms_after_compaction ... ok
|
||||||
|
test app::generation::tests::last_compaction_selects_its_tail_without_hiding_history ... ok
|
||||||
|
test app::tests::chat_html_export_is_safe_standalone_and_renders_embedded_surfaces ... ok
|
||||||
|
test app::generation::tests::a2ui_auto_switch_waits_for_a_renderable_surface ... ok
|
||||||
|
test dev_brain::tests::path_confinement_and_unrelated_notes_are_preserved ... ok
|
||||||
|
test database::tests::context_work_reactivates_an_archived_session ... ok
|
||||||
|
test dsml::tests::parses_reference_and_legacy_dsml_syntaxes ... ok
|
||||||
|
test dsml::tests::recovers_complete_invokes_before_an_incomplete_one ... ok
|
||||||
|
test dsml::tests::recovers_complete_invokes_without_the_outer_closing_tag ... ok
|
||||||
|
test engine::ds4_sampling::tests::heap_fallback_preserves_rng_and_signed_zero_ties ... ok
|
||||||
|
test engine::gguf::tests::accepts_exact_mxfp4_block_layout ... ok
|
||||||
|
test engine::gguf::tests::keeps_unknown_tensor_kinds_rejected ... ok
|
||||||
|
test engine::gguf::tests::maps_metadata_and_tensor_payload_without_copying_weights ... ok
|
||||||
|
test engine::gguf::tests::mxfp4_scalar_dot_matches_independent_values ... ok
|
||||||
|
test engine::gguf::tests::rejects_mxfp4_dimension_overflow ... ok
|
||||||
|
test engine::gguf::tests::rejects_mxfp4_rows_that_are_not_block_aligned ... ok
|
||||||
|
test engine::gguf::tests::rejects_truncated_mxfp4_payload ... ok
|
||||||
|
test database::tests::a2ui_dismissal_persists_a_fresh_surface_boundary ... ok
|
||||||
|
test database::tests::sessions_are_ordered_by_recent_use_within_sidebar_groups ... ok
|
||||||
|
test database::tests::inline_svg_tool_call_survives_session_switch_compaction_and_reopen ... ok
|
||||||
|
test engine::metal::glm::tests::dsa_indexer_schedule_matches_the_reference ... ok
|
||||||
|
test engine::metal::glm::tests::glm53_m5_text_performance_gate ... ignored, requires the installed GLM 5.3 Flash Q2 checkpoint and Apple Metal
|
||||||
|
test engine::metal::glm::tests::glm53_m5_vision_performance_and_oracle_gate ... ignored, requires GLM 5.3 Q2, its vision sidecar, a fixed image, and Apple Metal
|
||||||
|
test engine::metal::glm::tests::glm53_reference_logits_replay_separates_sampling_from_execution ... ignored, requires the installed GLM 5.3 Flash Q2 checkpoint and Apple Metal
|
||||||
|
test engine::metal::glm::tests::glm53_reference_prompt_tokens_match_shared_runtime ... ignored, installed GLM and DS4SERVER_GLM_REFERENCE_LOG from the standalone reference
|
||||||
|
test engine::metal::glm::tests::glm53_two_row_verifier_restores_recurrent_state ... ignored, installed GLM 5.3 and Metal; run under test-supervisor
|
||||||
|
test engine::metal::glm::tests::glm_byte_budget_reserves_prefill_before_dynamic_experts ... ok
|
||||||
|
test engine::metal::glm::tests::glm_mtp_preserves_target_tokens_and_drafts ... ignored, requires the 197 GiB GLM 5.2 checkpoint and Apple Metal
|
||||||
|
test engine::metal::glm::tests::glm_prefill_schedule_matches_ds4_boundaries ... ok
|
||||||
|
test engine::metal::glm::tests::glm_resident_decode_flushes_periodically_without_a_final_or_ssd_flush ... ok
|
||||||
|
test engine::metal::glm::tests::repeated_glm_prompt_rewinds_one_token_for_logits ... ok
|
||||||
|
test engine::metal::glm::tests::resident_and_streamed_glm_match_ds4_decode_oracles ... ignored, requires the 197 GiB GLM 5.2 checkpoint and Apple Metal
|
||||||
|
test engine::metal::glm::tests::streamed_glm_uses_ds4_indexed_prefill_for_long_prompts ... ignored, requires the 197 GiB GLM 5.2 checkpoint and Apple Metal
|
||||||
|
test engine::metal::gpu::qwen_mtplx_allocation_tests::backend_allocation_policy_is_explicit_inside_and_outside_qwen_scope ... ignored, requires Apple Metal; allocation only, no GPU dispatch or model
|
||||||
|
test engine::metal::gpu::qwen_mtplx_allocation_tests::dispatch_retains_allocation_without_changing_data_donation ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::gpu::qwen_mtplx_allocation_tests::empty_storage_preserves_data_identity_views_and_zero_allocator_usage ... ignored, requires Apple Metal context; empty descriptors, no GPU allocation
|
||||||
|
test engine::metal::gpu::qwen_mtplx_allocation_tests::mtplx_tensor_cpu_access_releases_native_storage ... ignored, requires Apple Metal; CPU buffer access only, no GPU dispatch or model
|
||||||
|
test engine::metal::markov::tests::installed_markov_worker_dispatch ... ignored, requires installed 0731 DSpark support; CPU dispatch diagnostic, not parity acceptance
|
||||||
|
test engine::metal::markov::tests::markov_workers_reuse_threads_and_buffers_with_ordered_ties ... ok
|
||||||
|
test engine::metal::power_throttle_keeps_ds4_ewma_and_full_power_bypass ... ok
|
||||||
|
test dev_brain::tests::skill_index_migration_does_not_overwrite_an_unrelated_root_note ... ok
|
||||||
|
test engine::metal::qwen::tests::affine_split_k_matches_reference_shapes_and_scratch_bound ... ok
|
||||||
|
test engine::metal::qwen::tests::dense_attention_crossover_is_phase_specific ... ok
|
||||||
|
test engine::metal::qwen::tests::qsa_selection_and_capacity_cover_the_full_native_window ... ok
|
||||||
|
test engine::metal::qwen::tests::qwen_affine_qmv_and_qmm_match_mlx_reference ... ignored, requires the pinned Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_affine_qmv_profile ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_core_boundary_and_checkpoint_are_stable ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_fused_gdn_input_rows_match_separate_projections ... ignored, requires the pinned Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_gdn_conv_norm_rows_matches_mtplx ... ignored, requires Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_gdn_delta_rows_matches_mtplx ... ignored, requires Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_layer_profile ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_lazy_target_probabilities_match_batched_sampling ... ignored, requires the pinned Qwen metadata and Apple Metal; no model inference
|
||||||
|
test engine::metal::qwen::tests::qwen_m5_performance_gate ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_metal_primitives_match_reference_vectors ... ignored, requires Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_mtp_matches_target_and_restores_its_cache ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_ple_gather_copies_only_the_requested_row ... ok
|
||||||
|
test engine::kvstore::tests::opening_reclaims_checkpoints_the_index_cannot_reach ... ok
|
||||||
|
test engine::metal::qwen::tests::qwen_qsa_dense_mask_accepts_unsorted_blocks ... ignored, requires Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_qsa_full_context_preallocation_succeeds ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_qsa_logical_depth_oracles_cover_prefill_decode_and_state ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_qsa_real_layer_executes_the_first_sparse_token ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_qsa_selection_and_attention_remain_bounded_at_native_depths ... ignored, requires Apple Metal and allocates the full QSA score window
|
||||||
|
test engine::metal::qwen::tests::qwen_reference_layer_trace ... ignored, diagnostic trace against the pinned MLX-LM reference
|
||||||
|
test engine::metal::qwen::tests::qwen_reference_sdpa_trace ... ignored, diagnostic comparison with captured MTPLX SDPA inputs
|
||||||
|
test engine::metal::qwen::tests::qwen_reference_stateful_trace ... ignored, diagnostic trace against the pinned MLX-LM reference
|
||||||
|
test engine::metal::qwen::tests::qwen_reference_verify_trace ... ignored, diagnostic trace against the pinned MTPLX verifier
|
||||||
|
test engine::metal::qwen::tests::qwen_sorted_routed_prefill_matches_grouped_output ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_ple_hash_contract_matches_golden_boundaries ... ok
|
||||||
|
test engine::metal::qwen::tests::qwen_stage_counters_preserve_async_batches ... ignored, requires pinned Qwen embeddings and Apple Metal; stage profiler opt-in
|
||||||
|
test engine::metal::qwen::tests::qwen_target_submission_profile ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen::tests::qwen_verify_layer_profile ... ignored, requires the pinned 105 GB Qwen artifact set and Apple Metal
|
||||||
|
test engine::metal::qwen_mtplx::allocator::mtplx_allocations_preserve_logical_bounds_with_reference_rounding ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::allocator::mtplx_native_allocator_heap_limits_and_gpu_lifetime ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::allocator::mtplx_native_allocator_replays_reference_allocations ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::ar::mtplx_ar_driver_matches_reference ... ignored, requires Apple Metal; unchanged MTPLX generate_ar orchestration oracle
|
||||||
|
test engine::metal::qwen_mtplx::array::mtplx_array_detach_clears_every_siblings_inputs_and_primitive ... ok
|
||||||
|
test engine::kvstore::tests::budget_evicts_the_least_valuable_unprotected_entry ... ok
|
||||||
|
test engine::metal::qwen_mtplx::array::mtplx_array_layout_preserves_dtype_shape_stride_and_materialization_flags ... ok
|
||||||
|
test engine::metal::qwen_mtplx::array::mtplx_array_materialization_keeps_geometry_and_rejects_short_storage ... ignored, requires Apple Metal; typed materialized descriptors without model weights
|
||||||
|
test engine::metal::qwen_mtplx::array::mtplx_dtype_promotion_matches_all_reference_pairs ... ok
|
||||||
|
test engine::metal::qwen_mtplx::attention::mtplx_qsa_dense_mask_graph_matches_reference ... ignored, requires Apple Metal; original MTPLX block mask including sentinel and tails
|
||||||
|
test engine::metal::qwen_mtplx::attention::mtplx_qsa_eager_array_graph_matches_reference ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::attention::mtplx_qsa_prefill_gather_graph_matches_reference ... ignored, requires Apple Metal; actual MTPLX tiled prefill gather
|
||||||
|
test engine::metal::qwen_mtplx::attention::mtplx_qsa_rows_gather_graph_matches_reference ... ignored, requires Apple Metal; actual MTPLX QSA rows-gather attention
|
||||||
|
test engine::metal::qwen_mtplx::attention::mtplx_sdpa_fallback_graph_matches_reference ... ignored, requires Apple M5 Max; actual Qwen SDPA fallback reference
|
||||||
|
test engine::metal::qwen_mtplx::binary::mtplx_graph_binary_preserves_reference_branches ... ignored, requires Apple Metal; binary graph broadcast/layout and donation branches
|
||||||
|
test engine::metal::qwen_mtplx::binding::mtplx_installed_module_binding_matches_reference ... ignored, requires installed DS4_QWEN38_ARTIFACTS and SSD policy; only small norms and four table rows evaluated
|
||||||
|
test engine::metal::qwen_mtplx::cache::mtplx_kv_cache_graph_matches_reference ... ignored, requires Apple Metal; actual MTPLX KVCache growth, trim and state receipts
|
||||||
|
test engine::metal::qwen_mtplx::cache::mtplx_qsa_cache_graph_matches_reference ... ignored, requires Apple Metal; actual MTPLX positional cache, mirror and held state aliases
|
||||||
|
test engine::kvstore::tests::longest_compatible_prefix_wins_and_hits_survive_reopen ... ok
|
||||||
|
test engine::metal::qwen_mtplx::compile_graph::mtplx_compile_scalar_bits_and_custom_kernel_identity ... ignored, requires Metal buffers and external supervisor; scalar ownership only, no GPU dispatch
|
||||||
|
test database::tests::session_model_migration_preserves_data_and_accepts_catalog ... ok
|
||||||
|
test engine::metal::qwen_mtplx::allocator::mtplx_allocator_cache_matches_live_reference_trace ... ok
|
||||||
|
test engine::metal::qwen_mtplx::context_copy::prompt_copy_match_and_backoff_preserve_reference_policy ... ok
|
||||||
|
test engine::metal::qwen_mtplx::decoder::mtplx_decoder_connected_attention_and_moe_advance_caches ... ignored, requires Apple Metal and external test-supervisor; complete decoder/cache smoke
|
||||||
|
test engine::metal::qwen_mtplx::dense::mtplx_dense_attention_batches_match_reference ... ignored, requires Apple M5 Max; actual BF16 batched matmul reference
|
||||||
|
test engine::metal::qwen_mtplx::dense::mtplx_dense_float_graph_matches_reference ... ignored, requires Apple M5 Max; floating Matmul factory and original dispatch
|
||||||
|
test engine::metal::qwen_mtplx::dense::mtplx_qsa_score_array_graph_matches_reference ... ignored, requires Apple M5 Max; canonical QSA F32 graph with the original TF32 setting
|
||||||
|
test engine::metal::qwen_mtplx::compiled::mtplx_replay_replaces_descriptors_without_rebuilding_primitives ... ok
|
||||||
|
test engine::metal::qwen_mtplx::encoder::mtplx_empty_bindings_preserve_nil_dependencies_without_dummy_storage ... ignored, requires Apple Metal; empty original-kernel grids and nil bindings
|
||||||
|
test engine::metal::qwen_mtplx::decoder::mtplx_decoder_residual_preserves_graph_order ... ok
|
||||||
|
test engine::metal::qwen_mtplx::encoder::mtplx_encoder_commits_after_primitives_and_balances_completion ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::encoder::mtplx_encoder_scope_routes_operators_and_allocator ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::encoder::mtplx_encoder_shared_events_and_error_completion_order ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::encoder::mtplx_encoder_untracked_dependencies_across_encoders_and_commands ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::eval::execution_tests::mtplx_eval_drains_failure_preserves_cause_and_retries_only_failed_nodes ... ignored, requires Apple Metal; supervised evaluator failure and retry
|
||||||
|
test engine::metal::qwen_mtplx::eval::execution_tests::mtplx_eval_releases_intermediates_and_preserves_descriptor_donation ... ignored, requires Apple Metal; graph ownership and last-consumer release
|
||||||
|
test engine::metal::qwen_mtplx::eval::execution_tests::mtplx_eval_retains_tracer_topology_without_input_donation ... ignored, requires Apple Metal; evaluator tracer donation and retained topology
|
||||||
|
test engine::metal::qwen_mtplx::eval::execution_tests::mtplx_eval_runs_cpu_gpu_siblings_and_async_continuations ... ignored, requires Apple Metal; tiny supervised CPU/GPU evaluator graph
|
||||||
|
test engine::metal::qwen_mtplx::encoder::mtplx_encoder_barrier_epochs_and_commit_thresholds ... ok
|
||||||
|
test engine::metal::qwen_mtplx::eval::mtplx_eval_tape_tracks_stream_fences_per_leaf_and_cross_device_union ... ok
|
||||||
|
test engine::metal::qwen_mtplx::eval::mtplx_eval_tape_preserves_bfs_width_and_sibling_choice ... ok
|
||||||
|
test engine::metal::qwen_mtplx::eval::mtplx_eval_tape_preserves_scheduled_detach_and_tracer_errors ... ok
|
||||||
|
test engine::metal::qwen_mtplx::execution::mtplx_full_installed_ar_matches_reference ... ignored, full installed model; external guard and DS4_QWEN38_AR_REFERENCE required
|
||||||
|
test engine::metal::qwen_mtplx::execution::mtplx_full_installed_mtp_prefill_matches_reference ... ignored, full installed MTP model; external guard and DS4_QWEN38_MTP_PREFILL_REFERENCE required
|
||||||
|
test engine::metal::qwen_mtplx::execution::mtplx_full_installed_ping_forward_matches_reference ... ignored, full installed model; requires external memory guard and DS4_QWEN38_FORWARD_REFERENCE
|
||||||
|
test engine::metal::qwen_mtplx::execution::qwen_power_throttle_drains_before_sleep_and_bypasses_at_full_power ... ignored, requires Apple Metal; run under test-supervisor
|
||||||
|
test engine::metal::qwen_mtplx::fused::mtplx_compiled_constant_spelling ... ok
|
||||||
|
test engine::metal::qwen_mtplx::fused::mtplx_compiled_fusion_gpu_matches_reference ... ignored, requires Metal and external supervisor; generated fusion vs pinned SiLU plus multi-output/scalar dispatch
|
||||||
|
test engine::metal::qwen_mtplx::gdn::mtplx_graph_gdn_forward_matches_model_reference ... ignored, requires Apple Metal; actual MTPLX GDN forward and cache receipts
|
||||||
|
test engine::metal::qwen_mtplx::gdn::mtplx_graph_gdn_prefill_and_verify_match_model_reference ... ignored, requires Apple Metal; complete GDN Conv1d prefill and fused verify graphs
|
||||||
|
test engine::metal::qwen_mtplx::gdn::mtplx_graph_gdn_staged_primitives_match_reference ... ignored, requires Apple Metal; 80 actual delta-update receipts and six conv-normalization kernels
|
||||||
|
test engine::metal::qwen_mtplx::gdn::mtplx_graph_gdn_step_preserves_views_and_siblings ... ignored, requires Apple Metal; GDN custom primitive strided copies and sibling roots
|
||||||
|
test engine::metal::qwen_mtplx::graph_sync::mtplx_graph_event_snapshots_preserve_values_streams_and_shared_errors ... ignored, requires Apple Metal events, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::graph_sync::mtplx_graph_fence_coherence_preserves_empty_and_partial_word_spans ... ignored, requires Apple Metal3, model-free empty coherent dispatch
|
||||||
|
test engine::metal::qwen_mtplx::graph_sync::mtplx_graph_fences_transfer_cpu_gpu_gpu_cpu_in_both_modes ... ignored, requires Apple Metal3, tiny model-free coherent fence kernels
|
||||||
|
test engine::metal::qwen_mtplx::hyper::mtplx_graph_hyper_forward_matches_reference ... ignored, requires Apple M5 Max; actual MTPLX GatedResidual reference receipts
|
||||||
|
test engine::metal::qwen_mtplx::hyper::mtplx_graph_hyper_pack_and_reads_match_reference ... ignored, requires Apple Metal; original hyper primitives and runtime pack
|
||||||
|
test engine::metal::qwen_mtplx::indexing::mtplx_graph_indexing_preserves_layouts_and_offsets ... ignored, requires Apple Metal; Select layout branches, GatherAxis views and empty arguments
|
||||||
|
test engine::metal::qwen_mtplx::indexing::mtplx_scatter_axis_graph_matches_reference ... ignored, requires Apple Metal; pinned Bool ScatterAxis layout and broadcast paths
|
||||||
|
test engine::metal::qwen_mtplx::issue103_analysis::issue103_numeric_receipts ... ignored, #103 diagnostic; Metal required, eager versus compiled numeric operands
|
||||||
|
test engine::metal::qwen_mtplx::issue103_analysis::issue103_sampling_receipts ... ignored, #103 diagnostic; Metal required, pins currently broken sampling law and invalid rows
|
||||||
|
test engine::metal::qwen_mtplx::issue103_analysis::issue103_sorted_gather_receipts ... ignored, #103 diagnostic; M5 and pinned runtime shader required; initialized sentinels
|
||||||
|
test engine::metal::qwen_mtplx::issue103_analysis::issue103_tokenizer_receipts ... ignored, #103 diagnostic; installed tokenizer and latest oracle JSONL; no GPU
|
||||||
|
test engine::metal::qwen_mtplx::issue103_analysis::issue103_vision_position_receipts ... ignored, #103 diagnostic; small active attention module on Metal; mixed position boundary
|
||||||
|
test engine::metal::qwen_mtplx::issue104::issue104_installed_ar_stream_and_state ... ignored, full pinned Bare-Speed model; external memory guard required
|
||||||
|
test engine::metal::qwen_mtplx::issue105::issue105_batched_greedy_rejects_each_invalid_row ... ignored, Metal required; run serially under test-supervisor
|
||||||
|
test engine::metal::qwen_mtplx::issue106::issue106_complete_state_and_checkpoint_recovery ... ignored, installed model and actual pre-fix checkpoint; external memory guard required
|
||||||
|
test engine::metal::qwen_mtplx::issue106::issue106_upstream_exit_matrix ... ignored, installed model, scripted logits on real caches; external memory guard required
|
||||||
|
test engine::metal::qwen_mtplx::issue108::issue108_attention_chunk_positions ... ignored, Metal and pinned MTPLX chunk fixtures; external supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::issue109::issue109_gate_phase_and_dtype_laws ... ignored, Metal and exhaustive pinned gate fixtures; external supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::issue110::issue110_actual_projection_rows_match_oracle ... ignored, installed layer weights and pinned oracle receipts; external memory supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::issue110::issue110_guard_allocation_refusal_releases_graph_and_retries ... ignored, Metal allocation refusal and retry; external supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::issue110::issue110_large_cold_and_warm_prefill ... ignored, full installed model and large partial chunks; serial memory supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::issue112_bench::issue112_hidden_prefill ... ignored, full installed model hidden-state prefill; serial supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::issue112_bench::issue112_paired_prefill ... ignored, full installed model; serial memory supervisor and explicit output directory
|
||||||
|
test engine::metal::qwen_mtplx::linear::mtplx_graph_affine_dequantize_matches_reference ... ignored, requires Apple Metal; original table dequantize dtype/group/bit/layout receipts
|
||||||
|
test engine::metal::qwen_mtplx::linear::mtplx_graph_affine_quantize_matches_reference ... ignored, requires Apple Metal; original affine quantize dtype/group/bit/layout receipts
|
||||||
|
test engine::metal::qwen_mtplx::linear::mtplx_graph_gather_qmm_matches_reference ... ignored, requires Apple Metal; original GatherQMM array layouts and expert routing
|
||||||
|
test engine::metal::qwen_mtplx::linear::mtplx_graph_quantized_linear_batched_identity ... ignored, requires Apple Metal and external supervisor; strided/broadcast batched affine dispatch
|
||||||
|
test engine::metal::qwen_mtplx::linear::mtplx_graph_quantized_linear_matches_reference ... ignored, requires Apple M5 Max Metal; 78 pinned affine fixtures through lazy graph
|
||||||
|
test engine::metal::qwen_mtplx::linear::sorted_gather_guard_matches_pinned_call_predicates ... ok
|
||||||
|
test engine::metal::qwen_mtplx::load::mtplx_safetensors_load_laziness_boundaries_and_lifetime ... ignored, requires Apple Metal; bounded CPU Load and dependent GPU graph
|
||||||
|
test engine::metal::qwen_mtplx::mlp::mtplx_graph_shared_mlp_matches_reference ... ignored, requires Apple M5 Max; actual MTPLX shared MLP reference receipts
|
||||||
|
test engine::metal::qwen_mtplx::mlp::mtplx_graph_split_and_compiled_silu_layouts ... ignored, requires Apple Metal; Split sibling ownership and compiled SiLU layouts
|
||||||
|
test engine::metal::qwen_mtplx::model::mtplx_model_compile_policy_and_run_boundaries ... ok
|
||||||
|
test engine::metal::qwen_mtplx::moe::mtplx_graph_sparse_moe_matches_reference ... ignored, requires Apple M5 Max; full MoE Array graph, no model weights; use test-supervisor
|
||||||
|
test engine::metal::qwen_mtplx::moe_sorted::issue112_all_kernel_variants ... ignored, Metal synthetic all supported row-map variants; external supervisor
|
||||||
|
test engine::metal::qwen_mtplx::moe_sorted::issue112_canary_failures ... ignored, Metal canary rejection and sticky fallback; external supervisor
|
||||||
|
test engine::metal::qwen_mtplx::moe_sorted::issue112_full_model_state ... ignored, full installed model; validates all cold/warm state receipts against the pre-port oracle
|
||||||
|
test engine::metal::qwen_mtplx::moe_sorted::issue112_installed_gate_up ... ignored, installed projection weights; external supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::moe_sorted::row_map_applicability ... ok
|
||||||
|
test database::tests::migrations_and_crud_work ... ok
|
||||||
|
test engine::metal::qwen_mtplx::ngram::mtplx_ngram_embedding_matches_reference ... ignored, requires Apple Metal; full resident NGram graph and lazy decode history
|
||||||
|
test engine::metal::qwen_mtplx::ngram::mtplx_ngram_gpu_rows_and_history_match_reference ... ignored, requires Apple Metal; original lazy NGram GPU row graph, no table
|
||||||
|
test engine::metal::qwen_mtplx::ngram::mtplx_ngram_resident_matches_reference ... ignored, requires Apple Metal; original NGramTable resident gather/dequantize receipts
|
||||||
|
test engine::metal::qwen_mtplx::ngram::mtplx_ngram_table_priority ... ignored, requires Apple Metal; NGram table routing and missing-sidecar behavior
|
||||||
|
test engine::metal::qwen_mtplx::ngram_sidecar::mtplx_ngram_sidecar_matches_reference ... ignored, requires Apple Metal; actual file-backed MTPLX sidecar/LRU/dequantization receipts
|
||||||
|
test engine::metal::qwen_mtplx::ngram_stage::mtplx_ngram_stage_allclose_branches ... ignored, requires Apple Metal; stage verification special values and original reduction branches
|
||||||
|
test engine::metal::qwen_mtplx::ngram_stage::mtplx_ngram_stage_matches_reference ... ignored, requires Apple Metal; original complete stage lifecycle and file-backed tables
|
||||||
|
test engine::metal::qwen_mtplx::normalization::mtplx_graph_norm_modules_match_reference ... ignored, requires Apple Metal; connected Qwen normalization graph golden fixtures
|
||||||
|
test engine::metal::qwen_mtplx::normalization::mtplx_graph_rms_norm_preserves_reference_layout_and_values ... ignored, requires Apple Metal; graph RMSNorm donation, copy, broadcast and looped kernels
|
||||||
|
test engine::metal::qwen_mtplx::normalization::mtplx_logsumexp_graph_matches_reference ... ignored, requires Apple Metal; original sampler LogSumExp branches
|
||||||
|
test engine::metal::qwen_mtplx::normalization::mtplx_softmax_graph_storage_matches_reference ... ignored, requires Apple Metal; original Softmax type and storage branches
|
||||||
|
test engine::metal::qwen_mtplx::ops::mtplx_concatenate_preserves_general_general_copy_semantics ... ignored, requires Apple Metal; Concatenate promotion, offsets, strided writers and validation
|
||||||
|
test engine::metal::qwen_mtplx::ops::mtplx_owned_operations_build_and_execute_qsa_layout_graph ... ignored, requires Apple Metal; self-contained lazy QSA-layout recipe, no callback map
|
||||||
|
test engine::metal::qwen_mtplx::ops::mtplx_slice_and_contiguous_preserve_cache_window_semantics ... ignored, requires Apple Metal; normalized Slice and Contiguous cache-window graph
|
||||||
|
test engine::metal::qwen_mtplx::owner::issue105_product::issue105_product_ar_cleanup_and_http_retry ... ignored, installed Qwen model; serial test-supervisor with memory guard required
|
||||||
|
test engine::metal::qwen_mtplx::owner::issue105_product::issue105_product_mtp_cleanup_and_http_retry ... ignored, installed Qwen MTP model; serial test-supervisor with memory guard required
|
||||||
|
test engine::metal::qwen_mtplx::owner::issue106_product::issue106_product_discards_old_checkpoint_and_recovers_cold ... ignored, installed model and actual pre-fix checkpoint; external memory guard required
|
||||||
|
test engine::metal::qwen_mtplx::owner::issue107_product::issue107_vision_product ... ignored, installed model plus vision tower; serial external memory supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::owner::issue109_product::issue109_verify_rows_and_warm_checkpoint ... ignored, installed model; serial external memory supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::fused::mtplx_compile_fusion_preserves_parent_and_output_boundaries ... ok
|
||||||
|
test engine::metal::qwen_mtplx::owner::issue109_product::issue113_default_verify_and_checkpoint ... ignored, installed model and actual pre-head-chunk checkpoint; serial external memory supervisor
|
||||||
|
test engine::metal::qwen_mtplx::owner::issue111_product::issue111_token_prefix_cache ... ignored, installed model; serial external memory supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::owner::qwen_product_generator_chat_matches_reference ... ignored, full installed model through product Generator; external supervisor and chat reference required
|
||||||
|
test engine::metal::qwen_mtplx::owner::qwen_vision_chat_checkpoint_preserves_image_identity ... ignored, requires installed Qwen, Metal, and DS4_QWEN_VISION_IMAGE; run under test-supervisor
|
||||||
|
test engine::metal::qwen_mtplx::ple::mtplx_graph_ple_connected_matches_reference ... ignored, requires Apple M5 Max; complete original PLELayer with real lookup
|
||||||
|
test engine::metal::qwen_mtplx::ple::mtplx_graph_ple_projection_and_cache_match_reference ... ignored, requires Apple M5 Max; actual MTPLX PLELayer after embedding lookup
|
||||||
|
test engine::metal::qwen_mtplx::policy::qwen_server_policy_matches_original_functions ... ignored, requires DS4_QWEN38_POLICY_REFERENCE from pinned MTPLX; CPU-only
|
||||||
|
test engine::metal::qwen_mtplx::owner::qwen_mtp_progress_publishes_without_turn_completion_or_double_counting ... ok
|
||||||
|
test engine::metal::qwen_mtplx::policy::sorted_moe_switch_and_family_rehearsal ... ok
|
||||||
|
test engine::metal::qwen_mtplx::fused::mtplx_compiled_emitter_matches_all_pinned_silu_bodies ... ok
|
||||||
|
test engine::metal::qwen_mtplx::prefill::mtplx_mtp_prefill_driver_matches_reference ... ignored, requires Apple Metal; original streaming MTP history prefill
|
||||||
|
test engine::metal::qwen_mtplx::prefill::mtplx_prefill_driver_matches_reference ... ignored, requires Apple Metal; original _prefill control flow and raw cache roots
|
||||||
|
test engine::metal::qwen_mtplx::qsa_attention::mtplx_qsa_attention_module_matches_reference ... ignored, requires Metal and unchanged whole-Attention receipts; no model download
|
||||||
|
test engine::metal::qwen_mtplx::qsa_compile::mtplx_compiled_indexer_array_replay_matches_reference ... ignored, requires Metal and original compiled indexer receipts; no model weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_core::mtplx_qsa_core_host_matches_reference ... ignored, requires Metal and original host-core receipts; no model weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_graph::qsa_cache_donation_requires_descriptor_data_and_allocation_contract ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_graph::qsa_completion_owns_buffers_until_gpu_finishes ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_graph::qsa_evaluator_retains_inputs_and_siblings_not_primary_data ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_indexer::issue107::issue107_real_geometry_query_and_block_start_positions ... ignored, Metal and independently verified pinned indexer fixtures; external supervisor required
|
||||||
|
test engine::metal::qwen_mtplx::qsa_indexer::mtplx_qsa_canonical_indexer_routes_match_reference ... ignored, requires Metal and original ongoing indexer routing receipts; no weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_indexer::mtplx_qsa_indexer_compiled_commit_matches_reference ... ignored, requires Metal and original indexer lifecycle receipts; no model weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_indexer::mtplx_qsa_indexer_prefix_matches_reference ... ignored, requires Apple Metal, original stateful QSAIndexer receipts, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_prefill::mtplx_qsa_prefill_graph_matches_reference ... ignored, requires Metal and original two-stage prefill receipts, no weights
|
||||||
|
test engine::metal::qwen_mtplx::qsa_prepare::mtplx_qsa_prepare_graph_matches_reference ... ignored, requires Apple Metal; parameterized original QSA preparation and traced positions
|
||||||
|
test engine::metal::qwen_mtplx::qsa_select::mtplx_qsa_fused_graph_matches_reference ... ignored, requires Apple Metal and original QSA selector receipts; no model weights
|
||||||
|
test engine::metal::qwen_mtplx::random::mtplx_sampler_prefix_matches_reference ... ignored, requires Apple Metal; original target-prefix sampler and default RNG
|
||||||
|
test engine::metal::qwen_mtplx::random::mtplx_sampler_resident_matches_reference ... ignored, requires Apple Metal; original MTPLX resident sampling and keyed RNG
|
||||||
|
test engine::metal::qwen_mtplx::qsa_graph::qsa_schedule_preserves_the_selected_sibling ... ok
|
||||||
|
test engine::metal::qwen_mtplx::reduce::mtplx_sampler_argmax_matches_reference ... ignored, requires Apple Metal; original MTPLX greedy ArgReduce and storage
|
||||||
|
test engine::metal::qwen_mtplx::policy::retired_ar_pipeline_flag_cannot_change_server_or_turn_policy ... ok
|
||||||
|
test engine::metal::qwen_mtplx::reduce::mtplx_sum_graph_matches_reference ... ignored, requires Apple Metal; original shared sum dispatch and QSA mean
|
||||||
|
test engine::metal::qwen_mtplx::residency::mtplx_residency_matches_reference_lifecycle_cases ... ignored, requires Apple Metal 3 / macOS 15, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::rope::mtplx_rope_graph_matches_reference ... ignored, requires Apple Metal; actual MTPLX RoPE, static YaRN and multi-axis receipts
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_batched_matches_reference ... ignored, requires Apple Metal; original MTPLX bound and serial batch distributions
|
||||||
|
test engine::metal::qwen_mtplx::request::qwen_request_settings_override_backend_policy ... ok
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_entry_matches_reference ... ignored, requires Apple Metal; actual MTPLX generator sampling entry
|
||||||
|
test engine::metal::qwen_mtplx::request::qwen_request_progress_uses_ui_frontiers_and_decode_timer ... ok
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_fallback_matches_reference ... ignored, requires Apple Metal; original sparse fallback and host dense sampler
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_penalties_match_reference ... ignored, requires Apple Metal; original GPU and CPU raw-logit penalties
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_selection_matches_reference ... ignored, requires Apple Metal; original MTPLX sampler selection, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_serial_support_matches_reference ... ignored, requires Apple Metal; actual MTPLX serial candidate route, no weights
|
||||||
|
test engine::metal::qwen_mtplx::scheduler::mtplx_cpu_dispatch_counts_tenth_and_completes_after_failed_work ... ok
|
||||||
|
test engine::metal::qwen_mtplx::scheduler::mtplx_cpu_primitive_holds_data_and_temporaries_in_fifo_order ... ignored, requires Apple Metal shared storage, no GPU dispatch or model weights
|
||||||
|
test engine::metal::qwen_mtplx::compile_graph::mtplx_compile_simplify_preserves_reference_parent_rules ... ok
|
||||||
|
test engine::metal::qwen_mtplx::scheduler::mtplx_scheduler_cpu_events_propagate_errors_without_consuming_source ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::scheduler::mtplx_scheduler_streams_preserve_fifo_errors_and_shutdown ... ok
|
||||||
|
test engine::metal::qwen_mtplx::sdpa::mtplx_sdpa_vector_matches_reference ... ignored, requires Apple M5 Max; actual pinned fused SDPA kernels
|
||||||
|
test engine::metal::qwen_mtplx::session_cache::mtplx_full_installed_chat_matches_reference ... ignored, full installed model; external guard and DS4_QWEN38_CHAT_REFERENCE required
|
||||||
|
test engine::metal::profile::tests::profile_reports_locality_and_lru_hits ... ok
|
||||||
|
test engine::metal::qwen_mtplx::session_cache::mtplx_session_boundary_policy ... ok
|
||||||
|
test engine::metal::qwen_mtplx::session_checkpoint::qwen_checkpoint_roundtrip_and_failed_restore_preserve_live_state ... ignored, model-free Metal checkpoint; external supervisor and DS4_QWEN38_CHECKPOINT_DIR required
|
||||||
|
test engine::metal::qwen_mtplx::session_cache::mtplx_session_final_state_requires_capture_and_safe_cache ... ok
|
||||||
|
test engine::metal::qwen_mtplx::session_codec::mtplx_session_codec_host_import_matches_reference ... ignored, model-free Metal imports; external supervisor and DS4_HOST_IMPORT_REFERENCE required
|
||||||
|
test engine::metal::qwen_mtplx::session_codec::mtplx_session_codec_matches_original_blobs_and_restore ... ignored, tiny GPU arrays; external supervisor and DS4_SESSION_CODEC_REFERENCE required
|
||||||
|
test engine::metal::qwen_mtplx::sort::mtplx_sort_graph_matches_reference ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::sparse_attention::mtplx_sparse_attention_graph_matches_reference ... ignored, requires Apple M5; actual MTPLX sparse Decode and TensorOps Prefill consumers
|
||||||
|
test engine::metal::qwen_mtplx::speculative::mtplx_full_installed_mtp_generation_matches_reference ... ignored, full installed model; external guard and DS4_QWEN38_MTP_GENERATION_REFERENCE required
|
||||||
|
test engine::metal::qwen_mtplx::stream::mtplx_stream_routes_queues_events_and_finalizes_all_under_pressure ... ignored, requires Apple Metal, tiny model-free two-queue copy
|
||||||
|
test engine::metal::qwen_mtplx::stream::mtplx_stream_registry_preserves_thread_defaults_templates_and_clear ... ok
|
||||||
|
test database::tests::chat_and_compaction_history_survive_reopen_and_session_deletion ... ok
|
||||||
|
test engine::metal::qwen_mtplx::submission::mtplx_submission_attaches_at_flush_eval_finish_and_drop ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::unary::mtplx_graph_unary_preserves_reference_layout_and_values ... ignored, requires Apple Metal; graph unary layout, donation and kernel boundaries
|
||||||
|
test engine::metal::qwen_mtplx::verify_sdpa::issue113_head_chunk_outputs_and_dispatch ... ignored, Metal, pinned head-chunk numerical and dispatch fixtures; serial supervisor
|
||||||
|
test engine::metal::qwen_mtplx::views::mtplx_dtype_conversion_and_views_preserve_values_layout_and_donation ... ignored, requires Apple Metal; original conversion/view kernels and donation in lazy eval
|
||||||
|
test engine::metal::qwen_mtplx::views::mtplx_dynamic_slice_graph_matches_reference ... ignored, requires Metal and original dynamic slice receipts; no model weights
|
||||||
|
test engine::metal::qwen_mtplx::views::mtplx_reshape_shares_or_copies_in_the_connected_evaluator ... ignored, requires Apple Metal; original Reshape copy kernels and shared backing
|
||||||
|
test engine::metal::qwen_mtplx::views::mtplx_views_preserve_aliases_offsets_strides_and_gpu_output ... ignored, requires Apple Metal; connected zero-copy views and offset-aware original copy kernel
|
||||||
|
test engine::metal::qwen_mtplx::vision::qwen_vision_tower_matches_mtplx_image ... ignored, requires Metal and pinned Qwen vision artifacts/reference values
|
||||||
|
test engine::metal::qwen_mtplx::weights::mtplx_checkpoint_projection_fusions_match_reference ... ignored, requires Apple Metal; bounded lazy checkpoint Load and fusion
|
||||||
|
test engine::metal::qwen_mtplx::weights::mtplx_installed_checkpoint_fusion_metadata_matches_reference ... ignored, requires installed DS4_QWEN38_ARTIFACTS; headers only, never evaluate weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_affine_selection_preserves_reference_boundaries ... ok
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_canonical_hyper_and_gdn_kernels_match_reference ... ignored, requires Apple Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_canonical_source_bodies_preserve_pinned_hashes ... ok
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_delta_update_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_gather_sort_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_gdn_decode_matches_model_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_gdn_forward_matches_model_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_gdn_staged_matches_model_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_norm_modules_match_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_router_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_sparse_moe_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_connected_switch_glu_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_gate_up_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_cache_lifecycle_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_compiled_backings_and_dynamic_copies_match_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_compiled_cache_routing_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_compiled_cache_window_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_compiled_capacity_matches_reference ... ok
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_compiled_indexer_modes_match_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_compiled_scalar_sources_match_reference ... ok
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_connected_cache_selection_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_eager_topk_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_f32_scores_match_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_indexer_preparation_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_indexer_routes_match_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_prefill_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_prefill_producer_dispatch_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::verify_sdpa::issue113_plan_and_policy_match_pinned_oracle ... ok
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_selector_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_runtime_affine_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_runtime_argsort_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_runtime_gather_matches_reference ... ignored, requires Apple M5 Max Metal, no model weights
|
||||||
|
test engine::metal::qwen_mtplx::scheduler::mtplx_scheduler_activity_preserves_reference_pressure_and_wait_rules ... ok
|
||||||
|
test engine::metal::tests::batch_raw_span_includes_the_chunk_and_previous_window ... ok
|
||||||
|
test engine::metal::tests::compression_schedule_tracks_the_deepseek_model_shape ... ok
|
||||||
|
test engine::metal::tests::decode_feature_policy_keeps_device_generations_and_rollbacks_separate ... ok
|
||||||
|
test engine::metal::tests::decode_raw_span_tracks_the_logical_sliding_window ... ok
|
||||||
|
test engine::metal::tests::directional_steering_matches_the_ds4_token_oracle ... ignored, requires the installed Flash GGUF, DS4 steering fixture, and a Metal device
|
||||||
|
test engine::metal::tests::dspark_confidence_quantizes_q8_input_like_ds4 ... ok
|
||||||
|
test engine::metal::tests::dspark_markov_activation_matches_q8_rounding ... ok
|
||||||
|
test engine::metal::tests::dspark_matches_original_summary_cycles ... ignored, requires installed 0731/DSpark and DS4SERVER_DSPARK_REFERENCE cycle recording
|
||||||
|
test engine::metal::tests::dspark_runs_a_target_owned_greedy_cycle ... ignored, requires the installed 0731 Flash and checkpoint-specific DSpark GGUF fixtures
|
||||||
|
test engine::metal::tests::dspark_scheduler_matches_the_ds4_default_window ... ok
|
||||||
|
test engine::metal::tests::dspark_verifier_selects_only_the_committed_row ... ok
|
||||||
|
test engine::metal::tests::flash_0731_long_context_crosses_indexed_prefill_boundary ... ignored, requires a 0731 Flash GGUF and an Apple M5 device
|
||||||
|
test engine::metal::tests::flash_0731_m5_decode_performance_gate ... ignored, requires a 0731 Flash GGUF and an Apple M5 device
|
||||||
|
test engine::metal::tests::flash_0731_resident_and_ssd_streaming_choose_the_same_tokens ... ignored, requires the installed 81 GiB Flash GGUF fixture and a Metal device
|
||||||
|
test engine::metal::tests::flash_0731_runs_exact_sampled_dspark ... ignored, requires the installed 0731 target and checkpoint-specific DSpark GGUF fixtures
|
||||||
|
test engine::metal::tests::flash_0731_ssd_streaming_maps_and_seeds_batched_prefill_layers ... ignored, requires the installed 81 GiB Flash GGUF fixture and a Metal device
|
||||||
|
test engine::metal::tests::generated_hotlists_match_each_model_shape ... ok
|
||||||
|
test engine::metal::tests::half_conversion_handles_normal_and_subnormal_values ... ok
|
||||||
|
test engine::metal::tests::pro_q4_model_spans_remain_isolated ... ok
|
||||||
|
test engine::metal::tests::pro_resident_admission_includes_weights_context_and_scratch ... ok
|
||||||
|
test engine::metal::tests::pro_ssd_streaming_full_layer_and_selected_batch_agree ... ignored, requires the installed DeepSeek V4 Pro GGUF and Apple Metal
|
||||||
|
test engine::metal::tests::resident_multi_session_switching_preserves_each_kv_frontier ... ignored, requires the installed 81 GiB Flash GGUF fixture and a Metal device
|
||||||
|
test engine::metal::tests::ssd_streaming_supports_dspark ... ignored, requires the installed 0731 Flash and checkpoint-specific DSpark GGUF fixtures
|
||||||
|
test engine::metal::tests::streaming_memory_plan_matches_ds4_graph_formulas ... ok
|
||||||
|
test engine::metal::vision::tests::glm53_resize_matches_reference_token_grids ... ok
|
||||||
|
test engine::metal::qwen_mtplx::submission::mtplx_all_native_command_commits_pass_the_submission_hook ... ok
|
||||||
|
test engine::qwen::tests::metadata_and_safetensors_boundaries_fail_closed ... ok
|
||||||
|
test engine::qwen::tests::pinned_artifact_set_loads_and_renders_goldens ... ignored, requires DS4_QWEN38_ARTIFACTS to point at the pinned 105 GB source
|
||||||
|
test engine::qwen::tests::pinned_qwen_metadata_matches_product_without_executor_state ... ignored, requires DS4_QWEN38_ARTIFACTS to point at the pinned 105 GB source
|
||||||
|
test engine::qwen_vision::qwen_image_cache_keys_distinguish_pixels_and_preserve_prior_text ... ok
|
||||||
|
test engine::qwen::tests::frozen_inventory_and_memory_categories_are_exact ... ok
|
||||||
|
test engine::qwen_vision::qwen_vision_positions_and_resize_contract ... ok
|
||||||
|
test engine::sampling_tests::checkpoint_headers_identify_the_exact_model ... ok
|
||||||
|
test engine::sampling_tests::checkpoint_rebuilds_explain_compatibility_and_history_misses ... ok
|
||||||
|
test engine::sampling_tests::checkpoint_tag_accepts_an_unchanged_prefix_before_reminders ... ok
|
||||||
|
test engine::sampling_tests::checkpoint_tag_covers_the_canonical_chat_state ... ok
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_distribution_and_rng_match_reference ... ok
|
||||||
|
test engine::sampling_tests::ds4_sampler_real_logits_cpu_benchmark ... ignored, CPU-only; requires DS4_SAMPLER_RECORDING with the recorded GLM logits
|
||||||
|
test engine::sampling_tests::exact_delta_sampling_accepts_or_corrects_the_draft ... ok
|
||||||
|
test engine::sampling_tests::generated_text_drains_incomplete_bytes_before_phase_changes_and_finish ... ok
|
||||||
|
test engine::sampling_tests::generated_text_preserves_thinking_utf8_and_split_stops ... ok
|
||||||
|
test engine::sampling_tests::metal_executes_real_flash_token ... ignored, requires the 80 GiB Flash checkpoint and Apple Metal
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_qsa_prefill_workspace_matches_reference ... ok
|
||||||
|
test engine::sampling_tests::qwen_rng_matches_numpy_pcg64 ... ok
|
||||||
|
test engine::sampling_tests::qwen_sampling_uses_mtplx_global_nucleus_mass_before_top_k ... ok
|
||||||
|
test engine::sampling_tests::resumed_prefill_crossover_matches_each_ds4_graph ... ok
|
||||||
|
test engine::sampling_tests::sampling_probabilities_match_ds4_filter_order ... ok
|
||||||
|
test engine::sampling_tests::split_utf8_token_bytes_are_joined_before_decoding ... ok
|
||||||
|
test engine::sampling_tests::top_k_and_stream_stops_are_applied_before_output ... ok
|
||||||
|
test engine::sampling_tests::workspace_instruction_identity_participates_in_append_only_kv_keys ... ok
|
||||||
|
test engine::sampling_tests::zero_temperature_is_greedy ... ok
|
||||||
|
test engine::tokenizer::issue111::issue111_ds4_families ... ignored, CPU-only; installed DS4 GGUFs and exact oracle IDs
|
||||||
|
test engine::tokenizer::issue111::issue111_every_unicode_scalar_split ... ignored, CPU-only; exhaustive pinned Qwen split receipt
|
||||||
|
test engine::tokenizer::issue111::issue111_qwen_tokens_and_requests ... ignored, CPU-only; installed Qwen tokenizer and pinned exact IDs
|
||||||
|
test engine::metal::qwen_mtplx::ngram::mtplx_ngram_cpu_rows_and_raw_history_match_reference ... ok
|
||||||
|
test engine::tokenizer::tests::character_helpers_are_total_at_every_byte_offset ... ok
|
||||||
|
test engine::tokenizer::tests::ds4_chat_matches_original_session_tokens ... ignored, CPU-only; requires DS4SERVER_CHAT_REFERENCE and its installed GGUF
|
||||||
|
test engine::tokenizer::tests::qwen_checkpoint_continuation_matches_full_conversation ... ignored, requires the installed Qwen tokenizer, but no GPU or model weights
|
||||||
|
test engine::tokenizer::tests::qwen_plain_chat_matches_mtplx_server_tokens ... ignored, requires local tokenizer and tools/qwen-chat-reference.py output; no inference
|
||||||
|
test engine::tokenizer::tests::reasoning_prefixes_match_each_model_family_contract ... ok
|
||||||
|
test engine::validation::tests::configured_glm53_main_fixture_passes_the_exact_layout ... ok
|
||||||
|
test engine::validation::tests::configured_glm53_vision_fixture_passes_the_exact_layout ... ok
|
||||||
|
test dev_brain::tests::parser_and_index_rebuild_ignore_links_in_code ... ok
|
||||||
|
test engine::validation::tests::installed_dspark_fixture_passes_the_target_layout ... ok
|
||||||
|
test engine::validation::tests::mxfp4_is_limited_to_routed_experts ... ok
|
||||||
|
test engine::tokenizer::issue111::qwen_split_boundaries ... ok
|
||||||
|
test extensions::tests::duplicate_skill_names_and_update_rollback_are_deterministic ... ok
|
||||||
|
test dev_brain::tests::validation_names_every_drifted_source_and_requires_semantic_refresh ... ok
|
||||||
|
test extensions::tests::hook_output_is_bounded_typed_and_event_matched ... ok
|
||||||
|
test engine::sampling_tests::probability_ratio_speculation_preserves_the_target_distribution ... ok
|
||||||
|
test extensions::tests::manifest_and_paths_are_validated_without_following_escapes ... ok
|
||||||
|
test extensions::tests::pinned_ponytail_runs_all_lifecycle_modes ... ignored, downloads the pinned Ponytail reference integration
|
||||||
|
test extensions::tests::registry_persists_enable_disable_errors_and_uninstall ... ok
|
||||||
|
test extensions::tests::symlink_and_variable_escapes_are_rejected ... ok
|
||||||
|
test instructions::tests::changes_removals_resume_and_compaction_are_append_only ... ok
|
||||||
|
test instructions::tests::discovery_is_global_to_local_deduplicated_and_confined ... ok
|
||||||
|
test instructions::tests::empty_and_repaired_baselines_do_not_repeat_prompt_content ... ok
|
||||||
|
test engine::metal::qwen_mtplx::array::mtplx_array_releases_sibling_cycles_and_deep_input_graphs ... ok
|
||||||
|
test instructions::tests::newly_crossed_scope_is_added_once_and_unavailable_content_is_retained ... ok
|
||||||
|
test metrics::tests::cache_report_splits_buckets_and_folds_index_files_into_their_checkpoint ... ok
|
||||||
|
test metrics::tests::decode_timer_excludes_later_work_and_resets_between_requests ... ok
|
||||||
|
test metrics::tests::prompt_timing_keeps_unmeasured_components_distinct_from_zero ... ok
|
||||||
|
test metrics::tests::removed_preview_metric_code_stays_decodable ... ok
|
||||||
|
test metrics::tests::snapshots_track_runtime_and_server_counters ... ok
|
||||||
|
test model::qwen::qwen_vision_is_an_independent_managed_artifact_set ... ok
|
||||||
|
test model::qwen::tests::embedded_manifest_is_the_frozen_complete_set ... ok
|
||||||
|
test model::qwen::tests::verification_rejects_hash_mismatch_and_honors_cancellation ... ok
|
||||||
|
test model::transfer::tests::cancellation_keeps_the_partial_file_for_the_next_run ... ok
|
||||||
|
test model::transfer::tests::catalog_and_checksum_verification_are_explicit ... ok
|
||||||
|
test model::transfer::tests::managed_artifact_inventory_and_delete_include_partial_files ... ok
|
||||||
|
test model::transfer::tests::qwen_set_verifies_reloads_and_removes_as_one_managed_artifact ... ignored, requires DS4_QWEN38_ARTIFACTS to point at the pinned 105 GB source
|
||||||
|
test instructions::tests::frames_escape_control_tags_and_enforce_utf8_byte_limits ... ok
|
||||||
|
test model::transfer::tests::restart_resumes_at_the_existing_partial_byte ... ok
|
||||||
|
test model::transfer::tests::verification_reports_bytes_read ... ok
|
||||||
|
test model_eval::tests::acceleration_receipt_reports_effective_sampling_contract ... ok
|
||||||
|
test model_eval::tests::acceleration_switch_uses_each_models_native_path ... ok
|
||||||
|
test model_eval::tests::canary_cross_phase_samples_keep_their_start_phase ... ok
|
||||||
|
test dev_brain::tests::skill_validation_and_default_guide_restore_are_strict ... ok
|
||||||
|
test model_eval::tests::evaluations_exclude_overlapping_workers_and_release_on_exit ... ok
|
||||||
|
test model_eval::tests::external_canary_observes_phases_and_finishes_on_eof ... ignored, Metal probe only; DS4SERVER_CANARY_BINARY must point to the current release binary
|
||||||
|
test model_eval::tests::external_canary_protocol_accepts_only_known_phases ... ok
|
||||||
|
test model_eval::tests::parses_safe_defaults_and_overrides ... ok
|
||||||
|
test model_eval::tests::rejects_unbounded_or_invalid_limits ... ok
|
||||||
|
test model_eval::tests::repeated_prompts_form_one_ordered_conversation ... ok
|
||||||
|
test model_eval::tests::warmup_timing_separates_loading_without_inventing_missing_durations ... ok
|
||||||
|
test dev_brain::tests::source_hash_drift_excludes_page_from_authoritative_queries ... ok
|
||||||
|
test model_eval::tests::worker_progress_events_advance_the_watchdog ... ok
|
||||||
|
test native_edit::tests::edit_history_supports_undo_and_redo ... ok
|
||||||
|
test native_edit::tests::paste_replays_a_complete_command_shortcut ... ok
|
||||||
|
test native_menu::tests::edit_items_are_custom_menu_events ... ok
|
||||||
|
test native_menu::tests::user_guide_uses_unmodified_f1 ... ok
|
||||||
|
test native_media::tests::media_player_only_accepts_remote_http_urls ... ok
|
||||||
|
test native_menu::tests::view_items_keep_the_selected_pane_checked ... ok
|
||||||
|
test runtime::tests::dropping_active_generation_cancels_it ... ok
|
||||||
|
test runtime::tests::operation_failures_use_the_matching_event ... ok
|
||||||
|
test runtime::tests::operation_tracking_is_consistent ... ok
|
||||||
|
test runtime::tests::runtime_panic_recovery_accepts_the_next_operation ... ok
|
||||||
|
test server::request::tests::reasoning_requests_preserve_each_models_exact_modes ... ok
|
||||||
|
test server::tests::connection_slots_enforce_the_limit_and_release_on_drop ... ok
|
||||||
|
test server::tests::canonical_tool_replay_preserves_argument_types ... ok
|
||||||
|
test server::tests::content_arrays_match_ds4_text_projection ... ok
|
||||||
|
test server::tests::cors_headers_are_opt_in_and_cover_preflight ... ok
|
||||||
|
test server::tests::dsml_tool_stream_projects_incremental_json_arguments ... ok
|
||||||
|
test server::tests::context_limit_errors_use_protocol_standard_fields ... ok
|
||||||
|
test server::tests::generated_dsml_becomes_openai_tool_calls ... ok
|
||||||
|
test server::tests::model_metadata_uses_the_requested_alias_and_default_token_limit ... ok
|
||||||
|
test server::tests::generated_tool_parser_accepts_ds4_recovery_syntaxes ... ok
|
||||||
|
test server::tests::protocol_tool_results_require_live_or_replayed_call_ids ... ok
|
||||||
|
test server::tests::responses_parser_rejects_dropped_state_and_preserves_hosted_calls ... ok
|
||||||
|
test server::tests::sampled_tool_replay_survives_server_restart ... ok
|
||||||
|
test server::tests::streaming_errors_match_ds4_server_framing ... ok
|
||||||
|
test dev_brain::tests::validation_keeps_broken_links_editable_and_reports_provenance_errors ... ok
|
||||||
|
test server::tests::tool_prompt_matches_ds4_server_text ... ok
|
||||||
|
test server::tests::tool_stream_projects_ds4_recovery_syntaxes ... ok
|
||||||
|
test settings::tests::captured_ds4_cli_options_are_uniquely_classified ... ok
|
||||||
|
test settings::tests::effective_settings_build_one_engine_and_turn_configuration ... ok
|
||||||
|
test settings::tests::effective_settings_preserve_unset_model_defaults ... ok
|
||||||
|
test settings::tests::execution_settings_keep_ds4_automatic_values_and_glm_rules ... ok
|
||||||
|
test settings::tests::kv_cache_gates_follow_the_ds4_store_rules ... ok
|
||||||
|
test settings::tests::reasoning_selection_is_exact_and_model_specific ... ok
|
||||||
|
test settings::tests::runtime_settings_preserve_automatic_values_and_cross_field_rules ... ok
|
||||||
|
test settings::tests::speculative_settings_match_acceleration_defaults_and_dependencies ... ok
|
||||||
|
test dev_brain::tests::verified_skills_are_indexed_and_injected_on_demand ... ok
|
||||||
|
test server::tests::streaming_prefill_keeps_the_client_connection_alive ... ok
|
||||||
|
test dev_brain::tests::source_versions_follow_that_file_instead_of_the_whole_worktree ... ok
|
||||||
|
test model_eval::tests::cpu_accounting_matches_getrusage_units ... ok
|
||||||
|
test engine::validation::tests::installed_ds4_fixture_opens_and_renders_a_prompt ... ok
|
||||||
|
test model::transfer::tests::stalled_download_times_out_and_keeps_the_partial_file ... ok
|
||||||
|
test extensions::tests::direct_hook_runner_isolated_environment_and_handles_failures ... ok
|
||||||
|
test server::tests::request_deadline_stops_slow_clients ... ok
|
||||||
|
test engine::sampling_tests::ds4_sampler_matches_original_reference_tokens_and_rng ... ok
|
||||||
|
test agent::tests::execution_failures_and_timeouts_have_distinct_codes ... ok
|
||||||
|
kill: 95283: No such process
|
||||||
|
test agent::tests::dropping_session_tools_stops_live_jobs_and_removes_output ... ok
|
||||||
|
test engine::qwen_vision::qwen_image_preprocessing_matches_pillow_mtplx ... ok
|
||||||
|
test agent::tests::local_file_and_bash_tools_execute_in_the_project ... ok
|
||||||
|
test extensions::tests::lifecycle_matchers_preserve_declared_event_order ... ok
|
||||||
|
test engine::metal::qwen_mtplx_tests::mtplx_runtime_shaders_are_pinned ... ok
|
||||||
|
test extensions::tests::hook_failures_are_bounded_actionable_and_non_shell ... ok
|
||||||
|
test engine::metal::qwen_mtplx::sampling::mtplx_sampler_mixed_distributions_match_reference ... ok
|
||||||
|
|
||||||
|
test result: ok. 313 passed; 0 failed; 236 ignored; 0 measured; 0 filtered out; finished in 5.62s
|
||||||
|
|
||||||
|
Running unittests tools/qwen38-artifacts.rs (target/debug/deps/qwen38_artifacts-1288d410762a1a77)
|
||||||
|
|
||||||
|
running 4 tests
|
||||||
|
test tests::artifact_names_cannot_escape_the_output_directory ... ok
|
||||||
|
test tests::affine_sample_digest_uses_packed_values_scales_and_biases ... ok
|
||||||
|
test tests::safetensors_validation_rejects_duplicate_names_and_invalid_ranges ... ok
|
||||||
|
test tests::artifact_download_resumes_an_authenticated_partial ... ok
|
||||||
|
|
||||||
|
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
|
||||||
|
|
||||||
|
Running unittests tools/test-supervisor.rs (target/debug/deps/test_supervisor-df80f419c8443a12)
|
||||||
|
|
||||||
|
running 4 tests
|
||||||
|
test supervisor::tests::direct_worker_arguments_are_not_rust_test_arguments ... ok
|
||||||
|
test supervisor::tests::split_records_cannot_be_interleaved_with_watchdog_samples ... ok
|
||||||
|
test supervisor::tests::split_probe_records_do_not_reset_progress ... ok
|
||||||
|
ready{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
ready
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
{"event":"gpu_canary_sample","ok":true}
|
||||||
|
progressprogressprogressprogressprogressprogressprogressprogresstest supervisor::tests::watchdog_stops_memory_and_silence_but_not_total_runtime ... ok
|
||||||
|
|
||||||
|
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.30s
|
||||||
@@ -86,6 +86,7 @@ mod stream;
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod submission;
|
mod submission;
|
||||||
mod unary;
|
mod unary;
|
||||||
|
mod verify_sdpa;
|
||||||
mod views;
|
mod views;
|
||||||
mod vision;
|
mod vision;
|
||||||
mod vision_kernels;
|
mod vision_kernels;
|
||||||
|
|||||||
@@ -376,6 +376,7 @@ fn mtplx_decoder_connected_attention_and_moe_advance_caches() {
|
|||||||
},
|
},
|
||||||
qsa: qsa_attention::Options {
|
qsa: qsa_attention::Options {
|
||||||
verify_gate: false,
|
verify_gate: false,
|
||||||
|
head_chunk: false, // Historical unchunked oracle fixture.
|
||||||
indexer: QsaIndexerOptions {
|
indexer: QsaIndexerOptions {
|
||||||
fused: false,
|
fused: false,
|
||||||
compiled: false,
|
compiled: false,
|
||||||
|
|||||||
@@ -186,6 +186,7 @@ impl Options {
|
|||||||
},
|
},
|
||||||
qsa: qsa_attention::Options {
|
qsa: qsa_attention::Options {
|
||||||
verify_gate: false,
|
verify_gate: false,
|
||||||
|
head_chunk: super::policy::sdpa_head_chunk_enabled(&get),
|
||||||
indexer: QsaIndexerOptions {
|
indexer: QsaIndexerOptions {
|
||||||
fused: flag("MTPLX_FUSED_QSA_INDEXER"),
|
fused: flag("MTPLX_FUSED_QSA_INDEXER"),
|
||||||
compiled: flag("MTPLX_COMPILED_QSA_INDEXER"),
|
compiled: flag("MTPLX_COMPILED_QSA_INDEXER"),
|
||||||
|
|||||||
@@ -391,6 +391,7 @@ fn issue103_vision_position_receipts() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
let mut options = Options {
|
let mut options = Options {
|
||||||
verify_gate: false,
|
verify_gate: false,
|
||||||
|
head_chunk: false, // Historical unchunked oracle fixture.
|
||||||
indexer: super::QsaIndexerOptions {
|
indexer: super::QsaIndexerOptions {
|
||||||
fused: false,
|
fused: false,
|
||||||
compiled: false,
|
compiled: false,
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ fn issue106_complete_state_and_checkpoint_recovery() {
|
|||||||
context: 4096,
|
context: 4096,
|
||||||
vocabulary: metadata.tokenizer.vocab_size() as u32,
|
vocabulary: metadata.tokenizer.vocab_size() as u32,
|
||||||
mtp: true,
|
mtp: true,
|
||||||
|
head_chunk: super::policy::sdpa_head_chunk_enabled(|key| std::env::var(key).ok()),
|
||||||
};
|
};
|
||||||
let mut live = LiveSession::default();
|
let mut live = LiveSession::default();
|
||||||
assert_eq!(&std::fs::read(&old).unwrap()[..8], b"QWMTKV01");
|
assert_eq!(&std::fs::read(&old).unwrap()[..8], b"QWMTKV01");
|
||||||
|
|||||||
@@ -8,6 +8,16 @@ use crate::settings::{
|
|||||||
#[test]
|
#[test]
|
||||||
#[ignore = "installed model; serial external memory supervisor required"]
|
#[ignore = "installed model; serial external memory supervisor required"]
|
||||||
fn issue109_verify_rows_and_warm_checkpoint() {
|
fn issue109_verify_rows_and_warm_checkpoint() {
|
||||||
|
verify_rows_and_warm_checkpoint(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[ignore = "installed model and actual pre-head-chunk checkpoint; serial external memory supervisor"]
|
||||||
|
fn issue113_default_verify_and_checkpoint() {
|
||||||
|
verify_rows_and_warm_checkpoint(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn verify_rows_and_warm_checkpoint(old_gate: bool) {
|
||||||
assert_eq!(std::env::var("MTPLX_CONTEXT_COPY").as_deref(), Ok("0"));
|
assert_eq!(std::env::var("MTPLX_CONTEXT_COPY").as_deref(), Ok("0"));
|
||||||
let root = std::path::PathBuf::from(std::env::var_os("DS4_QWEN38_ARTIFACTS").unwrap());
|
let root = std::path::PathBuf::from(std::env::var_os("DS4_QWEN38_ARTIFACTS").unwrap());
|
||||||
let directory = std::path::PathBuf::from(std::env::var_os("DS4_ISSUE109_DIR").unwrap());
|
let directory = std::path::PathBuf::from(std::env::var_os("DS4_ISSUE109_DIR").unwrap());
|
||||||
@@ -151,13 +161,25 @@ fn issue109_verify_rows_and_warm_checkpoint() {
|
|||||||
owner
|
owner
|
||||||
.save_checkpoint(&directory.join("new.bin"), [109; 32], &mut |_| {})
|
.save_checkpoint(&directory.join("new.bin"), [109; 32], &mut |_| {})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let old = std::path::PathBuf::from(std::env::var_os("DS4_ISSUE109_OLD").unwrap());
|
let old = std::path::PathBuf::from(
|
||||||
assert!(
|
std::env::var_os(if old_gate {
|
||||||
owner
|
"DS4_ISSUE109_OLD"
|
||||||
.load_checkpoint(&old, &mut |_| {})
|
} else {
|
||||||
.unwrap_err()
|
"DS4_ISSUE113_OLD"
|
||||||
.contains("obsolete MTP attention-gate")
|
})
|
||||||
|
.unwrap(),
|
||||||
);
|
);
|
||||||
|
let reject_old = old_gate || owner.identity.head_chunk;
|
||||||
|
let loaded = owner.load_checkpoint(&old, &mut |_| {});
|
||||||
|
if reject_old {
|
||||||
|
assert!(loaded.unwrap_err().contains(if old_gate {
|
||||||
|
"obsolete MTP attention-gate"
|
||||||
|
} else {
|
||||||
|
"SDPA head-chunk policy differs"
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
assert!(loaded.unwrap());
|
||||||
|
}
|
||||||
assert_eq!(original, state(&owner));
|
assert_eq!(original, state(&owner));
|
||||||
let mut next = messages.clone();
|
let mut next = messages.clone();
|
||||||
next.push(first.message.clone());
|
next.push(first.message.clone());
|
||||||
@@ -179,6 +201,6 @@ fn issue109_verify_rows_and_warm_checkpoint() {
|
|||||||
assert_eq!(expected, state(&owner));
|
assert_eq!(expected, state(&owner));
|
||||||
println!(
|
println!(
|
||||||
"{}",
|
"{}",
|
||||||
serde_json::json!({"case":"checkpoint","actual_old_rejected":true,"warm_reopened_state_exact":true})
|
serde_json::json!({"case":"checkpoint","actual_old_rejected":reject_old,"warm_reopened_state_exact":true})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -42,6 +42,7 @@ impl QwenExecutor {
|
|||||||
vocabulary: u32::try_from(metadata.tokenizer.vocab_size())
|
vocabulary: u32::try_from(metadata.tokenizer.vocab_size())
|
||||||
.map_err(|e| e.to_string())?,
|
.map_err(|e| e.to_string())?,
|
||||||
mtp: settings.speculative.glm_mtp,
|
mtp: settings.speculative.glm_mtp,
|
||||||
|
head_chunk: super::policy::sdpa_head_chunk_enabled(|key| std::env::var(key).ok()),
|
||||||
};
|
};
|
||||||
let (execution, policy) = Execution::open(settings)?;
|
let (execution, policy) = Execution::open(settings)?;
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ fn falsey(value: Option<&str>) -> bool {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(super) fn sdpa_head_chunk_enabled(get: impl Fn(&'static str) -> Option<String>) -> bool {
|
||||||
|
!falsey(get("MTPLX_QWEN4_VERIFY_SDPA_HEAD_CHUNK").as_deref())
|
||||||
|
}
|
||||||
|
|
||||||
pub(super) fn sorted_gather_enabled(get: impl Fn(&'static str) -> Option<String>) -> bool {
|
pub(super) fn sorted_gather_enabled(get: impl Fn(&'static str) -> Option<String>) -> bool {
|
||||||
!falsey(get("MTPLX_MOE_SORTED_GATHER_KERNEL").as_deref())
|
!falsey(get("MTPLX_MOE_SORTED_GATHER_KERNEL").as_deref())
|
||||||
&& !truthy(get("MTPLX_FORCE_GPU_FAMILY_FALLBACK").as_deref())
|
&& !truthy(get("MTPLX_FORCE_GPU_FAMILY_FALLBACK").as_deref())
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ pub(super) struct Attention<'a> {
|
|||||||
/// Resolved original request-phase/environment switches, not new heuristics.
|
/// Resolved original request-phase/environment switches, not new heuristics.
|
||||||
pub(super) struct Options {
|
pub(super) struct Options {
|
||||||
pub(super) verify_gate: bool,
|
pub(super) verify_gate: bool,
|
||||||
|
pub(super) head_chunk: bool,
|
||||||
pub(super) indexer: QsaIndexerOptions,
|
pub(super) indexer: QsaIndexerOptions,
|
||||||
pub(super) flash_min_context: u32,
|
pub(super) flash_min_context: u32,
|
||||||
pub(super) prefill_gather: bool,
|
pub(super) prefill_gather: bool,
|
||||||
@@ -351,8 +352,15 @@ impl Attention<'_> {
|
|||||||
}
|
}
|
||||||
_ => return Err("unconsumed QSA attention selection".into()),
|
_ => return Err("unconsumed QSA attention selection".into()),
|
||||||
};
|
};
|
||||||
let out =
|
let out = super::verify_sdpa::call(
|
||||||
attention::scaled_dot_product(&q, &k, &v, mask.as_ref(), self.scale as f32, stream)?;
|
&q,
|
||||||
|
&k,
|
||||||
|
&v,
|
||||||
|
mask.as_ref(),
|
||||||
|
self.scale as f32,
|
||||||
|
options.head_chunk,
|
||||||
|
stream,
|
||||||
|
)?;
|
||||||
self.finish(
|
self.finish(
|
||||||
&ops::transpose(&out, &[0, 2, 1, 3], stream)?,
|
&ops::transpose(&out, &[0, 2, 1, 3], stream)?,
|
||||||
&gate,
|
&gate,
|
||||||
@@ -546,6 +554,7 @@ fn mtplx_qsa_attention_module_matches_reference() {
|
|||||||
};
|
};
|
||||||
let options = Options {
|
let options = Options {
|
||||||
verify_gate: false,
|
verify_gate: false,
|
||||||
|
head_chunk: false, // Historical unchunked oracle fixture.
|
||||||
indexer: qsa_indexer_options(&first["options"]),
|
indexer: qsa_indexer_options(&first["options"]),
|
||||||
flash_min_context: first["flash_min"].as_u64().unwrap() as u32,
|
flash_min_context: first["flash_min"].as_u64().unwrap() as u32,
|
||||||
prefill_gather: first["prefill_gather"].as_bool().unwrap(),
|
prefill_gather: first["prefill_gather"].as_bool().unwrap(),
|
||||||
|
|||||||
@@ -532,6 +532,9 @@ fn mtplx_full_installed_chat_matches_reference() {
|
|||||||
context: settings.context_tokens as u32,
|
context: settings.context_tokens as u32,
|
||||||
vocabulary: metadata.tokenizer.vocab_size() as u32,
|
vocabulary: metadata.tokenizer.vocab_size() as u32,
|
||||||
mtp,
|
mtp,
|
||||||
|
head_chunk: super::policy::sdpa_head_chunk_enabled(|key| {
|
||||||
|
std::env::var(key).ok()
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
let key = crate::engine::conversation_key(
|
let key = crate::engine::conversation_key(
|
||||||
&settings.system_prompt,
|
&settings.system_prompt,
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ pub(super) struct Identity {
|
|||||||
pub(super) context: u32,
|
pub(super) context: u32,
|
||||||
pub(super) vocabulary: u32,
|
pub(super) vocabulary: u32,
|
||||||
pub(super) mtp: bool,
|
pub(super) mtp: bool,
|
||||||
|
#[serde(default)]
|
||||||
|
pub(super) head_chunk: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
@@ -182,7 +184,11 @@ impl LiveSession {
|
|||||||
file.read_exact(&mut raw).map_err(|e| e.to_string())?;
|
file.read_exact(&mut raw).map_err(|e| e.to_string())?;
|
||||||
let mut manifest: Manifest = serde_json::from_slice(&raw).map_err(|e| e.to_string())?;
|
let mut manifest: Manifest = serde_json::from_slice(&raw).map_err(|e| e.to_string())?;
|
||||||
progress(HEADER_BYTES + raw.len() as u64);
|
progress(HEADER_BYTES + raw.len() as u64);
|
||||||
if manifest.identity != identity {
|
if (Identity {
|
||||||
|
head_chunk: identity.head_chunk,
|
||||||
|
..manifest.identity
|
||||||
|
}) != identity
|
||||||
|
{
|
||||||
return Err(
|
return Err(
|
||||||
"Qwen checkpoint does not match the current model/context/MTP policy".into(),
|
"Qwen checkpoint does not match the current model/context/MTP policy".into(),
|
||||||
);
|
);
|
||||||
@@ -196,6 +202,14 @@ impl LiveSession {
|
|||||||
"Qwen checkpoint uses obsolete MTP attention-gate math; rebuild the cache".into(),
|
"Qwen checkpoint uses obsolete MTP attention-gate math; rebuild the cache".into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// The route also changes short dense prefills, not just MTP verify.
|
||||||
|
// A <=3-token AR prefix cannot have executed a >=3-row body, whereas
|
||||||
|
// MTP can retain a short frontier from a wider verification window.
|
||||||
|
if manifest.identity.head_chunk != identity.head_chunk
|
||||||
|
&& (identity.mtp || manifest.tokens.len() >= 4)
|
||||||
|
{
|
||||||
|
return Err("Qwen checkpoint SDPA head-chunk policy differs; rebuild the cache".into());
|
||||||
|
}
|
||||||
// Old files do not record prefill chunk sizes or producer hardware.
|
// Old files do not record prefill chunk sizes or producer hardware.
|
||||||
// At ten routes/token this length can contain an affected chunk;
|
// At ten routes/token this length can contain an affected chunk;
|
||||||
// shorter sessions cannot. Reject before allocating/restoring state.
|
// shorter sessions cannot. Reject before allocating/restoring state.
|
||||||
@@ -312,6 +326,7 @@ fn qwen_checkpoint_roundtrip_and_failed_restore_preserve_live_state() {
|
|||||||
context: 64,
|
context: 64,
|
||||||
vocabulary: 256,
|
vocabulary: 256,
|
||||||
mtp: true,
|
mtp: true,
|
||||||
|
head_chunk: super::policy::sdpa_head_chunk_enabled(|key| std::env::var(key).ok()),
|
||||||
};
|
};
|
||||||
let directory =
|
let directory =
|
||||||
std::path::PathBuf::from(std::env::var_os("DS4_QWEN38_CHECKPOINT_DIR").unwrap());
|
std::path::PathBuf::from(std::env::var_os("DS4_QWEN38_CHECKPOINT_DIR").unwrap());
|
||||||
@@ -522,6 +537,87 @@ fn qwen_checkpoint_roundtrip_and_failed_restore_preserve_live_state() {
|
|||||||
.contains("sorted-gather row guard")
|
.contains("sorted-gather row guard")
|
||||||
);
|
);
|
||||||
assert_eq!(fingerprint(&live), ar_original);
|
assert_eq!(fingerprint(&live), ar_original);
|
||||||
|
// Policy changes in either direction invalidate affected checkpoints;
|
||||||
|
// missing metadata is the actual pre-port (unchunked) policy.
|
||||||
|
for mtp in [false, true] {
|
||||||
|
for count in [1, 3, 4] {
|
||||||
|
for produced in [false, true] {
|
||||||
|
let saved = live.current.as_mut().unwrap();
|
||||||
|
saved.token_ids = vec![1; count];
|
||||||
|
saved.mtp = mtp.then(|| vec![None]);
|
||||||
|
saved.boundaries.clear();
|
||||||
|
let producer = Identity {
|
||||||
|
mtp,
|
||||||
|
head_chunk: produced,
|
||||||
|
..identity
|
||||||
|
};
|
||||||
|
live.save_checkpoint(
|
||||||
|
&path,
|
||||||
|
producer,
|
||||||
|
[113; 32],
|
||||||
|
&streams,
|
||||||
|
stream,
|
||||||
|
|_| {},
|
||||||
|
|| false,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let original = fingerprint(&live);
|
||||||
|
let bytes = fs::read(&path).unwrap();
|
||||||
|
let offset = u64::from_le_bytes(bytes[8..16].try_into().unwrap()) as usize;
|
||||||
|
for legacy in [false, true] {
|
||||||
|
if legacy && produced {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let mut manifest: serde_json::Value =
|
||||||
|
serde_json::from_slice(&bytes[offset..]).unwrap();
|
||||||
|
if legacy {
|
||||||
|
manifest["identity"]
|
||||||
|
.as_object_mut()
|
||||||
|
.unwrap()
|
||||||
|
.remove("head_chunk");
|
||||||
|
}
|
||||||
|
let raw = serde_json::to_vec(&manifest).unwrap();
|
||||||
|
let mut file = bytes[..offset].to_vec();
|
||||||
|
file.extend(&raw);
|
||||||
|
fs::write(&broken, file).unwrap();
|
||||||
|
for consumed in [false, true] {
|
||||||
|
let consumer = Identity {
|
||||||
|
head_chunk: consumed,
|
||||||
|
..producer
|
||||||
|
};
|
||||||
|
let mut read = 0;
|
||||||
|
let result = live.load_checkpoint(
|
||||||
|
&broken,
|
||||||
|
consumer,
|
||||||
|
&streams,
|
||||||
|
stream,
|
||||||
|
|n| read += n,
|
||||||
|
|| false,
|
||||||
|
);
|
||||||
|
if produced != consumed && (mtp || count >= 4) {
|
||||||
|
assert!(
|
||||||
|
result
|
||||||
|
.unwrap_err()
|
||||||
|
.contains("SDPA head-chunk policy differs")
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
read,
|
||||||
|
HEADER_BYTES + raw.len() as u64,
|
||||||
|
"rejected before tensor reads"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
assert!(result.unwrap());
|
||||||
|
}
|
||||||
|
assert_eq!(fingerprint(&live), original);
|
||||||
|
assert_eq!(live.current.as_ref().unwrap().token_ids, vec![1; count]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!(
|
||||||
|
"#113 SDPA policy: legacy/current, both directions, AR/MTP, 1/3/4-token frontiers; exact compatible restore and incompatible rejection before tensor reads"
|
||||||
|
);
|
||||||
println!(
|
println!(
|
||||||
"Qwen sorted-gather checkpoint policy: old short state exact, possibly affected long state rejected before restore"
|
"Qwen sorted-gather checkpoint policy: old short state exact, possibly affected long state rejected before restore"
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,267 @@
|
|||||||
|
//! Pinned qwen4_exp._verify_sdpa; selected by geometry, not attention phase.
|
||||||
|
use super::array::Array;
|
||||||
|
use super::stream::Stream;
|
||||||
|
use super::{attention, ops};
|
||||||
|
|
||||||
|
pub(super) fn plan(rows: i32, heads: i32, kv_heads: i32) -> Option<(i32, i32)> {
|
||||||
|
if kv_heads <= 0 || heads % kv_heads != 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
let gqa = heads / kv_heads;
|
||||||
|
if gqa <= 0 || i64::from(rows) * i64::from(gqa) <= 32 || rows > 32 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
let width = (32 / rows.max(1)).min(gqa).max(1);
|
||||||
|
Some((width, kv_heads * ((gqa - 1) / width + 1)))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(super) fn call(
|
||||||
|
q: &Array,
|
||||||
|
k: &Array,
|
||||||
|
v: &Array,
|
||||||
|
mask: Option<&Array>,
|
||||||
|
scale: f32,
|
||||||
|
enabled: bool,
|
||||||
|
stream: Stream,
|
||||||
|
) -> Result<Array, String> {
|
||||||
|
let qs = q.layout().shape().to_vec();
|
||||||
|
let ks = k.layout().shape().to_vec();
|
||||||
|
if qs.len() != 4 || ks.len() != 4 {
|
||||||
|
return Err("Qwen SDPA expects rank-four queries and keys".into());
|
||||||
|
}
|
||||||
|
let Some((width, chunks)) = enabled.then(|| plan(qs[2], qs[1], ks[1])).flatten() else {
|
||||||
|
return attention::scaled_dot_product(q, k, v, mask, scale, stream);
|
||||||
|
};
|
||||||
|
static ENGAGED: std::sync::Once = std::sync::Once::new();
|
||||||
|
ENGAGED.call_once(|| {
|
||||||
|
eprintln!(
|
||||||
|
"[mtplx] verify SDPA head-chunked: q_len={} heads_per_chunk={width} chunks={chunks}",
|
||||||
|
qs[2]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
let gqa = qs[1] / ks[1];
|
||||||
|
let qg = ops::reshape(q, &[qs[0], ks[1], gqa, qs[2], qs[3]], stream)?;
|
||||||
|
let mut outputs = Vec::with_capacity(chunks as usize);
|
||||||
|
for group in 0..ks[1] {
|
||||||
|
let kv = |a: &Array| {
|
||||||
|
let mut end = a.layout().shape().to_vec();
|
||||||
|
end[1] = group + 1;
|
||||||
|
ops::slice(a, &[0, group, 0, 0], &end, &[1; 4], stream)
|
||||||
|
};
|
||||||
|
let kj = kv(k)?;
|
||||||
|
let vj = kv(v)?;
|
||||||
|
for start in (0..gqa).step_by(width as usize) {
|
||||||
|
let end = (start + width).min(gqa);
|
||||||
|
let qc = ops::squeeze(
|
||||||
|
&ops::slice(
|
||||||
|
&qg,
|
||||||
|
&[0, group, start, 0, 0],
|
||||||
|
&[qs[0], group + 1, end, qs[2], qs[3]],
|
||||||
|
&[1; 5],
|
||||||
|
stream,
|
||||||
|
)?,
|
||||||
|
Some(&[1]),
|
||||||
|
stream,
|
||||||
|
)?;
|
||||||
|
// The pinned wrapper passes the original mask unchanged. The
|
||||||
|
// primitive broadcasts it or rejects incompatible head dimensions.
|
||||||
|
outputs.push(attention::scaled_dot_product(
|
||||||
|
&qc, &kj, &vj, mask, scale, stream,
|
||||||
|
)?);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ops::concatenate(&outputs, 1, stream)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn issue113_plan_and_policy_match_pinned_oracle() {
|
||||||
|
let fixture: serde_json::Value = serde_json::from_str(include_str!(
|
||||||
|
"../../../../tests/fixtures/mtplx-head-chunk.json"
|
||||||
|
))
|
||||||
|
.unwrap();
|
||||||
|
let plans = fixture["plans"].as_array().unwrap();
|
||||||
|
assert_eq!(plans.len(), 520);
|
||||||
|
for p in plans {
|
||||||
|
let n = |k| p[k].as_i64().unwrap() as i32;
|
||||||
|
assert_eq!(
|
||||||
|
serde_json::to_value(plan(n("rows"), n("heads"), n("kv"))).unwrap(),
|
||||||
|
p["plan"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
for (value, expected) in [
|
||||||
|
(None, true),
|
||||||
|
(Some(""), true),
|
||||||
|
(Some("unexpected"), true),
|
||||||
|
(Some("0"), false),
|
||||||
|
(Some(" FALSE "), false),
|
||||||
|
(Some("Off"), false),
|
||||||
|
(Some("NO"), false),
|
||||||
|
] {
|
||||||
|
assert_eq!(
|
||||||
|
super::policy::sdpa_head_chunk_enabled(|_| value.map(str::to_owned)),
|
||||||
|
expected
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[ignore = "Metal, pinned head-chunk numerical and dispatch fixtures; serial supervisor"]
|
||||||
|
fn issue113_head_chunk_outputs_and_dispatch() {
|
||||||
|
use super::super::{
|
||||||
|
gpu::Context,
|
||||||
|
qwen_mtplx_tests::{capture_dispatches, hex_digest, pattern},
|
||||||
|
};
|
||||||
|
use super::array::Dtype;
|
||||||
|
super::configure_sources().unwrap();
|
||||||
|
let _context = Context::open_qwen(0).unwrap();
|
||||||
|
let streams = super::stream::Streams::new(Some(super::allocator::Allocator::new().unwrap()));
|
||||||
|
let gpu = streams.default_stream(super::stream::Device::Gpu).unwrap();
|
||||||
|
let fixture: serde_json::Value = serde_json::from_str(include_str!(
|
||||||
|
"../../../../tests/fixtures/mtplx-head-chunk.json"
|
||||||
|
))
|
||||||
|
.unwrap();
|
||||||
|
let cases = fixture["cases"].as_array().unwrap();
|
||||||
|
assert_eq!(cases.len(), 216);
|
||||||
|
for (index, c) in cases.iter().enumerate() {
|
||||||
|
let n = |k| c[k].as_i64().unwrap() as i32;
|
||||||
|
let (b, h, kv, r, t) = (n("batch"), n("heads"), n("kv"), n("rows"), n("total"));
|
||||||
|
let bf = |shape: &[i32], salt| {
|
||||||
|
Array::new(
|
||||||
|
shape,
|
||||||
|
Dtype::BF16,
|
||||||
|
pattern(shape.iter().map(|&x| x as u32).product(), salt),
|
||||||
|
)
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
let q = ops::transpose(&bf(&[b, r, h, 256], 93), &[0, 2, 1, 3], gpu).unwrap();
|
||||||
|
let source = |salt| {
|
||||||
|
ops::slice(
|
||||||
|
&bf(&[b, kv, t + 7, 256], salt),
|
||||||
|
&[0, 0, 2, 0],
|
||||||
|
&[b, kv, t + 2, 256],
|
||||||
|
&[1; 4],
|
||||||
|
gpu,
|
||||||
|
)
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
let (k, v) = (source(94), source(95));
|
||||||
|
let mode = c["mode"].as_str().unwrap();
|
||||||
|
let mask = if mode == "none" {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
let mh = if mode == "heads" {
|
||||||
|
h
|
||||||
|
} else if mode == "local" {
|
||||||
|
4
|
||||||
|
} else {
|
||||||
|
1
|
||||||
|
};
|
||||||
|
let mut bytes = Vec::new();
|
||||||
|
for head in 0..mh {
|
||||||
|
for row in 0..r {
|
||||||
|
for col in 0..t {
|
||||||
|
let on = col <= t - r + row && (col + head) % 3 != 1 && row != 1;
|
||||||
|
if mode == "add" {
|
||||||
|
bytes.extend((if on { 0u16 } else { 0xc120 }).to_le_bytes());
|
||||||
|
} else {
|
||||||
|
bytes.push(u8::from(on));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let shape = if mode == "two_dim" {
|
||||||
|
vec![r, t]
|
||||||
|
} else {
|
||||||
|
vec![1, mh, r, t]
|
||||||
|
};
|
||||||
|
Some(
|
||||||
|
Array::new(
|
||||||
|
&shape,
|
||||||
|
if mode == "add" {
|
||||||
|
Dtype::BF16
|
||||||
|
} else {
|
||||||
|
Dtype::Bool
|
||||||
|
},
|
||||||
|
super::scalar_buffer(&bytes).unwrap(),
|
||||||
|
)
|
||||||
|
.unwrap(),
|
||||||
|
)
|
||||||
|
};
|
||||||
|
let result = call(
|
||||||
|
&q,
|
||||||
|
&k,
|
||||||
|
&v,
|
||||||
|
mask.as_ref(),
|
||||||
|
0.0625,
|
||||||
|
c["enabled"].as_bool().unwrap(),
|
||||||
|
gpu,
|
||||||
|
);
|
||||||
|
if c.get("error").is_some() {
|
||||||
|
assert!(
|
||||||
|
result.is_err(),
|
||||||
|
"case {index}: expected oracle mask/shape rejection"
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let output = result.unwrap_or_else(|e| panic!("case {index}: {e}"));
|
||||||
|
let chunked = c["enabled"].as_bool().unwrap() && plan(r, h, kv).is_some();
|
||||||
|
let outputs = if chunked {
|
||||||
|
output.inputs().clone()
|
||||||
|
} else {
|
||||||
|
vec![output.clone()]
|
||||||
|
};
|
||||||
|
let calls = c["calls"].as_array().unwrap();
|
||||||
|
assert_eq!(outputs.len(), calls.len(), "case {index}");
|
||||||
|
for (part, expected) in outputs.iter().zip(calls) {
|
||||||
|
assert_eq!(
|
||||||
|
serde_json::json!(part.layout().shape()),
|
||||||
|
expected["q"],
|
||||||
|
"case {index}"
|
||||||
|
);
|
||||||
|
if matches!(
|
||||||
|
part.operation().as_deref(),
|
||||||
|
Some(super::ops::Operation::SdpaVector { .. })
|
||||||
|
) {
|
||||||
|
for (input, name) in part.inputs().iter().take(3).zip(["q", "k", "v"]) {
|
||||||
|
assert_eq!(
|
||||||
|
serde_json::json!(input.layout().shape()),
|
||||||
|
expected[name],
|
||||||
|
"case {index}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
drop(outputs);
|
||||||
|
let (_, dispatches) = capture_dispatches(|| {
|
||||||
|
ops::evaluate(&streams, std::slice::from_ref(&output), gpu, false).unwrap()
|
||||||
|
});
|
||||||
|
let fused = dispatches
|
||||||
|
.iter()
|
||||||
|
.filter(|d| d.0.starts_with("sdpa_vector") && !d.0.starts_with("sdpa_vector_2pass_2"))
|
||||||
|
.count();
|
||||||
|
assert_eq!(
|
||||||
|
fused,
|
||||||
|
c["fused_primitives"].as_u64().unwrap() as usize,
|
||||||
|
"case {index}: {dispatches:?}"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
dispatches
|
||||||
|
.iter()
|
||||||
|
.filter(|d| d.0.contains("softmax"))
|
||||||
|
.count(),
|
||||||
|
calls.len() - fused,
|
||||||
|
"case {index}"
|
||||||
|
);
|
||||||
|
let mut bytes = vec![0; output.layout().nbytes()];
|
||||||
|
output.buffer().read(output.offset(), &mut bytes).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
hex_digest(&bytes),
|
||||||
|
c["sha256"].as_str().unwrap(),
|
||||||
|
"case {index}: {c}"
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
"{}",
|
||||||
|
serde_json::json!({"case":"head_chunk","index":index,"exact":true,"fused":fused,"subcalls":calls.len()})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
{"revision":"9882703f3105363ddc37eca9f97aa09a1d387112","mlx":"0.32.2","plans":[{"rows":-1,"heads":0,"kv":0,"plan":null},{"rows":-1,"heads":0,"kv":1,"plan":null},{"rows":-1,"heads":0,"kv":2,"plan":null},{"rows":-1,"heads":0,"kv":3,"plan":null},{"rows":-1,"heads":0,"kv":5,"plan":null},{"rows":-1,"heads":1,"kv":0,"plan":null},{"rows":-1,"heads":1,"kv":1,"plan":null},{"rows":-1,"heads":1,"kv":2,"plan":null},{"rows":-1,"heads":1,"kv":3,"plan":null},{"rows":-1,"heads":1,"kv":5,"plan":null},{"rows":-1,"heads":2,"kv":0,"plan":null},{"rows":-1,"heads":2,"kv":1,"plan":null},{"rows":-1,"heads":2,"kv":2,"plan":null},{"rows":-1,"heads":2,"kv":3,"plan":null},{"rows":-1,"heads":2,"kv":5,"plan":null},{"rows":-1,"heads":12,"kv":0,"plan":null},{"rows":-1,"heads":12,"kv":1,"plan":null},{"rows":-1,"heads":12,"kv":2,"plan":null},{"rows":-1,"heads":12,"kv":3,"plan":null},{"rows":-1,"heads":12,"kv":5,"plan":null},{"rows":-1,"heads":24,"kv":0,"plan":null},{"rows":-1,"heads":24,"kv":1,"plan":null},{"rows":-1,"heads":24,"kv":2,"plan":null},{"rows":-1,"heads":24,"kv":3,"plan":null},{"rows":-1,"heads":24,"kv":5,"plan":null},{"rows":-1,"heads":33,"kv":0,"plan":null},{"rows":-1,"heads":33,"kv":1,"plan":null},{"rows":-1,"heads":33,"kv":2,"plan":null},{"rows":-1,"heads":33,"kv":3,"plan":null},{"rows":-1,"heads":33,"kv":5,"plan":null},{"rows":-1,"heads":36,"kv":0,"plan":null},{"rows":-1,"heads":36,"kv":1,"plan":null},{"rows":-1,"heads":36,"kv":2,"plan":null},{"rows":-1,"heads":36,"kv":3,"plan":null},{"rows":-1,"heads":36,"kv":5,"plan":null},{"rows":-1,"heads":64,"kv":0,"plan":null},{"rows":-1,"heads":64,"kv":1,"plan":null},{"rows":-1,"heads":64,"kv":2,"plan":null},{"rows":-1,"heads":64,"kv":3,"plan":null},{"rows":-1,"heads":64,"kv":5,"plan":null},{"rows":0,"heads":0,"kv":0,"plan":null},{"rows":0,"heads":0,"kv":1,"plan":null},{"rows":0,"heads":0,"kv":2,"plan":null},{"rows":0,"heads":0,"kv":3,"plan":null},{"rows":0,"heads":0,"kv":5,"plan":null},{"rows":0,"heads":1,"kv":0,"plan":null},{"rows":0,"heads":1,"kv":1,"plan":null},{"rows":0,"heads":1,"kv":2,"plan":null},{"rows":0,"heads":1,"kv":3,"plan":null},{"rows":0,"heads":1,"kv":5,"plan":null},{"rows":0,"heads":2,"kv":0,"plan":null},{"rows":0,"heads":2,"kv":1,"plan":null},{"rows":0,"heads":2,"kv":2,"plan":null},{"rows":0,"heads":2,"kv":3,"plan":null},{"rows":0,"heads":2,"kv":5,"plan":null},{"rows":0,"heads":12,"kv":0,"plan":null},{"rows":0,"heads":12,"kv":1,"plan":null},{"rows":0,"heads":12,"kv":2,"plan":null},{"rows":0,"heads":12,"kv":3,"plan":null},{"rows":0,"heads":12,"kv":5,"plan":null},{"rows":0,"heads":24,"kv":0,"plan":null},{"rows":0,"heads":24,"kv":1,"plan":null},{"rows":0,"heads":24,"kv":2,"plan":null},{"rows":0,"heads":24,"kv":3,"plan":null},{"rows":0,"heads":24,"kv":5,"plan":null},{"rows":0,"heads":33,"kv":0,"plan":null},{"rows":0,"heads":33,"kv":1,"plan":null},{"rows":0,"heads":33,"kv":2,"plan":null},{"rows":0,"heads":33,"kv":3,"plan":null},{"rows":0,"heads":33,"kv":5,"plan":null},{"rows":0,"heads":36,"kv":0,"plan":null},{"rows":0,"heads":36,"kv":1,"plan":null},{"rows":0,"heads":36,"kv":2,"plan":null},{"rows":0,"heads":36,"kv":3,"plan":null},{"rows":0,"heads":36,"kv":5,"plan":null},{"rows":0,"heads":64,"kv":0,"plan":null},{"rows":0,"heads":64,"kv":1,"plan":null},{"rows":0,"heads":64,"kv":2,"plan":null},{"rows":0,"heads":64,"kv":3,"plan":null},{"rows":0,"heads":64,"kv":5,"plan":null},{"rows":1,"heads":0,"kv":0,"plan":null},{"rows":1,"heads":0,"kv":1,"plan":null},{"rows":1,"heads":0,"kv":2,"plan":null},{"rows":1,"heads":0,"kv":3,"plan":null},{"rows":1,"heads":0,"kv":5,"plan":null},{"rows":1,"heads":1,"kv":0,"plan":null},{"rows":1,"heads":1,"kv":1,"plan":null},{"rows":1,"heads":1,"kv":2,"plan":null},{"rows":1,"heads":1,"kv":3,"plan":null},{"rows":1,"heads":1,"kv":5,"plan":null},{"rows":1,"heads":2,"kv":0,"plan":null},{"rows":1,"heads":2,"kv":1,"plan":null},{"rows":1,"heads":2,"kv":2,"plan":null},{"rows":1,"heads":2,"kv":3,"plan":null},{"rows":1,"heads":2,"kv":5,"plan":null},{"rows":1,"heads":12,"kv":0,"plan":null},{"rows":1,"heads":12,"kv":1,"plan":null},{"rows":1,"heads":12,"kv":2,"plan":null},{"rows":1,"heads":12,"kv":3,"plan":null},{"rows":1,"heads":12,"kv":5,"plan":null},{"rows":1,"heads":24,"kv":0,"plan":null},{"rows":1,"heads":24,"kv":1,"plan":null},{"rows":1,"heads":24,"kv":2,"plan":null},{"rows":1,"heads":24,"kv":3,"plan":null},{"rows":1,"heads":24,"kv":5,"plan":null},{"rows":1,"heads":33,"kv":0,"plan":null},{"rows":1,"heads":33,"kv":1,"plan":[32,2]},{"rows":1,"heads":33,"kv":2,"plan":null},{"rows":1,"heads":33,"kv":3,"plan":null},{"rows":1,"heads":33,"kv":5,"plan":null},{"rows":1,"heads":36,"kv":0,"plan":null},{"rows":1,"heads":36,"kv":1,"plan":[32,2]},{"rows":1,"heads":36,"kv":2,"plan":null},{"rows":1,"heads":36,"kv":3,"plan":null},{"rows":1,"heads":36,"kv":5,"plan":null},{"rows":1,"heads":64,"kv":0,"plan":null},{"rows":1,"heads":64,"kv":1,"plan":[32,2]},{"rows":1,"heads":64,"kv":2,"plan":null},{"rows":1,"heads":64,"kv":3,"plan":null},{"rows":1,"heads":64,"kv":5,"plan":null}Line truncated
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
"""Strict default/off head-chunk oracle for real verify rows and matching bank snapshots."""
|
||||||
|
import argparse,hashlib,json,os,subprocess,sys
|
||||||
|
from pathlib import Path
|
||||||
|
checkout,root,native,out=map(Path,sys.argv[1:5])
|
||||||
|
assert subprocess.check_output(['git','-C',str(checkout),'rev-parse','HEAD'],text=True).strip()=='9882703f3105363ddc37eca9f97aa09a1d387112'
|
||||||
|
sys.path.insert(0,str(checkout))
|
||||||
|
from mtplx.server.openai import _server_runtime_env_overrides
|
||||||
|
os.environ.update(_server_runtime_env_overrides(argparse.Namespace(model=str(root),generation_mode='mtp'),None))
|
||||||
|
os.environ['MTPLX_SUSTAINED_PREFILL']='1'
|
||||||
|
os.environ['MTPLX_PREFILL_CHUNK_SIZE']='2048'
|
||||||
|
os.environ['MTPLX_CONTEXT_COPY']='0'
|
||||||
|
import mlx.core as mx
|
||||||
|
import numpy as np
|
||||||
|
from mlx_lm.utils import load_model
|
||||||
|
from mtplx.models import qwen4_exp as qwen
|
||||||
|
from mtplx.runtime import _load_tokenizer_resilient,MTPLXRuntime
|
||||||
|
from mtplx.mtp_patch import MTPContract
|
||||||
|
from mtplx.generation import generate_mtpk
|
||||||
|
from mtplx.sampling import SamplerConfig
|
||||||
|
from mtplx.session_bank import SessionBank,_lazy_snapshot_enabled
|
||||||
|
from mtplx.cache_state import snapshot_cache,snapshot_cache_lazy_hybrid
|
||||||
|
from mtplx.attention_context import current_attention_phase
|
||||||
|
out.mkdir(parents=True,exist_ok=True)
|
||||||
|
print(json.dumps(dict(case='environment',overrides={k:v for k,v in os.environ.items() if k.startswith('MTPLX_')})),flush=True)
|
||||||
|
tokenizer=_load_tokenizer_resilient(root,json.loads((root/'config.json').read_text()))
|
||||||
|
model,_=load_model(root,lazy=False,strict=True,get_model_classes=lambda **_:(qwen.Model,qwen.ModelArgs))
|
||||||
|
model.post_weight_load(root)
|
||||||
|
assert model.attach_mtp(root)
|
||||||
|
rt=MTPLXRuntime(model,tokenizer,root,True,MTPContract())
|
||||||
|
phase='cold'; index=0; nested=0
|
||||||
|
|
||||||
|
def wrap(fn):
|
||||||
|
def call(input_ids,*args,**kwargs):
|
||||||
|
global index,nested
|
||||||
|
outer=nested==0
|
||||||
|
nested+=1
|
||||||
|
try: result=fn(input_ids,*args,**kwargs)
|
||||||
|
finally: nested-=1
|
||||||
|
if outer and current_attention_phase() == 'prefill' and isinstance(result,tuple) and result[0] is not None and result[1] is not None:
|
||||||
|
cache=kwargs.get('cache',args[0] if args else None)
|
||||||
|
if cache is not None:
|
||||||
|
key=np.asarray((snapshot_cache_lazy_hybrid(cache) if _lazy_snapshot_enabled() else snapshot_cache(cache)).states[35][0].astype(mx.float32))
|
||||||
|
(out/f'{phase}-prefill-key35.f32').write_bytes(key.tobytes())
|
||||||
|
for part,a in zip(['logits','hidden'],result[:2]):
|
||||||
|
# The suffix owner retains only the final hidden row (generation.py:4689).
|
||||||
|
if part=='hidden':a=a[:,-1:,:]
|
||||||
|
data=np.asarray(a.astype(mx.float32)).tobytes()
|
||||||
|
(out/f'{phase}-prefill-{part}.f32').write_bytes(data)
|
||||||
|
path=native/f'{phase}-prefill-{part}.f32'
|
||||||
|
print(json.dumps(dict(case='prefill_compare',phase=phase,part=part,shape=list(a.shape),exact=path.exists() and path.read_bytes()==data)),flush=True)
|
||||||
|
if outer and current_attention_phase()=='decode_verify':
|
||||||
|
expected=json.loads((native/phase/f'{index}.json').read_text())
|
||||||
|
ids=np.asarray(input_ids).reshape(-1).tolist()
|
||||||
|
assert expected['verify'] and ids==expected['ids'], (phase,index,ids,expected['ids'])
|
||||||
|
receipt=dict(case='verify_forward',phase=phase,index=index,ids=ids)
|
||||||
|
for part,a in zip(['logits','hidden'],result[:2]):
|
||||||
|
data=np.asarray(a.astype(mx.float32)).tobytes()
|
||||||
|
(out/f'{phase}-{index}-{part}.f32').write_bytes(data)
|
||||||
|
ref=(native/phase/f'{index}-{part}.f32').read_bytes()
|
||||||
|
receipt[part+'_exact']=data==ref
|
||||||
|
receipt[part+'_sha256']=hashlib.sha256(data).hexdigest()
|
||||||
|
if data!=ref:
|
||||||
|
x=np.frombuffer(data,np.float32); y=np.frombuffer(ref,np.float32)
|
||||||
|
receipt[part+'_different']=int(np.count_nonzero(x!=y))
|
||||||
|
receipt[part+'_max_abs']=float(np.max(np.abs(x-y)))
|
||||||
|
print(json.dumps(receipt),flush=True)
|
||||||
|
assert receipt['logits_exact'] and receipt['hidden_exact'],receipt
|
||||||
|
index+=1
|
||||||
|
return result
|
||||||
|
return call
|
||||||
|
rt.forward_ar=wrap(rt.forward_ar)
|
||||||
|
rt.forward_ar_capture=wrap(rt.forward_ar_capture)
|
||||||
|
bank=SessionBank()
|
||||||
|
for phase in ['cold','warm']:
|
||||||
|
index=0
|
||||||
|
expected=json.loads((native/f'{phase}.json').read_text())
|
||||||
|
ids=expected['prompt']
|
||||||
|
result=generate_mtpk(rt,ids,max_tokens=12,sampler=SamplerConfig(temperature=0.,top_p=.95,top_k=20),speculative_depth=3,
|
||||||
|
seed=1,stop_token_ids=set(tokenizer.eos_token_ids),mtp_history_policy='committed',verify_strategy='batched',capture_final_state=True,
|
||||||
|
session_bank=bank,session_id='issue113',store_prefix_snapshot=False,
|
||||||
|
token_callback=lambda ids:print(json.dumps(dict(case='tokens',phase=phase,ids=ids)),flush=True))
|
||||||
|
assert result.tokens==expected['tokens'],(result.tokens,expected['tokens'])
|
||||||
|
assert result.stats.cached_tokens==expected['cached'],(result.stats.cached_tokens,expected['cached'])
|
||||||
|
assert index==len(list((native/phase).glob('*.json')))
|
||||||
|
final=result.final_state
|
||||||
|
assert final.safe_to_commit
|
||||||
|
for part,a in [('logits',final.final_logits),('hidden',final.final_hidden)]:
|
||||||
|
data=np.asarray(a.astype(mx.float32)).tobytes()
|
||||||
|
assert data==(native/f'{phase}-{part}.f32').read_bytes(),(phase,part)
|
||||||
|
def states(cache,lazy=False):
|
||||||
|
def array(a):
|
||||||
|
if a is None: return None
|
||||||
|
values=np.asarray(a.astype(mx.float32)).copy()
|
||||||
|
bits=hashlib.sha256(values.tobytes()).hexdigest()
|
||||||
|
values[values==0]=0
|
||||||
|
return dict(shape=list(a.shape),sha256=bits,value_sha256=hashlib.sha256(values.tobytes()).hexdigest())
|
||||||
|
return [[array(a) for a in state] if state is not None else None for state in (snapshot_cache_lazy_hybrid(cache) if lazy else snapshot_cache(cache)).states]
|
||||||
|
arrays=dict(trunk=states(final.final_trunk_cache,_lazy_snapshot_enabled()),mtp=states(final.final_committed_mtp_cache))
|
||||||
|
(out/f'{phase}-arrays.json').write_text(json.dumps(arrays))
|
||||||
|
native_arrays=json.loads((native/f'{phase}-arrays.json').read_text())
|
||||||
|
zero_sign_differences=[]
|
||||||
|
for family in arrays:
|
||||||
|
assert len(arrays[family])==len(native_arrays[family])
|
||||||
|
for layer,(actual,want) in enumerate(zip(arrays[family],native_arrays[family])):
|
||||||
|
if actual is None or want is None:
|
||||||
|
assert actual==want
|
||||||
|
continue
|
||||||
|
assert len(actual)==len(want)
|
||||||
|
for slot,(a,b) in enumerate(zip(actual,want)):
|
||||||
|
if a is None or b is None:
|
||||||
|
assert a==b
|
||||||
|
continue
|
||||||
|
assert a['shape']==b['shape'] and a['value_sha256']==b['value_sha256'],(phase,family,layer,slot,a,b)
|
||||||
|
if a['sha256']!=b['sha256']: zero_sign_differences.append([family,layer,slot])
|
||||||
|
assert zero_sign_differences==[], zero_sign_differences
|
||||||
|
# Compare the same lazy trunk snapshot used by the server/native bank.
|
||||||
|
# An extra deep clone would add zero and change negative-zero bits.
|
||||||
|
key=np.asarray((snapshot_cache_lazy_hybrid(final.final_trunk_cache) if _lazy_snapshot_enabled() else snapshot_cache(final.final_trunk_cache)).states[35][0].astype(mx.float32))
|
||||||
|
(out/f'{phase}-key35.f32').write_bytes(key.tobytes())
|
||||||
|
want=np.fromfile(native/f'{phase}-key35.f32',np.float32).reshape(key.shape)
|
||||||
|
different=key.view(np.uint32)!=want.view(np.uint32)
|
||||||
|
assert np.all(key[different]==0) and np.all(want[different]==0)
|
||||||
|
assert not np.any(different)
|
||||||
|
for part in ["key35","logits","hidden"]:
|
||||||
|
assert (out/f"{phase}-prefill-{part}.f32").read_bytes()==(native/f"{phase}-prefill-{part}.f32").read_bytes(),(phase,part,"prefill differs")
|
||||||
|
print(json.dumps(dict(case='cache_arrays',phase=phase,values_exact=True,zero_sign_differences=zero_sign_differences,key35_bit_coordinates=np.argwhere(different).tolist())),flush=True)
|
||||||
|
head=snapshot_cache(final.final_committed_mtp_cache)
|
||||||
|
key=ids+result.tokens
|
||||||
|
assert bank.put(runtime=rt,token_ids=key,cache=final.final_trunk_cache,logits=final.final_logits,hidden=final.final_hidden,
|
||||||
|
hidden_variant='post_norm',session_id='issue113',mtp_history_policy='committed',mtp_history_snapshot=head,
|
||||||
|
snapshot_epoch=len(key),mtp_snapshot_epoch=len(key)) is not None
|
||||||
|
print(json.dumps(dict(case='turn',phase=phase,tokens=result.tokens,cached=result.stats.cached_tokens,verify_calls=index,final_exact=True)),flush=True)
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
"""Pinned head-chunk plan, actual SDPA subcall shapes and exact BF16 outputs."""
|
||||||
|
import hashlib,io,json,os,subprocess,sys
|
||||||
|
from pathlib import Path
|
||||||
|
checkout,out=map(Path,sys.argv[1:3])
|
||||||
|
assert subprocess.check_output(['git','-C',str(checkout),'rev-parse','HEAD'],text=True).strip()=='9882703f3105363ddc37eca9f97aa09a1d387112'
|
||||||
|
sys.path.insert(0,str(checkout))
|
||||||
|
import mlx.core as mx
|
||||||
|
import numpy as np
|
||||||
|
from mtplx.models import qwen4_exp as qwen
|
||||||
|
assert mx.__version__=='0.32.2'
|
||||||
|
plans=[dict(rows=r,heads=h,kv=kv,plan=qwen._verify_sdpa_head_chunk_plan(r,h,kv)) for r in [-1,0,1,2,3,4,8,9,16,31,32,33,64] for h in [0,1,2,12,24,33,36,64] for kv in [0,1,2,3,5]]
|
||||||
|
def pattern(shape,salt):
|
||||||
|
n=int(np.prod(shape));v=((np.arange(n,dtype=np.uint32)*17+salt*13)%257).astype(np.int32)-128
|
||||||
|
return mx.array((v.astype(np.float32)/128).reshape(shape)).astype(mx.bfloat16)
|
||||||
|
geometries=[(1,24,2,r,65) for r in [1,2,3,4,8,9,16,32,33]]+[(2,24,2,4,17),(1,64,1,1,17),(1,14,2,5,17),(1,12,2,5,17),(1,1,1,4,17),(1,24,2,4,2),(1,24,2,4,1024),(1,24,2,4,4097),(1,5,2,4,17)]
|
||||||
|
original=mx.fast.scaled_dot_product_attention
|
||||||
|
calls=[]
|
||||||
|
def traced(q,k,v,**kwargs):
|
||||||
|
calls.append(dict(q=list(q.shape),k=list(k.shape),v=list(v.shape),mask=None if kwargs['mask'] is None else list(kwargs['mask'].shape)))
|
||||||
|
return original(q,k,v,**kwargs)
|
||||||
|
mx.fast.scaled_dot_product_attention=traced
|
||||||
|
cases=[]
|
||||||
|
for batch,heads,kv,rows,total in geometries:
|
||||||
|
for mode in ['none','bool','add','heads','local','two_dim']:
|
||||||
|
for enabled in [False,True]:
|
||||||
|
os.environ['MTPLX_QWEN4_VERIFY_SDPA_HEAD_CHUNK']='1' if enabled else '0'
|
||||||
|
calls.clear();case=dict(batch=batch,heads=heads,kv=kv,rows=rows,total=total,mode=mode,enabled=enabled)
|
||||||
|
q=pattern((batch,rows,heads,256),93).transpose(0,2,1,3)
|
||||||
|
k=pattern((batch,kv,total+7,256),94)[:,:,2:total+2]
|
||||||
|
v=pattern((batch,kv,total+7,256),95)[:,:,2:total+2]
|
||||||
|
mask=None
|
||||||
|
if mode!='none':
|
||||||
|
mh=heads if mode=='heads' else (4 if mode=='local' else 1)
|
||||||
|
mask=np.array([j<=total-rows+i and (j+h)%3!=1 and i!=1 for h in range(mh) for i in range(rows) for j in range(total)],dtype=np.bool_).reshape(1,mh,rows,total)
|
||||||
|
mask=mx.array(mask)
|
||||||
|
if mode=='add':mask=mx.where(mask,mx.array(0,dtype=mx.bfloat16),mx.array(-10,dtype=mx.bfloat16))
|
||||||
|
if mode=='two_dim':mask=mask.reshape(rows,total)
|
||||||
|
try:
|
||||||
|
y=qwen._verify_sdpa(q,k,v,scale=.0625,mask=mask)
|
||||||
|
dot=io.StringIO();mx.export_to_dot(dot,output=y)
|
||||||
|
case['fused_primitives']=dot.getvalue().count('ScaledDotProductAttention')
|
||||||
|
mx.eval(y)
|
||||||
|
case['sha256']=hashlib.sha256(np.asarray(y.view(mx.uint16)).tobytes()).hexdigest()
|
||||||
|
case['shape']=list(y.shape)
|
||||||
|
except ValueError as e:case['error']=str(e)
|
||||||
|
case['calls']=list(calls);cases.append(case)
|
||||||
|
del q,k,v,mask
|
||||||
|
mx.clear_cache()
|
||||||
|
assert len(cases)==216
|
||||||
|
out.write_text(json.dumps(dict(revision='9882703f3105363ddc37eca9f97aa09a1d387112',mlx=mx.__version__,plans=plans,cases=cases),separators=(',',':'))+'\n')
|
||||||
|
print(json.dumps(dict(plans=len(plans),cases=len(cases),errors=sum('error' in c for c in cases),output=str(out))))
|
||||||
Reference in new issue
Block a user