Guide de dépannage pour les erreurs fréquentes rencontrées lors de l'installation et du déploiement de modèles en production.
Erreurs courantes lors de l'installation et du déploiement de modèles
Ce guide de résolution de problèmes couvre les erreurs les plus fréquemment rencontrées lors de l'installation de la plateforme Techsolut et du déploiement de modèles de vision par ordinateur en production. Pour chaque problème, nous proposons un diagnostic précis et des solutions étape par étape.
Problèmes d'installation
Erreur : "Dépendances Python manquantes"
Symptômes
- Messages d'erreur du type
ModuleNotFoundError: No module named 'X'
- Installation qui s'interrompt avec des erreurs de dépendances
- Conflits de versions entre packages
Solutions
-
Utiliser l'environnement virtuel recommandé
bash python -m venv techsolut_env source techsolut_env/bin/activate # Linux/Mac techsolut_env\Scripts\activate # Windows
-
Installer toutes les dépendances avec le fichier requirements.txt
bash pip install --upgrade pip setuptools wheel pip install -r requirements.txt
-
En cas de conflit de versions
- Créez un nouvel environnement virtuel propre
- Installez les packages dans l'ordre spécifié dans la documentation
-
Utilisez l'option
--no-deps
pour les packages problématiques puis installez leurs dépendances manuellement -
Pour les problèmes avec les binaires (PyTorch, TensorFlow)
- Vérifiez la compatibilité CUDA si vous utilisez un GPU
- Installez la version spécifique compatible avec votre matériel :
bash pip install torch==X.X.X+cu11X -f https://download.pytorch.org/whl/torch_stable.html
Erreur : "CUDA non disponible"
Symptômes
- Messages indiquant
CUDA not available
ouNo CUDA GPUs are available
- Performance très lente lors de l'entraînement
- Erreurs lors du lancement de tâches GPU
Solutions
-
Vérifier l'installation des pilotes NVIDIA
bash nvidia-smi
Si cette commande échoue, réinstallez les pilotes NVIDIA -
Vérifier la version de CUDA
bash nvcc --version
Assurez-vous qu'elle est compatible avec votre version de PyTorch/TensorFlow -
Réinstaller PyTorch avec le support CUDA approprié
bash pip uninstall torch pip install torch==X.X.X+cuXXX -f https://download.pytorch.org/whl/torch_stable.html
-
Tester la disponibilité de CUDA
python import torch print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.cuda.get_device_name(0))
-
Si CUDA n'est pas disponible sur votre machine
- Configurez Techsolut pour utiliser uniquement le CPU
- Ou utilisez notre option de calcul distant sur nos serveurs GPU
Erreur : "Échec de connexion à la base de données"
Symptômes
- Messages d'erreur comme
OperationalError: unable to open database file
- Impossible de démarrer l'application
- Échec lors de la création ou migration de la base de données
Solutions
-
Vérifier les permissions sur le dossier de la base de données
bash ls -la /chemin/vers/dossier/db chmod -R 755 /chemin/vers/dossier/db
-
Vérifier la configuration de connexion
- Assurez-vous que les informations dans
config.py
sont correctes -
Pour PostgreSQL/MySQL, vérifiez que le service est actif et accessible
-
Réinitialiser la base de données (si possible)
bash flask db reset # Attention : cela supprime toutes les données existantes flask db upgrade
-
Pour les bases de données distantes
- Vérifiez que le pare-feu autorise les connexions
- Testez la connexion avec un client SQL standard
- Vérifiez les limitations de votre hébergeur (quotas, nombre de connexions)
Problèmes de déploiement
Erreur : "Mémoire insuffisante lors de l'inférence"
Symptômes
- Erreurs
CUDA out of memory
- Application qui plante lors du traitement d'images
- Performances qui se dégradent avec le temps
Solutions
- Réduire la taille du batch
- Dans
config.py
, modifiezBATCH_SIZE
à une valeur plus petite -
Pour l'API, limitez le nombre de requêtes simultanées
-
Optimiser le modèle pour l'inférence
-
Utilisez la quantification du modèle :
python from techsolut.optimization import quantize_model quantized_model = quantize_model(model, quantization_type='dynamic')
-
Utiliser le mode d'inférence efficace en mémoire
- Activez le mode gradient-free:
python with torch.no_grad(): predictions = model(inputs)
-
Utilisez notre fonction d'inférence optimisée :
python from techsolut.inference import efficient_predict results = efficient_predict(model, data, max_batch_size=4)
-
Libérer la mémoire GPU régulièrement
- Après chaque inférence de lot important :
python torch.cuda.empty_cache()
- Pour les services à longue durée d'exécution, planifiez des redémarrages périodiques
Erreur : "Latence élevée en production"
Symptômes
- Temps de réponse très lent en production
- Performance acceptable en développement mais pas en production
- Timeouts des requêtes
Solutions
-
Mesurer et identifier le goulot d'étranglement
python from techsolut.profiling import profile_inference profile_results = profile_inference(model, sample_input) print(profile_results)
-
Optimiser le prétraitement des images
- Utilisez le redimensionnement GPU si possible
- Prétraitez les images par lots (batch processing)
-
Utilisez notre pipeline optimisé :
python from techsolut.preprocessing import FastImageProcessor processor = FastImageProcessor(device='cuda')
-
Implémenter le batching de requêtes
- Collectez les requêtes pendant un court intervalle
- Traitez-les ensemble plutôt qu'individuellement
-
Utilisez notre middleware de batching automatique :
python from techsolut.serving import BatchingMiddleware app = BatchingMiddleware(app, batch_size=16, timeout=0.1)
-
Utiliser la mise en cache des résultats
- Pour les entrées répétitives ou similaires
- Configurez la mise en cache dans
config.py
- Ou utilisez une solution comme Redis pour le cache distribué
Erreur : "Format de modèle incompatible"
Symptômes
- Erreurs lors du chargement du modèle en production
- Messages comme
Error loading model
ouUnsupported op
- Incohérences entre les résultats dev/prod
Solutions
- Vérifier la compatibilité des versions
- Assurez-vous que les versions de PyTorch/TensorFlow sont identiques
-
Utilisez la même architecture CPU/GPU en dev et prod si possible
-
Convertir le modèle dans un format standard
-
Exportez en ONNX pour une meilleure portabilité :
python from techsolut.export import convert_to_onnx convert_to_onnx(model, 'model.onnx', input_shape=[1, 3, 224, 224])
-
Vérifier l'intégrité du modèle
- Comparez les checksums des fichiers de modèle
-
Utilisez notre outil de vérification :
bash techsolut-cli verify-model chemin/vers/model.pth
-
Utiliser la version correcte du modèle
- Vérifiez que vous n'utilisez pas un checkpoint d'entraînement au lieu du modèle final
- Pour les modèles Techsolut, utilisez l'exportation dédiée :
python model.export(format='production', optimized=True)
Problèmes d'intégration
Erreur : "Échec d'intégration avec les systèmes existants"
Symptômes
- Erreurs lors de l'échange de données avec d'autres systèmes
- Incompatibilités de format entre Techsolut et vos systèmes
- Problèmes de synchronisation des données
Solutions
- Utiliser les adaptateurs d'intégration
- Consultez notre bibliothèque d'adaptateurs dans
/techsolut/integrations/
-
Installez l'adaptateur spécifique à votre système :
bash pip install techsolut-adapter-erp
-
Configurer correctement les webhooks
- Vérifiez les URL et les formats des webhooks
-
Testez avec notre outil de diagnostic :
bash techsolut-cli test-webhook http://votre-systeme.com/webhook
-
Utiliser le mode compatibilité
- Activez-le dans les paramètres d'intégration
- Spécifiez la version de votre système externe
-
Utilisez les convertisseurs de format automatiques
-
Consulter les logs spécifiques à l'intégration
- Activez la journalisation détaillée dans
config.py
- Examinez
/logs/integration.log
pour les messages d'erreur spécifiques - Utilisez notre outil de diagnostic d'intégration :
bash techsolut-cli diagnose-integration --system=SAP --level=verbose
Erreur : "Problèmes d'authentification API"
Symptômes
- Erreurs 401 ou 403 lors des appels API
- Jetons expirant de façon inattendue
- Problèmes d'authentification intermittents
Solutions
- Vérifier la configuration des clés API
- Assurez-vous que les clés dans
.env
ousecrets.yaml
sont correctes -
Regénérez les clés API si nécessaire via le portail admin
-
Configurer correctement l'authentification
- Pour OAuth2, assurez-vous que le flux est correctement implémenté
-
Utilisez notre helper d'authentification:
python from techsolut.auth import OAuth2Helper auth = OAuth2Helper(client_id, client_secret, redirect_uri)
-
Gérer le renouvellement des jetons
- Implémentez la logique de rafraîchissement automatique des jetons
-
Utilisez notre middleware de gestion de jetons :
python from techsolut.auth import TokenRefreshMiddleware app.wsgi_app = TokenRefreshMiddleware(app.wsgi_app)
-
Tester l'authentification de bout en bout
- Utilisez notre outil de test API :
bash techsolut-cli test-auth --endpoint=prediction --api-key=votre_cle
Solutions aux erreurs spécifiques
Erreur : "ImportError: libcudnn.so.X: cannot open shared object file"
Cette erreur indique que les bibliothèques CUDA Deep Neural Network ne sont pas trouvées.
Solution
# Vérifier la version de CUDA installée
nvcc --version
# Installer la version correspondante de cuDNN
# Téléchargez depuis le site NVIDIA et installez :
tar -xzvf cudnn-X.X-linux-x64-v8.X.X.X.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
# Mettre à jour les variables d'environnement
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
Erreur : "RuntimeError: CUDA error: device-side assert triggered"
Cette erreur souvent cryptique indique généralement un problème avec les dimensions d'entrée ou les indices.
Solution
# Activer les informations de débogage CUDA
import os
os.environ['CUDA_LAUNCH_BLOCKING'] = '1'
# Vérifier les dimensions des tenseurs d'entrée
print(f"Input shape: {input_tensor.shape}")
# Vérifier que les indices de classe sont valides
num_classes = model.module.num_classes if hasattr(model, 'module') else model.num_classes
if (targets >= num_classes).any():
raise ValueError(f"Target class indices exceed number of classes ({num_classes})")
# Vérifier les valeurs NaN
if torch.isnan(input_tensor).any():
raise ValueError("Input contains NaN values")
Erreur : "OSError: Unable to load weights from pytorch checkpoint file"
Cette erreur survient lorsque la structure du modèle chargé ne correspond pas à celle du checkpoint.
Solution
# Chargement avec strict=False pour ignorer les mismatches non critiques
state_dict = torch.load('model_checkpoint.pth')
model.load_state_dict(state_dict, strict=False)
# Afficher les différences de clés
pretrained_dict = torch.load('model_checkpoint.pth')
model_dict = model.state_dict()
pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
missing_keys = set(model_dict.keys()) - set(pretrained_dict.keys())
unexpected_keys = set(pretrained_dict.keys()) - set(model_dict.keys())
print(f"Missing keys: {missing_keys}")
print(f"Unexpected keys: {unexpected_keys}")
# Utiliser notre outil de réconciliation de modèles
from techsolut.utils import reconcile_state_dict
fixed_state_dict = reconcile_state_dict(state_dict, model.state_dict())
model.load_state_dict(fixed_state_dict)
Comment obtenir de l'aide supplémentaire
Si vous rencontrez un problème qui n'est pas couvert par ce guide :
- Consulter les logs détaillés
- Activez la journalisation de débogage dans
config.py
-
Examinez
/logs/debug.log
pour les messages d'erreur détaillés -
Générer un rapport de diagnostic
bash techsolut-cli generate-diagnostic-report --output=diagnostic.zip
-
Contacter notre support technique
- Envoyez le rapport de diagnostic à support@techsolut.fr
- Incluez une description détaillée du problème
-
Mentionnez les étapes que vous avez déjà essayées
-
Consulter notre base de connaissances
- Visitez support.techsolut.fr
- Recherchez des problèmes similaires
-
Consultez les mises à jour récentes et les notes de version
-
Rejoindre notre communauté
- Posez vos questions sur notre forum communautaire
- Participez aux webinaires hebdomadaires de dépannage
- Consultez les discussions précédentes sur des problèmes similaires