Cosmos3 edge support by atharvajoshi10 · Pull Request #14181 · huggingface/diffusers · GitHub
Skip to content
628 changes: 0 additions & 628 deletions scripts/convert_cosmos3_to_diffusers.py

This file was deleted.

142 changes: 112 additions & 30 deletions src/diffusers/models/transformers/transformer_cosmos3.py
17 changes: 15 additions & 2 deletions src/diffusers/modular_pipelines/cosmos/before_denoise.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import copy

import numpy as np
import torch

from ...models.transformers.transformer_cosmos3 import Cosmos3OmniTransformer
from ...pipelines.cosmos.pipeline_cosmos3_omni import _EMBODIMENT_TO_DOMAIN_ID, CosmosActionCondition
from ...schedulers import UniPCMultistepScheduler
from ...utils.torch_utils import randn_tensor
from ..modular_pipeline import ModularPipelineBlocks, PipelineState
from ..modular_pipeline_utils import ComponentSpec, InputParam, OutputParam
from ..modular_pipeline_utils import ComponentSpec, ConfigSpec, InputParam, OutputParam
from .modular_pipeline import Cosmos3OmniModularPipeline


Expand Down Expand Up @@ -936,6 +937,10 @@ def description(self) -> str:
def expected_components(self) -> list[ComponentSpec]:
return [ComponentSpec("scheduler", UniPCMultistepScheduler)]

@property
def expected_configs(self) -> list[ConfigSpec]:
return [ConfigSpec(name="use_native_flow_schedule", default=False)]

@property
def inputs(self) -> list[InputParam]:
return [
Expand All @@ -953,7 +958,15 @@ def intermediate_outputs(self) -> list[OutputParam]:
def __call__(self, components: Cosmos3OmniModularPipeline, state: PipelineState) -> PipelineState:
block_state = self.get_block_state(state)
device = components._execution_device
components.scheduler.set_timesteps(block_state.num_inference_steps, device=device)
if components.config.use_native_flow_schedule:
sigmas = np.linspace(
1.0 - 1.0 / components.scheduler.config.num_train_timesteps,
0.0,
block_state.num_inference_steps + 1,
)[:-1]
components.scheduler.set_timesteps(block_state.num_inference_steps, device=device, sigmas=sigmas)
else:
components.scheduler.set_timesteps(block_state.num_inference_steps, device=device)
block_state.timesteps = components.scheduler.timesteps
block_state.num_warmup_steps = (
len(block_state.timesteps) - block_state.num_inference_steps * components.scheduler.order
Expand Down
3 changes: 2 additions & 1 deletion src/diffusers/modular_pipelines/cosmos/denoise.py
Loading
Loading