Download train.py from stack-all/FJNU-HuaxiangChaPandaTimeoutModel: direct link, hf CLI and curl.
- Browser
- Download file 2.72 kB
-
https://huggingface.co/stack-all/FJNU-HuaxiangChaPandaTimeoutModel/resolve/main/train.py
- Command line
-
hf download hf://stack-all/FJNU-HuaxiangChaPandaTimeoutModel/train.py
-
curl -L -o train.py https://huggingface.co/stack-all/FJNU-HuaxiangChaPandaTimeoutModel/resolve/main/train.py
2.72 kB
| from __future__ import annotations | |
| import argparse | |
| import shutil | |
| import tempfile | |
| from pathlib import Path | |
| from timeout_risk_model import load_dataset_records, save_model, train_timeout_model | |
| DEFAULT_DATASET_REPO_ID = "stack-all/FJNU-HuaxiangChaPandaTimeoutRecord" | |
| def default_dataset_dir() -> Path: | |
| return Path(__file__).resolve().parent.parent / "FJNU-HuaxiangChaPandaTimeoutRecord" | |
| def download_dataset_snapshot(repo_id: str) -> Path: | |
| try: | |
| from huggingface_hub import snapshot_download | |
| except ImportError as exc: | |
| raise RuntimeError("Install huggingface_hub or use --dataset-dir with a local dataset checkout.") from exc | |
| target_dir = Path(tempfile.mkdtemp(prefix="cha_panda_dataset_")) | |
| snapshot_download( | |
| repo_id=repo_id, | |
| repo_type="dataset", | |
| local_dir=str(target_dir), | |
| allow_patterns=["records.csv", "timeout_records.csv", "tmp/*.csv"], | |
| ) | |
| return target_dir | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser(description="Train the Huaxiang ChaPanda timeout risk model.") | |
| parser.add_argument( | |
| "--dataset-dir", | |
| type=Path, | |
| default=default_dataset_dir(), | |
| help="Local checkout of the Dataset repository.", | |
| ) | |
| parser.add_argument( | |
| "--dataset-repo-id", | |
| default=DEFAULT_DATASET_REPO_ID, | |
| help="Hugging Face Dataset repo id used with --download-from-hub.", | |
| ) | |
| parser.add_argument( | |
| "--download-from-hub", | |
| action="store_true", | |
| help="Download timeout_records.csv and tmp/*.csv from the Dataset repository before training.", | |
| ) | |
| parser.add_argument( | |
| "--output", | |
| type=Path, | |
| default=Path(__file__).resolve().parent / "timeout_model.json", | |
| help="Output JSON model path.", | |
| ) | |
| return parser.parse_args() | |
| def main() -> None: | |
| args = parse_args() | |
| downloaded_dir: Path | None = None | |
| dataset_dir = args.dataset_dir | |
| if args.download_from_hub: | |
| downloaded_dir = download_dataset_snapshot(args.dataset_repo_id) | |
| dataset_dir = downloaded_dir | |
| try: | |
| records = load_dataset_records(dataset_dir) | |
| model = train_timeout_model(records) | |
| save_model(model, args.output) | |
| finally: | |
| if downloaded_dir: | |
| shutil.rmtree(downloaded_dir, ignore_errors=True) | |
| metadata = model["metadata"] | |
| print(f"Saved model: {args.output}") | |
| print(f"Mode: {model['mode']}") | |
| print(f"Training records: {metadata['training_records']}") | |
| print(f"Timeout / non-timeout: {metadata['timeout_records']} / {metadata['non_timeout_records']}") | |
| print(f"Calibration: {metadata['calibration']}") | |
| if __name__ == "__main__": | |
| main() | |