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.ui_training

Onglets Données, Entraînement et Suivi de l'interface Gradio. Plus de détails...

Classes

class  _Names
 Attribution de noms de fichiers libres dans un dossier, en temps amorti constant. Plus de détails...

Fonctions

 max_upload_mb ()
 Taille maximale d'un envoi, en Mo.
 safe_name (name, max_len=60)
 Nom de dossier ou de fichier assaini (ASCII, sans séparateur ni point de tête).
 _dangerous_member (info)
 Indique si un membre d'archive est dangereux (chemin absolu, « .
 extract_zip (zip_path, dest, max_total_bytes, max_files=MAX_ZIP_FILES, names=None)
 Extrait les images d'une archive zip, à plat, après contrôle de tous les membres.
 _check_image (path)
 Vérifie qu'une image est lisible.
 _to_8bit_file (path)
 Lit une image et la ramène à 8 bits si elle ne l'est pas.
 create_dataset (name, files, train_dir=None, max_upload_mb=None)
 Crée (ou complète) un jeu d'images d'entraînement à partir de fichiers et d'archives zip.
 list_datasets (train_dir=None)
 Jeux d'images d'entraînement existants.
 dataset_choices (train_dir=None)
 Jeux d'entraînement pour un menu : couples (« nom (k images) », nom).
 datasets_table (train_dir=None)
 Tableau des jeux d'entraînement (colonnes « jeu » et « images »).
 dataset_samples (name, train_dir=None)
 Vignettes d'un jeu : chemins d'images (liste vide si le jeu est absent).
 _estimate (mode, N, gdn_last)
 Calcul (mis en cache) de estimate().
 estimate (mode, N, gdn_last)
 Coût de l'encodeur embarqué d'un réglage (paramètres, MAC par pixel, poids INT8, tient dans la BRAM).
 preset_values (preset)
 Valeurs des champs du formulaire pour un préréglage.
 _portable_path (path)
 Chemin relatif à config.ROOT en notation POSIX si possible, sinon absolu.
 _num (field, v)
 Nombre d'un champ de formulaire (un flottant entier devient entier).
 launch_jobs (store, name, author, dataset, mode, N, gdn_last, lambdas, steps, batch_size, lr, crop, n_patches, seed, train_dir=None)
 Crée un job d'entraînement par valeur de λ (tout ou rien).
 format_duration (seconds)
 Durée lisible : "-" (inconnue), "< 1 min", "12 min" ou "2 h 05 min".
 job_progress (job, metrics_train, now)
 Progression d'un job et temps restant estimé.
 _status_label (job)
 Statut affiché d'un job (avec la demande d'annulation en cours).
 _lmbda_text (v)
 λ affiché sans zéros inutiles.
 visible_jobs (store)
 Jobs à afficher : les RECENT_JOBS plus récents et tous les jobs non terminés, sans doublon.
 jobs_table (store, now=None)
 Tableau des jobs, du plus récent au plus ancien.
 job_choices (store)
 Jobs pour un menu : couples (« n°12 · nom · λ=2048 · En cours », identifiant).
 _log_tail (path, n_lines)
 Dernières lignes d'un journal ; « (journal vide) » s'il est absent ou vide.
 _curves (metrics)
 Figure à trois axes (perte, débit, PSNR) à partir des métriques d'un job.
 _summary (job)
 Synthèse Markdown d'un job : statut, réglages, checkpoint, erreur.
 job_details (store, job_id, n_log_lines=50)
 Détail d'un job : courbes, fin du journal, synthèse.
 cancel_job (store, job_id, confirmed)
 Annule un job après confirmation.
 requeue_job (store, job_id)
 Remet en file un job en échec, annulé ou interrompu (il reprend à son dernier checkpoint).
 duplicate_config (store, job_id)
 Valeurs du formulaire d'entraînement pour refaire un job avec les mêmes réglages.
 worker_banner (store)
 Message sur la présence d'un worker, avec la marche à suivre s'il n'y en a pas.
 new_done_jobs (store, seen)
 Détecte les jobs qui viennent de se terminer.
 mark_codecs_loaded (done)
 Enregistre l'ensemble des jobs terminés couverts par le registre de codecs actuel.
 codecs_stale (done, loaded)
 Vrai si le registre de codecs ne couvre pas l'ensemble courant des jobs terminés.
 codec_updates (done, mode_value, reload_fn, menus_fn, n_outputs)
 Mises à jour des menus de codecs d'une session, avec au plus un rechargement par changement.
 choice_update (choices, current)
 gr.update d'un menu : nouveaux choix, valeur courante gardée si elle existe encore.
 _form_updates (vals, store_choices_ds)
 gr.update pour chaque champ du formulaire à partir d'un dictionnaire de valeurs.
 _initial_estimate (vals)
 Encart d'estimation initial du formulaire (texte vide si le calcul échoue).
 build_tabs (mode, reload_outputs, reload_fn, store=None, tabs=None, menus_fn=None)
 Crée les onglets Données, Entraînement et Suivi (à appeler dans le gr.Tabs de l'app).

Variables

list N_CHOICES = [32, 64, 96, 128, 192]
 Choix de N proposés.
list LAMBDA_CHOICES = [256, 512, 1024, 2048, 4096, 8192]
 Choix de λ proposés.
str CUSTOM_PRESET = "Personnalisé"
 Libellé du préréglage libre.
dict PRESET_CHOICES
 Préréglages affichés -> (clé de training.config.PRESETS ou None, λ cochés par défaut).
int BRAM_BYTES = 630_000
 Capacité BRAM du Zynq-7020 retenue : 140 BRAM36, environ 630 Ko, soit environ 615 Kio.
tuple ESTIMATE_SHAPE = (256, 256)
 Taille d'image pour l'estimation des MAC par pixel.
int MIN_SIDE = 256
 Côté minimal conseillé d'une image d'entraînement (avertissement en dessous).
int DEFAULT_MAX_UPLOAD_MB = 500
 Taille maximale par défaut d'un envoi, en Mo (surchargée par AIDGE_MAX_UPLOAD_MB).
int UNZIP_FACTOR = 2
 Taille décompressée maximale d'une archive : ce facteur fois la limite d'envoi.
int MAX_ZIP_FILES = 10_000
 Nombre maximal de fichiers dans une archive.
dict WINDOWS_RESERVED
 Noms réservés de Windows, refusés tels quels.
int REFRESH_S = 5
 Période de rafraîchissement de l'onglet Suivi, en secondes.
int N_SAMPLES = 6
 Nombre de vignettes montrées par jeu d'images.
list TABLE_COLUMNS = ["n°", "nom", "auteur", "statut", "λ", "N", "mode", "progression (%)", "temps restant", "créé le"]
 Colonnes du tableau des jobs.
int LOG_TAIL_BYTES = 65536
 Octets lus en fin de train.log pour en extraire les dernières lignes.
int MAX_WARNINGS = 5
 Nombre maximal de messages d'avertissement affichés en fenêtre après un envoi.
int _CHUNK = 1 << 20
 Copie par blocs de cette taille (octets).
 _MOVE_LOCK = threading.Lock()
 Verrou qui sérialise le déplacement des fichiers préparés vers un jeu (deux envois simultanés).
str STAGING_PREFIX = ".envoi-"
 Préfixe des dossiers de préparation d'un envoi (nom caché, ignoré par list_datasets).
tuple OPEN_STATUSES = ("queued", "running", "failed", "cancelled", "interrupted")
 Statuts d'un job non terminé : toujours visibles, quel que soit leur âge.
int RECENT_JOBS = 200
 Nombre de jobs récents toujours listés.
 _codecs_loaded = None
 Jobs terminés pris en compte par le dernier rechargement des codecs (None : jamais).
 _codecs_lock = threading.Lock()
 Verrou : un seul rechargement à la fois pour toute l'app.
list FORM_KEYS
 Champs du formulaire d'entraînement, dans l'ordre des composants.

Description détaillée

Onglets Données, Entraînement et Suivi de l'interface Gradio.

L'interface n'entraîne jamais elle-même : elle écrit des jobs dans la file (aidge_in_space.jobs.JobStore) et lit leurs statuts, leurs métriques et leurs journaux. Toute la logique est dans des fonctions pures, testables sans lancer Gradio ; les callbacks de build_tabs() n'en sont que de minces adaptateurs qui convertissent les erreurs en messages simples (gr.Error, gr.Warning). Contrat : docs/conception_entrainement.md, § 2.7.

Documentation des fonctions

◆ _check_image()

aidge_in_space.ui_training._check_image ( path)
protected

Vérifie qu'une image est lisible.

Paramètres
pathFichier image.
Renvoie
(largeur, hauteur).
Exceptions
Exceptionsi PIL ne sait pas la lire (y compris DecompressionBombError).

◆ _dangerous_member()

aidge_in_space.ui_training._dangerous_member ( info)
protected

Indique si un membre d'archive est dangereux (chemin absolu, « .

. », lien, chiffré).

Paramètres
infozipfile.ZipInfo du membre.
Renvoie
Vrai si l'archive entière doit être refusée.

◆ _form_updates()

aidge_in_space.ui_training._form_updates ( vals,
store_choices_ds )
protected

gr.update pour chaque champ du formulaire à partir d'un dictionnaire de valeurs.

Paramètres
valsDictionnaire de valeurs (clés absentes : champ inchangé).
store_choices_dsNoms de jeux existants (un jeu absent laisse le champ inchangé).
Renvoie
Liste de gr.update dans l'ordre FORM_KEYS.

◆ _num()

aidge_in_space.ui_training._num ( field,
v )
protected

Nombre d'un champ de formulaire (un flottant entier devient entier).

Exceptions
ValueErrorsi la valeur est vide ou n'est pas un nombre.

◆ _to_8bit_file()

aidge_in_space.ui_training._to_8bit_file ( path)
protected

Lit une image et la ramène à 8 bits si elle ne l'est pas.

L'image ouverte est libérée avant le retour : Pillow projette parfois le fichier en mémoire (TIFF non compressé), ce qui empêcherait de le réécrire sous Windows.

Paramètres
pathFichier image.
Renvoie
Couple (image 8 bits, format du fichier), ou (None, None) si l'image n'a pas besoin de conversion.

◆ build_tabs()

aidge_in_space.ui_training.build_tabs ( mode,
reload_outputs,
reload_fn,
store = None,
tabs = None,
menus_fn = None )

Crée les onglets Données, Entraînement et Suivi (à appeler dans le gr.Tabs de l'app).

Paramètres
modegr.Radio du mode de l'app (entrée de reload_fn).
reload_outputsComposants mis à jour par reload_fn.
reload_fnFonction du bouton « Recharger les codecs » ; reçoit le mode, renvoie un tuple de gr.update.
storeJobStore ; None : JobStore() créé ici.
tabsgr.Tabs de l'app ; s'il est fourni, « Lancer » ouvre l'onglet Suivi et « Dupliquer » l'onglet Entraînement.
menus_fnComme reload_fn mais sans redécouvrir les codecs (relit le registre) ; None : les menus de codecs d'une session neuve ne sont alors mis à jour qu'après un rechargement.

Les choix calculés à la construction sont rafraîchis à chaque chargement de session (événement load du gr.Blocks courant) et, pour les jeux, à l'ouverture de l'onglet Entraînement.

◆ cancel_job()

aidge_in_space.ui_training.cancel_job ( store,
job_id,
confirmed )

Annule un job après confirmation.

Paramètres
storeJobStore.
job_idIdentifiant du job.
confirmedCase de confirmation cochée.
Renvoie
Message de confirmation.
Exceptions
ValueErrorsi la confirmation manque ou si le job est déjà terminé.
KeyErrorsi le job est inconnu.

◆ choice_update()

aidge_in_space.ui_training.choice_update ( choices,
current )

gr.update d'un menu : nouveaux choix, valeur courante gardée si elle existe encore.

Paramètres
choicesListe de couples (libellé, valeur).
currentValeur actuellement choisie dans la session.
Renvoie
gr.update(choices, value) ; sans valeur courante valide, la première valeur (ou None).

◆ codec_updates()

aidge_in_space.ui_training.codec_updates ( done,
mode_value,
reload_fn,
menus_fn,
n_outputs )

Mises à jour des menus de codecs d'une session, avec au plus un rechargement par changement.

Si le registre est périmé (voir codecs_stale), reload_fn (qui relance discover()) est appelée une seule fois pour toute l'app, sous verrou ; les autres sessions n'ont qu'à relire le registre via menus_fn.

Paramètres
doneIdentifiants des jobs terminés à l'instant.
mode_valueMode courant de la session.
reload_fnRechargement complet des codecs (renvoie les mises à jour des menus).
menus_fnRelecture du registre sans redécouverte ; None : rien à mettre à jour hors rechargement.
n_outputsNombre de composants de sortie (pour les gr.update vides).
Renvoie
Tuple de n_outputs gr.update.

◆ codecs_stale()

aidge_in_space.ui_training.codecs_stale ( done,
loaded )

Vrai si le registre de codecs ne couvre pas l'ensemble courant des jobs terminés.

Paramètres
doneIdentifiants des jobs terminés à l'instant.
loadedIdentifiants pris en compte par le dernier rechargement (None : jamais rechargé).
Renvoie
Vrai si loaded est None ou diffère de done.

◆ create_dataset()

aidge_in_space.ui_training.create_dataset ( name,
files,
train_dir = None,
max_upload_mb = None )

Crée (ou complète) un jeu d'images d'entraînement à partir de fichiers et d'archives zip.

Tout est extrait et vérifié dans un dossier de préparation unique à l'envoi (.envoi-xxxx dans le dossier des jeux). Si quoi que ce soit échoue, seul ce dossier est supprimé : un jeu existant n'est pas modifié et deux envois simultanés ne s'effacent pas. En cas de succès, les images sont déplacées dans le jeu (créé si besoin) sans écraser aucun fichier (suffixe _2, _3…). Les images illisibles sont écartées, les images 16 bits ou flottantes sont converties en 8 bits (mise à l'échelle sur leur valeur maximale) et une image de moins de MIN_SIDE pixels de côté est gardée avec un avertissement.

Paramètres
nameNom du jeu (assaini).
filesChemins des fichiers envoyés (images ou zip).
train_dirDossier des jeux ; None : config.TRAIN_DIR lu à l'appel.
max_upload_mbTaille maximale de l'envoi en Mo ; None : max_upload_mb().
Renvoie
Couple (dossier du jeu, messages).
Exceptions
ValueErrorsi le nom est invalide, s'il n'y a aucun fichier, si l'envoi est trop gros, si une archive est refusée ou si l'envoi ne contient aucune image valide.

◆ duplicate_config()

aidge_in_space.ui_training.duplicate_config ( store,
job_id )

Valeurs du formulaire d'entraînement pour refaire un job avec les mêmes réglages.

Renvoie
Dictionnaire name (« nom (copie) »), author, dataset, mode, preset, lambdas, N, gdn_last, steps, batch_size, lr, crop, n_patches, seed.
Exceptions
KeyErrorsi le job est inconnu.

◆ estimate()

aidge_in_space.ui_training.estimate ( mode,
N,
gdn_last )

Coût de l'encodeur embarqué d'un réglage (paramètres, MAC par pixel, poids INT8, tient dans la BRAM).

Paramètres
mode"gris" ou "rgb".
NLargeur du modèle (entre 8 et 512).
gdn_lastPrésence de la GDN finale.
Renvoie
Dictionnaire params, mac_per_pixel, int8_bytes, int8_kib, bram_bytes, fits_bram, markdown.
Exceptions
ValueErrorsi le mode ou N est invalide.

◆ extract_zip()

aidge_in_space.ui_training.extract_zip ( zip_path,
dest,
max_total_bytes,
max_files = MAX_ZIP_FILES,
names = None )

Extrait les images d'une archive zip, à plat, après contrôle de tous les membres.

Aucun fichier n'est écrit avant que tous les noms aient été contrôlés (zip slip : chemins absolus, « .. », liens symboliques, archive chiffrée). La taille décompressée est bornée deux fois : sur les tailles déclarées, puis sur les octets réellement copiés (bombe zip).

Paramètres
zip_pathArchive.
destDossier de destination (créé si besoin).
max_total_bytesTaille décompressée maximale cumulée.
max_filesNombre maximal de membres.
names_Names partagé entre plusieurs appels ; None : un nouveau, lu dans dest.
Renvoie
Couple (images écrites, messages).
Exceptions
ValueErrorsi l'archive est illisible, dangereuse ou trop grosse.

◆ job_details()

aidge_in_space.ui_training.job_details ( store,
job_id,
n_log_lines = 50 )

Détail d'un job : courbes, fin du journal, synthèse.

Paramètres
storeJobStore.
job_idIdentifiant, ou None.
n_log_linesNombre de lignes de train.log à renvoyer.
Renvoie
Triplet (figure matplotlib, texte du journal, Markdown de synthèse) ; (None, "", invitation) si job_id est None.
Exceptions
KeyErrorsi le job est inconnu.

◆ job_progress()

aidge_in_space.ui_training.job_progress ( job,
metrics_train,
now )

Progression d'un job et temps restant estimé.

Paramètres
jobLe job.
metrics_trainMétriques train du job (JobStore.metrics).
nowHeure courante (secondes Unix).
Renvoie
Couple (progression en %, secondes restantes ou None). Le temps restant n'existe que pour un job en cours qui a déjà écrit une métrique.

◆ jobs_table()

aidge_in_space.ui_training.jobs_table ( store,
now = None )

Tableau des jobs, du plus récent au plus ancien.

Paramètres
storeJobStore.
nowHeure courante ; None : time.time().
Renvoie
DataFrame aux colonnes TABLE_COLUMNS.

◆ launch_jobs()

aidge_in_space.ui_training.launch_jobs ( store,
name,
author,
dataset,
mode,
N,
gdn_last,
lambdas,
steps,
batch_size,
lr,
crop,
n_patches,
seed,
train_dir = None )

Crée un job d'entraînement par valeur de λ (tout ou rien).

Toutes les configurations sont validées avant la première soumission.

Paramètres
storeJobStore.
nameNom du run (obligatoire).
authorAuteur (facultatif).
datasetNom du jeu d'images sous train_dir.
mode"gris" ou "rgb".
NLargeur du modèle.
gdn_lastPrésence de la GDN finale.
lambdasValeurs de λ (dédupliquées, triées).
stepsNombre de pas.
batch_sizePatchs par lot.
lrPas d'apprentissage.
cropCôté des patchs.
n_patchesPatchs pré-extraits.
seedGraine.
train_dirDossier des jeux ; None : config.TRAIN_DIR.
Renvoie
Identifiants des jobs créés, dans l'ordre croissant des λ.
Exceptions
ValueError(dont ConfigError) si le nom est vide, si aucun λ n'est choisi, si le jeu est absent ou vide, ou si un réglage est invalide.

◆ list_datasets()

aidge_in_space.ui_training.list_datasets ( train_dir = None)

Jeux d'images d'entraînement existants.

Paramètres
train_dirDossier des jeux ; None : config.TRAIN_DIR.
Renvoie
Liste triée par nom de dictionnaires name, path, n_images et samples (6 vignettes au plus).

◆ mark_codecs_loaded()

aidge_in_space.ui_training.mark_codecs_loaded ( done)

Enregistre l'ensemble des jobs terminés couverts par le registre de codecs actuel.

Paramètres
doneIdentifiants des jobs terminés (ensemble).

◆ max_upload_mb()

aidge_in_space.ui_training.max_upload_mb ( )

Taille maximale d'un envoi, en Mo.

Renvoie
AIDGE_MAX_UPLOAD_MB (entier > 0) ou DEFAULT_MAX_UPLOAD_MB.
Exceptions
ValueErrorsi la variable est mal formée.

◆ new_done_jobs()

aidge_in_space.ui_training.new_done_jobs ( store,
seen )

Détecte les jobs qui viennent de se terminer.

Paramètres
storeJobStore.
seenIdentifiants des jobs terminés déjà connus ; None au premier appel.
Renvoie
Couple (identifiants des jobs terminés, vrai s'il y en a de nouveaux). Jamais vrai au premier appel.

◆ preset_values()

aidge_in_space.ui_training.preset_values ( preset)

Valeurs des champs du formulaire pour un préréglage.

Paramètres
presetLibellé d'un préréglage de PRESET_CHOICES.
Renvoie
Dictionnaire N, gdn_last, lambdas, steps, batch_size, lr, crop, n_patches, seed ; vide pour « Personnalisé ».
Exceptions
ValueErrorsi le préréglage est inconnu.

◆ requeue_job()

aidge_in_space.ui_training.requeue_job ( store,
job_id )

Remet en file un job en échec, annulé ou interrompu (il reprend à son dernier checkpoint).

Renvoie
Message de confirmation.
Exceptions
ValueErrorsi le job n'est pas relançable.
KeyErrorsi le job est inconnu.

◆ safe_name()

aidge_in_space.ui_training.safe_name ( name,
max_len = 60 )

Nom de dossier ou de fichier assaini (ASCII, sans séparateur ni point de tête).

Exemples : "Lune LRO (été)" donne "Lune_LRO_ete", "../../etc" donne "etc", "con" donne "_con".

Paramètres
nameNom d'origine.
max_lenLongueur maximale du résultat.
Renvoie
Le nom assaini.
Exceptions
ValueErrorsi le résultat est vide.

◆ visible_jobs()

aidge_in_space.ui_training.visible_jobs ( store)

Jobs à afficher : les RECENT_JOBS plus récents et tous les jobs non terminés, sans doublon.

Paramètres
storeJobStore.
Renvoie
Liste de Job, id décroissant.

Documentation des variables

◆ _codecs_loaded

aidge_in_space.ui_training._codecs_loaded = None
protected

Jobs terminés pris en compte par le dernier rechargement des codecs (None : jamais).

État du registre de codecs, partagé par toutes les sessions du serveur.