Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 5,376 Bytes
970eef1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
#!/usr/bin/env python3
"""
Script minimal pour tester directement lighteval avec la tâche yourbench
"""
import os
import sys
import subprocess
import json
import time
from pathlib import Path
import logging
# Assurez-vous que l'environnement est correctement configuré
from dotenv import load_dotenv
load_dotenv()
# Importer le module de définition de tâche yourbench
sys.path.append(os.getcwd())
from tasks.yourbench_lighteval_task import create_yourbench_task
def run_lighteval_test():
"""
Exécuter un test minimal avec lighteval
"""
# Parameters
dataset_name = "yourbench_a"
organization = "yourbench"
model_name = "Qwen/Qwen2.5-72B-Instruct"
provider = "novita"
output_dir = f"uploaded_files/test_{provider}/lighteval_results"
# Créer le répertoire de sortie
os.makedirs(output_dir, exist_ok=True)
# Définir le chemin d'accès complet au dataset
dataset_path = f"{organization}/{dataset_name}"
print(f"Dataset à évaluer: {dataset_path}")
# Créer un fichier temporaire
import tempfile
temp_file_path = tempfile.mktemp(suffix=".py")
print(f"Création du fichier temporaire: {temp_file_path}")
with open(temp_file_path, 'w') as temp_file:
# Écrire le contenu du fichier
temp_file.write(f"""
import os
import sys
import logging
sys.path.append("{os.getcwd()}")
from tasks.yourbench_lighteval_task import create_yourbench_task
# Configurer le logging
logging.basicConfig(level=logging.INFO)
# Créer la tâche yourbench
yourbench = create_yourbench_task("{dataset_path}", "lighteval")
# Définir la variable TASKS_TABLE dont lighteval a besoin
TASKS_TABLE = [yourbench]
""")
# Construire la commande lighteval
cmd = [
"lighteval",
"endpoint",
"inference-providers",
f"model={model_name},provider={provider}",
"custom|yourbench|0|0",
"--custom-tasks",
temp_file_path,
"--max-samples", "5", # Seulement 1 échantillon
"--output-dir", output_dir,
"--save-details",
"--no-push-to-hub" # Pas de push pour gagner du temps
]
# Afficher la commande
print(f"Exécution de la commande: {' '.join(cmd)}")
print(f"Heure de début: {time.strftime('%H:%M:%S')}")
# Exécuter la commande
try:
# Exécuter avec capture des sorties
result = subprocess.run(cmd, capture_output=True, text=True)
# Afficher les résultats
print(f"Code de retour: {result.returncode}")
print("--- SORTIE STANDARD ---")
print(result.stdout)
print("--- ERREUR STANDARD ---")
print(result.stderr)
# Vérifier si des résultats ont été générés
results_dir = Path(output_dir) / "results"
if results_dir.exists():
print(f"Dossier de résultats créé: {results_dir}")
# Lister les fichiers de résultats
result_files = list(results_dir.glob("**/*.json"))
if result_files:
print(f"Fichiers de résultats trouvés: {result_files}")
# Trier les fichiers par date de modification pour prendre le plus récent
result_files.sort(key=lambda x: x.stat().st_mtime, reverse=True)
latest_result = result_files[0]
print(f"Fichier de résultats le plus récent: {latest_result}")
# Lire le fichier de résultats
with open(latest_result, 'r') as f:
results = json.load(f)
print("Contenu du fichier de résultats:")
print(json.dumps(results, indent=2))
# Analyse des résultats
print("\n==== ANALYSE DES RÉSULTATS ====")
if "results" in results:
for task_name, task_results in results["results"].items():
print(f"Tâche: {task_name}")
for metric_name, metric_value in task_results.items():
print(f" {metric_name}: {metric_value}")
else:
print("Aucun résultat trouvé dans le fichier JSON")
# Vérifier les détails
details_dir = Path(output_dir) / "details"
if details_dir.exists():
print(f"\nDossier de détails trouvé: {details_dir}")
model_details_dirs = list(details_dir.glob("**/*"))
if model_details_dirs:
print(f"Dossiers de détails par modèle: {model_details_dirs}")
else:
print("Aucun fichier de résultats trouvé.")
else:
print(f"Aucun dossier de résultats créé.")
except subprocess.CalledProcessError as e:
print(f"Erreur lors de l'exécution de la commande: {e}")
except Exception as e:
print(f"Exception: {e}")
finally:
# Supprimer le fichier temporaire
try:
os.unlink(temp_file_path)
print(f"Fichier temporaire supprimé: {temp_file_path}")
except:
pass
print(f"Heure de fin: {time.strftime('%H:%M:%S')}")
if __name__ == "__main__":
run_lighteval_test() |