File size: 2,627 Bytes
af530a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env bash
# Corre la suite de evals contra la réplica LOCAL del Space (scripts/space_local.sh).
#
# Existe porque la corrida real tarda y falla feo si el Space no está arriba: sin la espera
# de abajo, cada caso gasta sus dos reintentos contra un puerto cerrado y la corrida entera
# se pierde en «All connection attempts failed». Aquí se comprueba UNA vez, antes de empezar.
#
# Uso:
#     scripts/evals_space.sh                      # etiqueta por defecto, split dev
#     scripts/evals_space.sh space_local_bf16     # etiqueta explícita
#     scripts/evals_space.sh mi_prueba --split test --juez ninguno
#
# Todo lo que va después de la etiqueta se pasa tal cual a run_evals.py.
#
# Las predicciones se guardan caso a caso: si la corrida muere a mitad, repetir el MISMO
# comando la reanuda desde donde iba (--reanudar) en vez de volver a generarlo todo.

set -euo pipefail

RAIZ="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ETIQUETA="${1:-space_local}"
[ $# -gt 0 ] && shift

SPACE_URL="${MORPHOS_HF_SPACE_URL:-http://127.0.0.1:7860/gradio_api}"
SALIDA="$RAIZ/evals/resultados/$(date +%F)"
mkdir -p "$SALIDA"

# --- El Space tiene que estar escuchando ---------------------------------------------------
# Se pide la raíz de Gradio, no /gradio_api: el 404 de una ruta inexistente ya demostraría que
# hay alguien al otro lado, pero la raíz responde 200 y distingue «arrancando» de «arrancado».
BASE="${SPACE_URL%/gradio_api}"
if ! curl -fsS --max-time 5 "$BASE/" >/dev/null 2>&1; then
  cat >&2 <<EOF
ERROR: no responde el Space en $BASE

Si querías la réplica local, levántala primero en OTRA terminal (Terminal.app, no el terminal
del editor: el venv y los pesos viven en el SSD externo y TCC bloquea el acceso desde ahí):

    scripts/space_local.sh

Espera a que imprima «Running on local URL» y repite este comando.

Si en cambio querías el Space de producción:

    MORPHOS_HF_SPACE_URL=https://blackmistcode-morphos-medgemma.hf.space/gradio_api \\
      scripts/evals_space.sh $ETIQUETA
EOF
  exit 1
fi

PREDS="$SALIDA/preds_$ETIQUETA.jsonl"
INFORME="$SALIDA/informe_$ETIQUETA.json"

echo "==> Space:    $BASE"
echo "==> Preds:    $PREDS"
echo "==> Informe:  $INFORME"
[ -f "$PREDS" ] && echo "==> Reanudando: ya hay $(wc -l < "$PREDS" | tr -d ' ') casos generados"
echo

# Desde backend/ porque es donde vive el proyecto uv (ver el comentario del Makefile).
cd "$RAIZ/backend"
exec env MORPHOS_HF_SPACE_URL="$SPACE_URL" \
  uv run python ../evals/run_evals.py \
    --modelo medgemma \
    --guardar-predicciones "$PREDS" \
    --reanudar \
    --informe "$INFORME" \
    "$@"