c7134c25dfe642f3a467e325920.../setup_model_cache.sh

46 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Idempotent symlinks: shared vendor weights -> per-user ~/.cache (torch + CLIP).
# See VENDOR_MODELS.md for vendor layout and download URLs.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENDOR_MODELS="${VENDOR_MODELS:-/opt/vendor/models/office_vlm}"
TORCH_HOME="${TORCH_HOME:-${HOME}/.cache/torch}"
CLIP_DIR="${CLIP_DIR:-${HOME}/.cache/clip}"
FRCNN_NAME="fasterrcnn_resnet50_fpn_v2_coco-dd69338a.pth"
CLIP_NAME="ViT-B-32.pt"
log() { echo "[office_vlm/models] $*"; }
link_if_missing() {
local src="$1" dst="$2"
if [[ ! -f "${src}" ]]; then
log "WARN: vendor file missing (skip): ${src}"
return 0
fi
if [[ -e "${dst}" ]]; then
return 0
fi
mkdir -p "$(dirname "${dst}")"
ln -sf "${src}" "${dst}"
log "linked ${dst} -> ${src}"
}
mkdir -p "${TORCH_HOME}/hub/checkpoints" "${CLIP_DIR}"
link_if_missing \
"${VENDOR_MODELS}/torch/hub/checkpoints/${FRCNN_NAME}" \
"${TORCH_HOME}/hub/checkpoints/${FRCNN_NAME}"
link_if_missing \
"${VENDOR_MODELS}/clip/${CLIP_NAME}" \
"${CLIP_DIR}/${CLIP_NAME}"
if [[ -f "${VENDOR_MODELS}/torch/hub/checkpoints/${FRCNN_NAME}" ]] \
&& [[ -f "${VENDOR_MODELS}/clip/${CLIP_NAME}" ]]; then
log "cache ready (vendor)"
else
log "vendor incomplete — nodes will download on first clip.load / torchvision weights"
fi