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:
+4
-1
@@ -105,9 +105,12 @@ run)
|
||||
# distintas no se pisan y `logs` sabe a cuál conectarse.
|
||||
sesion="enlace-$(basename "$config" .yaml)"
|
||||
# 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 && \
|
||||
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'"
|
||||
;;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user