jescy525's picture
Upload folder using huggingface_hub
612c58c verified
Raw
History Blame Contribute Delete
1.38 kB
"""Fix tokenizer v3: remove 32 BPE merges that produce tokens not in vocab (surgery orphans)."""
import json
from pathlib import Path
src = Path("tokenizer.json")
with open(src) as f:
t = json.load(f)
v = t["model"]["vocab"]
merges = t["model"]["merges"]
print(f"Before: vocab={len(v)} merges={len(merges)}")
clean_merges = []
removed = []
for m in merges:
if isinstance(m, list) and len(m) == 2:
comb = m[0] + m[1]
if comb in v:
clean_merges.append(m)
else:
removed.append((m, comb))
else:
# Keep non-standard entries verbatim
clean_merges.append(m)
t["model"]["merges"] = clean_merges
print(f"After: vocab={len(v)} merges={len(clean_merges)} removed={len(removed)}")
print("Removed examples:")
for m, comb in removed[:15]:
print(f" {m} -> {comb!r}")
with open(src, "w", encoding="utf-8") as f:
json.dump(t, f, ensure_ascii=False)
print(f"Saved {src}")
# Test load
from tokenizers import Tokenizer
try:
tk = Tokenizer.from_file(str(src))
print(f"LOAD OK vocab_size={tk.get_vocab_size()}")
# Test FR + ChatML encoding
test = "Bonjour, je suis ARCHON. <|im_start|>system test<|im_end|>"
ids = tk.encode(test).ids
print(f"encode test: ids[:15]={ids[:15]} len={len(ids)}")
print(f"decode: {tk.decode(ids)!r}")
except Exception as e:
print(f"LOAD FAIL: {e}")