smartcore-v1 / code /kod /faz1_02_verify.py
kdirgul's picture
kod (data hariç) Colab için
9aed7c4 verified
Raw
History Blame Contribute Delete
1.78 kB
"""
Faz 1 / Adım 2 — Shard doğrulama.
Manifest + parquet shard'ları yükle, dizi uzunluklarını kontrol et, bir diziyi
geri-decode et (tokenizer sağlam mı), token/dizi istatistiği.
Kullanım: python kod/faz1_02_verify.py --source en_fineweb_edu
"""
import os, sys, json, glob, argparse
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import pyarrow.parquet as pq
from sc_tokenizer import SCTokenizer
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--source", required=True)
ap.add_argument("--dir", default="kod/data/shards")
args = ap.parse_args()
d = os.path.join(args.dir, args.source)
man = json.load(open(os.path.join(d, "manifest.json"), encoding="utf-8"))
seq_len = man["seq_len"]
print(f"manifest: {man['source']} lang={man['lang']} | {man['n_seqs']} dizi "
f"| {man['n_tokens']/1e6:.2f}M token | {len(man['shards'])} shard")
files = sorted(glob.glob(os.path.join(d, "shard_*.parquet")))
tok = SCTokenizer()
total, bad = 0, 0
for fp in files:
t = pq.read_table(fp)
ids_col = t.column("input_ids").to_pylist()
for row in ids_col:
total += 1
if len(row) != seq_len:
bad += 1
# ilk shard'ın ilk dizisini decode et
if fp == files[0]:
first = ids_col[0]
print(f" ilk dizi: {len(first)} token | min={min(first)} max={max(first)} "
f"(vocab={tok.vocab_size})")
print(" decode örnek (ilk 60 token):")
print(" ", repr(tok.decode(first[:60])[:220]))
print(f"[verify] {len(files)} shard, {total} dizi okundu | "
f"yanlış-uzunluk: {bad} | {'TUM OK' if bad == 0 else 'UYARI'}")
if __name__ == "__main__":
main()