Modèle / jeu de données
microsoft/unilm avatar
microsoft/unilm

microsoft/unilm: un dépôt monorepo pour la pré-formation à grande échelle

Large-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities

22 217 étoiles2 705 forksPythonMIT

En bref

De quoi s’agit-il ?
Le dépôt unilm de Microsoft regroupe une trentaine de projets de recherche en pré-formation auto-supervisée, du texte aux documents scannés en passant par la parole. Voici ce qu'il contient réellement, comment on l'installe, et pourquoi ce n'est pas une bibliothèque unifiée.
À qui s’adresse-t-il ?
Adoptez unilm si vous avez besoin d'un modèle de documents (LayoutLMv3, LayoutXLM, TrOCR) ou d'un encodeur multilingue précis et que vous acceptez de traiter chaque sous-dossier comme un projet séparé. Évitez-le si vous cherchez une API stable couvrant l'ensemble des modèles ou un pipeline de pré-formation unifié.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Ce que le dépôt contient réellement

Le README de microsoft/unilm ne décrit pas un logiciel unique mais un catalogue. Chaque entrée renvoie vers un sous-dossier du dépôt (unilm, infoxlm, beit, layoutlmv3, trocr, wavlm, valle, kosmos-2, entre autres) ou vers une publication arXiv quand le code n'est pas inclus, comme pour UniSpeech, SpeechT5 ou MiniLLM. Le dépôt se présente donc comme un monorepo de recherche : une page d'accueil qui liste des travaux menés sur plusieurs années, avec des niveaux de finition très variables d'un dossier à l'autre. Le public visé est précis. Il s'agit d'équipes de recherche et d'ingénierie qui veulent partir d'un modèle pré-entraîné publié par Microsoft plutôt que d'en entraîner un depuis zéro, et qui acceptent de lire du code de recherche pour l'utiliser. Le README mentionne aussi des recrutements, ce qui situe le document : c'est une vitrine de laboratoire autant qu'un point d'entrée technique.

Le fil conducteur : pré-entraîner sur plusieurs tâches, langues et modalités

La phrase qui structure tout le dépôt parle d'une convergence à grande échelle entre tâches prédictives et génératives, plus de 100 langues, et des modalités qui vont du texte à l'image, l'audio et la mise en page. Concrètement, cette idée se traduit par des objectifs de pré-entraînement partagés. UniLM unifie la compréhension et la génération en masquant les tokens différemment selon la tâche. InfoXLM et XLM-E visent le multilingue et le cross-lingue. BEiT transpose le schéma de BERT à la vision par un objectif génératif sur des patchs d'image. LayoutLMv3 combine texte, mise en page et image pour les documents scannés. Ce qui relie ces projets est une méthode, pas une base de code : chaque dossier possède ses propres scripts d'entraînement et sa propre configuration. Le lecteur qui cherche un module Python commun sera déçu.

Architecture : TorchScale et les modèles de fondation

Le dépôt distingue deux étages. Le premier est TorchScale, une bibliothèque d'architectures hébergée dans un dépôt séparé, vers laquelle le README renvoie. Elle porte les travaux sur la stabilité et l'efficacité de l'entraînement : DeepNet pour empiler jusqu'à 1 000 couches de Transformer, Magneto pour la généralité entre tâches et modalités, X-MoE pour des mélanges d'experts épars et affinables. Le second étage est celui des modèles eux-mêmes. Là encore, la frontière est floue : RetNet, LongNet et BitNet sont cités avec des liens arXiv, sans sous-dossier de code dans la liste fournie. Autrement dit, une partie de ce que le README met en avant est de la recherche publiée, pas du logiciel installable. C'est une distinction importante au moment de planifier un projet : vérifiez que le modèle qui vous intéresse a bien un dossier dans le dépôt avant de compter dessus.

Documents, OCR et parole : les sous-projets les plus opérationnels

La famille Document AI est la plus fournie. LayoutLM, LayoutLMv2 et LayoutLMv3 traitent le texte, la mise en page et l'image pour des documents scannés ou des PDF. LayoutXLM étend l'approche au multilingue, MarkupLM cible le HTML et le XML, XDoc cherche à unifier plusieurs formats. TrOCR applique un Transformer à la reconnaissance de caractères, et DiT à la pré-formation d'images de documents. Côté parole, WavLM couvre la pré-formation pour des tâches variées, VALL-E propose un modèle de langage à codec neuronal pour la synthèse vocale. Côté multimodal, la lignée Kosmos (Kosmos-1, Kosmos-2, Kosmos-2.5) et BEiT-3 occupent le haut de l'affiche. Cette densité explique pourquoi le dépôt reste consulté : sur les documents et l'OCR, il existe peu d'alternatives ouvertes aussi documentées, même si chaque dossier demande un travail d'adaptation.

Mise en route : ce que disent les instructions

Il n'existe pas de commande d'installation unique pour l'ensemble du dépôt. La pratique attendue est de cloner le dépôt puis d'entrer dans le sous-dossier concerné, par exemple avec git clone https://github.com/microsoft/unilm.git suivi de cd unilm/layoutlmv3. Les dépendances se trouvent alors dans les fichiers de requirements propres à chaque dossier, et l'installation se fait classiquement avec pip install -r requirements.txt depuis ce répertoire. Les scripts d'entraînement et d'évaluation sont lancés en Python, avec des fichiers de configuration ou des arguments de ligne de commande définis localement. Le README principal ne donne ni version de Python, ni version de PyTorch, ni commande de vérification. Ces informations, quand elles existent, sont dans les README secondaires. Prévoyez donc de lire le dossier avant de promettre un délai à votre équipe.

Limites : un catalogue, pas une bibliothèque

La première contrainte est l'absence d'interface commune. Deux sous-projets peuvent dépendre de versions différentes de PyTorch ou de transformers, ce qui rend difficile l'installation de plusieurs modèles dans un même environnement virtuel. La deuxième est l'inégalité de maintenance. Les dernières versions publiées listées sont yoco.v0 en mai 2024 et s2s-ft.v0.3 en avril 2020, ce qui montre un rythme de publication très irrégulier selon les projets. La troisième est la nature même du contenu : plusieurs modèles mis en avant ne sont accessibles que par leur article, sans code dans le dépôt. Enfin, un dépôt de recherche n'offre pas les garanties d'une bibliothèque maintenue, ni compatibilité ascendante, ni calendrier de correctifs. Si votre besoin est un service stable avec support, unilm est le mauvais outil.

Alternatives et différence d'approche

Deux familles d'alternatives se dessinent. La première est celle des bibliothèques qui exposent des modèles pré-entraînés derrière une API homogène, où l'on charge un modèle et un tokenizer avec quelques lignes et où les poids sont téléchargés depuis un registre central. La différence n'est pas la qualité des modèles mais le contrat : ces bibliothèques garantissent une interface stable, unilm garantit l'accès au code d'entraînement et aux détails de reproduction. La seconde famille est celle des dépôts mono-modèle, comme ceux qui accompagnent un article précis. Là, la différence porte sur la maintenance : un dépôt dédié peut être archivé ou repris indépendamment, alors qu'un monorepo mélange des projets à des stades très différents et brouille la lecture de l'activité réelle. Choisir unilm, c'est choisir la proximité avec la recherche plutôt que la commodité d'intégration.

Licence, coûts de maintenance et suite à donner

Le dépôt est publié sous licence MIT, ce qui autorise l'usage commercial, la modification et la redistribution, à condition de conserver la notice de copyright et le texte de la licence. Cette licence couvre le code du dépôt. Elle ne dit rien des poids de modèles, des jeux de données ou des dépendances tierces, qui peuvent avoir leurs propres conditions : c'est le point à vérifier avant toute mise en production, et je ne peux pas trancher à votre place sur ce plan. Le coût de maintenance, lui, se mesure en lecture de code. Chaque sous-projet a ses propres dépendances, ses propres scripts et son propre rythme de mise à jour. La charge ne vient pas de l'installation mais du suivi : une montée de version de PyTorch peut casser un dossier sans que les autres bougent. La première étape concrète consiste donc à ouvrir le README du sous-dossier visé et à vérifier ses requirements avant d'écrire la moindre ligne d'intégration.

Conclusion éditoriale

Adoptez unilm si vous avez besoin d'un modèle de documents (LayoutLMv3, LayoutXLM, TrOCR) ou d'un encodeur multilingue précis et que vous acceptez de traiter chaque sous-dossier comme un projet séparé. Évitez-le si vous cherchez une API stable couvrant l'ensemble des modèles ou un pipeline de pré-formation unifié. Avant de vous engager, vérifiez le README du sous-dossier visé, ses fichiers de requirements et la date de son dernier commit, car le dépôt n'avance pas au même rythme partout.

Sources officielles

  1. License: MIT
  2. microsoft/unilm on GitHub
  3. Project website
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté