Repository navigation
[3/3] Preserve dialogue speaker roles across all pinned Drama engines - #28
Conversation
|
Thanks for carrying the speaker through long-form continuations so carefully. The tests around hard cuts and redraws are great. Two small things: CUDA patch 0003's subject starts with "Drama speech:", while the series uses |
|
My CUDA checks for #28 mostly pass: tags 1 and 15 are accepted, untagged requests are unchanged, and when a long-form reply reaches its second segment the continuation carries the right speaker (5 of 8 seeds reached it, all carried correctly). One thing I'd like your view on before I merge: on the full model ( |
|
Hi @krunkosaurus, a gentle nudge on my question above about the full model ( |
|
Thanks for the detailed CUDA checks, and sorry for the delayed reply. I now have access to a GB10 and am running a bounded reproduction of the tagged full-model case, including the matching-reference catalog setup, before making the merge call. Please keep #28 in draft while I finish that; I will report the results here. On the earlier three-speaker question: retaining the native splitter's existing limits was intentional. The MLX limit is a per-chunk grouping policy, separate from the model's valid speaker IDs. This change preserves TensorFold's native chunk/prompt/frame limits and carries the active role across its cuts; it does not establish acoustic quality for arbitrary numbers of speakers in one chunk. I will make that distinction explicit in the dialogue documentation. A three-speaker cap would not address the reported two-speaker stopping case. I am also handling the unused Redraws.salt cleanup from #27. I have seen your #30 for the README and patch-subject touch-ups and will leave those to you. |
|
I've reproduced this on a GB10 and would prefer to merge #28 with the full-model stopping case documented, then investigate it separately in #32. The documentation and per-seed results are now pushed in 6cd48e6. For the same short line, with matching synthetic reference transcripts and seeds 1–5:
The full-model tagged failures are seeds 1, 2 and 4: HTTP 200 with I don't yet have a confirmed cause or a Metal reproduction. The full-model patch admits nonzero speaker tags without changing the existing prompt assembly or stop-selection logic. These profiles also differ in source pin, weights and guidance, so the comparison doesn't isolate the cause. I haven't done a listening review; these are stopping results only. Both CUDA builds/tests passed. The native splitter policy is now explicit in the dialogue docs, and the unused |
|
Thanks for picking option 2 and for opening #32 to track the cause. I've reviewed the two new commits (patch 0004 and the stopping-limit docs with the results file): the patches apply cleanly on the pinned fork commit, the checksums verify, the tests pass, and the documented numbers match the results file. Merged. I'll add a pointer to the stopping limit in the main README and changelog, and I'll take care of the README and patch-subject touch-ups from #30 on my side. |
Description and motivation
Accept canonical
<|speaker:0|>through<|speaker:15|>tags in speech input and reference transcripts. Untagged input remains speaker 0; malformed and structural tokens still fail validation. This is part 3 of the stack; #26 and #27 have merged. Incremental changes after #27.Append full-model patch 0015, Metal NVFP4 patch 0006 and CUDA NVFP4 patch 0003, with the Python catalog writer, examples, indexes and checksums. Legacy continuation carries the active speaker across hard cuts, paragraph cuts, history eviction and redraws. CUDA patch 0004 removes the unused
Redraws.salthelper requested in #27 without rewriting the merged sampling patch.Full-model/Metal catalogs and the Python writer retain their four-reference cap; legacy CUDA retains its native body/file/prompt/chunk limits. Retaining the native splitter without the MLX three-speaker grouping cap is intentional and documented. Sixteen valid IDs do not establish acoustic quality for sixteen speakers in one chunk.
Source companions: modern #1278 and legacy #7. The public MLX prompt tests are the behavioral reference; these changes independently extend TensorFold's native prompt builder.
Known limitation
The pinned CUDA full model can fail to emit its stop on short tagged dialogue. A GB10 reproduction with matching speaker 1/15 references reached the 1024-frame cap in 3/5 seeds; untagged controls stopped in 5/5. Relabeling input and references to 0/1 still capped in 2/5, and removing the catalog capped in 1/5. NVFP4 stopped in all five tagged and all five untagged requests, with its default guidance.
The limitation is documented in README-dialogue and tracked separately in #32. The preferred merge path is to include this documented limit and investigate its cause separately, as offered in review. Engine pins, weights and guidance differ; these results do not establish the cause or guarantee NVFP4 reliability.
Validation
e06a0cdabyte-for-byte across 3,503 files. The full-model and Metal series are unchanged from their previously verified source trees and successful recipe builds (66/66 and 73/73 steps).This is a stopping diagnostic, not a listening, speaker-identity or performance qualification. Metal inference and the reference Python runtime were not tested in this follow-up. No weights, private voices, recordings or private machine paths are published.