ss-b-copy / ai_core /ml_engine.py
dws6's picture
Rename ml_engine.py to ai_core/ml_engine.py
90e8931 verified
Raw
History Blame Contribute Delete
1.34 kB
import torch
from sentence_transformers import SentenceTransformer
from collections import OrderedDict
import constants
print("AI Model Load हो रहा है...")
model = SentenceTransformer(constants.MODEL_NAME, trust_remote_code=True)
if torch.cuda.is_available():
model = model.to("cuda")
# ⚡ Bounded Cache (CPU RAM storage to save VRAM)
class BoundedEmbeddingCache:
def __init__(self, maxsize=2000):
self.cache = OrderedDict()
self.maxsize = maxsize
def get(self, text):
if text in self.cache:
self.cache.move_to_end(text)
return self.cache[text]
return None
def put(self, text, emb):
self.cache[text] = emb
self.cache.move_to_end(text)
if len(self.cache) > self.maxsize:
self.cache.popitem(last=False)
EMBEDDING_CACHE = BoundedEmbeddingCache(maxsize=2000)
def get_batch_embeddings(texts):
uncached_texts = [t for t in texts if EMBEDDING_CACHE.get(t) is None]
if uncached_texts:
with torch.no_grad():
embs = model.encode(uncached_texts, convert_to_tensor=True, normalize_embeddings=True)
for t, e in zip(uncached_texts, embs):
EMBEDDING_CACHE.put(t, e.cpu())
return torch.stack([EMBEDDING_CACHE.get(t) for t in texts]).to(model.device)