⚙ Architecture
Trois blocs enchaînés : un encodeur acoustique pré-entraîné, un décodeur Transformer entraîné sur m-TEDx, et un vocabulaire SentencePiece.
Encodeur Pantagruel : pré-entraîné sur de grandes quantités de parole française (1k, 14k ou 114k heures) avec une approche JEPA (data2vec 2.0) — un encodeur « étudiant » voit l’audio partiellement masqué et doit retrouver les vecteurs qu’un encodeur « professeur » aurait produits sur les parties cachées. Il est d’abord gelé (ses poids ne changent pas), puis parfois affiné après plusieurs milliers de pas.
Décodeur Transformer : 6 couches, 8 têtes d’attention. Il génère la traduction anglaise token par token, à partir des représentations produites par l’encodeur. Il est entièrement entraîné sur m-TEDx.
SentencePiece (SPM) : vocabulaire de 1 000 sous-mots appris sur les traductions anglaises du corpus. Les mots rares sont recomposés morceau par morceau ; le modèle reste compact. À la génération, le décodeur émet des unités SPM qui sont ensuite réassemblées en phrase lisible.
⚡ Hyperparamètres
| Paramètre | Valeurs / options | Impact | État |
|---|---|---|---|
| Taille de l’encodeur | B-1k / L-14k / L-114k |
+4 pts BLEU entre B-1k (16,7) et L-14k v3 (21,2) | ok |
| Segmentation audio | utterance / sentence_like |
Protocoles non comparables — choisir selon l’objectif | ok |
| Gel de l’encodeur | freeze_encoder_updates: 5000 |
Stabilise l’entraînement, évite le collapse en début de run | ok depuis v2 |
| Warmup LR | warmup_updates: 10 000 (cible papier) |
Montée progressive du taux d’apprentissage | champ YAML, non lu par le code |
| Taux d’apprentissage | 1e-4 à 2e-4 |
Valeur critique — trop élevé → collapse | ok |
| Taille de lot effective | batch_size: 8 + accumulation de gradient |
Papier cible 64–256 séquences ; contrainte VRAM forte | 8 seq. (contrainte VRAM) |
| Durée d’entraînement | max_updates: 80 000 |
Le papier va jusqu’à 120k ; early stop souvent @20–30k | sous le papier |
| Décodage | greedy (train) / beam_size: 5 (éval) |
Beam 5 à l’évaluation (`5_evaluate.py`) | beam 5 eval |
| SpecAugment | Masquage temps/fréquence sur les features audio | Régularisation standard en ST | temporel + fréquentiel (v5+) |
| Label smoothing | 0.1 |
Conforme au papier | ok |
📊 Résultats
Survolez les termes soulignés en pointillésExplication courte affichée au survol de la souris. dans la colonne Notes pour une définition en langage courant. Si la bulle contient un lien, cliquez d’abord sur le terme pour la maintenir affichée, puis sur le lien — sinon elle disparaît dès que la souris s’éloigne.
| Run | Encodeur | Segmentation | BLEU test | Durée GPU | NotesContexte du run : version de config, réglages testés, comparaison à d’autres runs ou à l’article de référence. |
|---|---|---|---|---|---|
run_026 |
L-14k | utterance | 26,1 | 7,6 h | v5Version 5 du fichier YAML de configuration (hyperparamètres, augmentations…) pour ce run. SpecAugmentMasquage aléatoire de bandes temps/fréquence sur le spectrogramme pendant l’entraînement pour mieux généraliser. → glossaire ; early stopArrêt anticipé quand le score sur le jeu de validation cesse de progresser — on évite de continuer inutilement. @55k ; dépasse papierRésultat publié dans l’article Pantagruel (2026), référence scientifique du projet. L-14k (24) |
run_027 |
L-14k | utterance | 25,1 | 12–18 h | v6Version 6 de la config : entraînement plus long (jusqu’à 120k mises à jour). long 120k ; early stopArrêt anticipé quand le score de validation cesse de s’améliorer. (14 juin) — sous run_026Référence à un autre run du projet pour comparaison directe des scores. → glossaire |
run_031 |
L-14k | utterance | 24,0 | 8 h | v7Version 7 de la config. SPM 5kVocabulaire SentencePiece de 5 000 sous-mots (au lieu de 1 000) : découpage du texte anglais en unités plus fines. ; early stopArrêt anticipé quand le score de validation cesse de s’améliorer. (14 juin) — sous run_026 |
run_034 |
L-14k | utterance | 22,2 | 5 h | v8Version 8 de la config. SPM 8kVocabulaire SentencePiece de 8 000 sous-mots — test d’un vocabulaire encore plus grand. ; early stopArrêt anticipé quand le score de validation cesse de s’améliorer. (14 juin) — sous run_031 |
run_028 |
L-114k | utterance | 23,5 | 9 h | v5Version 5 de la config. SpecAugment vocab 1k ; early stopArrêt anticipé quand le score de validation cesse de s’améliorer. (14 juin) — sous article L-114k et run_033Run L-114k avec vocabulaire SPM 5k — 25,10 BLEU test, proche Table 8. |
run_033 |
L-114k | utterance | 25,1 | ~12 h | v7Version 7 de la config. SPM 5kVocabulaire SentencePiece de 5 000 sous-mots — configuration proche du protocole LeBenchmark / Table 8 pour L-114k. ; early stopArrêt anticipé @ 78k (best dev 25,53 @ 70k). (17 juin OVH) — ≈ article Table 8 (25,2) |
run_035 |
B-1k | utterance | 19,75 | ≤ 3,5 h | v5Version 5 de la config. SpecAugment (15 juin) |
run_036 |
L-14k | utterance | 0,60 | 4 h | v9Version 9 de la config. warmupMontée progressive du taux d’apprentissage en début d’entraînement pour éviter des mises à jour trop brusques. → glossaire 10k — interrompu @ 31k ; éval best.ptFichier « meilleur checkpoint » sauvegardé pendant l’entraînement — ici évalué alors que le run n’était pas terminé, d’où un score peu fiable. non représentative |
run_039 |
L-14k | utterance | 13,84 | 3 h | speechLLMRun de la variante 2 (projecteur + LLM) cité ici pour comparaison — pas un run Transformer pur. SpecAugment (16 juin — sous run_023) |
run_041 |
L-14k | utterance | 25,95 | 3,5 h | v10Version 10 de la config. finetuneReprise d’entraînement à partir d’un modèle déjà entraîné (ici run_026) plutôt que depuis zéro. run_026 + SpecAugment freqMasquage de bandes de fréquences uniquement (sans masquage temporel) dans SpecAugment. (16 juin — sous run_026) |
run_043 |
L-14k | utterance | 24,78 | ~7 h | v5 replicate run_026 (17 juin — écart ~1,3 vs 26,12) |
run_038 |
L-114k | utterance | 24,78 | 9–12 h | v9 SpecAugment temporel + fréquentielMasquage à la fois dans le temps et dans les fréquences du spectrogramme — régularisation plus complète. → glossaire (OVH, 18 juin — early stop @ 30k) |
run_042 |
L-114k | utterance | 24,11 | 9–12 h | v10 warmup 10k + SpecAugment (OVH, 19 juin — early stop @ 38k ; sous run_033 25,10) |
run_037 |
L-14k | utterance | 24,55 | 8–10 h | v9 SpecAugment fort mask_time_prob: 0.10 (Modyco, 17 juin) |
run_046 |
L-14k | utterance | 2,76 | ~4 h | v11 batch effectif 32 — collapseEffondrement de l’entraînement : le modèle produit des sorties dégénérées (répétitions, score proche de zéro). @ 12k (Modyco, 19 juin) |
run_049 |
L-14k | utterance | 23,84 | ~8 h | v5 seed 2 — réplicabilité (Modyco, 19 juin ; vs run_026 26,12) |
run_020 |
L-14k | utterance | 21,2 | 9–10 h | v3Version 3 de la config. ; gel 5kEncodeur figé pendant les 5 000 premières mises à jour : seul le décodeur apprend au début. → glossaire ; eval devÉvaluation sur le jeu de développement (données non vues à l’entraînement, utilisées pour suivre la progression). complet |
run_019 |
L-114k | utterance | 20,2 | 9–10 h | v3 ; eval devÉvaluation sur le jeu de développement (données non vues à l’entraînement). complet |
run_016 |
L-114k | utterance | 19,6 | 9 h | v2Version 2 de la config. ; early stop @21k updatesNombre de passes d’entraînement (mini-lots) effectuées avant l’arrêt. |
run_025 |
L-114k | utterance | 0,31 | 8 h | v4Version 4 de la config. batch 6464 exemples traités ensemble à chaque pas — ici trop grand pour notre setup, ce qui a fait échouer l’entraînement. — collapseEffondrement de l’entraînement : le modèle produit des sorties dégénérées (répétitions, score proche de zéro). |
run_014 |
L-14k | utterance | 17,2 | early stop @21k | v2Version 2 de la config. |
run_004 |
B-1k | utterance | 16,7 | 1 h 15 | v2 ; proche articleScore de référence publié dans l’article Pantagruel (2026). (17,5) |
run_001 |
B-1k | sentence_like | 15 | 8 h | Protocole sentence_likeDécoupage en pseudo-phrases plus longues — les scores ne se comparent pas aux runs utterance. → glossaire (non comparable utteranceUn énoncé = un segment audio correspondant à une phrase parlée. → glossaire) |
| Article (réf.) | L-114k | utterance | 25,2 | — | Pantagruel Table 8 ; beam 5Décodage qui explore 5 pistes de traduction en parallèle avant de choisir la meilleure. → glossaire ; fairseqBibliothèque d’entraînement utilisée dans l’article original (nous utilisons PyTorch/Hugging Face). |
| Article (réf.) | L-14k | utterance | 24,0 | — | Pantagruel Table 8 ; beam 5Décodage explorant 5 pistes de traduction en parallèle. → glossaire ; fairseqBibliothèque d’entraînement de l’article original (nous utilisons PyTorch/Hugging Face). |
| Article (réf.) | B-1k | utterance | 17,5 | — | Pantagruel Table 8 ; beam 5Décodage explorant 5 pistes de traduction en parallèle. → glossaire ; fairseqBibliothèque d’entraînement de l’article original (nous utilisons PyTorch/Hugging Face). |
🔬 Réplication de l’article Pantagruel (Table 8)
Les runs utterance visent la Table 8 de l’article. La réplication reste partielle sur les hyperparamètres (batch, stack PyTorch/HF vs fairseq), mais le score L-114k de référence est désormais atteint.
run_033 combine l’encodeur Pantagruel-L-114k avec un vocabulaire SPM 5k (protocole proche de LeBenchmark) sur la segmentation utterance m-TEDx fr→en.25,10 BLEU test (dev 25,27 ; meilleur dev 25,53 @ 70k) — à ±0,1 point de la Table 8 Pantagruel (25,2 ± 0,4). C’est la première configuration L-114k du projet à rejoindre le niveau article.
À noter : le meilleur ST global du dépôt reste
run_026 (L-14k + vocab 1k + SpecAugment, 26,12 BLEU test) — au-dessus de la référence L-14k article (24,0).
| Encodeur | Article Table 8 | Meilleur run S3T | Écart | Statut réplication |
|---|---|---|---|---|
| L-14k | 24,0 ± 0,4 | run_026 — 26,12 |
+2,1 | dépassé |
| L-114k | 25,2 ± 0,4 | run_033 — 25,10 (SPM 5k) |
−0,1 | atteint |
| B-1k | 17,5 ± 0,4 | run_004 — 16,68 |
−0,8 | proche |
Checklist technique — écarts résiduels par rapport au papier :
| Élément | Cible papier | État actuel |
|---|---|---|
| Corpus + segmentation | m-TEDx fr→en, utterance | ok |
| Encodeurs | B-1k / L-14k / L-114k (HF) | ok |
| Décodeur Transformer | 6 couches, 8 têtes | ok |
| SentencePiece 1k | vocabulaire SPM | ok |
| Optimiseur AdamW | β₁=0,9 ; β₂=0,98 | ok |
| Label smoothing 0,1 | 0,1 | ok |
| Gel encodeur 5 000 premiers pas | freeze_encoder_updates: 5000 | ok depuis v2 |
| Beam search à l’évaluation | beam = 5 | beam 5 (`5_evaluate.py`) |
| Warmup LR (10 000 pas) | montée progressive | implémenté (`4_train.py`) |
| SpecAugment | masquage temps/fréquence | temporel + fréquentiel (v5+) |
| Batch effectif 64–256 | 64–256 séquences | 8 seq. (contrainte VRAM) |
🔧 Pistes d’amélioration
-
1
Beam search (beam = 5) ✓ implémenté
Explorer 5 hypothèses de traduction en parallèle au lieu d’une seule (greedy), ce qui améliore la qualité. Actif lors de l’évaluation (
5_evaluate.py,6_infer.py). La sélection du meilleur checkpoint pendant l’entraînement reste en mode greedy (plus rapide). -
2
Warmup LR ✓ implémenté ablation interrompue
La vitesse d’apprentissage monte progressivement au début de l’entraînement pour éviter des mises à jour trop brusques. Implémenté dans
4_train.py. L’ablationrun_036(warmup 10 000 steps) a été interrompue — évaluation best.pt : 0,60 BLEU test. -
3
SpecAugment ✓ implémenté
Masquage aléatoire de bandes de fréquences ou d’instants dans le spectrogramme audio — force le modèle à être robuste aux occultations partielles. Actif en masquage temporel + fréquentiel pour la variante ST, temporel uniquement pour speechLLM.
run_026— L-14k (26,12, meilleur local) ·run_033— L-114k SPM 5k (25,10, ≈ article) ·run_037— fort L-14k (24,55) ·run_038/run_042— L-114k (24,78 / 24,11) -
4
Config de réplication stricte à créer
Reproduire les conditions exactes du papier de référence via un fichier de configuration dédié. Paramètres visés :
freeze_encoder_updates: 5000·warmup_updates: 10000·max_updates: 120000·decode.beam_size: 5·max_eval_batches: null -
5
Lancer sur les 3 tailles d’encodeur avec ≥ 2 seeds à faire
Comparer B-1k, L-14k et L-114k dans des conditions identiques, avec au moins deux initialisations aléatoires différentes. Nécessaire car le papier signale une variabilité de ±0,4 BLEU entre seeds — sans cela, les écarts observés entre configurations ne sont pas statistiquement fiables.
-
6
État des runs récents
Tableau de bord des expériences en cours, en file ou récemment terminées.
run_026✓ okSpecAugment v5 · 26,12 BLEU test (vocab 1k) — meilleur ST localrun_041✓ okFinetune SpecAugment fréquentiel · 25,95 BLEU testrun_043✓ okReplicate run_026 · 24,78 BLEU testrun_028✓ okL-114k · SpecAugment v5 · 23,51 BLEU testrun_032✓ okspeechLLM · 14,15 BLEU testrun_033✓ okL-114k · SPM 5k · 25,10 BLEU test — ≈ Table 8 (25,2)run_038✓ okL-114k · SpecAugment freq · 24,78 BLEU test (OVH)run_042✓ okL-114k · warmup 10k · 24,11 BLEU test (OVH)run_037✓ okL-14k · SpecAugment fort · 24,55 BLEU testrun_049✓ okL-14k · v5 seed 2 · 23,84 BLEU testrun_046✗ collapseL-14k · batch 32 · 2,76 BLEU testrun_039✓ okspeechLLM · 13,84 BLEU testrun_040✗ échecÉchec chargement HuggingFace -
7
Documenter les écarts résiduels inévitables rapport
Certaines différences avec le papier de référence ne peuvent être évitées : utilisation de PyTorch/HuggingFace au lieu de fairseq, absence de speed perturbation (légère accélération/décélération aléatoire de l’audio pendant l’entraînement), batch légèrement plus petit. Ces écarts qualifient les résultats de réplication partielle plutôt que stricte.