4.3 KiB
MammothModa2-Preview
MammothModa2-Preview text-to-image generation through the shared offline image example
Summary
- Vendor: ByteDance Research
- Model:
bytedance-research/MammothModa2-Preview - Task: Text-to-image generation (AR → DiT two-stage pipeline)
- Mode: Offline inference
- Maintainer: Community
When to use this recipe
Use this recipe to run MammothModa2-Preview text-to-image through the shared
offline image example (text_to_image.py) instead of a model-specific script.
The generic example formats the AR prompt, drives the AR → DiT stage pipeline,
and forwards MammothModa2-specific generation parameters through the
pipeline-declared extra_body contract.
MammothModa2's DiT stage consumes its inputs through the multi-stage kwargs
interface (not OmniDiffusionRequest), so its generation knobs
(text_guidance_scale, cfg_range, num_inference_steps) are passed via
--extra-body rather than the standard --num-inference-steps / --cfg-scale
flags. Image size uses the standard --height / --width flags.
References
- Upstream model:
bytedance-research/MammothModa2-Preview - Related offline example:
examples/offline_inference/text_to_image/text_to_image.py - Declared parameters:
vllm_omni/model_extras/mammothmodal2_preview.py - Deploy config:
vllm_omni/deploy/mammoth_moda2.yaml
Hardware Support
The default deploy config runs both the AR and DiT stages on a single GPU
(devices: "0"). The committed gpu_memory_utilization split (stage-0 AR 0.5,
stage-1 DiT 0.3) is sized for an ~80 GB GPU. The model also fits on a 48 GB GPU
after rebalancing the split so the AR weights (~23 GB) leave room for the KV
cache — see the note under 1x L40S 48GB.
GPU
1x L40S 48GB
48 GB config adjustment: the committed
vllm_omni/deploy/mammoth_moda2.yamlusesgpu_memory_utilization0.5 / 0.3 (sized for ~80 GB). To fit on a 48 GB L40S, set the stage-0 (AR) value to0.8and the stage-1 (DiT) value to0.16before running. (On an ~80 GB GPU, leave the defaults unchanged.)
Environment
- OS: Linux
- Python: Match the repository requirements for your checkout
- Driver / runtime: NVIDIA CUDA environment with one L40S 48 GB (verified) or an ~80 GB GPU for the default config
- vLLM version: Match the repository requirements for your checkout
- vLLM-Omni version or commit: Use the commit you are deploying from
Offline Commands
Download the model:
hf download bytedance-research/MammothModa2-Preview --local-dir ./MammothModa2-Preview
Run text-to-image with the shared offline example from the repository root. The
deploy config sets trust_remote_code, so no extra flag is needed. Forward the
MammothModa2 generation parameters as a JSON object through --extra-body:
python examples/offline_inference/text_to_image/text_to_image.py \
--model ./MammothModa2-Preview \
--stage-configs-path vllm_omni/deploy/mammoth_moda2.yaml \
--prompt "A stylish woman riding a motorcycle in NYC, movie poster style" \
--height 1024 \
--width 1024 \
--extra-body '{"text_guidance_scale": 4.0, "cfg_range": [0.0, 1.0], "num_inference_steps": 50}' \
--output mammoth_t2i.png
The --extra-body JSON forwards MammothModa2-specific parameters into
OmniDiffusionSamplingParams.extra_args. Keys are filtered against the model's
declared extra_body_params (see
vllm_omni/model_extras/mammothmodal2_preview.py),
so unknown keys for MammothModa2 are silently dropped:
text_guidance_scale— classifier-free guidance scale for the DiT stage (default9.0; CFG is active only when> 1.0).cfg_range— relative step range[start, end]over which CFG is applied (default[0.0, 1.0]).num_inference_steps— number of DiT denoising steps (default50).
--height and --width must be multiples of 16.
Verification
The example writes the generated image to the --output path. Confirm the file
exists and is a valid image:
ls -lh mammoth_t2i.png
python -c "from PIL import Image; print(Image.open('mammoth_t2i.png').size)"