| """ |
| Download TemporalBench (full, ~59 GB) and a subset of LLaVA-Video-178K (annotations |
| + academic_v0_1 video splits, ~250 GB). Resumable: re-running picks up where it |
| left off (HF snapshot_download deduplicates). |
| |
| Run via: nohup ... python download_datasets.py > log 2>&1 & |
| """ |
| from __future__ import annotations |
|
|
| import argparse |
| import os |
| import sys |
| import time |
| from pathlib import Path |
|
|
| from huggingface_hub import snapshot_download |
|
|
| ROOT = Path("/mnt/local-fast/opd_zt/data/raw") |
|
|
| |
| |
| |
| LV178K_ALLOW = [ |
| "*.json", |
| "*.md", |
| "0_30_s_academic_v0_1/*", |
| "30_60_s_academic_v0_1/*", |
| "1_2_m_academic_v0_1/*", |
| "2_3_m_academic_v0_1/*", |
| "0_30_s_perceptiontest/*", |
| "30_60_s_perceptiontest/*", |
| "0_30_s_nextqa/*", |
| "30_60_s_nextqa/*", |
| "1_2_m_nextqa/*", |
| "2_3_m_nextqa/*", |
| "0_30_s_activitynetqa/*", |
| "30_60_s_activitynetqa/*", |
| "1_2_m_activitynetqa/*", |
| "2_3_m_activitynetqa/*", |
| ] |
|
|
|
|
| def log(msg: str) -> None: |
| print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {msg}", flush=True) |
|
|
|
|
| def pull(repo_id: str, local_subdir: str, allow_patterns=None) -> None: |
| target = ROOT / local_subdir |
| target.mkdir(parents=True, exist_ok=True) |
| log(f"START {repo_id} -> {target} allow={allow_patterns!r}") |
| t0 = time.time() |
| snapshot_download( |
| repo_id=repo_id, |
| repo_type="dataset", |
| local_dir=str(target), |
| allow_patterns=allow_patterns, |
| max_workers=8, |
| |
| ) |
| dt = time.time() - t0 |
| log(f"DONE {repo_id} in {dt/60:.1f} min") |
|
|
|
|
| def main() -> None: |
| parser = argparse.ArgumentParser() |
| parser.add_argument( |
| "--only", |
| choices=["tb", "lv178k_anno", "lv178k_videos", "all"], |
| default="all", |
| ) |
| args = parser.parse_args() |
|
|
| log(f"start. ROOT={ROOT} HF_HOME={os.environ.get('HF_HOME')}") |
|
|
| if args.only in ("all", "tb"): |
| pull("microsoft/TemporalBench", "tb") |
|
|
| if args.only in ("all", "lv178k_anno"): |
| |
| pull( |
| "lmms-lab/LLaVA-Video-178K", |
| "lv178k", |
| allow_patterns=["*.json", "*.md", "*.py"], |
| ) |
|
|
| if args.only in ("all", "lv178k_videos"): |
| pull("lmms-lab/LLaVA-Video-178K", "lv178k", allow_patterns=LV178K_ALLOW) |
|
|
| log("ALL DONE") |
|
|
|
|
| if __name__ == "__main__": |
| try: |
| main() |
| except Exception: |
| import traceback |
| traceback.print_exc() |
| sys.exit(1) |
|
|