deepread-backend / preload_models.py
rehan575's picture
feat: add preload_models.py to cache HuggingFace models at image build time
788fc2c
Raw
History Blame Contribute Delete
1.29 kB
"""
preload_models.py β€” Run during Docker image build to cache HuggingFace models.
Baking models into the image layer eliminates cold-start download time on
Cloud Run and avoids HuggingFace Hub rate limits in production.
Usage (Dockerfile):
RUN python preload_models.py
"""
import os
import sys
RERANKER_MODEL = os.getenv("RERANKER_MODEL", "cross-encoder/ms-marco-MiniLM-L-6-v2")
EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "all-MiniLM-L6-v2")
def preload():
print(f"[preload] Downloading embedding model: {EMBEDDING_MODEL}")
try:
from sentence_transformers import SentenceTransformer
SentenceTransformer(EMBEDDING_MODEL)
print(f"[preload] βœ“ Embedding model ready")
except Exception as e:
print(f"[preload] βœ— Embedding model failed: {e}", file=sys.stderr)
sys.exit(1)
print(f"[preload] Downloading reranker model: {RERANKER_MODEL}")
try:
from sentence_transformers import CrossEncoder
CrossEncoder(RERANKER_MODEL)
print(f"[preload] βœ“ Reranker model ready")
except Exception as e:
print(f"[preload] βœ— Reranker model failed: {e}", file=sys.stderr)
sys.exit(1)
print("[preload] All models cached successfully.")
if __name__ == "__main__":
preload()