# Troubleshooting — DictIA ## WhisperX OOM (Out of Memory) **Symptome**: Container `whisperx-asr` crash ou restart en boucle. **Cause**: Modele trop gros pour la RAM/VRAM disponible. **Solutions**: ```bash # Utiliser un modele plus petit dans .env ASR_MODEL=medium # au lieu de large-v3 # Augmenter la limite memoire (local-cpu) # Editer docker-compose.local-cpu.yml deploy: resources: limits: memory: 24G # au lieu de 18G ``` ## Diarisation 403 Forbidden **Symptome**: Erreur 403 lors de la transcription avec diarisation. **Cause**: Token HuggingFace manquant ou conditions non acceptees. **Solution**: 1. Creer un token: https://huggingface.co/settings/tokens 2. Accepter les conditions: https://huggingface.co/pyannote/speaker-diarization-3.1 3. Ajouter dans `.env`: ```bash HF_TOKEN=hf_votre_token ``` 4. Redemarrer: `docker compose -f deployment/docker/docker-compose..yml restart` ## GPU non detecte (local-gpu) **Symptome**: `nvidia-smi` fonctionne mais Docker ne voit pas le GPU. **Solution**: ```bash # Installer nvidia-container-toolkit sudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker # Verifier docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi ``` ## Upload echoue (fichiers volumineux) **Symptome**: Upload de gros fichiers (>100MB) echoue. **Causes possibles**: - Timeout Nginx/reverse proxy - Limite upload trop basse **Solutions**: ```bash # Si Nginx: verifier client_max_body_size dans dictia.conf client_max_body_size 500M; # Si Tailscale Serve: pas de limite cote Tailscale # Timeout gunicorn (dans le Dockerfile, deja a 600s) # Pour des fichiers tres longs, augmenter dans docker-compose: environment: - GUNICORN_TIMEOUT=1200 ``` ## Container dictia "unhealthy" **Symptome**: `docker ps` montre "unhealthy" pour le container dictia. **Diagnostic**: ```bash # Voir les logs docker logs dictia --tail 50 # Tester manuellement docker exec dictia python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:8899/health')" ``` **Causes courantes**: - `.env` mal configure (SECRET_KEY manquant) - Base de donnees corrompue (restaurer backup) - Port 8899 deja utilise ## ASR Proxy: "No GPU available" **Symptome**: Transcription echoue avec "No GPU available in any Canadian zone". **Causes**: - GCP n'a pas de GPU disponible (capacite epuisee) - Credentials GCP expirees - Budget mensuel atteint **Diagnostic**: ```bash # Verifier le statut du proxy curl -s http://localhost:9090/health | python3 -m json.tool # Verifier les stats (budget) curl -s http://localhost:9090/stats | python3 -m json.tool # Voir les logs journalctl -u asr-proxy --since "1 hour ago" ``` **Solutions**: - Attendre (GCP libere des GPUs regulierement) - Le proxy reessaie automatiquement apres un cooldown de 3 minutes - Verifier le dashboard: http://localhost:9090 ## Build Docker lent/echoue **Symptome**: `docker build` prend trop de temps ou echoue. **Solutions**: ```bash # Limiter les ressources si le VPS est petit docker build --memory=2g --cpus=2 -t innova-ai/dictia:latest . # Nettoyer le cache Docker si le disque est plein docker builder prune -f docker image prune -f ``` ## Base de donnees corrompue **Symptome**: Erreur SQLite au demarrage. **Solution**: ```bash # Restaurer le dernier backup bash deployment/tools/restore.sh backups/dictia-LATEST.tar.gz # Ou recreer la base (perd les donnees) rm data/instance/transcriptions.db docker compose -f deployment/docker/docker-compose..yml restart ``` ## Port 8899 deja utilise ```bash # Trouver qui utilise le port sudo lsof -i :8899 # ou sudo ss -tlnp | grep 8899 # Arreter le processus ou changer le port dans docker-compose ports: - "8900:8899" # utiliser 8900 a la place ``` ## Mise a jour qui casse tout ```bash # Rollback: revenir au commit precedent cd dictia git log --oneline -5 # trouver le bon commit git checkout # Rebuild et redemarrer docker build -t innova-ai/dictia:latest . docker compose -f deployment/docker/docker-compose..yml down docker compose -f deployment/docker/docker-compose..yml up -d ``` ## Commande de diagnostic rapide ```bash # Tout verifier d'un coup bash deployment/tools/health-check.sh --json | python3 -m json.tool ```