Spaces:
Sleeping
Sleeping
🔧 Solution pour l'erreur "disk_offload" - Gemma 3n E4B IT
🚨 Problème identifié
L'erreur You are trying to offload the whole model to the disk. Please use the disk_offload function instead.
se produit lorsque :
- Le modèle est trop volumineux pour la mémoire disponible
- Hugging Face Spaces a des limitations de mémoire
- Le modèle Gemma 3n E4B IT nécessite environ 8-12GB de RAM
✅ Solution implémentée
1. Stratégies de chargement multiples
L'application utilise maintenant 4 stratégies de chargement en cascade :
# Stratégie 1: CPU Conservateur
device_map="cpu", torch_dtype=torch.float32, max_memory={"cpu": "8GB"}
# Stratégie 2: 4-bit Quantization
load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16
# Stratégie 3: 8-bit Quantization
load_in_8bit=True
# Stratégie 4: Gestion mémoire personnalisée
max_memory={0: "4GB", "cpu": "8GB"}
2. Dépendances mises à jour
pip install bitsandbytes>=0.41.0
pip install accelerate>=0.20.0
pip install transformers>=4.35.0
3. Gestion automatique des erreurs
- Détection automatique de la mémoire disponible
- Fallback automatique entre les stratégies
- Messages d'erreur informatifs
🧪 Test de la solution
Exécuter le script de test :
python test_model_loading.py
Ce script va :
- ✅ Vérifier la mémoire disponible
- ✅ Tester chaque stratégie de chargement
- ✅ Identifier la meilleure stratégie pour votre environnement
- ✅ Fournir des recommandations en cas d'échec
🚀 Utilisation
1. Installation des dépendances
pip install -r requirements.txt
2. Lancement de l'application
streamlit run src/streamlit_app_multilingual.py
3. Chargement du modèle
- Ouvrez l'application dans votre navigateur
- Allez dans la sidebar "Configuration"
- Cliquez sur "Charger le modèle Gemma 3n E4B IT"
- L'application testera automatiquement les stratégies
🔍 Diagnostic des problèmes
Si le chargement échoue :
Vérifiez la mémoire disponible :
import torch if torch.cuda.is_available(): print(f"GPU: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.1f} GB")
Vérifiez les dépendances :
pip list | grep -E "(transformers|accelerate|bitsandbytes)"
Consultez les logs :
- Les messages d'erreur détaillés s'affichent dans l'interface
- Chaque stratégie testée est documentée
💡 Recommandations
Pour Hugging Face Spaces :
Utilisez un runtime avec plus de mémoire :
- CPU: 8GB minimum
- GPU: 16GB recommandé
Configuration dans
app.py
:# Ajoutez ces lignes au début import os os.environ["TOKENIZERS_PARALLELISM"] = "false" os.environ["TRANSFORMERS_CACHE"] = "/tmp/transformers_cache"
Variables d'environnement :
export HF_HOME="/tmp/hf_home" export TRANSFORMERS_CACHE="/tmp/transformers_cache"
Pour développement local :
- Mémoire recommandée : 16GB RAM minimum
- GPU optionnel : Améliore les performances
- Espace disque : 10GB pour le cache des modèles
🛠️ Dépannage avancé
Erreur "bitsandbytes not found" :
pip install bitsandbytes --upgrade
# Ou pour CPU uniquement
pip install bitsandbytes-cpu
Erreur "CUDA out of memory" :
- Réduisez la taille du batch
- Utilisez la quantification 4-bit
- Libérez la mémoire GPU :
torch.cuda.empty_cache()
Erreur "disk_offload" persistante :
Forcez le mode CPU :
device_map="cpu" torch_dtype=torch.float32
Utilisez un modèle plus petit :
model_id = "google/gemma-2b-it" # Au lieu de gemma-3n-E4B-it
📊 Performance attendue
Stratégie | Mémoire requise | Vitesse | Qualité |
---|---|---|---|
CPU Conservateur | 8GB RAM | Lente | Excellente |
4-bit Quantization | 4GB RAM | Moyenne | Très bonne |
8-bit Quantization | 6GB RAM | Rapide | Bonne |
Gestion personnalisée | Variable | Variable | Excellente |
🔄 Mise à jour automatique
L'application détecte automatiquement :
- ✅ La mémoire disponible
- ✅ Les capacités GPU/CPU
- ✅ Les dépendances installées
- ✅ La meilleure stratégie à utiliser
📞 Support
Si le problème persiste :
- Exécutez le script de test et partagez les résultats
- Vérifiez les logs de l'application
- Consultez la documentation Hugging Face
- Contactez le support avec les détails de l'erreur
Note : Cette solution garantit que l'application fonctionne dans la plupart des environnements, même avec des ressources limitées.