adyoi commited on
Commit
e009a3d
·
verified ·
1 Parent(s): 4551faf

Upload pipeline.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. pipeline.py +27 -0
pipeline.py CHANGED
@@ -54,6 +54,9 @@ def main():
54
  help="promosikan checkpoint terbaik run ini ke folder out/ kanonik")
55
  ap.add_argument("--push", action="store_true", help="upload checkpoint terbaik ke repo HF")
56
  ap.add_argument("--repo", default="adyoi/indigo")
 
 
 
57
  t = ap.add_argument_group("hyperparameter training (diteruskan ke train.py)")
58
  t.add_argument("--steps", type=int, default=2000)
59
  t.add_argument("--batch-size", type=int, default=32)
@@ -121,6 +124,30 @@ def main():
121
 
122
  print(f"[pipeline] run='{args.tag}' | sumber={sources or ['<kosong>' ]}")
123
  stats = train.main(argv) or {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  stats["pipeline"] = {
125
  "tag": args.tag,
126
  "timestamp": datetime.datetime.now().isoformat(timespec="seconds"),
 
54
  help="promosikan checkpoint terbaik run ini ke folder out/ kanonik")
55
  ap.add_argument("--push", action="store_true", help="upload checkpoint terbaik ke repo HF")
56
  ap.add_argument("--repo", default="adyoi/indigo")
57
+ ap.add_argument("--guard", default=None,
58
+ help="file kamus kata (satu kata per baris); tambahkan metrik rasio ejaan ke manifest")
59
+ ap.add_argument("--guard-max-new", type=int, default=120)
60
  t = ap.add_argument_group("hyperparameter training (diteruskan ke train.py)")
61
  t.add_argument("--steps", type=int, default=2000)
62
  t.add_argument("--batch-size", type=int, default=32)
 
124
 
125
  print(f"[pipeline] run='{args.tag}' | sumber={sources or ['<kosong>' ]}")
126
  stats = train.main(argv) or {}
127
+
128
+ if args.guard:
129
+ import torch
130
+
131
+ from indigo.common import load_wordlist, load_meta, build_tokenizer, word_known_ratio
132
+ from indigo.model import GPT, GPTConfig
133
+ from safetensors.torch import load_file
134
+
135
+ probe_path = out_dir / "indigo_best.safetensors"
136
+ if not probe_path.exists():
137
+ probe_path = out_dir / "indigo.safetensors"
138
+ wordset = load_wordlist(args.guard)
139
+ meta = load_meta(str(probe_path))
140
+ tok = build_tokenizer(meta.get("tokenizer") or {"type": "char"}, meta.get("vocab"))
141
+ mdl = GPT(GPTConfig(**meta["config"]))
142
+ mdl.load_state_dict(load_file(str(probe_path)), strict=False)
143
+ mdl.eval()
144
+ ids = tok.encode("\n") or [0]
145
+ idx = torch.tensor([ids], dtype=torch.long)
146
+ with torch.no_grad():
147
+ out = mdl.generate(idx, args.guard_max_new, temperature=0.8, top_k=40)
148
+ text = tok.decode(out[0].tolist())
149
+ stats["kamus_ratio"] = round(word_known_ratio(text, wordset), 4)
150
+ print(f"[pipeline] kamus_ratio={stats['kamus_ratio']:.2%}")
151
  stats["pipeline"] = {
152
  "tag": args.tag,
153
  "timestamp": datetime.datetime.now().isoformat(timespec="seconds"),