Open source d’une fusion de kernels Triton qui accélère jusqu’à 5x l’inférence de Qwen3-TTS
(github.com/newgrit1004)Bonjour, je partage une bibliothèque de fusion de kernels Triton qui résout les goulots d’étranglement d’inférence du modèle Qwen3-TTS 1.7B et permet d’obtenir un gain de vitesse d’environ 5x.
1. Pourquoi l’avoir développée ? (contexte)
Les personnes qui ont déjà utilisé l’audio TTS en production le savent : les modèles stochastiques comme Qwen3-TTS produisent un résultat différent à chaque génération (intonation, tonalité, etc.).
En pratique, une stratégie de génération multiple est donc indispensable : il faut produire rapidement plusieurs candidats audio, puis choisir le plus naturel. Avec les vitesses existantes, le pipeline de travail était trop contraignant, ce qui m’a poussé à optimiser directement. Grâce à cette optimisation, il est désormais possible de générer 5 candidats dans le temps qu’il fallait auparavant pour n’en produire qu’un seul.
2. Comment cela a-t-il été réalisé ? (Claude Code + tests intensifs)
Pour être honnête, je connaissais la puissance d’OpenAI Triton, la bibliothèque d’optimisation de kernels, mais je n’avais encore jamais écrit moi-même de code de kernel. C’est pourquoi la majeure partie du code kernel de ce projet a été rédigée avec l’aide de Claude Code.
En revanche, pour compenser mon manque d’expérience pratique avec Triton et garantir à 100 % la fiabilité du modèle, au lieu de concentrer toute mon énergie sur l’écriture du code, je l’ai consacrée à des tests extrêmement rigoureux.
- J’ai écrit 90 tests unitaires pour garantir des résultats mathématiques parfaitement identiques à ceux du modèle d’origine.
- Une similarité cosinus > 0.997 a été atteinte sur toutes les principales couches de checkpoint ainsi que sur la sortie finale.
3. Points d’ingénierie et résultats
Inspiré par Liger Kernel de LinkedIn, j’ai fusionné en kernels Triton les 4 opérations qui constituent le goulot d’étranglement à l’inférence (RMSNorm, M-RoPE, Norm+Residual, SwiGLU).
[Benchmark de performances - basé sur une RTX 5090]
- Base (PyTorch): 3,902 ms
- Hybride (Faster+Triton): 919 ms (~4.7x plus rapide)
(※ Le mode Hybride correspond au résultat de l’ajout de cette fusion de kernels Triton à faster-qwen3-tts, qui repose sur CUDA Graph.)
4. Conclusion
À ce stade, les tests n’ont été réalisés que sur mon matériel personnel, une RTX 5090. Si certaines personnes utilisent d’autres configurations, comme des serveurs (A100, H100) ou une RTX 4090, ce serait d’une grande aide si vous pouviez l’essayer et partager vos retours sur GitHub ou en commentaire.
Merci d’avoir pris le temps de lire !
Aucun commentaire pour le moment.