Skip to content

Commit 34b0df6

Browse files
committed
kaggle(breeze,#412): pin the oracle's repetition penalty, and record the artifact readback
Both arms of the diff now DECLARE repetition_penalty = 1.0 on the greedy path instead of both happening to inherit the same library default. The value does not change — it is absent from generation_config.json, so HF's default already applied — but an agreement that rests on a shared default is one that ends silently the day the default moves, and this is the path whose whole purpose is exact-integer equality. Also records what the regenerated GGUFs actually contain, read back from the published q4_k with a range request over its KV block rather than taken from the converter's own log: theta 1e6 and eps 1e-6 (not the top-level decoys), te.causal False, the norm fold flag the runtime demands, general.license "other" — the tag that makes the NC gate fire — and the §4(b) notice verbatim. 778 tensors, 143 KV entries, q4_k 2.05 GiB. Three decoys, dodged in the artifact, which is the only place it counts. Refs #412
1 parent 160d384 commit 34b0df6

2 files changed

Lines changed: 35 additions & 1 deletion

File tree

docs/breeze-tts-2-port-notes.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,3 +739,28 @@ Still open (a validation item, not a known bug): *which* token history HF's
739739
backbone's `input_ids` are audio frames rather than text, so "the history" is
740740
ambiguous; the C++ applies it over the generated codebook-0 tokens. Confirm
741741
against a non-greedy reference run before treating the normal path as faithful.
742+
743+
### Published artifacts, read back rather than asserted
744+
745+
`cstr/breeze-tts-2-GGUF` regenerated 2026-09-15 with the norm fold:
746+
f16 5.32 GiB, q8_0 3.19 GiB, q4_k **2.05 GiB**, 778 tensors / 2 850.2 M live
747+
params, 351 tensors / 633.1 M dropped. The q4_k figure is what the quant
748+
policy predicts once `te.token_embd` is held at source precision; set
749+
`CRISPASR_BREEZE_QUANT_TEXT_EMBD=1` to include it and land near 1.75 GB.
750+
751+
The KV block of the **published** q4_k was fetched with an HTTP range request
752+
and parsed (143 KV entries, 778 tensors). Verified in the shipped file, not in
753+
the converter's intentions:
754+
755+
| key | value | what it rules out |
756+
|---|---|---|
757+
| `breeze.bb.rope_theta` | `1000000.0` | the top-level 500000 decoy |
758+
| `breeze.bb.rms_norm_eps` | `1e-06` | the top-level 1e-5 decoy |
759+
| `breeze.te.causal` | `False` | `use_bidirectional_attention: false` |
760+
| `breeze.te.rope_factor_full` | `8.0` | — |
761+
| `breeze.te.norm_weights_pre_offset` | `True` | a GGUF the runtime would reject |
762+
| `general.license` | `"other"` | a tag that would NOT trip the NC gate |
763+
| `breeze.license.notice` | verbatim, incl. `RESONIA, INC` | §4(b) |
764+
765+
All three config decoys are therefore dodged *in the artifact*, which is the
766+
only place it counts.

tools/kaggle/breeze-refdump/breeze_refdump.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def step(name, **kv):
150150

151151
kh.init_progress()
152152
# Bump when the arms, capture or predicate change (see kh.provenance).
153-
SCRIPT_VERSION = "2026-09-15.6"
153+
SCRIPT_VERSION = "2026-09-15.7"
154154
# kh.provenance landed in the harness AFTER this kernel was first pushed, so the
155155
# 2026-09-02 run died in 10 s with AttributeError against its own fresh clone
156156
# (gotcha #24, the two-halves trap). Never let provenance logging be fatal.
@@ -255,6 +255,15 @@ def step(name, **kv):
255255
gc.temperature = 1.0
256256
gc.top_k = 0
257257
gc.top_p = 1.0
258+
# STATE the penalty rather than inherit it. repetition_penalty is
259+
# absent from generation_config.json — infer.py and api.py pass 1.1 at
260+
# CALL time, so it belongs to the synthesis recipe, not the model. This
261+
# dump does not pass it, so the codes here are penalty-free and the C++
262+
# greedy path matches that deliberately (GenOptions::repetition_penalty).
263+
# Pinning it means the two arms agree because both declare 1.0, not
264+
# because both happen to inherit the same library default — which is
265+
# the kind of agreement that quietly ends when a default changes.
266+
gc.repetition_penalty = 1.0
258267
model.generation_config.max_new_tokens = MAX_FRAMES
259268
step("model_loaded", greedy=GREEDY, max_frames=MAX_FRAMES,
260269
dtype=str(next(model.parameters()).dtype))

0 commit comments

Comments
 (0)