Saltar a contenido

Comandos

lote tiene dos grupos de comandos. Los verbos de nivel superior lote son el plano de control que ejecutas en tu laptop, y el grupo lote exec es el ejecutor en host que corre en una sola máquina. Los destinos son alias de host de ~/.ssh/config en todo momento.

Plano de control

comando qué hace
lote ls lista los destinos de ssh-config con sus capacidades en caché (nunca sondea)
lote discover <target> integra un host y luego muestra qué es (probe + sync + chefe install)
lote setup <target> integra un host e inicia el daemon de su cola
lote submit <target\|auto> <script> [args…] hace rsync del repo hacia arriba y lanza script, imprime un identificador
lote ps [limit] ejecuciones despachadas recientes en cada destino
lote status <target> trabajos en vivo en un destino
lote reconcile <target> compara las ejecuciones registradas de un destino con el planificador en vivo
lote interact <target> obtiene una sesión interactiva (un TTY real)
lote logs <target> <handle> sigue el log de una ejecución
lote info <target> <handle> el post-mortem de un trabajo (código de salida, memoria, GPU)
lote fetch <target> <path> hace rsync de una ruta de resultados de vuelta
lote pull <handle> hace rsync de vuelta de la ruta de resultados registrada al hacer submit
lote watch <target> re-sincroniza el repo en cada cambio de archivo local
lote history [limit] invocaciones recientes de comandos lote

setup y discover

lote discover miyabi          # onboard, then print the host's kind, root, and GPU
lote setup miyabi             # same onboarding, and start the pueue daemon

La integración encuentra la raíz del repo del host (un área /work de HPC si la hay, si no ~/projects), hace rsync del repo allí, ejecuta chefe install, luego sondea el host en una shell de inicio de sesión para su planificador, GPU y cuenta. Un host se guarda en caché solo después de que chefe install tiene éxito, así que uno que no puede construir el entorno nunca se convierte en destino.

submit

lote submit miyabi train.sh                       # to a named host
lote submit miyabi train.sh --fetch results/run1  # remember a results path for `pull`
lote submit auto train.sh --needs 40              # route by free memory, pick smallest fit

submit hace rsync del repo, elige el planificador del destino y lanza el script, registrando el sha de git (y una bandera de cambios sin confirmar) junto al identificador. Con auto, --needs <GB> es obligatorio y lote elige el host de menor memoria que aún encaje, manteniendo libres las máquinas grandes. Los argumentos posicionales extra después del script llegan al trabajo mediante la variable de entorno ARGS.

ps, status y reconcile

lote ps                       # the last runs across every machine
lote status miyabi            # what is live on one host right now
lote reconcile miyabi         # recorded runs vs the live scheduler

ps lee el almacén de estado local, así que funciona sin conexión. status abre una conexión ssh y pregunta directamente al planificador del host. reconcile une ambos, dando a cada ejecución registrada un estado en vivo, código de salida y un veredicto de una palabra (ok, failed, running o vanished). Esta es la ayuda de depuración de estado local que reemplaza refrescar una cola a mano.

logs, info, fetch y pull

lote logs miyabi <handle> --follow    # tail the merged stdout+stderr
lote info miyabi <handle>             # exit status, memory used vs cap, GPU usage
lote fetch miyabi research/out        # pull an arbitrary path back
lote pull <handle>                    # pull the path recorded at submit time

fetch toma una ruta relativa a la raíz del repo y la hace rsync de vuelta a la misma ruta local. pull es el atajo cuando pasaste --fetch al hacer submit, así que no vuelves a escribir la ruta.

interact y watch

lote interact miyabi --gpus 2 --hours 4   # interactive session (qsub -I on pbs, ssh -t otherwise)
lote interact miyabi --dry-run            # print the command instead of running it
lote watch miyabi                         # re-rsync on every local file change, ctrl-c to stop

En un host pbs, interact envía un qsub -I interactivo con la cuenta y la cola descubiertas. En cualquier otro host abre una shell de inicio de sesión. watch mantiene un host en sincronía con tu árbol de trabajo mientras iteras, respetando la misma lista de permitidos y gitignore que submit.

exec

El ejecutor en host. lote lo llama por ssh, pero también puedes ejecutarlo directamente en un nodo de inicio de sesión.

comando qué hace
lote exec qsub <script> [args…] envía a pbs, devuelve el id del trabajo
lote exec sbatch <script> [args…] envía a slurm, devuelve el id del trabajo
lote exec run <script> [args…] ejecuta a través de bash, sin planificador
lote exec status una tabla de mis trabajos en vivo
lote exec info <jid> el registro post-mortem de un trabajo
lote exec logs <jid\|name> [--follow] sigue el log coincidente más reciente
lote exec cancel <jid\|name\|all> qdel o scancel
lote exec qsub train.sh --select 2 --walltime 04:00:00
lote exec sbatch train.sh --gpus 4 --partition gpu
lote exec run smoke.sh                 # plain bash, off a cluster
lote exec status                       # squeue --me on slurm, otherwise qstat
lote exec cancel all                   # every job of mine

qsub y sbatch leen las directivas #PBS o #SBATCH del script y dejan que las banderas las anulen, así que un solo script lleva valores predeterminados sensatos. Un nombre de script sin ruta se resuelve contra los directorios jobs/ del experimento, y status, logs e info eligen automáticamente el planificador del host.