Download scripts/verify_data.py from jyliuAI/diffusion_baseline: direct link, hf CLI and curl.
- Browser
- Download file 2.72 kB
-
https://huggingface.co/jyliuAI/diffusion_baseline/resolve/main/scripts/verify_data.py
- Command line
-
hf download hf://jyliuAI/diffusion_baseline/scripts/verify_data.py
-
curl -L -o verify_data.py https://huggingface.co/jyliuAI/diffusion_baseline/resolve/main/scripts/verify_data.py
2.72 kB
| #!/usr/bin/env python3 | |
| """Verify processed datasets against pinned integrity manifests.""" | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| import os | |
| from pathlib import Path | |
| import sys | |
| import yaml | |
| OUTPUT_NAMES = {"lm1b": "lm1b-bert-128", "owt": "owt-gpt2-1024"} | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--root", type=Path, default=Path(__file__).resolve().parents[1]) | |
| parser.add_argument("--config", type=Path) | |
| parser.add_argument("--dataset", choices=("all", "lm1b", "owt"), default="all") | |
| return parser.parse_args() | |
| def main() -> int: | |
| args = parse_args() | |
| root = args.root.resolve() | |
| sys.path.insert(0, str(root / "src")) | |
| from dlb.data import build_processing_contract, verify_processed_dataset | |
| from dlb.io import atomic_json_write | |
| config_path = args.config or root / "artifacts" / "data.yaml" | |
| configuration = yaml.safe_load(config_path.read_text(encoding="utf-8")) | |
| hf_home = root / "data" / "raw" / "huggingface" | |
| hub_cache = hf_home / "hub" | |
| os.environ["HF_HOME"] = str(hf_home) | |
| from datasets import load_from_disk | |
| from huggingface_hub import snapshot_download | |
| from transformers import AutoTokenizer | |
| names = ("lm1b", "owt") if args.dataset == "all" else (args.dataset,) | |
| for name in names: | |
| contract = build_processing_contract(configuration, name) | |
| tokenizer_name = contract["tokenizer_id"] | |
| tokenizer_revision = contract["tokenizer_revision"] | |
| manifest_path = root / "data" / "manifests" / f"{name}.json" | |
| manifest = json.loads(manifest_path.read_text(encoding="utf-8")) | |
| snapshot_path = snapshot_download( | |
| repo_id=tokenizer_name, | |
| revision=tokenizer_revision, | |
| cache_dir=hub_cache, | |
| local_files_only=True, | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained(snapshot_path, local_files_only=True) | |
| output_dir = root / "data" / "processed" / OUTPUT_NAMES[name] | |
| dataset = load_from_disk(str(output_dir)) | |
| verified = verify_processed_dataset( | |
| dataset=dataset, | |
| manifest=manifest, | |
| output_dir=output_dir, | |
| tokenizer=tokenizer, | |
| expected_contract=contract, | |
| ) | |
| atomic_json_write(manifest_path, verified) | |
| print( | |
| f"OK {name} documents={verified['document_counts']} " | |
| f"packed={verified['packed_sequence_counts']} " | |
| f"checked={verified['verification']['checked_sequences']} " | |
| f"files={verified['verification']['files_checked']} verified=true" | |
| ) | |
| return 0 | |
| if __name__ == "__main__": | |
| raise SystemExit(main()) | |