Spaces:
Running on Zero
Running on Zero
| from __future__ import annotations | |
| import argparse | |
| from pathlib import Path | |
| from huggingface_hub import HfApi | |
| DEFAULT_MODEL_DIR = Path("models/exercise_router/active") | |
| DEFAULT_MODEL_CARD = Path("docs/22-router-huggingface-model-card.md") | |
| DEFAULT_TRAINING_REPORT = Path("docs/20-router-training-report.md") | |
| ARTIFACT_FILENAMES = ( | |
| "baseline.joblib", | |
| "router.joblib", | |
| "router_selection.json", | |
| "temporal.pt", | |
| "evaluation.json", | |
| "baseline_metrics.json", | |
| "temporal_metrics.json", | |
| "hf_upload.json", | |
| ) | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser(description="Upload Pozify exercise-router artifacts to HF Hub.") | |
| parser.add_argument("--repo-id", required=True, help="Hugging Face model repo id, e.g. user/pozify-exercise-router") | |
| parser.add_argument("--model-dir", type=Path, default=DEFAULT_MODEL_DIR) | |
| parser.add_argument("--model-card", type=Path, default=DEFAULT_MODEL_CARD) | |
| parser.add_argument("--training-report", type=Path, default=DEFAULT_TRAINING_REPORT) | |
| parser.add_argument("--private", action="store_true", help="Create the model repo as private") | |
| return parser.parse_args() | |
| def upload_file(api: HfApi, *, repo_id: str, local_path: Path, path_in_repo: str) -> None: | |
| if not local_path.exists(): | |
| print(f"Skipping missing file: {local_path}") | |
| return | |
| api.upload_file( | |
| repo_id=repo_id, | |
| repo_type="model", | |
| path_or_fileobj=str(local_path), | |
| path_in_repo=path_in_repo, | |
| ) | |
| print(f"Uploaded {local_path} -> {path_in_repo}") | |
| def main() -> None: | |
| args = parse_args() | |
| api = HfApi() | |
| api.create_repo(repo_id=args.repo_id, repo_type="model", private=args.private, exist_ok=True) | |
| upload_file(api, repo_id=args.repo_id, local_path=args.model_card, path_in_repo="README.md") | |
| upload_file( | |
| api, | |
| repo_id=args.repo_id, | |
| local_path=args.training_report, | |
| path_in_repo="training_report.md", | |
| ) | |
| for filename in ARTIFACT_FILENAMES: | |
| upload_file( | |
| api, | |
| repo_id=args.repo_id, | |
| local_path=args.model_dir / filename, | |
| path_in_repo=filename, | |
| ) | |
| if __name__ == "__main__": | |
| main() | |