Download fractus/generate_aligned.py from thefinalboss/fractus-cte: direct link, hf CLI and curl.
- Browser
- Download file 3.37 kB
-
https://huggingface.co/thefinalboss/fractus-cte/resolve/3ba0cfe3eab2f39a189173bfebaa19d011f2a1e9/fractus/generate_aligned.py
- Command line
-
hf download hf://thefinalboss/fractus-cte@3ba0cfe3eab2f39a189173bfebaa19d011f2a1e9/fractus/generate_aligned.py
-
curl -L -o generate_aligned.py https://huggingface.co/thefinalboss/fractus-cte/resolve/3ba0cfe3eab2f39a189173bfebaa19d011f2a1e9/fractus/generate_aligned.py
3.37 kB
| """Train-aligned generation for Fractus CTE. No frequency ban / scramble.""" | |
| from __future__ import annotations | |
| from typing import List, Optional | |
| import torch | |
| def _reset(engine): | |
| engine.eval() | |
| if hasattr(engine, "reset_thought"): | |
| engine.reset_thought(1) | |
| for blk in getattr(engine, "blocks", []): | |
| if hasattr(blk, "attn_S"): | |
| blk.attn_S.zero_() | |
| if hasattr(blk, "attn_z"): | |
| blk.attn_z.zero_() | |
| def _pick(logits: torch.Tensor, prev: Optional[int], temperature: float, top_k: int) -> int: | |
| l = logits.float().reshape(-1).clone() | |
| if prev is not None and 0 <= prev < l.numel(): | |
| l[prev] = -1e9 | |
| if temperature <= 1e-5: | |
| return int(l.argmax().item()) | |
| l = l / max(temperature, 1e-5) | |
| k = min(max(1, top_k), l.numel()) | |
| topv, topi = torch.topk(l, k) | |
| return int(topi[torch.multinomial(torch.softmax(topv, -1), 1)].item()) | |
| def generate_window( | |
| engine, | |
| tokenizer, | |
| prompt: str, | |
| max_new: int = 40, | |
| temperature: float = 0.0, | |
| top_k: int = 40, | |
| window: int = 128, | |
| force_second: bool = False, | |
| carry: bool = False, | |
| ) -> tuple[str, List[int]]: | |
| ids = tokenizer.encode(prompt)[:window] or [0] | |
| out: List[int] = [] | |
| prev = ids[-1] | |
| if carry: | |
| _reset(engine) | |
| logits = engine.tick_chunk(torch.tensor([ids], dtype=torch.long)) | |
| cur = logits[0, -1] | |
| for i in range(max_new): | |
| if force_second and i == 0: | |
| l = cur.float().clone() | |
| l[int(l.argmax())] = -1e9 | |
| nxt = _pick(l, prev=prev, temperature=temperature, top_k=top_k) | |
| else: | |
| nxt = _pick(cur, prev=prev, temperature=temperature, top_k=top_k) | |
| out.append(nxt) | |
| ids.append(nxt) | |
| logits = engine.tick_chunk(torch.tensor([[nxt]], dtype=torch.long)) | |
| cur = logits[0, -1] | |
| prev = nxt | |
| else: | |
| for i in range(max_new): | |
| _reset(engine) | |
| ctx = ids[-window:] | |
| logits = engine.tick_chunk(torch.tensor([ctx], dtype=torch.long)) | |
| cur = logits[0, -1] | |
| if force_second and i == 0: | |
| l = cur.float().clone() | |
| l[int(l.argmax())] = -1e9 | |
| nxt = _pick(l, prev=prev, temperature=temperature, top_k=top_k) | |
| else: | |
| nxt = _pick(cur, prev=prev, temperature=temperature, top_k=top_k) | |
| out.append(nxt) | |
| ids.append(nxt) | |
| prev = nxt | |
| return tokenizer.decode(out), out | |
| def generate_greedy_prefix(engine, tokenizer, prompt: str, max_new: int = 40, window: int = 128): | |
| return generate_window(engine, tokenizer, prompt, max_new=max_new, temperature=0.0, top_k=1, window=window, carry=False) | |
| def generate_greedy_ids(engine, tokenizer, prompt: str, max_new: int = 40, window: int = 128): | |
| return generate_greedy_prefix(engine, tokenizer, prompt, max_new=max_new, window=window) | |
| def generate_chunk(engine, tokenizer, prompt: str, max_new: int = 40, **kw): | |
| return generate_window(engine, tokenizer, prompt, max_new=max_new, window=128, **kw) | |
| def unique40_probe(engine, max_new=40, mode="prefix", prompts=None): | |
| return {"mode": mode, "max_new": max_new} | |
| # space-sync 2026-08-29b force_second carry | |