diff --git a/python/sglang/multimodal_gen/configs/pipeline_configs/mova.py b/python/sglang/multimodal_gen/configs/pipeline_configs/mova.py index 9e0131dd5..4612a9eef 100644 --- a/python/sglang/multimodal_gen/configs/pipeline_configs/mova.py +++ b/python/sglang/multimodal_gen/configs/pipeline_configs/mova.py @@ -27,7 +27,7 @@ logger = init_logger(__name__) class MOVAPipelineConfig(PipelineConfig): """Configuration for MOVA (text+image -> video+audio) pipelines.""" - task_type: ModelTaskType = ModelTaskType.T2V + task_type: ModelTaskType = ModelTaskType.I2V # Model configs dit_config: MOVAVideoConfig = field(default_factory=MOVAVideoConfig) diff --git a/python/sglang/multimodal_gen/configs/sample/mova.py b/python/sglang/multimodal_gen/configs/sample/mova.py index e27311abb..0dafbd0f5 100644 --- a/python/sglang/multimodal_gen/configs/sample/mova.py +++ b/python/sglang/multimodal_gen/configs/sample/mova.py @@ -19,6 +19,8 @@ class MOVASamplingParams(SamplingParams): visual_shift: float = 5.0 audio_shift: float = 5.0 + adjust_frames: bool = False + negative_prompt: str = ( "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止," "整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指," diff --git a/python/sglang/multimodal_gen/runtime/models/bridges/mova_dual_tower.py b/python/sglang/multimodal_gen/runtime/models/bridges/mova_dual_tower.py index 35a797ede..afc2e0e53 100644 --- a/python/sglang/multimodal_gen/runtime/models/bridges/mova_dual_tower.py +++ b/python/sglang/multimodal_gen/runtime/models/bridges/mova_dual_tower.py @@ -220,7 +220,7 @@ class ConditionalCrossAttention(nn.Module): head_size=self.head_dim, causal=False, softmax_scale=None, - is_cross_attention=True, + # is_cross_attention=True, ) def forward( diff --git a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/mova.py b/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/mova.py index 1329aa925..4b77e5444 100644 --- a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/mova.py +++ b/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/mova.py @@ -349,6 +349,11 @@ class MOVADenoisingStage(PipelineStage): self._manage_device_placement(current_model, model_to_offload, server_args) return current_model + def _ensure_shared_models_on_device(self, server_args: ServerArgs): + """Ensure shared denoising modules are on the active device when cpu offload is enabled.""" + self._manage_device_placement(self.audio_dit, None, server_args) + self._manage_device_placement(self.dual_tower_bridge, None, server_args) + def _apply_guidance_rescale( self, noise_pred, @@ -378,7 +383,7 @@ class MOVADenoisingStage(PipelineStage): @torch.no_grad() def forward(self, batch: Req, server_args: ServerArgs) -> Req: self._maybe_compile_dits(server_args) - self._manage_device_placement(self.audio_dit, None, server_args) + self._ensure_shared_models_on_device(server_args) paired_timesteps = batch.paired_timesteps if paired_timesteps is None: