Model reference · open weights
LLaDA2.0-Uni is an open-weight language model from inclusionAI. LLaDA2.0-Uni-FP8 (FP8) weighs 17.4 GB; the smallest configuration that runs it is 2× RTX 3060 12 GB.
Summary of the inclusionAI/LLaDA2.0-Uni model card, 2026-10-01. The estimate below is for another build of the family.
What it is
| Released by | inclusionAI |
|---|---|
| Released | 2026-04-22 |
| Parameters | 16.3B |
| VRAM | 17.4 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 8K each | |||
| RTX 3060 12 GB … RTX 4060 Ti 16 GB 2 smaller cards | — | — | |
| RTX 3090 24 GB FP8 without its speed-up here | 14 | all 8K | 23.4 GB |
| RTX 4090 24 GB | 14 | all 8K | 23.4 GB |
| RTX 5090 32 GB | 37 | all 8K | 31.0 GB |
| L40S 48 GB | 75 | all 8K | 44.0 GB |
| A100 80 GB FP8 without its speed-up here | 178 | all 8K | 78.2 GB |
| H100 80 GB | 161 | all 8K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 207 | all 8K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 248 | all 8K | 107 GB |
| H200 141 GB | 339 | all 8K | 138 GB |
| B200 180 GB | 447 | all 8K | 176 GB |
| 2× RTX 3060 12 GB tensor parallel · FP8 without its speed-up here | 10 | all 8K | 11.6 GB a card |
| 2× RTX 4060 Ti 16 GB tensor parallel | 33 | all 8K | 15.4 GB a card |
| Requests at once | 8K tokens each |
|---|---|
| 1 | 18.8 GB |
| 5 | 20.1 GB |
| 8 | 21.1 GB |
| 16 | 23.8 GB |
| 32 | 29.2 GB |
| 64 | 39.9 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| LLaDA2.0-Uni ↗ | 16.3B | BF16 | 32.6 GB | L40S 48 GB |
| LLaDA2.0-Uni-FP8 (above) ↗ | 16.3B | FP8 | 17.4 GB | 2× RTX 3060 12 GB |
From the model card
[📑 Technical Report ] [🌐 Github ] [🤗 FP8 Version ]
LLaDA2.0-Uni is a unified diffusion Large Language Model (dLLM) based on Mixture-of-Experts (MoE) that seamlessly integrates multimodal understanding and generation within a single model. It supports:
Note: Full installation instructions and CLI scripts are available in the GitHub repository.
git clone https://github.com/inclusionAI/LLaDA2.0-Uni && cd LLaDA2.0-Uni
conda create -n llada2_uni python=3.10 -y
conda activate llada2_uni
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
pip install flash-attn --no-build-isolation
pip install -r requirements.txt
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from decoder import decode_vq_tokens
model_path = "inclusionAI/LLaDA2.0-Uni"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path, device_map="cuda", torch_dtype="bfloat16", trust_remote_code=True
).eval()
model.tokenizer = tokenizer
# Generate image tokens
result = model.generate_image(
"A modern Scandinavian kitchen with white cabinetry, marble countertops, and a single orchid on the island. A Nordic woman with sleek blonde ponytail, wearing an oversized sweater and dainty silver necklaces, stirs a matcha bowl with a bamboo whisk, eyes sparkling with quiet joy. Shot with 50mm, f/2.5, diffused window light, cool white balance, low saturation, clean skin retouch. Mood: serene, wholesome, hygge.",
image_h=1024, image_w=1024,
steps=8, cfg_scale=2.0,
)
# Decode to PIL image (default: 50-step ODE)
image = decode_vq_tokens(result["token_ids"], result["h"], result["w"], model_path, "cuda")
image.save("output.png")
[!Note] 💡 Faster decoding — Use the decoder-turbo (distilled decoder) for ~10× faster image decoding (8 steps instead of 50) with minimal quality loss:
image = decode_vq_tokens( result["token_ids"], result["h"], result["w"], model_path, "cuda", num_steps=8, decode_mode="decoder-turbo", )
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from decoder import decode_vq_tokens
model_path = "inclusionAI/LLaDA2.0-Uni"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path, device_map="cuda", torch_dtype="bfloat16", trust_remote_code=True
).eval()
model.tokenizer = tokenizer
# Generate image tokens with thinking process
result = model.generate_image(
"A fox with thick, dense, fluffy fur in a winter setting, possibly surrounded by snow.",
image_h=1024, image_w=1024,
mode="thinking",
steps=8, cfg_scale=2.0,
thinking_steps=32, thinking_gen_length=4096,
)
# Print thinking trace
print("Thinking:", result["thinking"])
# Decode to PIL image
image = decode_vq_tokens(result["token_ids"], result["h"], result["w"], model_path, "cuda", num_steps=8, decode_mode="decoder-turbo",)
image.save("output_thinking.png")
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from encoder.image_tokenizer import ImageTokenizer
from decoder.smart_img_process import smart_resize_images
model_path = "inclusionAI/LLaDA2.0-Uni"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path, device_map="cuda", torch_dtype="bfloat16", trust_remote_code=True
).eval()
model.tokenizer = tokenizer
# Encode image to discrete tokens
image_tokenizer = ImageTokenizer(model_path=model_path, device="cuda")
pil_image = smart_resize_images(["./assets/understanding_example.png"])[0]
info = image_tokenizer.encode_with_info(pil_image)
image_tokens = [x + model.config.image_token_offset for x in info["token_ids"]]
_, h, w = info["grid_thw"]
# Understand the image
response = model.understand_image(
image_tokens, h, w,
question="Describe this image in detail.",
steps=32, gen_length=2048,
)
print(response)
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from encoder.image_tokenizer import ImageTokenizer
from decoder.utils import generate_crop_size_list, var_center_crop
from decoder import decode_vq_tokens
from PIL import Image
modQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.