Spaces:
Sleeping
Sleeping
| """ | |
| Upload all .pth checkpoints to a Hugging Face Model repo. | |
| The Model repo holds the weights so the Space stays under its 1 GB cap. | |
| The Space's app.py downloads from this repo via hf_hub_download. | |
| Usage: | |
| huggingface-cli login # one-time, paste your write token | |
| python tools/upload_weights.py phiniqs/seg-models-weights | |
| Folder layout in the Model repo: | |
| baseline/{model}_{share}_{kind}.pth from clean_data_scaling_study | |
| grid/{cfg_id}_best.pth from finetune_grid_search | |
| """ | |
| import argparse | |
| import sys | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parents[1] | |
| BASELINE_DIR = ROOT / "experiments" / "clean_data_scaling_study" / "checkpoints" | |
| GRID_DIR = ROOT / "experiments" / "finetune_grid_search" / "checkpoints" | |
| def main(): | |
| p = argparse.ArgumentParser() | |
| p.add_argument("repo_id", help="HF model repo id, e.g. phiniqs/seg-models-weights") | |
| p.add_argument("--private", action="store_true", help="create as private repo") | |
| p.add_argument("--dry-run", action="store_true", help="show plan, don't upload") | |
| args = p.parse_args() | |
| try: | |
| from huggingface_hub import HfApi, create_repo | |
| except ImportError: | |
| print("ERROR: install huggingface_hub first:") | |
| print(" pip install --user huggingface_hub") | |
| sys.exit(1) | |
| baseline_files = sorted(BASELINE_DIR.glob("*.pth")) | |
| grid_files = sorted(GRID_DIR.glob("*.pth")) | |
| total_bytes = sum(f.stat().st_size for f in baseline_files + grid_files) | |
| print(f"baseline checkpoints : {len(baseline_files):>3} " | |
| f"({sum(f.stat().st_size for f in baseline_files) / 1e6:.1f} MB)") | |
| print(f"grid checkpoints : {len(grid_files):>3} " | |
| f"({sum(f.stat().st_size for f in grid_files) / 1e6:.1f} MB)") | |
| print(f"total : {len(baseline_files) + len(grid_files)} files, " | |
| f"{total_bytes / 1e9:.2f} GB") | |
| print() | |
| if args.dry_run: | |
| print("[dry-run] would create Model repo:", args.repo_id) | |
| print(f"[dry-run] would upload to baseline/ ({len(baseline_files)} files)") | |
| for f in baseline_files[:3]: | |
| print(f" {f.name}") | |
| if len(baseline_files) > 3: | |
| print(f" ... +{len(baseline_files) - 3} more") | |
| print(f"[dry-run] would upload to grid/ ({len(grid_files)} files)") | |
| for f in grid_files[:3]: | |
| print(f" {f.name}") | |
| if len(grid_files) > 3: | |
| print(f" ... +{len(grid_files) - 3} more") | |
| return | |
| api = HfApi() | |
| print(f"creating model repo: {args.repo_id} (private={args.private})") | |
| create_repo( | |
| repo_id=args.repo_id, | |
| repo_type="model", | |
| private=args.private, | |
| exist_ok=True, | |
| ) | |
| print(f"uploading baseline/ ({len(baseline_files)} files, " | |
| f"{sum(f.stat().st_size for f in baseline_files) / 1e6:.1f} MB)…") | |
| api.upload_folder( | |
| folder_path=str(BASELINE_DIR), | |
| path_in_repo="baseline", | |
| repo_id=args.repo_id, | |
| repo_type="model", | |
| commit_message="Add baseline checkpoints (4 architectures × 3 shares)", | |
| allow_patterns=["*.pth"], | |
| ) | |
| print(f"uploading grid/ ({len(grid_files)} files, " | |
| f"{sum(f.stat().st_size for f in grid_files) / 1e6:.1f} MB)…") | |
| api.upload_folder( | |
| folder_path=str(GRID_DIR), | |
| path_in_repo="grid", | |
| repo_id=args.repo_id, | |
| repo_type="model", | |
| commit_message="Add fine-tune grid checkpoints (54 configs)", | |
| allow_patterns=["*.pth"], | |
| ) | |
| print() | |
| print(f"done. weights live at: https://huggingface.co/{args.repo_id}") | |
| print(f"the Space's app.py reads from this repo via HF_WEIGHTS_REPO env var " | |
| f"(default: phiniqs/seg-models-weights).") | |
| if __name__ == "__main__": | |
| main() | |