Spaces:
Sleeping
Sleeping
| import torch | |
| import logging | |
| from transformers import BertTokenizer, BertForSequenceClassification | |
| logger = logging.getLogger(__name__) | |
| class ModelManager: | |
| """Lazy loading model manager""" | |
| _instance = None | |
| _model = None | |
| _tokenizer = None | |
| _device = None | |
| def __new__(cls): | |
| if cls._instance is None: | |
| cls._instance = super().__new__(cls) | |
| return cls._instance | |
| def model(self): | |
| if self._model is None: | |
| self._load_model() | |
| return self._model | |
| def tokenizer(self): | |
| if self._tokenizer is None: | |
| self._load_model() | |
| return self._tokenizer | |
| def device(self): | |
| if self._device is None: | |
| self._device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| return self._device | |
| def _load_model(self): | |
| """Load model and tokenizer""" | |
| try: | |
| self._device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| self._tokenizer = BertTokenizer.from_pretrained("entropy25/sentimentanalysis") | |
| self._model = BertForSequenceClassification.from_pretrained("entropy25/sentimentanalysis") | |
| self._model.to(self._device) | |
| logger.info(f"Model loaded on {self._device}") | |
| except Exception as e: | |
| logger.error(f"Model loading failed: {e}") | |
| raise |