LibreMODUS
LibreMODUS è un'integrazione solo inferenza del checkpoint MODUS 14B-A7B, un modello any-to-any che trasforma un input derivato da un'immagine in un altro: RGB in ingresso, profondità in uscita; profondità in ingresso, normali in uscita; una qualsiasi di queste più una frase, box in uscita. LibreYOLO supporta quattro task attraverso l'API predict standard e un insieme più ampio tramite any2any().
- Task
- detection, depth, normal, edge
- Dimensioni
- Installa
pip install libreyolo- Livello di supporto
- Livello parallelo, dalla v. Un'interfaccia di prodotto separata, con una propria factory e un proprio contratto.
- Origine
- MODUS di EPFL Visual Intelligence and Learning Lab (VILAB), Apache-2.0 (code); research-only per the upstream model card (weights). Articolo, sorgente
- Licenze
- Codice Apache-2.0, pesi Apache-2.0 (code); research-only per the upstream model card (weights). Uso commerciale
Installazione
LibreMODUS richiede un extra dedicato, che porta con sé accelerate per il dispatch dei modelli grandi di cui questo checkpoint ha bisogno.
pip install "libreyolo[modus]"LibreYOLO non ridistribuisce né fa da mirror ai pesi di MODUS. Per impostazione predefinita, il caricamento di un modello LibreMODUS scarica i file necessari direttamente da EPFL-VILAB/MODUS a una revisione Hugging Face fissata, e un download nuovo richiede sempre un account Hugging Face autenticato dell'utente, anche se il gate di hosting upstream è temporaneamente aperto. Leggi e accetta i termini upstream, poi autenticati:
hf auth loginfrom libreyolo import LibreMODUS
model = LibreMODUS(token="hf_...")Per evitare qualsiasi richiesta di rete, punta a uno snapshot che hai già:
model = LibreMODUS(checkpoint_path="/models/MODUS")Quella directory deve contenere model.safetensors, ae.safetensors, llm_config.json, vit_config.json, tokenizer_config.json, vocab.json e merges.txt. Vedi Licenze più sotto per cosa permettono i termini del checkpoint.
Predizione
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 # Senza un vocabolario personalizzato, detect decodifica i token di# etichetta COCO del checkpoint in class id COCO-80 contigui.model.set_task("detect")result = model.predict("street.jpg")print(result.boxes.xyxy)from libreyolo import LibreMODUS model = LibreMODUS(task="detect")# set_classes() porta il rilevamento al phrase grounding: ogni frase# gira in modo indipendente e torna con lo stesso contratto 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() # Da uno a tre input derivati da immagini (rgb, depth, normal, canny/edge),# più un testo ausiliario opzionale, composti verso un solo target.result = model.any2any( inputs={"rgb": "room.jpg"}, target="normal", steps=10, cfg=2.0, seed=0,)normals = result.normal_map.data # Il grounding tramite any2any() richiede un input di testo con la frase.result = model.any2any( {"rgb": "street.jpg", "text": "red bus"}, target="grounding",)print(result.boxes.xyxy)L'API standard dei task copre quattro task, ognuno mappato su un target MODUS: depth sulla profondità relativa (result.depth_map), normal sulle normali alla superficie (result.normal_map), edge sui contorni in stile Canny (result.edges) e detect sui box COCO-80 (result.boxes), a meno che set_classes() non lo porti al phrase grounding. set_task() passa dall'uno all'altro sullo stesso modello già caricato. La ricetta rilasciata usa dieci passi di flow sampling con text guidance 4.0 e image guidance 2.0; puoi sovrascriverli con inference_steps=, inference_cfg= e inference_image_cfg= alla costruzione.
any2any() raggiunge la superficie di analisi pubblica più ampia: da uno a tre input derivati da immagini (rgb, depth, normal, canny/edge), più un testo ausiliario opzionale, composti verso uno qualsiasi tra profondità, normali, contorni, contorni derivati da SAM, rilevamento COCO o phrase grounding. Tutti gli input derivati da immagini devono descrivere lo stesso canvas allineato; LibreMODUS rifiuta larghezze e altezze che non combaciano invece di ridimensionarle in modo indipendente. chain=(...) genera target intermedi e li reimmette nello stesso contesto, entro il budget di tre condizioni con cui il checkpoint è stato addestrato. verify=N (N >= 2) genera N candidati e tiene quello che ottiene il punteggio più alto in un controllo vincolato di auto-consistenza, esposto come result.verification_score.
dtype="bf16" (il valore predefinito) corrisponde alla precisione del checkpoint rilasciato; dtype="fp8" memorizza i pesi lineari idonei del tronco del decoder come E4M3 con una scala per canale di output, converte una volta sola in una cache locale sotto ~/.cache/libreyolo/modus/fp8 e dequantizza al dtype dell'input a ogni moltiplicazione di matrici, quindi baratta memoria invece di barattare accuratezza a livello di attivazioni.
train(), val() ed export() sollevano tutti un'eccezione: LibreMODUS è solo inferenza, la validazione su dataset non è offerta e non esiste alcun percorso di esportazione ONNX, TensorRT o TFLite. Nemmeno la predict() a batch e la test-time augmentation sono supportate; ogni chiamata gestisce una sola immagine.
Licenze
Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.
Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.
- Lavoro originale
- MODUS, EPFL Visual Intelligence and Learning Lab (VILAB)
- Licenza upstream
- Apache-2.0 (code); research-only per the upstream model card (weights)
- Sorgente upstream
- github.com/EPFL-VILAB/Modus
- Codice LibreYOLO
- MIT
- Pesi
- Apache-2.0 (code); research-only per the upstream model card (weights), distribuiti dai rispettivi autori. LibreYOLO non li ospita né ne mantiene una copia.
- Interpretazione
- 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 non ospita né fa da mirror al checkpoint MODUS da nessuna parte, nemmeno sulla propria org Hugging Face: caricarlo tira sempre la revisione fissata direttamente da EPFL-VILAB/MODUS, oppure legge uno snapshot già presente su disco in checkpoint_path.
Citazione
@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},
}Copiato dal blocco di citazione degli autori disponibile su github.com/EPFL-VILAB/Modus#citation.