matrixgame3_i2v_pipeline
Matrix-Game 3.0 I2V pipeline implementation.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs
FastVideoArgs(model_path: str, mode: ExecutionMode = ExecutionMode.INFERENCE, workload_type: WorkloadType = WorkloadType.T2V, distributed_executor_backend: str = 'mp', enable_streaming_ipc_queues: bool = False, ray_placement_group: PlacementGroup | None = None, ray_runtime_env: RuntimeEnv | None = None, inference_mode: bool = True, trust_remote_code: bool = False, revision: str | None = None, num_gpus: int = 1, tp_size: int = -1, sp_size: int = -1, hsdp_replicate_dim: int = 1, hsdp_shard_dim: int = -1, dist_timeout: int | None = None, pipeline_config: PipelineConfig = PipelineConfig(), preprocess_config: PreprocessConfig | None = None, lora_path: str | None = None, lora_nickname: str = 'default', lora_strength: float = 1.0, lora_target_modules: list[str] | None = None, output_type: str = 'pil', attention_backend: str | None = None, dit_cpu_offload: bool = True, use_fsdp_inference: bool = False, dit_layerwise_offload: bool = True, text_encoder_cpu_offload: bool = True, image_encoder_cpu_offload: bool = True, vae_cpu_offload: bool = True, pin_cpu_memory: bool = True, h3_sequential_load: bool | None = None, h3_encoder_split: bool | None = None, h3_encoder_nodes: int = -1, h3_encoder_workers: int = 0, video_decode_backend: str = 'h3-vae', taeh3_checkpoint: str | None = None, taeh3_chunk_size: int = 5, h3_vae_nvfp4_decoder: str | None = None, lazy_module_load: bool | None = None, vae_parallel_decode: bool = False, vae_parallel_encode: bool = False, vae_parallel_decode_strategy: str | None = None, enable_torch_compile: bool = False, regional_compile: bool = False, enable_torch_compile_text_encoder: bool = False, enable_torch_compile_vae: bool = False, enable_torch_compile_audio_vae: bool = False, torch_compile_kwargs: dict[str, Any] = dict(), torch_compile_kwargs_dit: dict[str, Any] = dict(), torch_compile_kwargs_text_encoder: dict[str, Any] = dict(), torch_compile_kwargs_vae: dict[str, Any] = dict(), torch_compile_kwargs_audio_vae: dict[str, Any] = dict(), inference_torch_compile: bool = False, h3_vsa_fp4: dict[str, Any] = dict(), disable_autocast: bool = False, VSA_sparsity: float | None = None, VSA_tile_size: int | None = None, moba_config_path: str | None = None, moba_config: dict[str, Any] = dict(), master_port: int | None = None, enable_stage_verification: bool = True, prompt_txt: str | None = None, ltx2_vae_tiling: bool | None = None, ltx2_vae_spatial_tile_size_in_pixels: int | None = None, ltx2_vae_spatial_tile_overlap_in_pixels: int | None = None, ltx2_vae_temporal_tile_size_in_frames: int | None = None, ltx2_vae_temporal_tile_overlap_in_frames: int | None = None, ltx2_initial_latent_path: str | None = None, ltx2_audio_latent_path: str | None = None, refine_enabled: bool | None = None, refine_upsampler_path: str | None = None, refine_transformer_path: str | None = None, refine_lora_path: str | None = None, refine_num_inference_steps: int | None = None, refine_guidance_scale: float | None = None, refine_add_noise: bool | None = None, refine_noise_path: str | None = None, refine_audio_noise_path: str | None = None, ltx2_refine_enabled: bool = False, ltx2_refine_upsampler_path: str | None = None, ltx2_refine_transformer_path: str | None = None, ltx2_refine_lora_path: str | None = None, ltx2_refine_num_inference_steps: int = 3, ltx2_refine_guidance_scale: float = 1.0, ltx2_refine_add_noise: bool = True, ltx2_refine_noise_path: str | None = None, ltx2_refine_audio_noise_path: str | None = None, ltx2_legacy_native_noise_order: bool = False, ltx2_use_distilled_sigmas: bool = True, model_paths: dict[str, str] = dict(), model_loaded: dict[str, bool] = (lambda: {'transformer': True, 'vae': True, 'upsampler': True})(), override_text_encoder_safetensors: str | None = None, override_text_encoder_quant: QuantizationMethods = None, transformer_quant: Any | None = None, override_transformer_cls_name: str | None = None, init_weights_from_safetensors: str = '', init_weights_from_safetensors_2: str = '', override_pipeline_cls_name: str | None = None, boundary_ratio: float | None = 0.875)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs.is_output_rank
is_output_rank: bool
Whether this process may materialize user-facing outputs.
This is runtime state assigned by an SPMD executor, not a public configuration field, so dataclass serialization and typed config parsing deliberately ignore it.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs.add_cli_args
add_cli_args(parser: FlexibleArgumentParser) -> FlexibleArgumentParser
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs.from_cli_args
from_cli_args(args: argparse.Namespace) -> FastVideoArgs
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs.from_kwargs
from_kwargs(**kwargs: Any) -> FastVideoArgs
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs.check_fastvideo_args
check_fastvideo_args() -> None
Validate inference arguments for consistency
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs.finalize_device_offload_policy
finalize_device_offload_policy(device_id: int = 0) -> bool
Apply device-local memory policy, then resolve incompatible modes.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FastVideoArgs.disable_offload_on_unified_memory
disable_offload_on_unified_memory(device_id: int = 0, *, offload_flag: str | None = None) -> bool
Disable host offload after a worker has selected its device.
CUDA's unified-memory probe reads runtime device properties and may
initialize a CUDA context. Callers must therefore use this only inside
a device-owning process, after selecting and binding device_id.
Returning the classification lets direct component-loader callers
apply the same policy to explicit per-call overrides. When
offload_flag is given, the return value says whether this policy
covers that component role.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.init_logger
init_logger(name: str) -> _FastvideoLogger
The main purpose of this function is to ensure that loggers are retrieved in such a way that we can be sure the root fastvideo logger has already been configured.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler
FlowUniPCMultistepScheduler(num_train_timesteps: int = 1000, solver_order: int = 2, prediction_type: str = 'flow_prediction', shift: float | None = 1.0, use_dynamic_shifting = False, thresholding: bool = False, dynamic_thresholding_ratio: float = 0.995, sample_max_value: float = 1.0, predict_x0: bool = True, solver_type: str = 'bh2', lower_order_final: bool = True, disable_corrector: tuple = (), solver_p: SchedulerMixin = None, timestep_spacing: str = 'linspace', steps_offset: int = 0, final_sigmas_type: str | None = 'zero', **kwargs)
UniPCMultistepScheduler is a training-free framework designed for the fast sampling of diffusion models.
This model inherits from [SchedulerMixin] and [ConfigMixin]. Check the superclass documentation for the generic
methods the library implements for all schedulers such as loading and saving.
Parameters
num_train_timesteps: `int`, defaults to 1000The number of diffusion steps to train the model.
solver_order: `int`, default `2`The UniPC order which can be any positive integer. The effective order of accuracy is
solver_order + 1due to the UniC. It is recommended to usesolver_order=2for guided sampling, andsolver_order=3for unconditional sampling.prediction_type: `str`, defaults to "flow_prediction"Prediction type of the scheduler function; must be
flow_predictionfor this scheduler, which predicts the flow of the diffusion process.thresholding: `bool`, defaults to `False`Whether to use the "dynamic thresholding" method. This is unsuitable for latent-space diffusion models such as Stable Diffusion.
dynamic_thresholding_ratio: `float`, defaults to 0.995The ratio for the dynamic thresholding method. Valid only when
thresholding=True.sample_max_value: `float`, defaults to 1.0The threshold value for dynamic thresholding. Valid only when
thresholding=Trueandpredict_x0=True.predict_x0: `bool`, defaults to `True`Whether to use the updating algorithm on the predicted x0.
solver_type: `str`, default `bh2`Solver type for UniPC. It is recommended to use
bh1for unconditional sampling when steps < 10, andbh2otherwise.lower_order_final: `bool`, default `True`Whether to use lower-order solvers in the final steps. Only valid for < 15 inference steps. This can stabilize the sampling of DPMSolver for steps < 15, especially for steps <= 10.
disable_corrector: `list`, default `[]`Decides which step to disable the corrector to mitigate the misalignment between
epsilon_theta(x_t, c)andepsilon_theta(x_t^c, c)which can influence convergence for a large guidance scale. Corrector is usually disabled during the first few steps.solver_p: `SchedulerMixin`, default `None`Any other scheduler that if specified, the algorithm becomes
solver_p + UniC.use_karras_sigmas: `bool`, *optional*, defaults to `False`Whether to use Karras sigmas for step sizes in the noise schedule during the sampling process. If
True, the sigmas are determined according to a sequence of noise levels {σi}.use_exponential_sigmas: `bool`, *optional*, defaults to `False`Whether to use exponential sigmas for step sizes in the noise schedule during the sampling process.
timestep_spacing: `str`, defaults to `"linspace"`The way the timesteps should be scaled. Refer to Table 2 of the Common Diffusion Noise Schedules and Sample Steps are Flawed for more information.
steps_offset: `int`, defaults to 0An offset added to the inference steps, as required by some model families.
final_sigmas_type: `str`, defaults to `"zero"`The final
sigmavalue for the noise schedule during the sampling process. If"sigma_min", the final sigma is the same as the last sigma in the training schedule. Ifzero, the final sigma is set to 0.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.step_index
step_index
The index counter for current timestep. It will increase 1 after each scheduler step.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.begin_index
begin_index
The index for the first timestep. It should be set from pipeline with set_begin_index method.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.set_shift
set_shift(shift: float) -> None
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.set_begin_index
set_begin_index(begin_index: int = 0)
Sets the begin index for the scheduler. This function should be run from pipeline before the inference.
Parameters
begin_index: `int`The begin index for the scheduler.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.set_timesteps
set_timesteps(num_inference_steps: int | None = None, device: str | torch.device = None, sigmas: list[float] | None = None, mu: float | None | None = None, shift: float | None | None = None, use_karras_sigmas: bool | None = None, use_kerras_sigma: bool | None = None)
Sets the discrete timesteps used for the diffusion chain (to be run before inference).
Args:
num_inference_steps (int):
Total number of the spacing of the time steps.
device (str or torch.device, optional):
The device to which the timesteps should be moved to. If None, the timesteps are not moved.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.time_shift
time_shift(mu: float, sigma: float, t: torch.Tensor)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.convert_model_output
convert_model_output(model_output: torch.Tensor, *args, sample: torch.Tensor = None, **kwargs) -> torch.Tensor
Convert the model output to the corresponding type the UniPC algorithm needs.
Parameters
model_output: `torch.Tensor`The direct output from the learned diffusion model.
timestep: `int`The current discrete timestep in the diffusion chain.
sample: `torch.Tensor`A current instance of a sample created by the diffusion process.
Returns
torch.Tensortorch.Tensor: The converted model output.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.multistep_uni_p_bh_update
multistep_uni_p_bh_update(model_output: torch.Tensor, *args, sample: torch.Tensor = None, order: int | None = None, **kwargs) -> torch.Tensor
One step for the UniP (B(h) version). Alternatively, self.solver_p is used if is specified.
Parameters
model_output: `torch.Tensor`The direct output from the learned diffusion model at the current timestep.
prev_timestep: `int`The previous discrete timestep in the diffusion chain.
sample: `torch.Tensor`A current instance of a sample created by the diffusion process.
order: `int`The order of UniP at this timestep (corresponds to the p in UniPC-p).
Returns
torch.Tensortorch.Tensor: The sample tensor at the previous timestep.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.multistep_uni_c_bh_update
multistep_uni_c_bh_update(this_model_output: torch.Tensor, *args, last_sample: torch.Tensor = None, this_sample: torch.Tensor = None, order: int | None = None, **kwargs) -> torch.Tensor
One step for the UniC (B(h) version).
Parameters
this_model_output: `torch.Tensor`The model outputs at
x_t.this_timestep: `int`The current timestep
t.last_sample: `torch.Tensor`The generated sample before the last predictor
x_{t-1}.this_sample: `torch.Tensor`The generated sample after the last predictor
x_{t}.order: `int`The
pof UniC-p at this step. The effective order of accuracy should beorder + 1.
Returns
torch.Tensortorch.Tensor: The corrected sample tensor at the current timestep.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.index_for_timestep
index_for_timestep(timestep, schedule_timesteps = None) -> int
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.step
step(model_output: torch.Tensor, timestep: int | torch.Tensor, sample: torch.Tensor, return_dict: bool = True, generator = None) -> SchedulerOutput | tuple
Predict the sample from the previous timestep by reversing the SDE. This function propagates the sample with the multistep UniPC.
Parameters
model_output: `torch.Tensor`The direct output from learned diffusion model.
timestep: `int`The current discrete timestep in the diffusion chain.
sample: `torch.Tensor`A current instance of a sample created by the diffusion process.
return_dict: `bool`Whether or not to return a [
~schedulers.scheduling_utils.SchedulerOutput] ortuple.
Returns
SchedulerOutput | tuple[
~schedulers.scheduling_utils.SchedulerOutput] ortuple: If return_dict isTrue, [~schedulers.scheduling_utils.SchedulerOutput] is returned, otherwise a tuple is returned where the first element is the sample tensor.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.scale_model_input
scale_model_input(sample: torch.Tensor, *args, **kwargs) -> torch.Tensor
Ensures interchangeability with schedulers that need to scale the denoising model input depending on the current timestep.
Parameters
sample: `torch.Tensor`The input sample.
Returns
torch.Tensortorch.Tensor: A scaled input sample.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.FlowUniPCMultistepScheduler.add_noise
add_noise(original_samples: torch.Tensor, noise: torch.Tensor, timesteps: torch.IntTensor) -> torch.Tensor
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase
ComposedPipelineBase(model_path: str, fastvideo_args: FastVideoArgs | TrainingArgs, required_config_modules: list[str] | None = None, loaded_modules: dict[str, torch.nn.Module] | None = None)
Base class for pipelines composed of multiple stages.
This class provides the framework for creating pipelines by composing multiple stages together. Each stage is responsible for a specific part of the diffusion process, and the pipeline orchestrates the execution of these stages.
Initialize the pipeline. After init, the pipeline should be ready to use. The pipeline should be stateless and not hold any batch state.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.get_hf_download_component_dirs
get_hf_download_component_dirs() -> tuple[str, ...] | None
Return component directories for an opt-in partial Hub download.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.get_hf_download_allow_patterns
get_hf_download_allow_patterns() -> list[str] | None
Return Hub patterns for the manifest and selected components.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.set_trainable
set_trainable() -> None
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.post_init
post_init() -> None
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.initialize_training_pipeline
initialize_training_pipeline(training_args: TrainingArgs)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.initialize_validation_pipeline
initialize_validation_pipeline(training_args: TrainingArgs)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.from_pretrained
from_pretrained(model_path: str, device: str | None = None, torch_dtype: torch.dtype | None = None, pipeline_config: str | PipelineConfig | None = None, args: argparse.Namespace | None = None, required_config_modules: list[str] | None = None, loaded_modules: dict[str, torch.nn.Module] | None = None, **kwargs) -> ComposedPipelineBase
Load a pipeline from a pretrained model. loaded_modules: Optional[Dict[str, torch.nn.Module]] = None, If provided, loaded_modules will be used instead of loading from config/pretrained weights.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.get_module
get_module(module_name: str, default_value: Any = None) -> Any
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.add_module
add_module(module_name: str, module: Any)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.required_config_modules
required_config_modules: list[str]
List of modules that are required by the pipeline. The names should match the diffusers directory and model_index.json file. These modules will be loaded using the PipelineComponentLoader and made available in the modules dictionary. Access these modules using the get_module method.
class ConcretePipeline(ComposedPipelineBase): _required_config_modules = ["vae", "text_encoder", "transformer", "scheduler", "tokenizer"]
@property
def required_config_modules(self):
return self._required_config_modules
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.stages
stages: list[PipelineStage]
List of stages in the pipeline.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.create_pipeline_stages
create_pipeline_stages(fastvideo_args: FastVideoArgs)
Create the inference pipeline stages.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.create_training_stages
create_training_stages(training_args: TrainingArgs)
Create the training pipeline stages.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.initialize_pipeline
initialize_pipeline(fastvideo_args: FastVideoArgs)
Initialize the pipeline.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.load_modules
load_modules(fastvideo_args: FastVideoArgs, loaded_modules: dict[str, torch.nn.Module] | None = None) -> dict[str, Any]
Load the modules from the config. loaded_modules: Optional[Dict[str, torch.nn.Module]] = None, If provided, loaded_modules will be used instead of loading from config/pretrained weights.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.add_stage
add_stage(stage_name: str, stage: PipelineStage)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
Generate a video or image using the pipeline.
Parameters
batch: ForwardBatchThe batch to generate from.
fastvideo_args: FastVideoArgsThe inference arguments.
Returns: ForwardBatch: The batch with the generated video or image.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.train
train() -> None
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ComposedPipelineBase.close
close() -> None
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline
LoRAPipeline(*args, **kwargs)
Pipeline that supports injecting LoRA adapters into the diffusion transformer. TODO: support training.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.add_module
add_module(module_name: str, module: Any) -> None
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.is_target_layer
is_target_layer(module_name: str) -> bool
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.convert_adapter_state_dict
convert_adapter_state_dict(state_dict: dict[str, torch.Tensor], lora_path: str) -> dict[str, torch.Tensor]
Rewrite a foreign-layout adapter into the layout the model's name mapping speaks.
The default leaves the adapter alone. Pipelines override it for model families whose published adapters use another naming or fusion scheme, and raise when the adapter is unusable.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.set_trainable
set_trainable() -> None
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.convert_to_lora_layers
convert_to_lora_layers() -> None
Unified method to convert the transformer to a LoRA transformer.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.set_lora_adapter
set_lora_adapter(lora_nickname: str, lora_path: str | None = None, strength: float = 1.0, accumulate: bool = False)
Load a LoRA adapter into the pipeline and merge it into the transformer. Args: lora_nickname: The "nick name" of the adapter when referenced in the pipeline. lora_path: The path to the adapter, either a local path or a Hugging Face repo id. strength: Scale for the low-rank adapter. Hybrid adapters must set this at construction so their dense payload receives the same scale. accumulate: Add this adapter to an already merged pure low-rank adapter.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.merge_lora_weights
merge_lora_weights() -> None
Merge LoRA weights, then repack the packed quantized buffers for the merged state.
NVFP4 layers are only supported while their BF16 weight is retained: a purged BF16 weight cannot be unmerged and remerged.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LoRAPipeline.unmerge_lora_weights
unmerge_lora_weights() -> None
Unmerge LoRA weights, then repack the packed quantized buffers for the unmerged state.
NVFP4 is rejected: its FP4 buffers cannot be rebuilt from a purged BF16 weight.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ConditioningStage
ConditioningStage()
Stage for applying conditioning to the diffusion process.
This stage handles the application of conditioning, such as classifier-free guidance, to the diffusion process.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ConditioningStage.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
Apply conditioning to the diffusion process.
Parameters
batch: ForwardBatchThe current batch information.
fastvideo_args: FastVideoArgsThe inference arguments.
Returns
ForwardBatchThe batch with applied conditioning.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ConditioningStage.verify_input
verify_input(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify conditioning stage inputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.ConditioningStage.verify_output
verify_output(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify conditioning stage outputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.DecodingStage
DecodingStage(vae, pipeline = None)
Stage for decoding latent representations into pixel space.
This stage handles the decoding of latent representations into the final output format (e.g., pixel values).
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.DecodingStage.verify_input
verify_input(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify decoding stage inputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.DecodingStage.verify_output
verify_output(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify decoding stage outputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.DecodingStage.decode
decode(latents: torch.Tensor, fastvideo_args: FastVideoArgs) -> torch.Tensor
Decode latent representations into pixel space using VAE.
Parameters
latents: torch.TensorInput latent tensor with shape (batch, channels, frames, height_latents, width_latents)
fastvideo_args: FastVideoArgsConfiguration containing: - disable_autocast: Whether to disable automatic mixed precision (default: False) - pipeline_config.vae_precision: VAE computation precision ("fp32", "fp16", "bf16") - pipeline_config.vae_tiling: Whether to enable VAE tiling for memory efficiency
Returns
torch.TensorDecoded video tensor with shape (batch, channels, frames, height, width),
torch.Tensornormalized to [0, 1] range and moved to CPU as float32
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.DecodingStage.streaming_decode
streaming_decode(latents: torch.Tensor, fastvideo_args: FastVideoArgs, cache: list[torch.Tensor | None] | None = None, is_first_chunk: bool = False) -> tuple[torch.Tensor, list[torch.Tensor | None]]
Decode latent representations into pixel space using VAE with streaming cache.
Parameters
latents: torch.TensorInput latent tensor with shape (batch, channels, frames, height_latents, width_latents)
fastvideo_args: FastVideoArgsConfiguration object.
cache: list[torch.Tensor | None] | NoneVAE cache from previous call, or None to initialize a new cache.
is_first_chunk: boolWhether this is the first chunk.
Returns
tuple[torch.Tensor, list[torch.Tensor | None]]A tuple of (decoded_frames, updated_cache).
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.DecodingStage.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
Decode latent representations into pixel space.
This method processes the batch through the VAE decoder, converting latent representations to pixel-space video/images. It also optionally decodes trajectory latents for visualization purposes.
Parameters
batch: ForwardBatchThe current batch containing: - latents: Tensor to decode (batch, channels, frames, height_latents, width_latents) - return_trajectory_decoded (optional): Flag to decode trajectory latents - trajectory_latents (optional): Latents at different timesteps - trajectory_timesteps (optional): Corresponding timesteps
fastvideo_args: FastVideoArgsConfiguration containing: - output_type: "latent" to skip decoding, otherwise decode to pixels - vae_cpu_offload: Whether to offload VAE to CPU after decoding - model_loaded: Track VAE loading state - model_paths: Path to VAE model if loading needed
Returns
ForwardBatchModified batch with: - output: Decoded frames (batch, channels, frames, height, width) as CPU float32 - trajectory_decoded (if requested): List of decoded frames per timestep
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.InputValidationStage
InputValidationStage()
Stage for validating and preparing inputs for diffusion pipelines.
This stage validates that all required inputs are present and properly formatted before proceeding with the diffusion process.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.InputValidationStage.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
Validate and prepare inputs.
Parameters
batch: ForwardBatchThe current batch information.
fastvideo_args: FastVideoArgsThe inference arguments.
Returns
ForwardBatchThe validated batch information.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.InputValidationStage.verify_input
verify_input(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify input validation stage inputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.InputValidationStage.verify_output
verify_output(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify input validation stage outputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LatentPreparationStage
LatentPreparationStage(scheduler, transformer, use_btchw_layout: bool = False)
Stage for preparing initial latent variables for the diffusion process.
This stage handles the preparation of the initial latent variables that will be denoised during the diffusion process.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LatentPreparationStage.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
Prepare initial latent variables for the diffusion process.
Parameters
batch: ForwardBatchThe current batch information.
fastvideo_args: FastVideoArgsThe inference arguments.
Returns
ForwardBatchThe batch with prepared latent variables.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LatentPreparationStage.verify_input
verify_input(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify latent preparation stage inputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.LatentPreparationStage.verify_output
verify_output(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify latent preparation stage outputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3DenoisingStage
MatrixGame3DenoisingStage(transformer, scheduler, pipeline = None, transformer_2 = None, vae = None)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3DenoisingStage.verify_input
verify_input(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3DenoisingStage.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.TextEncodingStage
TextEncodingStage(text_encoders, tokenizers)
Stage for encoding text prompts into embeddings for diffusion models.
This stage handles the encoding of text prompts into the embedding space expected by the diffusion model.
Initialize the prompt encoding stage.
Parameters
enable_loggingWhether to enable logging for this stage.
is_secondaryWhether this is a secondary text encoder.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.TextEncodingStage.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
Encode the prompt into text encoder hidden states.
Parameters
batch: ForwardBatchThe current batch information.
fastvideo_args: FastVideoArgsThe inference arguments.
Returns
ForwardBatchThe batch with encoded prompt embeddings.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.TextEncodingStage.verify_input
verify_input(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify text encoding stage inputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.TextEncodingStage.encode_text
encode_text(text: str | list[str], fastvideo_args: FastVideoArgs, encoder_index: int | list[int] | None = None, return_attention_mask: bool = False, return_type: str = 'list', device: torch.device | str | None = None, dtype: torch.dtype | None = None, max_length: int | Sequence[int | None] | None = None, truncation: bool | None = None, padding: bool | str | None = None)
Encode plain text using selected text encoder(s) and return embeddings.
Parameters
text: str | list[str]A single string or a list of strings to encode.
fastvideo_args: FastVideoArgsThe inference arguments providing pipeline config, including tokenizer and encoder settings, preprocess and postprocess functions.
encoder_index: int | list[int] | NoneEncoder selector by index. Accepts an int or list of ints.
return_attention_mask: boolIf True, also return attention masks for each selected encoder.
return_type: str"list" (default) returns a list aligned with selection; "dict" returns a dict keyed by encoder index as a string; "stack" stacks along a new first dimension (requires matching shapes).
device: torch.device | str | NoneOptional device override for inputs; defaults to local torch device.
dtype: torch.dtype | NoneOptional dtype to cast returned embeddings to.
max_length: int | Sequence[int | None] | NoneOptional per-call tokenizer override. Either one value applied to every selected encoder (existing behavior), or a sequence with one entry per encoder in
encoder_indexorder --Noneat a position falls back to that encoder's own configured default instead of the override.truncation: bool | NoneOptional per-call tokenizer override.
padding: bool | str | NoneOptional per-call tokenizer override.
Returns
Depending on return_type and return_attention_mask:
- list: List[Tensor] or (List[Tensor], List[Tensor])
- dict: Dict[str, Tensor] or (Dict[str, Tensor], Dict[str, Tensor])
- stack: Tensor of shape [num_encoders, ...] or a tuple with stacked attention masks
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.TextEncodingStage.return_embeds
return_embeds(embeds_list: list[torch.Tensor], attn_masks_list: list[torch.Tensor], return_type: str = 'list', return_attention_mask: bool = False, indices: list[int] | None = None) -> Any
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.TextEncodingStage.verify_output
verify_output(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> VerificationResult
Verify text encoding stage outputs.
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3ImageVAEEncodingStage
MatrixGame3ImageVAEEncodingStage(vae: ParallelTiledVAE)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3ImageVAEEncodingStage.preprocess
preprocess(image: torch.Tensor | PIL.Image.Image, vae_scale_factor: int, height: int | None = None, width: int | None = None, resize_mode: str = 'crop') -> torch.Tensor
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3ImageVAEEncodingStage.forward
forward(batch: ForwardBatch, fastvideo_args: FastVideoArgs) -> ForwardBatch
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3I2VPipeline
MatrixGame3I2VPipeline(*args, **kwargs)
Source
class MatrixGame3I2VPipeline(LoRAPipeline, ComposedPipelineBase):
_required_config_modules = ["vae", "transformer", "scheduler", "text_encoder", "tokenizer"]
_extra_config_module_map = {"vae": "light_vae"}
def initialize_pipeline(self, fastvideo_args: FastVideoArgs):
self.modules["scheduler"] = FlowUniPCMultistepScheduler(shift=fastvideo_args.pipeline_config.flow_shift)
def create_pipeline_stages(self, fastvideo_args: FastVideoArgs):
self.add_stage(stage_name="input_validation_stage", stage=InputValidationStage())
self.add_stage(stage_name="prompt_encoding_stage",
stage=TextEncodingStage(
text_encoders=[self.get_module("text_encoder")],
tokenizers=[self.get_module("tokenizer")],
))
self.add_stage(stage_name="conditioning_stage", stage=ConditioningStage())
self.add_stage(stage_name="latent_preparation_stage",
stage=LatentPreparationStage(scheduler=self.get_module("scheduler"),
transformer=self.get_module("transformer")))
self.add_stage(stage_name="image_latent_preparation_stage",
stage=MatrixGame3ImageVAEEncodingStage(vae=self.get_module("vae")))
self.add_stage(stage_name="denoising_stage",
stage=MatrixGame3DenoisingStage(transformer=self.get_module("transformer"),
scheduler=self.get_module("scheduler"),
pipeline=self,
vae=self.get_module("vae")))
self.add_stage(stage_name="decoding_stage", stage=DecodingStage(vae=self.get_module("vae")))
logger.info("MatrixGame3I2VPipeline initialized with text, action, and camera support")</code></pre></details>
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3I2VPipeline.initialize_pipeline
initialize_pipeline(fastvideo_args: FastVideoArgs)
Source
def initialize_pipeline(self, fastvideo_args: FastVideoArgs):
self.modules["scheduler"] = FlowUniPCMultistepScheduler(shift=fastvideo_args.pipeline_config.flow_shift)
fastvideo.pipelines.basic.matrixgame3.matrixgame3_i2v_pipeline.MatrixGame3I2VPipeline.create_pipeline_stages
create_pipeline_stages(fastvideo_args: FastVideoArgs)
Source
def create_pipeline_stages(self, fastvideo_args: FastVideoArgs):
self.add_stage(stage_name="input_validation_stage", stage=InputValidationStage())
self.add_stage(stage_name="prompt_encoding_stage",
stage=TextEncodingStage(
text_encoders=[self.get_module("text_encoder")],
tokenizers=[self.get_module("tokenizer")],
))
self.add_stage(stage_name="conditioning_stage", stage=ConditioningStage())
self.add_stage(stage_name="latent_preparation_stage",
stage=LatentPreparationStage(scheduler=self.get_module("scheduler"),
transformer=self.get_module("transformer")))
self.add_stage(stage_name="image_latent_preparation_stage",
stage=MatrixGame3ImageVAEEncodingStage(vae=self.get_module("vae")))
self.add_stage(stage_name="denoising_stage",
stage=MatrixGame3DenoisingStage(transformer=self.get_module("transformer"),
scheduler=self.get_module("scheduler"),
pipeline=self,
vae=self.get_module("vae")))
self.add_stage(stage_name="decoding_stage", stage=DecodingStage(vae=self.get_module("vae")))
logger.info("MatrixGame3I2VPipeline initialized with text, action, and camera support")</code></pre></details>