Etiseo
Une formation eLearning complète, générée à coût marginal proche de zéro.
54+
formations livrées
0,40 €
coût marginal · stack 100 % locale
FLUX.2 · Chatterbox
modèles auto-hébergés
Le contexte
Le marché français de la formation Qualiopi/CPF est volume-sensible : un organisme de formation doit livrer beaucoup de formations à un coût unitaire faible pour rentabiliser son agrément. La production traditionnelle d'une formation eLearning complète (script, illustrations, voix professionnelle, vidéo, QCM, livret imprimable) coûte plusieurs milliers d'euros et plusieurs semaines de travail humain. À l'échelle nécessaire pour rester compétitif, ce coût ne tient pas.
Le pipeline construit pour Etiseo automatise la chaîne complète : un programme de formation au format PDF ou DOCX entre, et un package de formation prêt à diffuser sort : illustrations originales, narration vocale en français naturel, vidéos 4K avec transitions, QCM par module, livret PDF imprimable. Le tout est consommé directement par la plateforme Winalearn, spécifiquement son offre Gold Instructor, qui packageise et délivre les formations générées.
L'enjeu n'était pas « faire fonctionner l'IA ». Chaque modèle individuel marche tout seul, c'est ce que vendent OpenAI, Anthropic, ElevenLabs, Stability. L'enjeu était de descendre le coût marginal par formation à un niveau qui rende l'opération économiquement saine. À l'origine, une formation complète en stack tout-API coûtait environ 25 €. Aujourd'hui, en mode Phase 2 (documents complets, vidéos sur demande, images via API), elle coûte 5,50 €. La cible Phase 3, stack entièrement locale, descend à 0,40 € par formation.
Les décisions d'architecture
Inférence GPU auto-hébergée pour les modèles lourds (FLUX.2 klein 4B images, Chatterbox TTS voix), pas Pipeline 100 % API (OpenAI Imagen + ElevenLabs). Une formation de quatre heures consomme environ 120 illustrations et 80 minutes de narration. Aux tarifs API du marché, le coût marginal dépasse rapidement 25 € par formation, non viable à 50+ formations par mois. Auto-héberger FLUX.2 (variante klein 4B, choisie pour tenir dans 32 Go de RAM sans OOM) et Chatterbox (voice-cloné sur 10 secondes de référence) ramène le coût marginal à quelques centimes d'électricité plus l'amortissement matériel : moins de 0,40 € par formation en stack 100 % locale.
Trade-off assumé : Le serveur GPU devient une dépendance opérationnelle de production. SSH timeouts à gérer, OOM avec les variantes plus grosses (résolu en passant à la variante klein 4B), qualité voix légèrement en deçà d'ElevenLabs Pro sur les passages chiffrés. Le pipeline conserve des fallbacks API (OpenAI Imagen, ElevenLabs, Edge TTS) automatiquement activés si le serveur GPU n'est pas disponible : la formation se génère plus cher, mais elle se génère.
Orchestration custom avec checkpoint persistant par étape, par formation (state.json), pas Orchestrateur distribué (Temporal, BullMQ, cron). Une formation prend plusieurs heures sur dix étapes pipeline. Un crash à l'étape 8 sur 10 du module 5 d'un batch de 54 formations doit pouvoir reprendre où il s'est arrêté, et non re-rejouer sept heures de travail. Le pattern state.json par formation matche exactement le domaine : la résilience cherchée est « reprendre là où on était », non « exactly-once distribué sur plusieurs machines ». La résilience et l'automatisation complète étaient l'objectif explicite dès le départ, non une réponse a posteriori à des crashes.
Trade-off assumé : Pas d'orchestration multi-machines, pas de queue de travail volée entre workers. Chaque formation tourne sur une machine dans un processus. Acceptable pour le throughput visé (batchs de 50 à 100 formations). Une migration vers un orchestrateur distribué resterait possible si le volume change d'ordre de grandeur.
Abstraction du backend de génération de contenu : Claude API · Claude Max CLI · Ollama (à venir), pas Choisir un fournisseur de génération de contenu et s'y coupler en dur. Le coût marginal d'une formation dépend directement du backend de contenu utilisé. En production actuelle, Claude Max CLI permet d'exploiter le quota mensuel inclus dans un abonnement à coût fixe, sans facture variable par formation. Quand le quota est épuisé, le pipeline bascule sur l'API Anthropic payante avec une comptabilité explicite (budget journalier maximum). Quand Ollama sera intégré (cible Phase 3), les formations de R&D ou de prévisualisation pourront tourner à zéro euro variable.
Trade-off assumé : Trois backends à tester et à maintenir. Les sessions Claude Max ont des limites de débit explicites : le production runner lit les messages « Reset in X hr Y min » et gère un backoff dynamique. La complexité s'amortit sur la flexibilité économique : un changement de tarif côté Anthropic ne casse pas le modèle économique du pipeline.
L'exécution
Le pipeline tourne sur deux machines en réseau local : un poste de travail orchestre les étapes CPU (génération de contenu via Claude, Typst pour les PDFs, FFmpeg pour les vidéos, Mermaid pour les diagrammes) et un serveur GPU dédié exécute les inférences lourdes (FLUX.2 pour les illustrations, Chatterbox pour la voix, Whisper pour la validation). La communication entre les deux passe par SSH avec keep-alive configuré pour absorber les latences d'inférence longues.
L'observabilité s'appuie sur un journal exhaustif par formation : chaque étape écrit son état dans state.json, ses logs dans un fichier dédié, ses artefacts dans un répertoire de travail isolé. Une formation qui échoue laisse derrière elle suffisamment de traces pour reprendre manuellement à l'étape exacte qui a posé problème, sans avoir à rejouer les sept étapes précédentes.
Le production runner gère la résilience opérationnelle complète : retries bornés par étape, gestion des limites de session Claude Max avec backoff dynamique, budget journalier maximum sur les fallbacks API, exécution multi-instance possible via des state-dirs séparés (deux batchs peuvent tourner en parallèle sur des sous-files dédiées sans se télescoper).
Les leçons
La première leçon vient de la trajectoire de coût marginal. La version initiale du pipeline tournait en mode « tout-API » : Anthropic pour le contenu, OpenAI pour les images, ElevenLabs pour la voix. Coût observé : environ 25 € par formation, dominé par les images (60 %) et la voix (30 %). À 50 formations par mois, c'est 1 250 € de coût variable ; soutenable mais inutilement haut.
La Phase 2 a déplacé la production vers un mode « documents-only » : PDFs, slides, QCM, scripts de narration générés systématiquement ; vidéo et voix devenues des artefacts sur demande, générés uniquement quand un client le requiert. Combinée avec Claude Max CLI pour le contenu (quota mensuel inclus, zéro coût variable) et OpenAI gpt-image-1-mini pour les illustrations (0,01 € par image), la Phase 2 descend le coût observé à 5,50 € par formation.
La cible Phase 3, stack entièrement locale (Ollama pour le contenu, FLUX.2 pour les images, Chatterbox pour la voix, Whisper pour la validation), vise 0,40 € par formation. La leçon plus large : dans un pipeline IA, le coût marginal n'est pas une donnée fixe ; c'est une variable d'optimisation continue, qui se déplace au fur et à mesure que les modèles open-source rattrapent les modèles propriétaires. Construire un pipeline qui ne sait pas changer de backend revient à figer son coût marginal au tarif du fournisseur du jour.
La seconde leçon porte sur la validation des artefacts générés par l'IA. La voix synthétique produite par Chatterbox est ré-écoutée par Whisper en STT, et le texte reconnu est comparé au script original. Un Word Error Rate de plus de 10 % déclenche un signal dans le log.
Notre première implémentation faisait du WER un blocage : au-delà du seuil, l'audio était rejeté et l'étape relancée. En pratique, le blocage coûtait plus en temps d'attente qu'il ne corrigeait : la plupart des dépassements de WER venaient de chiffres, d'acronymes ou de prononciations ambiguës que Whisper ne reconnaissait pas mais qui étaient cosmétiquement acceptables. Le rejet bloquant générait des boucles infinies sur des artefacts en réalité valides.
Nous avons reculé : le WER devient un avertissement, jamais un verrou. Le pipeline produit l'audio, le journalise avec son WER, et continue. Le reviewer humain regarde la liste des avertissements en fin de batch et décide ce qui mérite régénération. La leçon : dans un pipeline IA, la validation automatique doit être informative, non gatekeeping. Les modèles produisent des artefacts dont la qualité varie naturellement, et un seuil rigide convertit cette variation naturelle en arrêt de production.
En production aujourd'hui
Le pipeline tourne en production depuis plus d'un an. Cinquante-quatre formations ont été livrées via Winalearn Gold Instructor, la couche de productisation côté Etiseo qui assemble et délivre les formations générées. Le mode Phase 2 (documents-only, Claude Max + OpenAI Imagen) est le mode standard ; le mode full-asset (vidéo + voix complète) est invoqué sur demande client, en lot différé.
La roadmap court terme finalise l'intégration Ollama pour franchir le seuil Phase 3 (0,40 € par formation), et un mécanisme de génération différée pour les vidéos qui permet de répondre « vidéo prête sous 48h » plutôt que d'imposer la génération synchrone au moment de la commande.
Un système à concevoir, déployer ou reprendre en main ?
Nous étudions chaque cahier des charges sérieusement. Réponse sous 48 h ouvrées.