LibreMODUS
LibreMODUS est une intégration en inférence seule du checkpoint MODUS 14B-A7B, un modèle any-to-any qui transforme une entrée dérivée d'une image en une autre : RGB en entrée, profondeur en sortie ; profondeur en entrée, normales en sortie ; l'un de ces éléments plus une expression, des boîtes en sortie. LibreYOLO prend en charge quatre tâches via l'API predict standard, et un ensemble plus large via any2any().
- Tâches
- detection, depth, normal, edge
- Tailles
- Installer
pip install libreyolo- Niveau de support
- Niveau parallèle, depuis v. Une interface produit distincte avec sa propre factory et son propre contrat.
- Origine
- MODUS par EPFL Visual Intelligence and Learning Lab (VILAB), Apache-2.0 (code); research-only per the upstream model card (weights). Article, source
- Licences
- Code Apache-2.0, poids Apache-2.0 (code); research-only per the upstream model card (weights). Usage commercial
Installer
LibreMODUS a besoin de son propre extra, qui installe accelerate pour le dispatch de grands modèles que ce checkpoint exige.
pip install "libreyolo[modus]"LibreYOLO ne redistribue pas les poids MODUS et n'en met aucun miroir à disposition. Par défaut, le chargement d'un modèle LibreMODUS télécharge les fichiers nécessaires directement depuis EPFL-VILAB/MODUS, à une révision Hugging Face épinglée, et un nouveau téléchargement passe toujours par le compte Hugging Face authentifié de l'utilisateur, même si la barrière d'accès en amont est temporairement ouverte. Examinez et acceptez les conditions en amont, puis authentifiez-vous :
hf auth loginfrom libreyolo import LibreMODUS
model = LibreMODUS(token="hf_...")Pour éviter toute requête réseau, pointez vers un snapshot que vous possédez déjà :
model = LibreMODUS(checkpoint_path="/models/MODUS")Ce répertoire doit contenir model.safetensors, ae.safetensors, llm_config.json, vit_config.json, tokenizer_config.json, vocab.json et merges.txt. Voir la section Licence ci-dessous pour ce que les conditions du checkpoint autorisent.
Prédire
from libreyolo import LibreMODUS model = LibreMODUS(size="14b-a7b", task="normal")result = model.predict("room.jpg")normals = result.normal_map.data model.set_task("edge")result = model.predict("room.jpg")edges = result.edges.data # Sans vocabulaire personnalisé, detect décode les tokens de label# COCO du checkpoint en ids de classes COCO-80 contigus.model.set_task("detect")result = model.predict("street.jpg")print(result.boxes.xyxy)from libreyolo import LibreMODUS model = LibreMODUS(task="detect")# set_classes() bascule la détection en grounding textuel : chaque# expression tourne seule et revient par le même contrat Boxes.model.set_classes(["red bus", "cyclist"])result = model.predict("street.jpg", conf=0.2)print(result.boxes.xyxy, result.boxes.cls)from libreyolo import LibreMODUS model = LibreMODUS() # Une à trois entrées dérivées d'une image (rgb, depth, normal,# canny/edge), plus un texte auxiliaire optionnel, vers une cible.result = model.any2any( inputs={"rgb": "room.jpg"}, target="normal", steps=10, cfg=2.0, seed=0,)normals = result.normal_map.data # Le grounding via any2any() exige une entrée text nommant l'expression.result = model.any2any( {"rgb": "street.jpg", "text": "red bus"}, target="grounding",)print(result.boxes.xyxy)L'API de tâches standard couvre quatre tâches, chacune associée à une cible MODUS : depth à la profondeur relative (result.depth_map), normal aux normales de surface (result.normal_map), edge aux contours de type Canny (result.edges), et detect aux boîtes COCO-80 (result.boxes) sauf si set_classes() la bascule en grounding textuel. set_task() passe de l'une à l'autre sur le même modèle chargé. La recette publiée utilise dix étapes d'échantillonnage de flux, avec une guidance texte de 4.0 et une guidance image de 2.0 ; remplacez-les avec inference_steps=, inference_cfg= et inference_image_cfg= à la construction.
any2any() donne accès à la surface d'analyse publique plus large : une à trois entrées dérivées d'une image (rgb, depth, normal, canny/edge), plus un texte auxiliaire optionnel, composées vers l'une quelconque de ces cibles : profondeur, normales, contours, contours dérivés de SAM, détection COCO ou grounding textuel. Toutes les entrées dérivées d'une image doivent décrire le même canevas aligné ; LibreMODUS rejette les largeurs et les hauteurs discordantes au lieu de les redimensionner indépendamment. chain=(...) génère des cibles intermédiaires et les réinjecte dans le même contexte, dans la limite du budget d'entraînement à trois conditions du checkpoint. verify=N (N >= 2) génère N candidats et garde celui qui obtient le meilleur score à un contrôle de cohérence interne contraint, exposé par result.verification_score.
dtype="bf16" (la valeur par défaut) correspond à la précision du checkpoint publié ; dtype="fp8" stocke les poids linéaires éligibles du tronc décodeur en E4M3 avec une échelle par canal de sortie, effectue une conversion unique vers un cache local sous ~/.cache/libreyolo/modus/fp8, et déquantifie vers le dtype d'entrée à chaque multiplication matricielle : il joue donc sur la mémoire, pas sur l'exactitude au niveau des activations.
train(), val() et export() lèvent toutes une exception : LibreMODUS fonctionne en inférence seule, la validation sur dataset n'est pas proposée, et il n'existe aucun chemin d'export ONNX, TensorRT ou TFLite. Le predict() par batch et l'augmentation au moment du test ne sont pas non plus pris en charge ; chaque appel traite une seule image.
Licence
Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.
Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.
- Travail d'origine
- MODUS, EPFL Visual Intelligence and Learning Lab (VILAB)
- Licence du projet d'origine
- Apache-2.0 (code); research-only per the upstream model card (weights)
- Source du projet d'origine
- github.com/EPFL-VILAB/Modus
- Code de LibreYOLO
- MIT
- Poids
- Apache-2.0 (code); research-only per the upstream model card (weights), distribués par leurs auteurs. LibreYOLO ne les héberge pas et n'en fournit pas de miroir.
- Interprétation
- Apache-2.0 covers the EPFL-VILAB/Modus source repository that LibreYOLO's adapter follows; LibreYOLO's own port is MIT, permissive and usable in commercial and closed-source products, requiring only that license text and attribution travel with any copy you redistribute. The MODUS-14B-A7B checkpoint is a separate artifact under a separate license: its Hugging Face model card currently declares license: other, describes it as bagel-derived, and requests research-only use, terms that bind you directly rather than through LibreYOLO. LibreYOLO does not bundle, mirror, or redistribute this checkpoint in any form, quantized or otherwise; loading it always downloads the required files directly from EPFL-VILAB/MODUS at a pinned revision, which needs the user's own authenticated Hugging Face account and acceptance of the current upstream terms, or a checkpoint_path to a snapshot the user already obtained. One upstream file, modeling/bagel/modeling_utils.py, carries an incompatible CC BY-NC 4.0 license inherited from Meta's DiT and is not copied, adapted, or paraphrased anywhere in this port; the small permissive routines LibreYOLO needed were re-derived independently from Hugging Face Transformers (Apache-2.0) and OpenAI's guided-diffusion (MIT) instead. Training is not offered for this family.
LibreYOLO n'héberge ni ne met en miroir le checkpoint MODUS où que ce soit, y compris sur sa propre organisation Hugging Face : son chargement récupère toujours la révision épinglée directement depuis EPFL-VILAB/MODUS, ou lit un snapshot déjà présent sur le disque à checkpoint_path.
Citation
@article{ye2026modus,
title = {MODUS: Decoder-only Any-to-Any Modeling of Diverse Modalities},
author = {Ye, Mingqiao and An, Zhaochong and Gao, Zhitong and Liu, Xian
and Fleuret, Fran\c{c}ois and Li, Chuan and Zadeh, Amir
and Belongie, Serge and Dehghan, Afshin and Allardice, Jesse
and Mizrahi, David and Kar, O\u{g}uzhan Fatih and Bachmann, Roman
and Zamir, Amir},
journal = {arXiv preprint arXiv:2607.25948},
year = {2026},
}Copié depuis le bloc de citation des auteurs sur github.com/EPFL-VILAB/Modus#citation.