Op 30 juli 2026 activeerde Transformers voor T5 de scaled dot-product attention (SDPA) van PyTorch. Deze bijwerking liet de decoder van UMT5 toekomstige tokens raadplegen, dat wil zeggen het antwoord dat het moest voorspellen, tijdens de training. Er ging niets mis, en de bug bleef bijna twee maanden in de main-branch staan. Hugging Face stelt Model Integration Contracts (MIC) voor, een testformaat gebaseerd op kleine modellen, dat het mogelijk maakte dit te detecteren bij het opnieuw afspelen van commits.
Transformers ondersteunt meer dan 750 modeltypes, en de testsuite is aanzienlijk: meer dan 88.000 CPU-tests op de hoofd branch, en meer dan 200.000 GPU-tests in een dagelijkse uitvoering. Integratietests laden echte checkpoints en gebruiken de model-API op echte hardware. Ze bij elke wijzigingsaanvraag uitvoeren zou een groot aantal GPU’s de hele dag bezet houden, wat niet realistisch is. Een regressie kan dus de hoofd branch bereiken voordat deze wordt gedetecteerd door een geplande uitvoering.
Het model verkleinen in plaats van het grote testen
De aanpak bestaat uit het maken van een fixture, dat wil zeggen een klein model gebouwd vanuit de configuratie van het echte checkpoint, met minder lagen, smaller, maar van alle typen die in het originele model aanwezig zijn. De tokenizer- en processorbestanden blijven ongewijzigd. Deze fixture wordt eenmaal gepubliceerd en daarna hergebruikt, en de snelle tests worden erop uitgevoerd op een eenvoudige CPU. In de CPU-studie van het team woog de experimentele fixture van UMT5 66 MB, tegenover 1.227 MB voor het broncheckpoint. Deze methode is ook toepasbaar op zeer grote modellen, waarvan sommige niet op standaard GPU’s passen maar waarvan de fixture op CPU draait.
De tests gaan verder dan alleen het laden en een inferentie-run. De bug van UMT5 zou deze run moeiteloos hebben doorstaan. De fixtures vervangen niet de volledige integratietests, maar ze geven een kans om fouten te detecteren voordat ze in de hoofd branch terechtkomen.
Een MIC bestaat uit drie elementen: de fixture, een usage path (een uitvoerbaar voorbeeld, zoals tekstgeneratie of een trainingsstap) en baselines, de uitvoer die tijdens het uitvoeren van dat voorbeeld is vastgelegd en door een mens is gevalideerd. Het contract wordt nageleefd als de uitvoering op de fixture altijd deze referentie-uitvoer oplevert.
Terugblik op de UMT5-bug
Het team heeft bevroren MIC’s opnieuw afgespeeld over vijf maanden aan commits van Transformers. De fixture van UMT5 signaleerde de regressie vanaf de introductie op 30 juli 2026 tot aan de correctie op 28 september. De logaritmische kansen van de labels verschilden van de gevalideerde referentie met 1,22, en het trainingsverlies met ongeveer 0,20. Een detail telde mee: het contract gebruikte SDPA, het standaard aandachtspad. Alleen de ‘eager’ aandacht-variant uitvoeren onthulde de bug niet. Tijdens een demonstratie op een testbranch van de CI van Transformers, waar de correctie was teruggedraaid, faalde de verificatie met dezelfde afwijkingen, en de T5-runner stap duurde 13,4 seconden op CPU, exclusief installatie.
Contracten genereren met agents
Een commandoregelhulpmiddel, tmic, maakt het contract en bouwt de fixture. Voor een nieuw model schrijft een LLM de gebruikscode en het manifest, waarna CPU- en GPU-uitvoeringen kandidaat-baselines meten. Volgens het team schrijft de LLM wel, maar keurt niet goed: elke wijziging in de verwachtingen vereist menselijke validatie. Het modelreductierapport van Llama 4 Scout illustreert deze methode: 108,6 miljard parameters worden 44,7 miljoen, het visiedeel gaat van 34 naar 2 lagen en het taalgedeelte van 48 naar 4.
Voor de testmodellen vergeleek het team willekeurige gewichten met gewichten getraind op enkele voorbeelden. In de studie naar gewichtsinitialisatie detecteerden willekeurige Whisper-fixtures 18 geïnjecteerde fouten van de 24, tegenover 24 van de 24 voor de getrainde fixtures. Deze fouten waren synthetisch, en beide versies misten een bug in assisted decoding die door het echte Whisper-checkpoint werd onthuld.
Per 1 november 2026 rapporteert de MIC-job van de CI van Transformers mislukkingen zonder wijzigingsaanvragen te blokkeren. De vraag of het blokkerend moet worden gemaakt blijft open, vanwege een gebrek aan metingen over het aantal echte bugs dat wordt gedetecteerd en het aantal valse meldingen.
