AIDGE IN SPACE
Banc d'essai de compression d'image apprise pour l'embarqué
Chargement...
Recherche...
Aucune correspondance
Référence de l'espace de nommage aidge_in_space.worker

Worker de la file d'entraînement : exécute les jobs un par un, chacun dans un sous-processus. Plus de détails...

Fonctions

str tail (Path path, int n=ERROR_TAIL_LINES)
 Dernières lignes d'un fichier texte.
str final_status (int|None rc, bool cancel_requested, bool stopping, bool killed)
 Statut final d'un job à partir de la fin de son sous-processus.
None _close_stdin (subprocess.Popen proc)
 Ferme le stdin de l'enfant (demande d'arrêt propre), sans lever d'erreur.
None _kill_tree (subprocess.Popen proc, float wait_s=KILL_WAIT_S)
 Tue l'enfant et tous ses descendants, sans lever d'erreur.
str run_job (JobStore store, Job job, list[str] cmd, float poll, threading.Event stop_event, str|None name=None)
 Exécute un job dans un sous-processus et fixe son statut final.
None _finish (JobStore store, int job_id, str status, str|None error)
 Écrit le statut final ; réessaie si la base est verrouillée, avertit sans jamais lever.
int run_worker (JobStore store, float poll=POLL_S, bool once=False, list[str]|None cmd=None, threading.Event|None stop_event=None, str|None name=None)
 Boucle du worker : prend et exécute les jobs un par un.
None _safe (fn)
 Exécute fn en affichant (sans propager) toute exception.
int main (list[str]|None argv=None)
 Point d'entrée de la ligne de commande.

Variables

list TRAIN_CMD = [sys.executable, "-m", "aidge_in_space.train"]
 Commande d'entraînement ; le worker y ajoute –job-id N –db CHEMIN –watch-stdin.
float POLL_S = 5.0
 Période de scrutation et des battements de cœur, en secondes.
float STALE_AFTER_S = 60.0
 Âge au-delà duquel un job running est orphelin.
float STOP_TIMEOUT_S = 60.0
 Délai laissé à l'enfant pour sauvegarder après la fermeture de son stdin, avant l'arrêt forcé de son arbre de processus.
float CANCEL_GRACE_S = 60.0
 Délai après lequel le worker ferme lui-même le stdin d'un job dont l'annulation est demandée.
float KILL_WAIT_S = 10.0
 Délai maximal d'attente de la fin de l'enfant après son arrêt forcé, en secondes.
int ERROR_TAIL_LINES = 20
 Lignes de train.log recopiées dans l'erreur d'un job en échec.
int TAIL_BYTES = 64 * 1024
 Octets lus en fin de train.log pour en extraire les dernières lignes.
float SLICE_S = 0.25
 Pas maximal (secondes) entre deux vérifications de la fin de l'enfant.
int FINISH_RETRIES = 5
 Nombre de tentatives d'écriture du statut final quand la base est inaccessible.
float FINISH_RETRY_WAIT_S = 2.0
 Attente (secondes) entre deux tentatives d'écriture du statut final.

Description détaillée

Worker de la file d'entraînement : exécute les jobs un par un, chacun dans un sous-processus.

Lancement : python -m aidge_in_space.worker [--poll 5] [--once] [--db CHEMIN].

Le worker ne fait jamais d'entraînement lui-même : il lance python -m aidge_in_space.train --job-id N --db CHEMIN --watch-stdin, redirige sa sortie vers RUNS_DIR/N/train.log, entretient les battements de cœur du job et du worker, puis fixe le statut final à partir du code de retour (voir jobs.EXIT_*). Fermer le stdin de l'enfant lui demande de sauvegarder et de s'arrêter (code 4) ; le système le ferme aussi si le worker disparaît, ce qui évite les processus orphelins.

Documentation des fonctions

◆ _close_stdin()

None aidge_in_space.worker._close_stdin ( subprocess.Popen proc)
protected

Ferme le stdin de l'enfant (demande d'arrêt propre), sans lever d'erreur.

Paramètres
procSous-processus d'entraînement.

◆ _finish()

None aidge_in_space.worker._finish ( JobStore store,
int job_id,
str status,
str | None error )
protected

Écrit le statut final ; réessaie si la base est verrouillée, avertit sans jamais lever.

Paramètres
storeFile d'attente.
job_idIdentifiant du job.
statusStatut final.
errorMessage d'erreur éventuel.

◆ _kill_tree()

None aidge_in_space.worker._kill_tree ( subprocess.Popen proc,
float wait_s = KILL_WAIT_S )
protected

Tue l'enfant et tous ses descendants, sans lever d'erreur.

Sous Windows, le python du venv est un lanceur dont le vrai interpréteur est un second processus : proc.kill() ne tuerait que le lanceur et laisserait l'entraînement orphelin, d'où taskkill /F /T. Sous POSIX, l'enfant est chef de sa propre session (start_new_session) : SIGKILL à son groupe. Repli sur proc.kill() si l'arrêt de l'arbre échoue.

Paramètres
procSous-processus d'entraînement.
wait_sDélai maximal d'attente de la fin de proc, en secondes.

◆ _safe()

None aidge_in_space.worker._safe ( fn)
protected

Exécute fn en affichant (sans propager) toute exception.

Paramètres
fnFonction sans argument.

◆ final_status()

str aidge_in_space.worker.final_status ( int | None rc,
bool cancel_requested,
bool stopping,
bool killed )

Statut final d'un job à partir de la fin de son sous-processus.

Paramètres
rcCode de retour de l'enfant (None s'il est inconnu).
cancel_requestedAnnulation demandée dans la base.
stoppingArrêt du worker demandé.
killedEnfant tué après dépassement du délai.
Renvoie
"done", "cancelled", "interrupted" ou "failed".

◆ main()

int aidge_in_space.worker.main ( list[str] | None argv = None)

Point d'entrée de la ligne de commande.

Paramètres
argvArguments (défaut sys.argv).
Renvoie
0.

◆ run_job()

str aidge_in_space.worker.run_job ( JobStore store,
Job job,
list[str] cmd,
float poll,
threading.Event stop_event,
str | None name = None )

Exécute un job dans un sous-processus et fixe son statut final.

Paramètres
storeFile d'attente.
jobJob pris (statut running).
cmdCommande de base ; –job-id, –db et –watch-stdin sont ajoutés.
pollPériode des battements de cœur, en secondes.
stop_eventArrêt du worker demandé quand il est positionné.
nameNom du worker (battements de cœur et en-tête du journal).
Renvoie
Le statut final calculé.

◆ run_worker()

int aidge_in_space.worker.run_worker ( JobStore store,
float poll = POLL_S,
bool once = False,
list[str] | None cmd = None,
threading.Event | None stop_event = None,
str | None name = None )

Boucle du worker : prend et exécute les jobs un par un.

Paramètres
storeFile d'attente.
pollPériode de scrutation et des battements de cœur, en secondes.
onceTraiter au plus un job puis quitter.
cmdCommande d'entraînement (défaut TRAIN_CMD).
stop_eventÉvénement d'arrêt ; créé et relié aux signaux si None.
nameNom du worker (défaut hôte-pid).
Renvoie
Le nombre de jobs traités.

◆ tail()

str aidge_in_space.worker.tail ( Path path,
int n = ERROR_TAIL_LINES )

Dernières lignes d'un fichier texte.

Paramètres
pathFichier (lecture des 64 derniers Kio, UTF-8 avec remplacement).
nNombre de lignes.
Renvoie
Les n dernières lignes, ou "" si le fichier est absent.

Documentation des variables

◆ TRAIN_CMD

list aidge_in_space.worker.TRAIN_CMD = [sys.executable, "-m", "aidge_in_space.train"]

Commande d'entraînement ; le worker y ajoute –job-id N –db CHEMIN –watch-stdin.

Remplaçable dans les tests.