Instructions to use HopitAI/moda-pro-lite with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- OpenCLIP
How to use HopitAI/moda-pro-lite with OpenCLIP:
import open_clip model, preprocess_train, preprocess_val = open_clip.create_model_and_transforms('hf-hub:HopitAI/moda-pro-lite') tokenizer = open_clip.get_tokenizer('hf-hub:HopitAI/moda-pro-lite') - Notebooks
- Google Colab
- Kaggle
license: apache-2.0
library_name: open_clip
pipeline_tag: zero-shot-image-classification
tags:
- fashion
- retrieval
- text-to-image
- siglip2
- e-commerce
- moda
datasets:
- Marqo/marqo-GS-10M
base_model: timm/ViT-B-16-SigLIP2-384
model-index:
- name: MODA Pro Lite
results:
- task:
type: text-to-image-retrieval
name: Text-to-Image Retrieval
dataset:
type: kaggle-fashion
name: KAGL (full corpus
44K): null
metrics:
- type: map@10
value: 0.31851
name: MAP@10
- task:
type: text-to-image-retrieval
name: Text-to-Image Retrieval
dataset:
type: polyvore
name: Polyvore (full corpus
94K): null
metrics:
- type: map@10
value: 0.3997
name: MAP@10
- task:
type: text-to-image-retrieval
name: Text-to-Image Retrieval
dataset:
type: atlas
name: Atlas (full corpus
78K): null
metrics:
- type: map@10
value: 0.19451
name: MAP@10
- task:
type: text-to-image-retrieval
name: Text-to-Image Retrieval
dataset:
type: fashion200k
name: Fashion200K (full corpus
202K): null
metrics:
- type: map@10
value: 0.18023
name: MAP@10
MODA Pro Lite
A 213M open-weights fashion encoder that beats MODA β the strongest open fashion retrieval system β on catalog search, at full corpus and with statistical significance, from one checkpoint with no serving machinery.
By Hopit AI. Weights are open (Apache-2.0); the training and data pipeline are proprietary.
| vs MODA, full corpus | MODA Pro Lite | gain |
|---|---|---|
| KAGL (44K products) | 0.3185 vs 0.2890 | +10.2% |
| Polyvore (94K) | 0.3997 vs 0.3726 | +7.3% |
| ZooClaw-Fashion short | 0.4994 vs 0.4775 | +4.6% |
The KAGL and Polyvore gains are significant under a paired bootstrap (10,000 resamples, 95% CI excludes zero); on Atlas the difference is positive but inconclusive, and on Fashion200K and In-Shop MODA is significantly better β see the full table. Every number in this card is a full-corpus measurement (no subsampled galleries) through one shared harness, alongside FashionSigLIP, SigLIP-SO400M, and ZooClaw under identical protocol. Full six-system table: benchmark page.
The MODA family
| model | what it is | availability |
|---|---|---|
| MODA | frozen FashionSigLIP + zero-parameter multi-view serving recipe | open source + open weights |
| MODA Pro Lite (this model) | trained 213M encoder β the drop-in single-checkpoint option | open weights |
| MODA Pro | our hosted retrieval system. Rank 1 or 2 on 9 of 10 benchmark cells; +6.9% mean over MODA on the six academic sets | closed Β· hosted by Hopit AI |
Which to pick: already running MODA's recipe β keep MODA (it still leads on caption-style benchmarks). Want one checkpoint, standard CLIP usage, strongest catalog/title search β Pro Lite. Want the strongest overall β MODA Pro (hosted).
Usage
import torch, open_clip
from PIL import Image
model, _, preprocess = open_clip.create_model_and_transforms("hf-hub:HopitAI/moda-pro-lite")
tokenizer = open_clip.get_tokenizer("hf-hub:HopitAI/moda-pro-lite")
model.eval()
image = preprocess(Image.open("product.jpg")).unsqueeze(0)
text = tokenizer(["red floral maxi dress", "slim-fit denim jacket"])
with torch.no_grad(), torch.autocast("cuda"):
img_emb = model.encode_image(image)
txt_emb = model.encode_text(text)
img_emb /= img_emb.norm(dim=-1, keepdim=True)
txt_emb /= txt_emb.norm(dim=-1, keepdim=True)
scores = txt_emb @ img_emb.T
Plain bi-encoder: one 768-d vector per image, one per query, cosine similarity. Works with any vector database; no reranker, no prompt template required.
What's inside (summary)
- Base: SigLIP2-base-384 (
timm/ViT-B-16-SigLIP2-384), full fine-tune of both towers. - Size β 213,159,938 params: the base's 256K-token multilingual vocabulary is trimmed to the 44,646 pieces fashion text actually uses (BPE merge-closure preserved). Verified: 100.00% bit-identical outputs on 12,000 benchmark queries and 6,000 held-out fashion texts vs the untrimmed 375M model β every benchmark number in this card transfers exactly. Out-of-vocabulary input (emoji, non-Latin scripts, rare typos) re-segments gracefully into kept pieces (cosine 0.82β0.97 to full model), never a silent failure.
- Data: 93K commercial product images (from Marqo-GS-10M, Apache-2.0), re-annotated by a frontier VLM with graded relevance labels (99.9% coverage).
- Training: a proprietary fine-tuning recipe; the pipeline and annotated dataset are not released.
- Distinctive property: unlike typical fashion fine-tunes, Pro Lite does not collapse out of domain β it adds fashion skill while keeping generalist behavior (image-tower drift from base: 0.36%).
Evaluation protocol
Measured on six academic fashion benchmarks (DeepFashion In-Shop, DeepFashion Multimodal, Fashion200K, Polyvore, Atlas, KAGL) at full corpus β no gallery subsampling β plus H&M (10K, MRR) and ZooClaw-Fashion (12K, MAP@10), all through one open harness with identical preprocessing per model. Where Pro Lite loses (instance retrieval, caption-style sets), the card for MODA shows the stronger pick β see the full comparison rather than a cherry-picked subset.
Using this in production
MODA Pro Lite is free to use under Apache-2.0. If you want the hosted MODA Pro, help evaluating on your own catalog, or a pilot, book a call β we bring specific examples from your category and a proposed pilot shape.
Citation
@misc{modaprolite2026,
title = {MODA Pro Lite: a fashion encoder that does not collapse out of domain},
author = {Hopit AI},
year = {2026},
url = {https://huggingface.co/HopitAI/moda-pro-lite}
}