Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
e24cb66
Support LLaDA-Image generation and editing on SGLang main
Aug 22, 2026
c4c5567
PullRequest: 11 fix(multimodal): use LLaDA-Image deployment defaults
kunchengit Sep 2, 2026
ad5f360
PullRequest: 12 feat(llada-image): support dynamic FP8 DiT and MoE te…
Sep 3, 2026
2b6c6ac
PullRequest: 13 fix(llada-image): align RMSNorm dtype semantics
Sep 3, 2026
390f794
test(llada-image): cover FP8 and RMSNorm integration
Sep 3, 2026
364d6b1
fix(llada-image): harden FP8 checkpoint compatibility
Sep 4, 2026
64188b3
[diffusion] Address LLaDA-Image review feedback
rwang5203 Sep 7, 2026
503fecc
[diffusion] Isolate LLaDA-Image encoder runtime context
rwang5203 Sep 7, 2026
ac3fc03
docs: add LLaDA-Image diffusion cookbook
Sep 7, 2026
1fb2471
[diffusion] Fix LLaDA-Image audit findings and main integration
rwang5203 Sep 8, 2026
6f5241c
Merge main into llada-image-support
rwang5203 Sep 8, 2026
d4dd79c
Merge main and fix diffusion CI portability and coverage
rwang5203 Sep 8, 2026
796e4ab
Merge main into llada-image-support
rwang5203 Sep 9, 2026
7698fdd
Merge main into llada-image-support
rwang5203 Sep 9, 2026
520df6e
Merge main into llada-image-support
rwang5203 Sep 10, 2026
429039d
Merge LLaDA-Image cookbook and resolve conflicts
rwang5203 Sep 11, 2026
b1e2894
Address LLaDA-Image activation metadata and checkpointing feedback
rwang5203 Sep 11, 2026
1938bfe
Merge main into LLaDA-Image support
rwang5203 Sep 12, 2026
0721c72
Merge main into LLaDA-Image support
rwang5203 Sep 14, 2026
fdc3868
[diffusion] Limit LLaDA-Image support to core serving
rwang5203 Sep 15, 2026
31463fd
[diffusion] Trim LLaDA-Image unit tests
rwang5203 Sep 15, 2026
5cc3f71
[diffusion] Remove LLaDA-Image unit tests
rwang5203 Sep 15, 2026
9ec429d
Merge branch 'main' into llada-image-support
mickqian Sep 16, 2026
b9c0b71
Merge main into LLaDA-Image support
rwang5203 Sep 19, 2026
deb5476
Merge branch 'main' into llada-image-support
rwang5203 Sep 19, 2026
80bb193
Fix LLaDA-Image initialization and platform CI fixtures
rwang5203 Sep 20, 2026
e46490f
Merge branch 'main' into llada-image-support
rwang5203 Sep 20, 2026
031aa31
Merge main and resolve LLaDA-Image runtime context conflict
rwang5203 Sep 22, 2026
c99e7e4
Merge branch 'main' into llada-image-support
rwang5203 Sep 22, 2026
b3d01af
test(diffusion): fix platform-specific CI fixtures
rwang5203 Sep 22, 2026
eb36308
Merge branch 'main' into llada-image-support
rwang5203 Sep 22, 2026
5102293
Merge main into llada-image-support
rwang5203 Oct 8, 2026
3f70123
Fix LLaDA-Image defaults, edit size limit, and FP8 loading
rwang5203 Oct 8, 2026
fa9f33d
Validate LLaDA-Image sizes on request and trim the integration
rwang5203 Oct 8, 2026
80aa831
Merge main into llada-image-support
rwang5203 Oct 9, 2026
90fc410
Add H100 perf baselines for the LLaDA-Image CI cases
rwang5203 Oct 9, 2026
6f84556
Merge branch 'main' into llada-image-support
rwang5203 Oct 10, 2026
331abf4
Merge branch 'main' into llada-image-support
rwang5203 Oct 10, 2026
a135f7d
[diffusion] Fix LLaDA-Image encoder startup with mirrored MoE groups
rwang5203 Oct 10, 2026
e3dfbe1
Merge main into llada-image-support
rwang5203 Oct 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from sglang.multimodal_gen.configs.models.dits.lingbot_world import (
LingBotWorldVideoConfig,
)
from sglang.multimodal_gen.configs.models.dits.llada_image import LLaDAImageDitConfig
from sglang.multimodal_gen.configs.models.dits.longlive2 import LongLive2VideoConfig
from sglang.multimodal_gen.configs.models.dits.minimax_h3 import MiniMaxH3DiTConfig
from sglang.multimodal_gen.configs.models.dits.mova_audio import MOVAAudioConfig
Expand All @@ -32,6 +33,7 @@
"Ideogram4DistilledDiTConfig",
"LingBotWorldVideoConfig",
"LingBotVideoMoEConfig",
"LLaDAImageDitConfig",
"LongLive2VideoConfig",
"MiniMaxH3DiTConfig",
"WanVideoConfig",
Expand Down
58 changes: 58 additions & 0 deletions python/sglang/multimodal_gen/configs/models/dits/llada_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# SPDX-License-Identifier: Apache-2.0

from dataclasses import dataclass, field

from sglang.multimodal_gen.configs.models.dits.base import DiTArchConfig, DiTConfig
from sglang.multimodal_gen.runtime.platforms import AttentionBackendEnum


@dataclass
class LLaDAImageArchConfig(DiTArchConfig):
all_patch_size: tuple[int, ...] = (1,)
all_f_patch_size: tuple[int, ...] = (1,)
axes_dims: tuple[int, ...] = (32, 48, 48)
axes_lens: tuple[int, ...] = (32768, 1024, 1024)
cap_feat_dim: int = 2560
dim: int = 3840
in_channels: int = 128
n_heads: int = 30
n_layers: int = 30
n_refiner_layers: int = 2
norm_eps: float = 1e-5
qk_norm: bool = True
rope_theta: float = 256.0
semantic_feat_dim: int = 4096
t_scale: float = 1000.0
_supported_attention_backends: set[AttentionBackendEnum] = field(
default_factory=lambda: {
AttentionBackendEnum.FA,
AttentionBackendEnum.TORCH_SDPA,
}
)
param_names_mapping: dict = field(
default_factory=lambda: {
r"(.*)\.attention\.to_q\.weight$": (r"\1.attention.to_qkv.weight", 0, 3),
r"(.*)\.attention\.to_k\.weight$": (r"\1.attention.to_qkv.weight", 1, 3),
r"(.*)\.attention\.to_v\.weight$": (r"\1.attention.to_qkv.weight", 2, 3),
r"(.*)\.attention\.to_[qkv]\.weight_scale$": (
r"\1.attention.to_qkv.weight_scale"
),
r"(.*)\.feed_forward\.w1\.weight$": (r"\1.feed_forward.w13.weight", 0, 2),
r"(.*)\.feed_forward\.w3\.weight$": (r"\1.feed_forward.w13.weight", 1, 2),
r"(.*)\.feed_forward\.w[13]\.weight_scale$": (
r"\1.feed_forward.w13.weight_scale"
),
}
)

def __post_init__(self) -> None:
super().__post_init__()
self.hidden_size = self.dim
self.num_attention_heads = self.n_heads
self.num_channels_latents = self.in_channels


@dataclass
class LLaDAImageDitConfig(DiTConfig):
arch_config: LLaDAImageArchConfig = field(default_factory=LLaDAImageArchConfig)
prefix: str = "llada_image"
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
LingBotWorldCausalDMDConfig,
LingBotWorldV2CausalDMDConfig,
)
from sglang.multimodal_gen.configs.pipeline_configs.llada_image import (
LLaDAImagePipelineConfig,
)
from sglang.multimodal_gen.configs.pipeline_configs.ltx_2 import (
LTX2PipelineConfig,
LTX23PipelineConfig,
Expand Down Expand Up @@ -76,6 +79,7 @@
"Hunyuan3D2PipelineConfig",
"Ideogram4PipelineConfig",
"Ideogram4DistilledPipelineConfig",
"LLaDAImagePipelineConfig",
"FluxPipelineConfig",
"Flux2PipelineConfig",
"Flux2KleinPipelineConfig",
Expand Down
29 changes: 29 additions & 0 deletions python/sglang/multimodal_gen/configs/pipeline_configs/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,35 @@ def supports_sequential_multi_output_inference(self):
"""Return whether one request's outputs run through DiT/VAE sequentially."""
return False

def validate_num_outputs_per_prompt(
self, num_outputs_per_prompt: int, server_args
) -> None:
"""Validate a request's per-prompt output count for this pipeline."""
del num_outputs_per_prompt, server_args

def supports_memory_release(self) -> bool:
"""Return whether release_memory_occupation can offload this pipeline."""
return True

def supports_hot_weight_updates(self) -> bool:
"""Return whether runtime weight updates cover this pipeline fully."""
return True

def validate_request_sampling_params(self, sampling_params, server_args) -> None:
"""Validate a request's sampling params for this pipeline.

May also run before full request materialization with a lightweight
object that only carries width, height, max_sequence_length,
num_outputs_per_prompt, diffusers_kwargs, enable_cache_dit,
cache_dit_params, attention_backend_override, and cfg_gate_step,
so overrides must not require other sampling fields.
"""
del sampling_params, server_args

def validate_edit_source_count(self, source_count: int, server_args) -> None:
"""Validate the number of source images before they are materialized."""
del source_count, server_args

def estimate_request_cost(self, batch) -> float:
"""Return the relative cost used for batching admission caps.

Expand Down
Loading
Loading