Files
Geniusia_v2/geniusia2/download_models.py
2026-03-05 00:20:25 +01:00

131 lines
4.0 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Script pour pré-télécharger tous les modèles d'IA nécessaires.
Exécuter ce script avant la première utilisation pour éviter les délais.
"""
import sys
from pathlib import Path
# Ajouter le répertoire parent au path
sys.path.insert(0, str(Path(__file__).parent))
from core.config import CONFIG
def download_openclip():
"""Télécharge le modèle OpenCLIP pour les embeddings."""
print("📥 Téléchargement d'OpenCLIP...")
try:
import open_clip
model_name = CONFIG["models"]["clip"]
model, _, preprocess = open_clip.create_model_and_transforms(
model_name,
pretrained="openai"
)
print(f"✅ OpenCLIP ({model_name}) téléchargé")
return True
except Exception as e:
print(f"❌ Erreur OpenCLIP: {e}")
return False
def download_owlv2():
"""Télécharge le modèle OWL-v2 pour la détection d'objets."""
print("📥 Téléchargement d'OWL-v2...")
try:
from transformers import Owlv2Processor, Owlv2ForObjectDetection
model_path = CONFIG["models"]["paths"]["owl_v2"]
Path(model_path).mkdir(parents=True, exist_ok=True)
processor = Owlv2Processor.from_pretrained(
"google/owlv2-base-patch16-ensemble",
cache_dir=model_path
)
model = Owlv2ForObjectDetection.from_pretrained(
"google/owlv2-base-patch16-ensemble",
cache_dir=model_path
)
print("✅ OWL-v2 téléchargé")
return True
except Exception as e:
print(f"❌ Erreur OWL-v2: {e}")
return False
def check_ollama():
"""Vérifie si Ollama est installé et le modèle Qwen est disponible."""
print("🔍 Vérification d'Ollama...")
try:
import subprocess
# Vérifier si ollama est installé
result = subprocess.run(
["ollama", "list"],
capture_output=True,
text=True,
timeout=5
)
if result.returncode == 0:
print("✅ Ollama est installé")
# Vérifier si qwen3-vl est disponible
if "qwen3-vl" in result.stdout.lower():
print("✅ Modèle Qwen3-VL disponible")
return True
else:
print("⚠️ Modèle Qwen3-VL non trouvé")
print(" Pour le télécharger: ollama pull qwen3-vl:8b")
return False
else:
print("❌ Ollama n'est pas installé")
print(" Installation: curl -fsSL https://ollama.com/install.sh | sh")
return False
except FileNotFoundError:
print("❌ Ollama n'est pas installé")
print(" Installation: curl -fsSL https://ollama.com/install.sh | sh")
return False
except Exception as e:
print(f"❌ Erreur lors de la vérification d'Ollama: {e}")
return False
def main():
"""Télécharge tous les modèles nécessaires."""
print("=" * 60)
print("🚀 Téléchargement des Modèles d'IA - RPA Vision V2")
print("=" * 60)
print()
results = {
"OpenCLIP": download_openclip(),
"OWL-v2": download_owlv2(),
"Ollama": check_ollama()
}
print()
print("=" * 60)
print("📊 Résumé")
print("=" * 60)
for model, success in results.items():
status = "" if success else ""
print(f"{status} {model}")
print()
if all(results.values()):
print("🎉 Tous les modèles sont prêts !")
print()
print("Vous pouvez maintenant lancer l'application:")
print(" ./run.sh")
return 0
else:
print("⚠️ Certains modèles ne sont pas disponibles.")
print()
print("L'application fonctionnera en mode dégradé.")
print("Consultez les messages ci-dessus pour plus d'informations.")
return 1
if __name__ == "__main__":
sys.exit(main())