Ademir
Initial clean commit: scripts and config without logs
d4a00b2
#!/usr/bin/env python3
"""
App principal para execução no HuggingFace Space.
Este arquivo executa o treinamento do modelo EDA.
"""
import os
import subprocess
import sys
from space_lock import exclusive_training_lock
def main():
"""
Executa o script de treinamento.
"""
print("=" * 60)
print("Iniciando treinamento do modelo EDA")
print("=" * 60)
script_path = os.path.join(os.path.dirname(__file__), "train.py")
if not os.path.exists(script_path):
print(f"❌ Erro: Arquivo {script_path} não encontrado!")
sys.exit(1)
print(
"A aguardar lock exclusivo (um treino de cada vez na GPU). "
"Se o Space reiniciar em paralelo, os outros processos ficam em fila aqui."
)
try:
with exclusive_training_lock():
result = subprocess.run(
[sys.executable, script_path],
check=True,
capture_output=False,
)
print("\n✅ Treinamento concluído com sucesso!")
return result.returncode
except subprocess.CalledProcessError as e:
print(f"\n❌ Erro durante o treinamento: {e}")
sys.exit(e.returncode)
except KeyboardInterrupt:
print("\n⚠️ Treinamento interrompido pelo usuário")
sys.exit(130)
if __name__ == "__main__":
sys.exit(main())