models
Model checkpoint resolution and caching for eval metrics.
Single public function — :func:ensure_checkpoint — that hands a metric
a local path to its weights, downloading on miss. Three source kinds:
- an existing local path → returned as-is;
- an HTTP(S) URL → downloaded to
get_cache_dir() / nameviahuggingface_hub.http_get(resume + retries built in); - an HF repo id (
"org/repo") → :func:huggingface_hub.hf_hub_downloadif filename is given, else :func:huggingface_hub.snapshot_download. name is ignored in HF mode — HF manages its own cache key under~/.cache/huggingface/hub.
All download paths are filelock-safe (cooperative across threads,
processes, and SLURM ranks) via :func:fastvideo.utils.get_lock.
fastvideo.eval.models.get_lock
get_lock(model_name_or_path: str)
fastvideo.eval.models.get_cache_dir
get_cache_dir() -> Path
Eval cache root.
Layout::
get_cache_dir() / models / ← URL-fetched checkpoints (LAION head,
AMT, GRiT, …)
get_cache_dir() / torch / ← redirected ``TORCH_HOME`` (DINO etc.)
get_cache_dir() / clip / ← passed as ``download_root`` to
``clip.load(...)`` callsites
~/.cache/huggingface/hub / ← left at HF's default; widely shared
with other ML projects
Override priority: FASTVIDEO_EVAL_CACHE > ${FASTVIDEO_CACHE_ROOT}/eval.
Metric authors writing new code: when wrapping a third-party loader
that has its own cache convention (CLIP's download_root, pyiqa's
cache_dir, etc.), pass str(get_cache_dir() / "<library>") so
users get a single FASTVIDEO_EVAL_CACHE knob to redirect them all.
Source
def get_cache_dir() -> Path:
"""Eval cache root.
Layout::
get_cache_dir() / models / ← URL-fetched checkpoints (LAION head,
AMT, GRiT, …)
get_cache_dir() / torch / ← redirected ``TORCH_HOME`` (DINO etc.)
get_cache_dir() / clip / ← passed as ``download_root`` to
``clip.load(...)`` callsites
~/.cache/huggingface/hub / ← left at HF's default; widely shared
with other ML projects
Override priority: ``FASTVIDEO_EVAL_CACHE`` > ``${FASTVIDEO_CACHE_ROOT}/eval``.
Metric authors writing new code: when wrapping a third-party loader
that has its own cache convention (CLIP's ``download_root``, pyiqa's
``cache_dir``, etc.), pass ``str(get_cache_dir() / "<library>")`` so
users get a single ``FASTVIDEO_EVAL_CACHE`` knob to redirect them all.
"""
return Path(envs.FASTVIDEO_EVAL_CACHE.get())</code></pre></details>
fastvideo.eval.models.ensure_checkpoint
ensure_checkpoint(name: str, source: str, filename: str | None = None) -> str
Resolve a model checkpoint path, downloading on miss.
See module docstring for the full source contract. name is used
only as the local cache filename for URL sources; ignored otherwise.
Source
def ensure_checkpoint(
name: str,
source: str,
filename: str | None = None,
) -> str:
"""Resolve a model checkpoint path, downloading on miss.
See module docstring for the full source contract. *name* is used
only as the local cache filename for URL sources; ignored otherwise.
"""
if os.path.exists(source):
return source
if source.startswith(("http://", "https://")):
return _ensure_url(name, source)
if "/" in source:
return _ensure_hf(source, filename)
raise ValueError(f"Cannot resolve checkpoint: source {source!r} is neither a "
"path, URL, nor HF repo id")</code></pre></details>