/ 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