Download main.py from RDS777/Break: direct link, hf CLI and curl.
- Browser
- Download file 3.01 kB
-
https://huggingface.co/spaces/RDS777/Break/resolve/main/main.py
- Command line
-
hf download hf://spaces/RDS777/Break/main.py
-
curl -L -o main.py https://huggingface.co/spaces/RDS777/Break/resolve/main/main.py
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é) |