snapr / src /modal_services /app_config.py
lisekarimi
Deploy version 0.1.0
8366946
"""Defines shared Modal configuration.
Includes constants, image, volume, secrets, and app setup.
"""
from modal import App, Image, Secret, Volume
from src.config.constants import APP_NAME
CACHE_PATH = "/cache"
GPU = "T4"
# Modal image, volume, and secrets
image = (
Image.debian_slim()
.pip_install(
"huggingface",
"torch",
"transformers",
"bitsandbytes",
"accelerate",
"peft",
"sentence-transformers",
"xgboost",
"joblib",
"chromadb",
"openai",
"numpy",
"pandas",
)
.env({"HF_HUB_CACHE": CACHE_PATH})
.add_local_file(local_path="pyproject.toml", remote_path="/root/pyproject.toml")
)
# Modal setup
app = App(APP_NAME, image=image)
cache_vol = Volume.from_name("hf-hub-cache", create_if_missing=True)
secrets = [Secret.from_name("HF_TOKEN"), Secret.from_name("OPENAI_API_KEY")]
# Shared Modal class config for all model agents
modal_class_kwargs = dict(
image=image,
secrets=secrets,
volumes={CACHE_PATH: cache_vol}, # Mount volume into /cache
gpu=GPU,
timeout=1800, # 30-minute max runtime
min_containers=0, # 1 = always-on, uses credits
scaledown_window=180, # Shuts down the container
)