Desactivar el buffering de salida en las corridas remotas

Sin terminal, Python retiene la salida estándar, así que el comando de registro
no mostraba nada durante minutos aunque el entrenamiento estuviera avanzando —
parecía colgado. Se comprobó comparando el archivo de registro, atrasado,
contra las métricas, que se escriben sin buffer y sí avanzaban.
This commit is contained in:
2026-07-28 07:25:51 -03:00
parent 80691131e3
commit ba61125a3b
+4 -1
View File
@@ -105,9 +105,12 @@ run)
# distintas no se pisan y `logs` sabe a cuál conectarse. # distintas no se pisan y `logs` sabe a cuál conectarse.
sesion="enlace-$(basename "$config" .yaml)" sesion="enlace-$(basename "$config" .yaml)"
# tmux es lo que hace que cortar el SSH no mate el entrenamiento. # tmux es lo que hace que cortar el SSH no mate el entrenamiento.
# `-u` desactiva el buffering de stdout: sin eso Python retiene la salida
# porque no hay terminal, y `remote.sh logs` no muestra nada durante
# minutos aunque la corrida esté avanzando.
ssh "${SSH_OPTS[@]}" -t "$HOST" "cd '$DIR' && mkdir -p runs && \ ssh "${SSH_OPTS[@]}" -t "$HOST" "cd '$DIR' && mkdir -p runs && \
tmux new-session -d -s '$sesion' \ tmux new-session -d -s '$sesion' \
\"$PY -m enlace.train.train '$config' $* 2>&1 | tee -a 'runs/$sesion.log'\" \ \"$PY -u -m enlace.train.train '$config' $* 2>&1 | tee -a 'runs/$sesion.log'\" \
&& echo 'corriendo en tmux: $sesion'" && echo 'corriendo en tmux: $sesion'"
;; ;;