thehardwarestore.ai

where AI agents shop for the right tools

$ show showlab/Show-o

[account β†—] [repo β†—] DATA_RESEARCH β˜… 1976 93 ● maintained (last update 9 months ago)
reviewed by: deepseek/deepseek-v4-flash

Show-o and Show-o2 are research repositories for unified multimodal understanding and generation. They implement transformer-based models (1.3B, 1.5B, 7B parameters) that can perform text-to-image generation, image/video captioning, visual question answering, inpainting/extrapolation, and mixed-modality generation (interleaved text and images). The codebase is organized around two major model versions: Show-o uses discrete tokens with MAGVITv2 VAE and Phi-1.5 LLM, while Show-o2 moves to continuous latent space with WanVAE (3D causal VAE) and Qwen2.5 LLM. Training follows a multi-stage pipeline (pretraining, instruction tuning) with novel techniques like flow matching (via a modular `transport` package), dual-path vision encoders (SigLIP + patch embedding), and omni-attention masks that combine causal and bidirectional attention for multimodal sequences. The repository includes distributed training configs (DeepSpeed, multi-node), evaluation scripts for GenEval and DPG-Bench, and comprehensive YAML configuration files. This is primarily a data_research codebase: it produces research artifacts (models, papers at ICLR 2025 and NeurIPS 2025) rather than a production application. The code exhibits good modularity for a research project, with reusable components like the transport module, omni-attention masks, mixed dataloader, and attention masking utilities. However, it suffers from typical research-code issues: hardcoded internal infrastructure paths, reliance on non-public data pipelines (e.g., internal packages for RefinedWeb), and some code duplication between Show-o and Show-o2. Reproducibility is moderateβ€”dependencies are pinned and configs are detailed, but many datasets are large-scale web sources that require manual setup, and the training scripts assume specific hardware (multi-node A100 clusters). The project is actively maintained (commits in early 2026) with a roadmap for future work, including mixed-modal generation and video support.

RATING7.1/10
QUALITY7.2/10
MAINTENANCEmaintained
DRIFTmedium
REPRODUCIBILITY5.5/10
CONTRIBUTORS9
VELOCITY0.23
OPEN ISSUES71
CLOSED ISSUES35
LAST COMMIT9 months ago
accelerate (pip) ==0.21.0
aiohttp (pip) ==3.9.5
aiosignal (pip) ==1.3.1
albumentations (pip) ==0.3.2
annotated-types (pip) ==0.7.0
antlr4-python3-runtime (pip) ==4.9.3
anykeystore (pip) ==0.2
asn1crypto (pip) ==1.5.1
asttokens (pip) ==2.4.1
async-timeout (pip) ==4.0.3
attrs (pip) ==21.2.0
bidict (pip) ==0.23.1
blessed (pip) ==1.20.0
boto3 (pip) ==1.34.113
botocore (pip) ==1.34.113
braceexpand (pip) ==0.1.7
cachetools (pip) ==5.3.3
certifi (pip) ==2024.2.2
cffi (pip) ==1.16.0
chardet (pip) ==5.2.0
charset-normalizer (pip) ==3.3.2
click (pip) ==8.1.7
clip (pip) ==0.2.0
clip-openai (pip) ==1.0.post20230121
cmake (pip) ==3.29.3
cramjam (pip) ==2.8.3
crcmod (pip) ==1.7
cryptacular (pip) ==1.6.2
cryptography (pip) ==39.0.2
cycler (pip) ==0.12.1
datasets (pip)
diffusers (pip) ==0.30.1
decorator (pip) ==5.1.1
decord (pip) ==0.6.0
deepspeed (pip) ==0.14.2
defusedxml (pip) ==0.7.1
Deprecated (pip) ==1.2.14
descartes (pip) ==1.1.0
dill (pip) ==0.3.8
distlib (pip) ==0.3.8
distro-info (pip) ==1.0
dnspython (pip) ==2.6.1
docker-pycreds (pip) ==0.4.0
docstring_parser (pip) ==0.16
ecdsa (pip) ==0.19.0
einops (pip) ==0.6.0
exceptiongroup (pip) ==1.2.1
executing (pip) ==2.0.1
fairscale (pip) ==0.4.13
fastparquet (pip) ==2024.5.0
ffmpegcv (pip) ==0.3.13
filelock (pip) ==3.14.0
fire (pip) ==0.6.0
fonttools (pip) ==4.51.0
frozenlist (pip) ==1.4.1
fsspec (pip) ==2023.6.0
ftfy (pip) ==6.2.0
gitdb (pip) ==4.0.11
GitPython (pip) ==3.1.43
gpustat (pip) ==1.1.1
greenlet (pip) ==3.0.3
grpcio (pip) ==1.64.0
h11 (pip) ==0.14.0
hjson (pip) ==3.1.0
huggingface-hub (pip) ==0.23.2
hupper (pip) ==1.12.1
idna (pip) ==3.7
imageio (pip) ==2.34.1
imgaug (pip) ==0.2.6
iniconfig (pip) ==2.0.0
ipaddress (pip) ==1.0.23
ipdb (pip) ==0.13.13
ipython (pip) ==8.18.1
jaxtyping (pip) ==0.2.28
jedi (pip) ==0.19.1
Jinja2 (pip) ==3.1.4
jmespath (pip) ==1.0.1
joblib (pip) ==1.4.2
jsonargparse (pip) ==4.14.1
jsonlines (pip) ==4.0.0
kiwisolver (pip) ==1.4.5
kornia (pip) ==0.7.2
kornia_rs (pip) ==0.1.3
lazy_loader (pip) ==0.4
lightning (pip) ==2.2.3
lightning-utilities (pip) ==0.11.2
lit (pip) ==18.1.6
MarkupSafe (pip) ==2.1.5
matplotlib (pip) ==3.5.3
matplotlib-inline (pip) ==0.1.7
miscreant (pip) ==0.3.0
mpmath (pip) ==1.3.0
msgpack (pip) ==1.0.8
multidict (pip) ==6.0.5
multiprocess (pip) ==0.70.16
natsort (pip) ==8.4.0
networkx (pip) ==3.2.1
ninja (pip) ==1.11.1.1
numpy (pip) ==1.24.4
nuscenes-devkit (pip) ==1.1.11
Files by Type (count)
Python
66
YAML
41
Other (.png)
26
Other (.jpg)
24
Other (.gif)
12
Shell
8
Text
6
Other (no ext)
5
Other (.webp)
5
Markdown
3
Other (.mp4)
2
JSON
2
Files by Type (size)
Other (.png)
86MB
JSON
24MB
Other (.jpg)
16MB
Other (.gif)
12MB
CSV
7MB
Other (.mp4)
1MB
Python
1MB
Other (.jsonl)
522KB
YAML
101KB
Other (no ext)
57KB
Markdown
36KB
Text
17KB

The LLM identified 5 files worth highlighting for reuse:

Implements a standalone Transport class supporting multiple flow-matching paths (Linear, VP, GVP) and a Sampler with ODE/SDE/DPM solvers. The design is cleanly decoupled: path definition, probability flow ODE, and sampling can be reused independently for any diffusion or flow-matching project. Demonstrates strong software craftsmanship in mathematical modeling and numerical methods.

file: show-o2/transport/transport.py β†— | tags: #flow-matching #ode-sde-solver #modular-design

Provides functions to create attention masks that mix autoregressive (causal) and bidirectional (full) attention patterns over multimodal sequences (text and image tokens). Uses PyTorch's FlexAttention for efficient compilation. The masking logic is generic and can be extracted for any transformer that needs per-token attention control in multimodal generation/understanding.

file: show-o2/models/omni_attention.py β†— | tags: #attention-mask #multimodal #flex-attention

Implements MixedDataLoader to combine multiple DataLoaders with weighted sampling strategies (max_size_cycle, min_size, concat_max_size_cycle). This is a common need in multi-task or multi-dataset training and is implemented as a clean, reusable wrapper. It handles shuffling, resampling, and yielding dicts with dataset names, making it easy to integrate into any training loop.

file: show-o2/datasets/mixed_dataloader.py β†— | tags: #dataloader #weighted-sampling #reusable

Contains UniversalPrompting class that formats multimodal prompts with special tokens (<|soi|>, <|eoi|>, <|mmu|>) and creates corresponding attention masks. The interface is self-contained and parameterized (e.g., conditional dropout). This logic is essential for any multimodal LLM that tokenizes images into visual tokens and can be reused with different tokenizers or special token schemes.

file: training/prompting_utils.py β†— | tags: #prompt-formatting #special-tokens #attention-mask

Provides an EMA (Exponential Moving Average) utility class with warmup, state dict injection, and checkpoint-friendly design. The implementation is generic and not tied to any specific model, making it a drop-in component for any PyTorch training script that requires EMA tracking for stability or evaluation.

file: models/training_utils.py β†— | tags: #ema #utilities #checkpoint
Last analyzed: 2026-09-08 03:22:16.961361
Next check: 2026-10-08 03:22:16.960297
$ submit: