返回 JoyAI-Echo
policy.py
1 from dataclasses import dataclass
2
3 from ltx_core.loader.module_ops import ModuleOps
4 from ltx_core.loader.sd_ops import SDOps
5 from ltx_core.quantization.fp8_cast import TRANSFORMER_LINEAR_DOWNCAST_MAP, UPCAST_DURING_INFERENCE
6 from ltx_core.quantization.fp8_scaled_mm import FP8_PREPARE_MODULE_OPS, FP8_TRANSPOSE_SD_OPS
7
8
9 @dataclass(frozen=True)
10 class QuantizationPolicy:
11 """Configuration for model quantization during loading.
12 Attributes:
13 sd_ops: State dict operations for weight transformation.
14 module_ops: Post-load module transformations.
15 """
16
17 sd_ops: SDOps | None = None
18 module_ops: tuple[ModuleOps, ...] = ()
19
20 @classmethod
21 def fp8_cast(cls) -> "QuantizationPolicy":
22 """Create policy using FP8 casting with upcasting during inference."""
23 return cls(
24 sd_ops=TRANSFORMER_LINEAR_DOWNCAST_MAP,
25 module_ops=(UPCAST_DURING_INFERENCE,),
26 )
27
28 @classmethod
29 def fp8_scaled_mm(cls) -> "QuantizationPolicy":
30 """Create policy using FP8 scaled matrix multiplication."""
31 try:
32 import tensorrt_llm # noqa: F401, PLC0415
33 except ImportError as e:
34 raise ImportError("tensorrt_llm is not installed, skipping FP8 scaled MM quantization") from e
35
36 return cls(
37 sd_ops=FP8_TRANSPOSE_SD_OPS,
38 module_ops=(FP8_PREPARE_MODULE_OPS,),
39 )
40
40 lines PYTHON