Spaces:
Sleeping
Sleeping
Create model_selector.py
Browse files- models/model_selector.py +28 -0
models/model_selector.py
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import logging
|
2 |
+
from models.model_loader import ModelLoader
|
3 |
+
|
4 |
+
logger = logging.getLogger(__name__)
|
5 |
+
|
6 |
+
class ModelSelector:
|
7 |
+
"""
|
8 |
+
Given a list of candidate model names, attempts to load each in turn
|
9 |
+
and returns the first that succeeds.
|
10 |
+
"""
|
11 |
+
def __init__(self, candidates=None, quantize=True):
|
12 |
+
# Default candidates: NLLB distilled, then M2M100
|
13 |
+
self.candidates = candidates or [
|
14 |
+
"facebook/nllb-200-distilled-600M",
|
15 |
+
"facebook/m2m100_418M"
|
16 |
+
]
|
17 |
+
self.quantize = quantize
|
18 |
+
|
19 |
+
def select(self) -> str:
|
20 |
+
loader = ModelLoader(quantize=self.quantize)
|
21 |
+
for name in self.candidates:
|
22 |
+
try:
|
23 |
+
_, _ = loader.load(name)
|
24 |
+
logger.info(f"✔️ Selected translation model: {name}")
|
25 |
+
return name
|
26 |
+
except Exception as e:
|
27 |
+
logger.warning(f"Failed to load {name}: {e}")
|
28 |
+
raise RuntimeError("No translation model could be loaded.")
|