Download cloud/make_traces.py from abuz8studios/FAIE: direct link, hf CLI and curl.
- Browser
- Download file 6.56 kB
-
https://huggingface.co/abuz8studios/FAIE/resolve/main/cloud/make_traces.py
- Command line
-
hf download hf://abuz8studios/FAIE/cloud/make_traces.py
-
curl -L -o make_traces.py https://huggingface.co/abuz8studios/FAIE/resolve/main/cloud/make_traces.py
6.56 kB
| """Build the tajwid distillation corpus: teacher answers to Ahmad's REAL prompts. | |
| WHY THIS AND NOT A PUBLIC DATASET: | |
| The student is not meant to be generally frontier — it is meant to be frontier ON | |
| AHMAD'S WORKLOAD. That distribution is already measured and on disk: 167,258 unique | |
| messages over 3.7 months, tool mix dominated by terminal / Read / Bash / PowerShell / | |
| Grep. Public instruction sets do not have that shape. train.jsonl is the shape. | |
| STRATA (never blended — measured 2026-07-26): | |
| Arabic is 0.0227% of real usage and pays a ~2.3-2.8x tokenizer tax. Proportional | |
| sampling gives Arabic almost no signal, so it is generated as its OWN stratum with its | |
| own file, and mixed at training time at a chosen ratio rather than at harvest time. | |
| RESUME SAFETY: | |
| Every record is keyed by a hash of (stratum, prompt). A re-run skips what exists, so a | |
| killed run costs nothing. Learned the hard way: a "stopped" background run once kept | |
| writing the SAME output file as its replacement for 20 minutes. | |
| *** BEFORE POINTING THIS AT A PAID/MANAGED API — READ *** | |
| Generating training data from a hosted model's outputs is governed by that provider's | |
| terms, and some providers restrict using outputs to train other models. Ahmad SELLS | |
| software, so this is commercial exposure, not a theoretical concern. Two clean routes: | |
| 1. SELF-HOST an open-weight teacher whose licence permits distillation (rent the GPU, | |
| run the weights yourself) — no ambiguity, and you also get logprobs. | |
| 2. Use openly-licensed existing traces. | |
| This script therefore REQUIRES --i-checked-the-licence when TEACHER_BASE_URL is not | |
| localhost. It is a speed bump against an expensive mistake, not legal advice. | |
| Usage: | |
| python make_traces.py --stratum workload --limit 200 | |
| python make_traces.py --stratum arabic --limit 100 | |
| python make_traces.py --stratum workload --limit 5000 --i-checked-the-licence | |
| """ | |
| import argparse | |
| import hashlib | |
| import json | |
| import os | |
| import re | |
| import sys | |
| import time | |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | |
| import teacher_client as tc | |
| CORPUS = r"E:\ABU\NEOCORTEX\corpus" | |
| OUTDIR = r"E:\ABU\NEOCORTEX\cloud\traces" | |
| ARABIC = re.compile(r"[\u0600-\u06FF]") | |
| SYSTEM = ("You are a precise engineering assistant for a Windows/PowerShell power user " | |
| "who runs local AI infrastructure. Answer concretely and completely. Prefer " | |
| "exact commands, file paths and numbers over generalities.") | |
| def key(stratum, prompt): | |
| return hashlib.sha256(f"{stratum}\x00{prompt}".encode("utf-8")).hexdigest()[:20] | |
| def load_prompts(stratum, min_len=40, max_len=6000): | |
| """User-role messages from the real record, filtered and de-duplicated.""" | |
| src = os.path.join(CORPUS, "train.jsonl") | |
| seen, out = set(), [] | |
| with open(src, encoding="utf-8") as fh: | |
| for line in fh: | |
| try: | |
| d = json.loads(line) | |
| except Exception: | |
| continue | |
| if d.get("role") != "user": | |
| continue | |
| t = (d.get("text") or "").strip() | |
| if not (min_len <= len(t) <= max_len): | |
| continue | |
| is_ar = len(ARABIC.findall(t)) > max(8, 0.15 * len(t)) | |
| if (stratum == "arabic") != is_ar: | |
| continue | |
| h = key(stratum, t) | |
| if h in seen: | |
| continue | |
| seen.add(h) | |
| out.append(t) | |
| return out | |
| def main(): | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("--stratum", choices=("workload", "arabic"), default="workload") | |
| ap.add_argument("--limit", type=int, default=100) | |
| ap.add_argument("--max-tokens", type=int, default=tc.DEFAULT_MAX_TOKENS) | |
| ap.add_argument("--sleep", type=float, default=0.0, help="seconds between calls") | |
| ap.add_argument("--i-checked-the-licence", action="store_true") | |
| a = ap.parse_args() | |
| remote = not re.search(r"(127\.0\.0\.1|localhost)", tc.BASE) | |
| if remote and not a.i_checked_the_licence: | |
| sys.exit("REFUSING: TEACHER_BASE_URL is remote and --i-checked-the-licence was not\n" | |
| "passed. Confirm the provider's terms permit using outputs as training\n" | |
| "data, or self-host an open-weight teacher instead. See the header.") | |
| os.makedirs(OUTDIR, exist_ok=True) | |
| out_path = os.path.join(OUTDIR, f"traces_{a.stratum}.jsonl") | |
| done = set() | |
| if os.path.exists(out_path): | |
| with open(out_path, encoding="utf-8") as fh: | |
| for line in fh: | |
| try: | |
| done.add(json.loads(line)["key"]) | |
| except Exception: | |
| pass | |
| prompts = load_prompts(a.stratum) | |
| todo = [p for p in prompts if key(a.stratum, p) not in done][: a.limit] | |
| print(tc.describe()) | |
| print(f"stratum={a.stratum} available={len(prompts):,} already done={len(done):,} " | |
| f"this run={len(todo):,} -> {out_path}") | |
| if not todo: | |
| print("nothing to do") | |
| return | |
| t0, ok, tok = time.time(), 0, 0 | |
| with open(out_path, "a", encoding="utf-8") as fh: | |
| for i, p in enumerate(todo, 1): | |
| r = tc.complete([{"role": "system", "content": SYSTEM}, | |
| {"role": "user", "content": p}], | |
| max_tokens=a.max_tokens) | |
| # An empty completion is a FAILED sample, not a short one. Reasoning models | |
| # burn the whole budget thinking and return '' — never store that as truth. | |
| if not r["text"].strip(): | |
| print(f" [{i}/{len(todo)}] EMPTY completion (finish={r['finish_reason']}) — skipped") | |
| continue | |
| rec = {"key": key(a.stratum, p), "stratum": a.stratum, | |
| "system": SYSTEM, "prompt": p, "completion": r["text"], | |
| "finish_reason": r["finish_reason"], "usage": r["usage"], | |
| "teacher": f"{tc.MODEL}@{tc.BASE}"} | |
| fh.write(json.dumps(rec, ensure_ascii=False) + "\n") | |
| fh.flush() | |
| ok += 1 | |
| tok += (r["usage"] or {}).get("completion_tokens", 0) or 0 | |
| if i % 10 == 0 or i == len(todo): | |
| el = time.time() - t0 | |
| print(f" [{i}/{len(todo)}] kept={ok} {tok:,} out-tok " | |
| f"{el/60:.1f} min {tok/max(el,1e-9):.1f} tok/s", flush=True) | |
| if a.sleep: | |
| time.sleep(a.sleep) | |
| el = time.time() - t0 | |
| print(f"\nDONE kept {ok}/{len(todo)} {tok:,} completion tokens in {el/60:.1f} min") | |
| print(f"wrote {out_path}") | |
| if __name__ == "__main__": | |
| main() | |