Skip to content

Commit 62e33cb

Browse files
Merge pull request #77 from DefangLabs/jordan/sentence-transformers-location
Caching Sentence Transformers in Docker image
2 parents 4afe49a + cc22d15 commit 62e33cb

File tree

5 files changed

+22
-6
lines changed

5 files changed

+22
-6
lines changed

app/Dockerfile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@ COPY requirements.txt /app/
3434
RUN pip install --no-cache-dir -r requirements.txt
3535

3636
# Set the environment variable for the sentence transformers model
37-
ENV SENTENCE_TRANSFORMERS_HOME="/app/sentence-transformers"
37+
ENV SENTENCE_TRANSFORMERS_HOME="/root/.cache/sentence_transformers"
38+
39+
COPY ./embeddings.py /app/embeddings.py
3840

3941
# Preload the sentence transformer model to cache
40-
RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')"
42+
RUN python embeddings.py
4143

4244
# Copy the application source code into the container
4345
COPY . /app
@@ -49,4 +51,4 @@ EXPOSE 5050
4951
ENV FLASK_APP=app.py
5052

5153
# Run the application using uWSGI
52-
CMD ["uwsgi", "--lazy-apps", "--http", "0.0.0.0:5050", "--wsgi-file", "app.py", "--callable", "app", "--processes", "4", "--threads", "2"]
54+
CMD ["uwsgi", "--http", "0.0.0.0:5050", "--wsgi-file", "app.py", "--callable", "app", "--processes", "4", "--threads", "2"]

app/embeddings.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import os
2+
from sentence_transformers import SentenceTransformer
3+
4+
def load_model():
5+
"""
6+
Load the SentenceTransformer model from the specified path.
7+
The model path is determined by the SENTENCE_TRANSFORMERS_HOME environment variable.
8+
"""
9+
# model_path = os.getenv("SENTENCE_TRANSFORMERS_HOME", "./models/sentence-transformers")
10+
# model = SentenceTransformer(f"{model_path}/models--sentence-transformers--all-MiniLM-L6-v2")
11+
model = SentenceTransformer("all-MiniLM-L6-v2")
12+
return model
13+
14+
if __name__ == "__main__":
15+
load_model()

app/rag_system.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from sentence_transformers import SentenceTransformer
77
import numpy as np
88
from sklearn.metrics.pairwise import cosine_similarity
9+
from embeddings import load_model
910
import traceback
1011

1112
openai.api_base = os.getenv("OPENAI_BASE_URL")
@@ -15,7 +16,7 @@ class RAGSystem:
1516
def __init__(self, knowledge_base_path='./data/knowledge_base.json'):
1617
self.knowledge_base_path = knowledge_base_path
1718
self.knowledge_base = self.load_knowledge_base()
18-
self.model = SentenceTransformer('all-MiniLM-L6-v2')
19+
self.model = load_model()
1920
self.doc_embeddings = self.embed_knowledge_base()
2021
self.conversation_history = []
2122

compose.dev.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ services:
1616
SEGMENT_WRITE_KEY: ${SEGMENT_WRITE_KEY} # Set your Segment write key here or in the .env file
1717
SESSION_COOKIE_SECURE: 0
1818
OPENAI_BASE_URL: "http://llm:5051/api/v1"
19-
SENTENCE_TRANSFORMERS_HOME: /app/sentence-transformers
2019
volumes:
2120
- type: bind
2221
source: ./app

compose.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ services:
2626
INTERCOM_TOKEN:
2727
INTERCOM_ADMIN_ID:
2828
REDIS_URL: redis://redis:6379/0
29-
SENTENCE_TRANSFORMERS_HOME: /app/sentence-transformers
3029
deploy:
3130
resources:
3231
reservations:

0 commit comments

Comments
 (0)