Ferdlance's picture
Initial commit for the DevSecOps bot
62a0596
raw
history blame
3.53 kB
#!/bin/bash
# Fonction pour afficher des messages informatifs en vert
info() {
echo -e "\e[32m[INFO]\e[0m $1"
}
# Fonction pour afficher des messages d'erreur en rouge
error() {
echo -e "\e[31m[ERREUR]\e[0m $1"
}
# --- Début du script ---
# Étape 1: Vérification et compilation de llama.cpp
info "Étape 1: Vérification et compilation de llama.cpp..."
if [ ! -d "llama.cpp/build/bin" ]; then
info "Dossier 'llama.cpp/build/bin' introuvable. Démarrage de la compilation."
if [ ! -d "llama.cpp" ]; then
info "Clonage du dépôt llama.cpp..."
git clone https://github.com/ggerganov/llama.cpp.git || { error "Échec du clonage."; exit 1; }
fi
cd llama.cpp
info "Lancement de la compilation..."
mkdir -p build && cd build
cmake .. -DLLAMA_CURL=1 || { error "Échec de la configuration CMake."; cd ../..; exit 1; }
cmake --build . --config Release || { error "Échec de la compilation."; cd ../..; exit 1; }
cd ../..
info "Compilation de llama.cpp terminée avec succès."
else
info "llama.cpp est déjà compilé. Ignoré."
fi
# Étape 2: Vérification et téléchargement du modèle GGUF
info "Étape 2: Vérification et téléchargement du modèle GGUF..."
MODEL_PATH="models/qwen2.5-coder-1.5b-q8_0.gguf"
if [ ! -f "$MODEL_PATH" ]; then
info "Le modèle $MODEL_PATH est introuvable. Début du téléchargement..."
mkdir -p models
wget https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q8_0.gguf -O "$MODEL_PATH" || { error "Échec du téléchargement du modèle."; exit 1; }
info "Téléchargement du modèle terminé."
else
info "Le modèle GGUF est déjà présent. Ignoré."
fi
# Étape 3: Création du script de démarrage du serveur
info "Étape 3: Création du script de démarrage du serveur..."
mkdir -p server
START_SCRIPT="server/start_server.sh"
echo '#!/bin/bash' > "$START_SCRIPT"
echo "MODEL_PATH=\"../$MODEL_PATH\"" >> "$START_SCRIPT"
echo 'if [ ! -f "$MODEL_PATH" ]; then' >> "$START_SCRIPT"
echo ' echo "Le modèle GGUF est introuvable à: $MODEL_PATH"' >> "$START_SCRIPT"
echo ' exit 1' >> "$START_SCRIPT"
echo 'fi' >> "$START_SCRIPT"
echo '"../llama.cpp/build/bin/llama-server" \\' >> "$START_SCRIPT"
echo " -m \"\$MODEL_PATH\" \\" >> "$START_SCRIPT"
echo " --port 8080 \\" >> "$START_SCRIPT"
echo " --host 0.0.0.0 \\" >> "$START_SCRIPT"
echo " -c 4096 \\" >> "$START_SCRIPT"
echo " -ngl 999 \\" >> "$START_SCRIPT"
echo " --threads 8 \\" >> "$START_SCRIPT"
echo ' > "logs/llama_server.log" 2>&1 &' >> "$START_SCRIPT"
echo 'echo $! > "server/server.pid"' >> "$START_SCRIPT"
chmod +x "$START_SCRIPT"
info "Script de démarrage du serveur créé."
# Étape 4: Création du script d'arrêt du serveur
info "Étape 4: Création du script d'arrêt du serveur..."
STOP_SCRIPT="server/stop_server.sh"
echo '#!/bin/bash' > "$STOP_SCRIPT"
echo 'PID_FILE="server/server.pid"' >> "$STOP_SCRIPT"
echo 'if [ -f "$PID_FILE" ]; then' >> "$STOP_SCRIPT"
echo ' PID=$(cat "$PID_FILE")' >> "$STOP_SCRIPT"
echo ' kill $PID' >> "$STOP_SCRIPT"
echo ' rm "$PID_FILE"' >> "$STOP_SCRIPT"
echo ' echo "Serveur llama.cpp arrêté."' >> "$STOP_SCRIPT"
echo 'else' >> "$STOP_SCRIPT"
echo ' echo "Aucun PID de serveur trouvé."' >> "$STOP_SCRIPT"
echo 'fi' >> "$STOP_SCRIPT"
chmod +x "$STOP_SCRIPT"
info "Script d'arrêt du serveur créé."
# Étape 5: Lancement de l'application Streamlit
info "Étape 5: Lancement de l'application Streamlit..."
streamlit run app.py