Billavenu's picture
adding filleeeesssss
fb12ddc verified
# HF_Space_hipVS/config.py
# ========================
# Environment-aware configuration.
# Auto-scales model selection by hardware tier.
import os
import logging
from pathlib import Path
logger = logging.getLogger(__name__)
# ── Core Flags ──────────────────────────────────────────────────────────────
USE_GPU = os.environ.get("USE_GPU", "false").lower() in ("true", "1", "yes")
HF_TOKEN = os.environ.get("HF_TOKEN", "")
HF_DATASET_REPO = os.environ.get("HF_DATASET_REPO", "")
# ── Device ──────────────────────────────────────────────────────────────────
DEVICE = "cuda" if USE_GPU else "cpu"
TORCH_DTYPE = "float16" if USE_GPU else "float32"
# ── Embedding Model (multimodal β€” images + text, NO captioning) ─────────────
#
# GPU: Qwen3-VL-Embedding-2B (2048d) or Qwen3-VL-Embedding-8B (4096d)
# CPU: CLIP ViT-L/14 (768d) β€” lightweight, runs on free HF Spaces
#
if USE_GPU:
EMBED_MODEL = os.environ.get("EMBED_MODEL", "Qwen/Qwen3-VL-Embedding-2B")
EMBED_DIM = int(os.environ.get("EMBED_DIM", "2048"))
else:
EMBED_MODEL = os.environ.get("EMBED_MODEL", "openai/clip-vit-large-patch14")
EMBED_DIM = int(os.environ.get("EMBED_DIM", "768"))
# ── LLM (search result interpretation) ─────────────────────────────────────
#
# Primary: Qwen3-35B-A3B (MoE: 35B total, 3B active β€” fast + smart)
# Fallback: Qwen3-1.7B (dense, runs on anything)
#
LLM_MODEL = os.environ.get("LLM_MODEL", "Qwen/Qwen3-35B-A3B")
LLM_FALLBACK = os.environ.get("LLM_FALLBACK", "Qwen/Qwen3-1.7B")
# ── Video Frame Extraction ─────────────────────────────────────────────────
FRAME_EVERY_SEC = int(os.environ.get("FRAME_EVERY_SEC", "5"))
# ── Data Directories ────────────────────────────────────────────────────────
DATA_DIR = Path(os.environ.get("DATA_DIR", str(Path(__file__).parent / "data")))
PROJECTS_DIR = DATA_DIR / "projects"
DEFAULT_PROJECT = os.environ.get("DEFAULT_PROJECT", "default")
SWAP_PATH = Path(os.environ.get("SWAP_PATH", str(DATA_DIR / "indexes")))
# Ensure base directories
for d in (PROJECTS_DIR, SWAP_PATH):
d.mkdir(parents=True, exist_ok=True)
# ── Per-project directories ─────────────────────────────────────────────────
def get_project_dir(project: str = DEFAULT_PROJECT) -> Path:
"""Return the root directory for a project, creating it if needed."""
p = PROJECTS_DIR / project
for sub in ("images", "videos", "indexes"):
(p / sub).mkdir(parents=True, exist_ok=True)
return p
# Ensure default project exists
get_project_dir(DEFAULT_PROJECT)
# ── Seeding ─────────────────────────────────────────────────────────────────
SEED_DATASET = os.environ.get("SEED_DATASET", "nlphuji/flickr30k")
SEED_SPLIT = os.environ.get("SEED_SPLIT", "test[:200]")
AUTO_SEED = os.environ.get("AUTO_SEED", "true").lower() in ("true", "1", "yes")
# ── File Extensions ─────────────────────────────────────────────────────────
IMAGE_EXTENSIONS = {".jpg", ".jpeg", ".png", ".webp", ".gif", ".bmp"}
VIDEO_EXTENSIONS = {".mp4", ".mov", ".avi", ".mkv", ".webm"}
# ── Startup Log ─────────────────────────────────────────────────────────────
logger.info("=" * 55)
logger.info(" ARIA Vision Intelligence")
logger.info("=" * 55)
logger.info(f" USE_GPU : {USE_GPU}")
logger.info(f" DEVICE : {DEVICE}")
logger.info(f" EMBED_MODEL : {EMBED_MODEL}")
logger.info(f" EMBED_DIM : {EMBED_DIM}")
logger.info(f" LLM_MODEL : {LLM_MODEL}")
logger.info(f" LLM_FALLBACK : {LLM_FALLBACK}")
logger.info(f" SWAP_PATH : {SWAP_PATH}")
logger.info(f" HF_TOKEN : {'set' if HF_TOKEN else 'NOT SET'}")
logger.info(f" HF_DATASET : {HF_DATASET_REPO or 'local only'}")
logger.info(f" AUTO_SEED : {AUTO_SEED}")
logger.info("=" * 55)