Une carte hero générée intitulée « La pull request, pas la release », avec le sous-titre « Modèles vocaux Ming-3.0 et vLLM-Omni, octobre 2026 ». Des symboles au trait représentant une demande de fusion et une pile de checkpoints de modèle se trouvent de chaque côté du titre. Le logo OrcaRouter est incrusté dans le coin inférieur droit.
Engineering & Research

La prise en charge « Day-Zero » de vLLM-Omni par Ming-3.0 est une pull request, et elle sert le mauvais checkpoint

Auteur

Gideon Frost

Date de publication

Derniers modèles · 20Voir tous les modèles →
Benchmarks : Artificial Analysis · mis à jour quotidiennement
Retour à tous les articles

Le billet a été publié le 19 octobre 2026 et se lit comme une annonce de lancement : cinq modèles vocaux de 0,5B à 126B, « servez-les dès aujourd'hui avec vLLM-Omni ». Ce que le dépôt montre au moment de la rédaction, c'est une pull request ouverte, quarante fichiers, aucune fusion, et un titre qui nomme Ming-3.0-audio-tiny alors que chaque ligne du patch cible Ming-3.0-tts-tiny. Tous deux sont de véritables checkpoints de la famille Ming-3.0 que inclusionAI téléverse sur Hugging Face depuis le 3 septembre 2026, et ils remplissent des fonctions différentes : l'un écoute, l'autre parle. Aucun des deux n'est le modèle phare 126B que désigne l'expression « 126B de paramètres au total, 6,5B actifs » dans le même billet. Ainsi, la version honnête du récit du jour zéro est plus restreinte et plus utile que le titre : Ming-3.0 dispose d'une voie de service crédible en cours d'examen, pour l'un de ses cinq modèles, et les quatre autres se chargent encore via Transformers, ou pas du tout. Les défaillances documentées de l'IA et les incidents de pile de service derrière des billets comme celui-ci sont recensés dans l'OrcaRouter AI Incident Archive où chaque entrée comporte ses propres sources, sa gravité, sa note de confiance et son indicateur de contestation.

Rien de tout cela n’est une critique du travail. La pull request 9119 est d’une minutie inhabituelle pour une première intégration, et les tests sont la raison de croire qu’elle sera intégrée. Mais l’écart entre « avoir ouvert cinq modèles » et « les servir dès aujourd’hui » constitue tout le sujet de cet article, car c’est dans cet écart que se prennent les décisions de déploiement. Tout ce qui suit est tiré de la pull request, du registre vLLM-Omni et des cinq dépôts Hugging Face. Lorsqu’un chiffre provient du fournisseur lui-même, la phrase qui le contient le précise.

Ce que contient réellement la pull request 9119

Ouverte le 19 octobre 2026 à 16:32 UTC sur vllm-project/vllm-omni, toujours ouverte, 40 fichiers, 4 578 ajouts et 211 suppressions. Le centre de gravité est une nouvelle classe de modèle, Ming3TTSForConditionalGeneration, ainsi qu’une entrée de registre de pipeline, un YAML de déploiement en deux étapes et un adaptateur compatible OpenAI qui expose la synthèse à l’adresse /v1/audio/speech. La recette est écrite pour un H100 ou un H200, vLLM 0.32.0, Python 3.12, CUDA 13.0 et Transformers 5.19, épinglée sur le commit 9eb1adcc0 de vLLM-Omni.

Deux détails font qu’il ne s’agit pas d’une simple démo. Premièrement, il y a un test de contrat de 1 271 lignes pour la nouvelle classe, une suite de transport distincte et un petit fichier « contrat de publication ». Une suite de cette taille est écrite par quelqu’un qui s’attend à ce que le modèle survive à la prochaine refactorisation, pas par quelqu’un qui publie un notebook. Deuxièmement, le patch contient aussi 219 lignes de tests de modules partagés pour l’ancienne implémentation ming_tts, ce qui signifie que l’auteur a vérifié que le nouveau chemin ne cassait pas discrètement la génération précédente.

Ce qu’il ne contient pas, c’est un quelconque support pour les modèles de compréhension audio de la famille. Il n’y a pas d’encodeur pour l’entrée audio, pas d’adaptateur de transcription, pas de route ASR. Le correctif relève de la synthèse vocale de bout en bout.

• Pull request — 9119, ouverte, créée le 19 octobre 2026, 40 fichiers, +4 578/−211.

• Classe ajoutée — Ming3TTSForConditionalGeneration, enregistrée à côté de l'ancienne MingTTSForConditionalGeneration.

• Endpoint — /v1/audio/speech au format OpenAI via un nouvel adaptateur.

• Cible de la recette — un H100 ou H200, vLLM 0.32.0, commit 9eb1adcc0 de vLLM-Omni.

• Checkpoint servi — inclusionAI/Ming-3.0-tts-tiny, 7,9 Md au total, environ 1,3 Md actifs.

A screenshot of GitHub pull request 9119 in vllm-project/vllm-omni, titled '[New Model] Ming-3-TTS (inclusionAI/Ming-3.0-audio-tiny) Support'. It shows 'yuanheng-zhao wants to merge 24 commits into vllm-project:main from yuanheng-zhao:model/ming3-tts-vllm2', 40 files changed, +4,578 and -211, and the contributor-intent block whose first answer reads 'Support deploying inclusionAI/Ming-3.0-tts-tiny with vLLM 0.32.0'. The purpose note names Ming-3.0-TTS Tiny and the test plan names vLLM 0.32.0.

Les cinq points de contrôle, et ce que signifie « pris en charge » pour chacun

La famille couvre vraiment de 0,5B à 126B, et cet éventail n’est pas une échelle de tailles. Ce sont trois fonctions sous un même schéma de nommage, publiées en six semaines sans annonce.

• Ming-3.0-tts-0.5B — synthétiseur dense sur un socle Qwen2.5-0.5B avec une tête DiT, sortie à 44,1 kHz, sept langues plus le sichuanais et le cantonais, plus de 100 voix chinoises intégrées. Dépôt créé le 22 septembre 2026 à 12:46 UTC. MIT. Six téléchargements.

• Ming-3.0-tts-tiny — 7,9 B au total, environ 1,3 B actifs, un mélange d'experts Ling V3 avec clonage zero-shot, conception de voix, 14 balises paralinguistiques en ligne et génération de podcasts multi-locuteurs. Même minute du 22 septembre que le 0,5B. MIT. Vingt téléchargements. C'est le checkpoint que sert la pull request.

• Ming-3.0-audio-tiny — 9,3 B au total, 2,7 B actifs, entrée audio et texte, sortie texte avec parole facultative via un Talker. Créé le 3 septembre 2026 à 11:45 UTC. MIT. Trois téléchargements. Il s'agit du checkpoint nommé dans le titre de la pull request.

• Ming-3.0-audio-flash — 126B au total, 6,5B actifs, le lecteur phare : accents, dialectes, audio long, musique et scènes acoustiques en entrée, texte ou parole synthétisée en sortie. Créé le 3 septembre à 11:49 UTC. MIT. Vingt-deux téléchargements.

• Ming-3.0-asr-tiny — 9B, un encodeur audio sur une base Ling-tiny-v3, transcription en chinois et en anglais avec mots-clés et 15 jeux de test de dialectes régionaux. Le plus récent des cinq : dépôt créé le 14 octobre 2026 à 09:27 UTC. MIT. Trente-cinq téléchargements.

Donc la fourchette indiquée dans le post est exacte. C'est sur l'affirmation de prise en charge que ça se resserre : l'un de ces cinq a un chemin de serving en attente de merge, et les deux que la plupart des gens entendent par « Ming-3.0 » — audio-flash et audio-tiny — n'ont aucune intégration dans l'arbre.

Qu’y a-t-il réellement dans la branche principale de vLLM-Omni aujourd’hui ?

Le registre sur main est petit et facile à vérifier. Il répertorie MingTTSForConditionalGeneration pour inclusionAI/Ming-omni-tts-0.5B et une paire d’entrées MingFlashOmni pour Ming-flash-omni-2.0. Aucun des deux n’est un checkpoint Ming-3.0. Ils appartiennent à la génération précédente, et tous deux portent la coche des modèles pris en charge dans la documentation.

C’est sur cette distinction qu’un plan de déploiement peut échouer. « vLLM-Omni prend en charge Ming » est vrai pour Ming-flash-omni-2.0 et Ming-omni-tts-0.5B, l’est depuis plusieurs versions, et possède des recettes dans recipes/inclusionAI/. Ce n’est pas encore le cas pour quoi que ce soit portant le nom de Ming-3.0. Une équipe qui lit l’article, choisit le modèle audio 126B et provisionne un nœud en s’attendant à un point de terminaison compatible OpenAI ne trouvera qu’un checkpoint, une config et un indicateur trust_remote_code.

Cette dénomination fait qu'il est facile de passer à côté, même pour quelqu'un qui lit le diff. La nouvelle clé de registre Ming3TTSForConditionalGeneration se trouve à quelques lignes de l'ancienne MingTTSForConditionalGeneration, et le Ming-3.0-audio-tiny du titre de la PR n'est qu'à un mot du Ming-3.0-tts-tiny du corps. Si vous parcourez rapidement, les deux ressemblent au même modèle.

A screenshot of vLLM-Omni's supported-models document rendered on GitHub, showing the table columns Architecture, Models, Example HF Models and NVIDIA GPU. Visible rows include Qwen3-Omni, Qwen2.5-Omni, MingFlashOmniForConditionalGeneration plus MingImagePipeline for 'Ming-flash-omni-2.0 (omni-speech + imagegen)', BAGEL, InternVLA-A1, GROOT N1.7 and HunyuanImage-3.0. There is no Ming-3.0 row anywhere in the visible table.

Pourquoi le détail du mauvais checkpoint n'est pas de la pédanterie

Les deux petits modèles ne sont pas interchangeables. Ming-3.0-audio-tiny est un modèle audio-langage : il prend de l’audio en entrée et produit du texte, éventuellement avec de la parole. Ming-3.0-tts-tiny est un synthétiseur : il prend du texte et un extrait de référence et produit de l’audio. Une intégration de service écrite pour l’un ne vous apprend rien sur l’organisation mémoire de l’autre, son comportement de traitement par lots ou la forme de son point de terminaison.

Pour un lecteur qui planifie son travail, cela change à laquelle des deux questions il peut répondre cette semaine.

• Si vous souhaitez générer de la parole — clonage de voix, TTS dialectal, assemblage de podcasts à partir d’un script — cette pull request s’adresse à vous, et sa recette tient en un seul H100 ou H200.

• Si vous souhaitez transcrire ou raisonner sur de l’audio — réunions, appels, entretiens à forte composante dialectale — rien dans ce patch ne s’applique, et la solution consiste à utiliser Transformers avec les fichiers de modélisation personnalisés, ou l’adaptateur SGLang documenté par la fiche ASR.

Le modèle phare 126B appartient à une troisième catégorie : il nécessite huit H800 de 80 Go en parallélisme tensoriel pour le profil 128K du fournisseur, ou quatre GPU pour le profil SGLang validé en texte uniquement, et environ 259 Go de poids avant tout cache KV. Une recette mono-GPU ne lui serait d'aucun secours, son absence de ce correctif n'est donc pas un oubli.

Ce que le post a vu juste

Deux affirmations résistent à la vérification, et ce sont celles qui comptent pour la crédibilité de la famille. Le décompte de cinq modèles est correct, et la plage de 0,5B à 126B est correcte, y compris le 6,5B actif entre parenthèses — c'est le nombre d'activations du modèle flash et il est imprimé sur sa fiche.

La troisième affirmation, « les servir dès aujourd'hui », est celle qu'il faut lire attentivement. Elle n'est vraie pour la voie TTS-tiny qu'après la fusion, et même alors en tant que recette plutôt que d'artefact de version. La distinction entre une pull request ouverte et une version taguée est exactement celle dont une équipe de production a besoin, et l'article ne fait pas cette distinction.

Il y a aussi une date qui mérite d’être remarquée. Le correctif vLLM-Omni a été ouvert douze minutes après le dernier push d’inclusionAI vers le dépôt GitHub audio-flash, lequel a lui-même été créé le 15 octobre — six semaines après la mise en ligne des poids sur Hugging Face. L’intégration n’est pas en retard. Elle arrive à la même vitesse que tout le reste dans cette famille, c’est-à-dire sans calendrier que quiconque ait publié.

Exécution de Ming-3.0 cette semaine sans attendre la fusion

Tous les checkpoints de la famille se chargent aujourd’hui via Transformers, et les fiches le documentent. Le schéma de la fiche flash est AutoProcessor avec use_fast=False, AutoModelForCausalLM en bfloat16 avec device_map="auto", et trust_remote_code=True — ce que la fiche elle-même vous indique de faire : lire le code de modélisation avant de l’activer. Le dépôt fournit les fichiers personnalisés, le processeur, le Talker, le VAE et deux voix de référence avec leurs transcriptions.

Pour la synthèse, les checkpoints TTS disposent de leurs propres points d’entrée d’inférence et d’un script de précontrôle qui valide le checkpoint avant son chargement. Pour la transcription, la fiche ASR documente un endpoint /v1/audio/transcriptions de forme OpenAI via un adaptateur SGLang, et avertit que le prompt validé attend une tabulation entre l’étiquette de langue et la transcription — cette tabulation est votre parseur, et un prompt générique « transcris ceci » ne correspond pas à la configuration mesurée par le fournisseur.

Ce que vous n’obtenez pas sur ce chemin, c’est la couche intermédiaire : le continuous batching, le contrôle d’admission, un point de terminaison stable, un processus qui survit à une mauvaise requête. Cette couche, c’est ce qu’est la pull request, pour un checkpoint. C’est pourquoi le statut de fusion est ce qu’il faut surveiller plutôt que la fiche du modèle.

Là où un routeur trouve sa place, et la phrase qu’il ne peut pas prononcer

OrcaRouter ne sert pas Ming-3.0. Aucun des cinq checkpoints ne figure dans notre catalogue, et aucun appel à notre API n’en atteindra un. Un modèle de 126 B que vous exécutez sur vos propres huit GPU relève de l’infrastructure, et le routage ne transforme pas l’infrastructure en point de terminaison hébergé.

Ce qu’un routeur permet réellement d’atteindre, c’est la moitié texte d’un produit vocal, plus importante qu’elle n’en a l’air : le prompt qui décide quoi demander à l’audio, le nettoyage qui transforme une transcription avec diarisation en notes structurées, le garde-fou qui vérifie un script avant que le synthétiseur ne le prononce, et le classifieur qui envoie un fichier au nœud ASR ou au nœud TTS. Ce sont des appels texte ordinaires, et les placer derrière une API unique pour plus de 200 modèles à 0 % de marge — le prix catalogue du fournisseur étant répercuté, de sorte qu’une baisse de prix d’un fournisseur est effective chez nous le jour même — supprime trois contrats fournisseurs d’un projet dont la partie difficile est déjà le nœud GPU. Le basculement automatique est l’autre élément qu’il vaut la peine de nommer : c’est ainsi que l’on place un checkpoint non fusionné derrière une fraction du trafic sans faire reposer le chemin de production dessus.

Qu’est-ce qui rendrait la publication vraie ?

Trois événements vérifiables, classés selon l’ampleur des changements qu’ils entraîneraient.

• La fusion. Si 9119 arrive dans une version taguée de vLLM-Omni avec la recette et les tests joints, un checkpoint Ming-3.0 dispose d’une véritable histoire de serving, et « jour zéro » devient défendable pour TTS-tiny.

• Un second correctif. La voie de compréhension audio nécessite sa propre intégration. Tant que les modèles flash et audio-tiny n’ont pas d’adaptateurs, la phrase « vLLM-Omni prend en charge Ming-3.0 » signifie uniquement la synthèse.

• Un seul chiffre indépendant. Chaque chiffre des cartes provient d’une exécution propre à inclusionAI, et aucun tiers n’a publié de score pour l’un des cinq. La moyenne de 3,45 pour l’ASR en chinois et la moyenne de 9,40 pour les dialectes correspondent au fournisseur qui se décrit lui-même en public, ce qui a une certaine valeur, mais ce n’est pas la même chose qu’une reproduction.

D'ici là, la description exacte est celle que le dépôt étaye : une famille vocale de cinq modèles mise en ligne discrètement sur six semaines, documentée en une seule journée d'octobre, avec un correctif de serving bien testé en cours de révision pour son synthétiseur 7,9B et quatre checkpoints que vous chargez vous-même. La pull request est du bon travail. Ce n'est pas une release, et le fournisseur ne l'a pas affirmé.

A generated single-column scoreboard titled 'Ming-3.0 — the scoreboard' with five rows: audio-flash 126B total, 6.5B active; audio-tiny 9.3B total, 2.7B active; tts-tiny 7.9B total, 1.3B active; tts-0.5B 0.5B dense; asr-tiny 9B encoder. A sixth row reads 'vLLM-Omni support: one open PR, no merge'. The footer reads 'Vendor-reported specs from the model cards; no independent benchmark exists.' The OrcaRouter logo is composited in the bottom-right corner.