Automated PR - 2026-03-04
This commit is contained in:
@@ -1,12 +1,17 @@
|
||||
import logging
|
||||
from dataclasses import dataclass, field, replace
|
||||
|
||||
from safetensors import safe_open
|
||||
|
||||
from ltx_core.components.guiders import MultiModalGuiderParams
|
||||
from ltx_core.types import SpatioTemporalScaleFactors
|
||||
|
||||
# =============================================================================
|
||||
# Diffusion Schedule
|
||||
# =============================================================================
|
||||
|
||||
# Noise schedule for the distilled pipeline. These sigma values control noise
|
||||
# levels at each denoising step and were tuned to match the distillation process.
|
||||
from ltx_core.components.guiders import MultiModalGuiderParams
|
||||
from ltx_core.types import SpatioTemporalScaleFactors
|
||||
|
||||
DISTILLED_SIGMA_VALUES = [1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0]
|
||||
|
||||
# Reduced schedule for super-resolution stage 2 (subset of distilled values)
|
||||
@@ -14,64 +19,88 @@ STAGE_2_DISTILLED_SIGMA_VALUES = [0.909375, 0.725, 0.421875, 0.0]
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Video Generation Defaults
|
||||
# Pipeline Parameters
|
||||
# =============================================================================
|
||||
|
||||
DEFAULT_SEED = 10
|
||||
DEFAULT_1_STAGE_HEIGHT = 512
|
||||
DEFAULT_1_STAGE_WIDTH = 768
|
||||
DEFAULT_2_STAGE_HEIGHT = DEFAULT_1_STAGE_HEIGHT * 2
|
||||
DEFAULT_2_STAGE_WIDTH = DEFAULT_1_STAGE_WIDTH * 2
|
||||
DEFAULT_NUM_FRAMES = 121
|
||||
DEFAULT_FRAME_RATE = 24.0
|
||||
DEFAULT_NUM_INFERENCE_STEPS = 40
|
||||
DEFAULT_VIDEO_GUIDER_PARAMS = MultiModalGuiderParams(
|
||||
cfg_scale=3.0,
|
||||
stg_scale=1.0,
|
||||
rescale_scale=0.7,
|
||||
modality_scale=3.0,
|
||||
skip_step=0,
|
||||
stg_blocks=[29],
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class PipelineParams:
|
||||
seed: int = 10
|
||||
stage_1_height: int = 512
|
||||
stage_1_width: int = 768
|
||||
num_frames: int = 121
|
||||
frame_rate: float = 24.0
|
||||
num_inference_steps: int = 40
|
||||
video_guider_params: MultiModalGuiderParams = field(
|
||||
default_factory=lambda: MultiModalGuiderParams(
|
||||
cfg_scale=3.0,
|
||||
stg_scale=1.0,
|
||||
rescale_scale=0.7,
|
||||
modality_scale=3.0,
|
||||
skip_step=0,
|
||||
stg_blocks=[29],
|
||||
)
|
||||
)
|
||||
audio_guider_params: MultiModalGuiderParams = field(
|
||||
default_factory=lambda: MultiModalGuiderParams(
|
||||
cfg_scale=7.0,
|
||||
stg_scale=1.0,
|
||||
rescale_scale=0.7,
|
||||
modality_scale=3.0,
|
||||
skip_step=0,
|
||||
stg_blocks=[29],
|
||||
)
|
||||
)
|
||||
|
||||
@property
|
||||
def stage_2_height(self) -> int:
|
||||
return int(self.stage_1_height * 2)
|
||||
|
||||
@property
|
||||
def stage_2_width(self) -> int:
|
||||
return int(self.stage_1_width * 2)
|
||||
|
||||
|
||||
# Default params for LTX-2.0 non-distilled models. These can be overridden by detecting from checkpoint metadata.
|
||||
LTX_2_PARAMS = PipelineParams()
|
||||
|
||||
# Default params for LTX-2.3 non-distilled models. These override some of the LTX-2.0 defaults.
|
||||
LTX_2_3_PARAMS = replace(
|
||||
LTX_2_PARAMS,
|
||||
num_inference_steps=30,
|
||||
video_guider_params=replace(LTX_2_PARAMS.video_guider_params, stg_blocks=[28]),
|
||||
audio_guider_params=replace(LTX_2_PARAMS.audio_guider_params, stg_blocks=[28]),
|
||||
)
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Audio
|
||||
# =============================================================================
|
||||
|
||||
DEFAULT_AUDIO_GUIDER_PARAMS = MultiModalGuiderParams(
|
||||
cfg_scale=7.0,
|
||||
stg_scale=1.0,
|
||||
rescale_scale=0.7,
|
||||
modality_scale=3.0,
|
||||
skip_step=0,
|
||||
stg_blocks=[29],
|
||||
)
|
||||
AUDIO_SAMPLE_RATE = 24000
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# LoRA
|
||||
# =============================================================================
|
||||
|
||||
DEFAULT_LORA_STRENGTH = 1.0
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Video VAE Architecture
|
||||
# =============================================================================
|
||||
|
||||
DEFAULT_IMAGE_CRF = 33
|
||||
VIDEO_SCALE_FACTORS = SpatioTemporalScaleFactors.default()
|
||||
VIDEO_LATENT_CHANNELS = 128
|
||||
|
||||
_LTX_2_3_MODEL_VERSION_PREFIX = "2.3"
|
||||
|
||||
# =============================================================================
|
||||
# Image Preprocessing
|
||||
# =============================================================================
|
||||
|
||||
# CRF (Constant Rate Factor) for H.264 encoding used in image conditioning.
|
||||
# Lower = higher quality, 0 = lossless. This mimics compression artifacts.
|
||||
DEFAULT_IMAGE_CRF = 33
|
||||
def detect_params(checkpoint_path: str) -> PipelineParams:
|
||||
"""Detect pipeline params from checkpoint metadata.
|
||||
Reads the ``model_version`` field from the safetensors config metadata.
|
||||
Returns ``LTX_2_3_PARAMS`` when the version starts with "2.3",
|
||||
otherwise falls back to ``LTX_2_PARAMS``.
|
||||
"""
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
with safe_open(checkpoint_path, framework="pt") as f:
|
||||
metadata = f.metadata() or {}
|
||||
version = metadata.get("model_version", "")
|
||||
except Exception:
|
||||
logger.warning("Could not read checkpoint metadata from %s, using LTX-2 defaults", checkpoint_path)
|
||||
return LTX_2_PARAMS
|
||||
|
||||
if version.startswith(_LTX_2_3_MODEL_VERSION_PREFIX):
|
||||
return LTX_2_3_PARAMS
|
||||
|
||||
logger.info("Using LTX_2_PARAMS for checkpoint (version=%s)", version or "unknown")
|
||||
return LTX_2_PARAMS
|
||||
|
||||
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user