Skip to content

Commit 48366da

Browse files
committed
fix
1 parent 0000084 commit 48366da

3 files changed

Lines changed: 43 additions & 5 deletions

File tree

devtron-docs-rag-server/Dockerfile

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
# Stage 1: Builder - Install dependencies
77
FROM python:3.12-slim AS builder
88

9+
# Set cache directories BEFORE downloading anything
10+
ENV TRANSFORMERS_CACHE=/root/.cache/huggingface \
11+
HF_HOME=/root/.cache/huggingface \
12+
TORCH_HOME=/root/.cache/torch \
13+
SENTENCE_TRANSFORMERS_HOME=/root/.cache/torch/sentence_transformers
14+
915
# Install build dependencies
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends \
@@ -38,7 +44,10 @@ RUN pip install --user --no-cache-dir -r requirements.txt && \
3844
# This prevents downloading ~1.34GB on every container startup
3945
COPY download_model.py .
4046
RUN python download_model.py BAAI/bge-large-en-v1.5 && \
41-
rm download_model.py
47+
rm download_model.py && \
48+
echo "Verifying model cache..." && \
49+
ls -lah /root/.cache/torch/sentence_transformers/ && \
50+
echo "Model cache verified!"
4251

4352
# ============================================================================
4453
# Stage 2: Runtime - Minimal production image
@@ -82,6 +91,8 @@ ENV PYTHONUNBUFFERED=1 \
8291
HF_HOME=/root/.cache/huggingface \
8392
TORCH_HOME=/root/.cache/torch \
8493
SENTENCE_TRANSFORMERS_HOME=/root/.cache/torch/sentence_transformers \
94+
HF_HUB_OFFLINE=1 \
95+
TRANSFORMERS_OFFLINE=1 \
8596
PIP_NO_CACHE_DIR=1
8697

8798
# Expose port

devtron-docs-rag-server/download_model.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"""
66

77
import logging
8+
import os
89
import sys
910
from sentence_transformers import SentenceTransformer
1011

@@ -16,21 +17,35 @@
1617

1718
def download_model(model_name: str = "BAAI/bge-large-en-v1.5"):
1819
"""Download and cache the embedding model."""
20+
21+
# Verify cache directories are set
22+
cache_dir = os.getenv('SENTENCE_TRANSFORMERS_HOME')
23+
logger.info(f"Cache directory: {cache_dir}")
1924
logger.info(f"Downloading embedding model: {model_name}")
2025
logger.info("This will download ~1.34GB and may take several minutes...")
21-
26+
2227
try:
28+
# Download model - it will use SENTENCE_TRANSFORMERS_HOME env var automatically
2329
model = SentenceTransformer(model_name)
2430
dimension = model.get_sentence_embedding_dimension()
25-
31+
2632
logger.info(f"✓ Model downloaded successfully!")
2733
logger.info(f" Model: {model_name}")
2834
logger.info(f" Embedding dimension: {dimension}")
29-
logger.info(f" Model is now cached and ready to use")
30-
35+
logger.info(f" Cache location: {cache_dir}")
36+
37+
# Verify the cache exists
38+
if cache_dir and os.path.exists(cache_dir):
39+
logger.info(f" Cache verified at: {cache_dir}")
40+
# List contents
41+
for root, dirs, files in os.walk(cache_dir):
42+
logger.info(f" {root}: {len(files)} files")
43+
3144
return True
3245
except Exception as e:
3346
logger.error(f"✗ Failed to download model: {str(e)}")
47+
import traceback
48+
traceback.print_exc()
3449
return False
3550

3651
if __name__ == "__main__":

devtron-docs-rag-server/vector_store.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import logging
66
import json
7+
import os
78
from typing import List, Dict, Any, Optional
89
from pathlib import Path
910
import hashlib
@@ -27,12 +28,23 @@ def __init__(self, model_name: str = "BAAI/bge-large-en-v1.5"):
2728
model_name: HuggingFace model name
2829
"""
2930
logger.info(f"Loading embedding model: {model_name}")
31+
32+
# Verify cache directory exists
33+
cache_dir = os.getenv('SENTENCE_TRANSFORMERS_HOME')
34+
if cache_dir and os.path.exists(cache_dir):
35+
logger.info(f"Using cached model from: {cache_dir}")
36+
else:
37+
logger.warning(f"Cache directory not found: {cache_dir}")
38+
3039
try:
40+
# Load model - it will use SENTENCE_TRANSFORMERS_HOME env var automatically
3141
self.model = SentenceTransformer(model_name)
3242
self.dimension = self.model.get_sentence_embedding_dimension()
3343
logger.info(f"✓ Embedding model loaded (dimension: {self.dimension})")
3444
except Exception as e:
3545
logger.error(f"✗ Failed to load embedding model: {str(e)}")
46+
logger.error(f"Cache directory: {cache_dir}")
47+
logger.error(f"Cache exists: {os.path.exists(cache_dir) if cache_dir else 'N/A'}")
3648
raise
3749

3850
def embed_documents(self, texts: List[str]) -> List[List[float]]:

0 commit comments

Comments
 (0)