davidtran999 commited on
Commit
9a83f02
·
verified ·
1 Parent(s): a053d0d

Upload backend/hue_portal/hue_portal/preload_models.py with huggingface_hub

Browse files
backend/hue_portal/hue_portal/preload_models.py ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Preload all models when worker process starts.
3
+ This module is imported by wsgi.py to ensure models are loaded before first request.
4
+ """
5
+ import os
6
+ import sys
7
+
8
+ def preload_all_models():
9
+ """Preload all models (embedding, LLM, reranker) in worker process."""
10
+ print('[PRELOAD] 🔄 Starting model preload in worker process...', flush=True)
11
+ try:
12
+ # 1. Preload Embedding Model (BGE-M3)
13
+ try:
14
+ print('[PRELOAD] 📦 Preloading embedding model (BGE-M3)...', flush=True)
15
+ from hue_portal.core.embeddings import get_embedding_model
16
+ embedding_model = get_embedding_model()
17
+ if embedding_model:
18
+ print('[PRELOAD] ✅ Embedding model preloaded successfully', flush=True)
19
+ else:
20
+ print('[PRELOAD] ⚠️ Embedding model not loaded', flush=True)
21
+ except Exception as e:
22
+ print(f'[PRELOAD] ⚠️ Embedding model preload failed: {e}', flush=True)
23
+
24
+ # 2. Preload LLM Model (llama.cpp)
25
+ llm_provider = os.environ.get('DEFAULT_LLM_PROVIDER') or os.environ.get('LLM_PROVIDER', '')
26
+ if llm_provider.lower() == 'llama_cpp':
27
+ try:
28
+ print('[PRELOAD] 📦 Preloading LLM model (llama.cpp)...', flush=True)
29
+ from hue_portal.chatbot.llm_integration import get_llm_generator
30
+ llm_gen = get_llm_generator()
31
+ if llm_gen and hasattr(llm_gen, 'llama_cpp') and llm_gen.llama_cpp:
32
+ print('[PRELOAD] ✅ LLM model preloaded successfully', flush=True)
33
+ else:
34
+ print('[PRELOAD] ⚠️ LLM model not loaded (may load on first request)', flush=True)
35
+ except Exception as e:
36
+ print(f'[PRELOAD] ⚠️ LLM model preload failed: {e} (will load on first request)', flush=True)
37
+ else:
38
+ print(f'[PRELOAD] ⏭️ Skipping LLM preload (provider is {llm_provider or "not set"}, not llama_cpp)', flush=True)
39
+
40
+ # 3. Preload Reranker Model
41
+ try:
42
+ print('[PRELOAD] 📦 Preloading reranker model...', flush=True)
43
+ from hue_portal.core.reranker import get_reranker
44
+ reranker = get_reranker()
45
+ if reranker:
46
+ print('[PRELOAD] ✅ Reranker model preloaded successfully', flush=True)
47
+ else:
48
+ print('[PRELOAD] ⚠️ Reranker model not loaded (may load on first request)', flush=True)
49
+ except Exception as e:
50
+ print(f'[PRELOAD] ⚠️ Reranker preload failed: {e} (will load on first request)', flush=True)
51
+
52
+ print('[PRELOAD] ✅ Model preload completed in worker process', flush=True)
53
+ except Exception as e:
54
+ print(f'[PRELOAD] ⚠️ Model preload error: {e} (models will load on first request)', flush=True)
55
+ import traceback
56
+ traceback.print_exc()
57
+
58
+ Preload all models when worker process starts.
59
+ This module is imported by wsgi.py to ensure models are loaded before first request.
60
+ """
61
+ import os
62
+ import sys
63
+
64
+ def preload_all_models():
65
+ """Preload all models (embedding, LLM, reranker) in worker process."""
66
+ print('[PRELOAD] 🔄 Starting model preload in worker process...', flush=True)
67
+ try:
68
+ # 1. Preload Embedding Model (BGE-M3)
69
+ try:
70
+ print('[PRELOAD] 📦 Preloading embedding model (BGE-M3)...', flush=True)
71
+ from hue_portal.core.embeddings import get_embedding_model
72
+ embedding_model = get_embedding_model()
73
+ if embedding_model:
74
+ print('[PRELOAD] ✅ Embedding model preloaded successfully', flush=True)
75
+ else:
76
+ print('[PRELOAD] ⚠️ Embedding model not loaded', flush=True)
77
+ except Exception as e:
78
+ print(f'[PRELOAD] ⚠️ Embedding model preload failed: {e}', flush=True)
79
+
80
+ # 2. Preload LLM Model (llama.cpp)
81
+ llm_provider = os.environ.get('DEFAULT_LLM_PROVIDER') or os.environ.get('LLM_PROVIDER', '')
82
+ if llm_provider.lower() == 'llama_cpp':
83
+ try:
84
+ print('[PRELOAD] 📦 Preloading LLM model (llama.cpp)...', flush=True)
85
+ from hue_portal.chatbot.llm_integration import get_llm_generator
86
+ llm_gen = get_llm_generator()
87
+ if llm_gen and hasattr(llm_gen, 'llama_cpp') and llm_gen.llama_cpp:
88
+ print('[PRELOAD] ✅ LLM model preloaded successfully', flush=True)
89
+ else:
90
+ print('[PRELOAD] ⚠️ LLM model not loaded (may load on first request)', flush=True)
91
+ except Exception as e:
92
+ print(f'[PRELOAD] ⚠️ LLM model preload failed: {e} (will load on first request)', flush=True)
93
+ else:
94
+ print(f'[PRELOAD] ⏭️ Skipping LLM preload (provider is {llm_provider or "not set"}, not llama_cpp)', flush=True)
95
+
96
+ # 3. Preload Reranker Model
97
+ try:
98
+ print('[PRELOAD] 📦 Preloading reranker model...', flush=True)
99
+ from hue_portal.core.reranker import get_reranker
100
+ reranker = get_reranker()
101
+ if reranker:
102
+ print('[PRELOAD] ✅ Reranker model preloaded successfully', flush=True)
103
+ else:
104
+ print('[PRELOAD] ⚠️ Reranker model not loaded (may load on first request)', flush=True)
105
+ except Exception as e:
106
+ print(f'[PRELOAD] ⚠️ Reranker preload failed: {e} (will load on first request)', flush=True)
107
+
108
+ print('[PRELOAD] ✅ Model preload completed in worker process', flush=True)
109
+ except Exception as e:
110
+ print(f'[PRELOAD] ⚠️ Model preload error: {e} (models will load on first request)', flush=True)
111
+ import traceback
112
+ traceback.print_exc()
113
+