evalita_llm_leaderboard / get_model_info.py
rzanoli's picture
Add new scripts for model processing and tasks management
d1c3cb5
raw
history blame
2.92 kB
import os
import re
import json
from huggingface_hub import HfApi
# Configura il token di Hugging Face (se necessario)
#TOKEN = "YOUR_HUGGINGFACE_API_TOKEN"
api = HfApi()
# Percorsi delle cartelle
input_folder = "../evalita_llm_models_output/"
output_folder = "../evalita_llm_requests/"
# Creazione della cartella di output se non esiste
os.makedirs(output_folder, exist_ok=True)
# Espressione regolare per trovare il nome del modello
model_pattern = re.compile(r"pretrained=([\w\-./]+)")
# Scansiona i file nella cartella di input
for filename in os.listdir(input_folder):
file_path = os.path.join(input_folder, filename)
# Leggi il contenuto del file
with open(file_path, "r", encoding="utf-8") as f:
content = f.read()
# Estrai il nome del modello
match = model_pattern.search(content)
if match:
model_name = match.group(1)
print(f"Processing model: {model_name}")
try:
# Ottieni le informazioni del modello da Hugging Face
model_info = api.model_info(model_name)
# Costruisci il dizionario con i metadati richiesti
model_data = {
"model": model_name,
"base_model": model_info.config.get("architectures", [""])[0] if model_info.config else "",
"revision": model_info.sha,
"precision": "bfloat16", # Se disponibile, sostituire con un valore reale
#"weight_type": "Original",
#"status": "FINISHED",
"submitted_time": str(model_info.created_at),
"model_type": "pretrained",
#"likes": model_info.likes,
#"params": model_info.safetensors_size_in_bytes / 1e9 if model_info.safetensors_size_in_bytes else None,
#"license": model_info.license,
#"private": model_info.private,
}
# Separare il model_name in due parti: prima e dopo "/"
if "/" in model_name:
dir_name, file_name = model_name.split("/", 1)
else:
dir_name, file_name = model_name, model_name # Se non c'è "/", usa lo stesso nome
# Creare la cartella per la prima parte del nome del modello
model_output_folder = os.path.join(output_folder, dir_name)
os.makedirs(model_output_folder, exist_ok=True)
# Salvare il file JSON nella cartella appropriata
output_file = os.path.join(model_output_folder, f"{file_name}.json")
with open(output_file, "w", encoding="utf-8") as f:
json.dump(model_data, f, indent=4)
print(f"Saved metadata for {model_name} in {output_file}")
except Exception as e:
print(f"Error retrieving info for {model_name}: {e}")
print("Process completed.")