Break / main.py
RDS777's picture
Update main.py
4c449a4 verified
Raw History Blame Contribute Delete
3.01 kB
# main.py — ADN NEXUS V10.5.1 (correction tokenizer Qwen2.5)
# Ajout de fallback pour tokenizer, et fallback modèle si nécessaire
# ... (tout le code précédent, inchangé jusqu'à la classe LocalInference)
class LocalInference:
def __init__(self):
self.model = None
self.tokenizer = None
self.model_name = Config.MODEL_NAME
self.is_loading = True
self.load_error = None
self._load_task = None
async def initialize(self):
self._load_task = asyncio.create_task(self._load_model())
await self._load_task
async def _load_model(self):
device = Config.DEVICE
# Liste des modèles à essayer en cas d'échec du tokenizer
models_to_try = [
self.model_name,
"Qwen/Qwen1.5-1.8B-Chat",
"TinyLlama/TinyLlama-1.1B-Chat-v1.0",
]
for model_name in models_to_try:
try:
logger.info(f"Tentative de chargement: {model_name}")
loop = asyncio.get_running_loop()
def _load():
# Chargement du tokenizer avec trust_remote_code et use_fast=False
try:
tokenizer = AutoTokenizer.from_pretrained(
model_name,
token=Config.HF_TOKEN,
trust_remote_code=True,
use_fast=False,
)
except Exception as e:
# Fallback : essayer avec les paramètres par défaut
logger.warning(f"Tokenizer avec use_fast=False échoué: {e}, tentative par défaut")
tokenizer = AutoTokenizer.from_pretrained(
model_name,
token=Config.HF_TOKEN,
trust_remote_code=True,
)
# Chargement du modèle
model = AutoModelForCausalLM.from_pretrained(
model_name,
token=Config.HF_TOKEN,
trust_remote_code=True,
dtype=torch.float16 if device == "cuda" else torch.float32,
low_cpu_mem_usage=True,
)
model.to(device)
model.eval()
return tokenizer, model
self.tokenizer, self.model = await loop.run_in_executor(None, _load)
self.model_name = model_name
self.is_loading = False
logger.info(f"Modele charge avec succes: {model_name}")
return
except Exception as e:
logger.warning(f"Echec chargement {model_name}: {e}")
continue
self.is_loading = False
self.load_error = "Aucun modele n'a pu etre charge"
logger.error(self.load_error)
# ... (reste du code inchangé)