/ startup.sh
startup.sh
 1  #!/bin/bash
 2  
 3  # Charger les variables d'environnement depuis le fichier .env
 4  if [ -f .env ]; then
 5    export $(grep -v '^#' .env | xargs)
 6  fi
 7  
 8  # Définition des valeurs par défaut
 9  HOST=${HOST:-"0.0.0.0"}
10  PORT=${PORT:-8000}
11  WORKERS=${WORKERS:-1}
12  LOG_LEVEL=${LOG_LEVEL:-"info"}
13  MODEL_NAME=${MODEL_NAME:-"huihui-ai/DeepSeek-R1-Distill-Qwen-14B-abliterated-v2"}
14  USE_GPU=${USE_GPU:-"true"}
15  MAX_MODEL_LEN=${MAX_MODEL_LEN:-8000}
16  PRELOAD_MODELS=${PRELOAD_MODELS:-"true"}
17  INIT_DB=${INIT_DB:-"false"}
18  
19  # Valeurs par défaut pour JSONSimplifier
20  JSON_SIMPLIFIER_ENABLED=${JSON_SIMPLIFIER_ENABLED:-"false"}
21  JSON_SIMPLIFIER_MODEL=${JSON_SIMPLIFIER_MODEL:-"huihui-ai/DeepSeek-R1-Distill-Qwen-14B-abliterated-v2"}
22  JSON_SIMPLIFIER_SYSTEM_PROMPT=${JSON_SIMPLIFIER_SYSTEM_PROMPT:-"Translate this JSON {text} into simple English"}
23  JSON_SIMPLIFIER_APPLY_TO=${JSON_SIMPLIFIER_APPLY_TO:-"inference,video,transcription"}
24  
25  # Fonction de gestion des erreurs
26  handle_error() {
27    echo "ERREUR: $1"
28    exit 1
29  }
30  
31  # Vérifier les dépendances critiques
32  command -v python3 >/dev/null 2>&1 || handle_error "Python3 n'est pas installé"
33  command -v uvicorn >/dev/null 2>&1 || handle_error "Uvicorn n'est pas installé"
34  
35  # Créer les répertoires nécessaires
36  mkdir -p inference_results
37  mkdir -p logs
38  mkdir -p uploads/video uploads/audio uploads/text
39  mkdir -p results/transcriptions
40  mkdir -p results/video_analysis
41  mkdir -p postprocessors
42  
43  # Vérifier si la base de données doit être initialisée
44  if [ "$INIT_DB" = "true" ]; then
45    echo "Initialisation de la base de données..."
46    python -m db.init_db || handle_error "Échec de l'initialisation de la base de données"
47  fi
48  
49  # Précharger les modèles si nécessaire
50  if [ "$PRELOAD_MODELS" = "true" ]; then
51    echo "Préchargement des modèles..."
52    python -c "from model_manager import ModelManager; ModelManager.initialize()" || echo "Avertissement: Échec du préchargement des modèles"
53  fi
54  
55  echo "Démarrage de l'API d'inférence multi-session..."
56  echo "Hôte: $HOST"
57  echo "Port: $PORT"
58  echo "Workers: $WORKERS"
59  echo "Niveau de log: $LOG_LEVEL"
60  echo "Modèle: $MODEL_NAME"
61  echo "Utilisation du GPU: $USE_GPU"
62  echo "Longueur maximale du modèle: $MAX_MODEL_LEN"
63  
64  # Afficher les informations sur JSONSimplifier
65  echo "Configuration du JSONSimplifier:"
66  echo "  Activé: $JSON_SIMPLIFIER_ENABLED"
67  if [ "$JSON_SIMPLIFIER_ENABLED" = "true" ]; then
68      echo "  Modèle: $JSON_SIMPLIFIER_MODEL"
69      echo "  Types de tâches: $JSON_SIMPLIFIER_APPLY_TO"
70  fi
71  
72  # Vérifier si GPU utilisé et afficher les infos
73  if [ "$USE_GPU" = "true" ]; then
74      echo "Vérification des GPU disponibles..."
75      if command -v nvidia-smi &> /dev/null; then
76          nvidia-smi
77      else
78          echo "nvidia-smi non disponible. Impossible de vérifier les GPU."
79      fi
80  fi
81  
82  # Démarrer l'API avec Uvicorn
83  exec uvicorn main:app --host $HOST --port $PORT --workers $WORKERS --log-level $LOG_LEVEL