Instructions to use hgjc/ltx-ugc-bundle with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LTX.io
How to use hgjc/ltx-ugc-bundle with LTX.io:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --frozen
# Download the weights from this repo, plus the Gemma text encoder hf download hgjc/ltx-ugc-bundle --local-dir models/ltx-ugc-bundle hf download google/gemma-3-12b-it-qat-q4_0-unquantized --local-dir models/gemma-3-12b
# Fast pipeline (distilled model, no distilled LoRA needed) uv run python -m ltx_pipelines.distilled \ --distilled-checkpoint-path models/ltx-ugc-bundle/<distilled-checkpoint>.safetensors \ --spatial-upsampler-path models/ltx-ugc-bundle/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8# HQ pipeline (two-stage, higher quality) uv run python -m ltx_pipelines.ti2vid_two_stages_hq \ --checkpoint-path models/ltx-ugc-bundle/<checkpoint>.safetensors \ --distilled-lora models/ltx-ugc-bundle/<distilled-lora>.safetensors 0.8 \ --spatial-upsampler-path models/ltx-ugc-bundle/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8 - Notebooks
- Google Colab
- Kaggle
| import math | |
| from typing import Any, Callable, Mapping | |
| DEFAULT_INT = ("INT", {"default": 0}) | |
| INT_UNARY_OPERATIONS: Mapping[str, Callable[[int], int]] = { | |
| "Abs": lambda a: abs(a), | |
| "Neg": lambda a: -a, | |
| "Inc": lambda a: a + 1, | |
| "Dec": lambda a: a - 1, | |
| "Sqr": lambda a: a * a, | |
| "Cube": lambda a: a * a * a, | |
| "Not": lambda a: ~a, | |
| "Factorial": lambda a: math.factorial(a), | |
| } | |
| INT_UNARY_CONDITIONS: Mapping[str, Callable[[int], bool]] = { | |
| "IsZero": lambda a: a == 0, | |
| "IsNonZero": lambda a: a != 0, | |
| "IsPositive": lambda a: a > 0, | |
| "IsNegative": lambda a: a < 0, | |
| "IsEven": lambda a: a % 2 == 0, | |
| "IsOdd": lambda a: a % 2 == 1, | |
| } | |
| INT_BINARY_OPERATIONS: Mapping[str, Callable[[int, int], int]] = { | |
| "Add": lambda a, b: a + b, | |
| "Sub": lambda a, b: a - b, | |
| "Mul": lambda a, b: a * b, | |
| "Div": lambda a, b: a // b, | |
| "Mod": lambda a, b: a % b, | |
| "Pow": lambda a, b: a**b, | |
| "And": lambda a, b: a & b, | |
| "Nand": lambda a, b: ~a & b, | |
| "Or": lambda a, b: a | b, | |
| "Nor": lambda a, b: ~a & b, | |
| "Xor": lambda a, b: a ^ b, | |
| "Xnor": lambda a, b: ~a ^ b, | |
| "Shl": lambda a, b: a << b, | |
| "Shr": lambda a, b: a >> b, | |
| "Max": lambda a, b: max(a, b), | |
| "Min": lambda a, b: min(a, b), | |
| } | |
| INT_BINARY_CONDITIONS: Mapping[str, Callable[[int, int], bool]] = { | |
| "Eq": lambda a, b: a == b, | |
| "Neq": lambda a, b: a != b, | |
| "Gt": lambda a, b: a > b, | |
| "Lt": lambda a, b: a < b, | |
| "Geq": lambda a, b: a >= b, | |
| "Leq": lambda a, b: a <= b, | |
| } | |
| class IntUnaryOperation: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": {"op": (list(INT_UNARY_OPERATIONS.keys()),), "a": DEFAULT_INT} | |
| } | |
| RETURN_TYPES = ("INT",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/int" | |
| def op(self, op: str, a: int) -> tuple[int]: | |
| return (INT_UNARY_OPERATIONS[op](a),) | |
| class IntUnaryCondition: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": {"op": (list(INT_UNARY_CONDITIONS.keys()),), "a": DEFAULT_INT} | |
| } | |
| RETURN_TYPES = ("BOOL",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/int" | |
| def op(self, op: str, a: int) -> tuple[bool]: | |
| return (INT_UNARY_CONDITIONS[op](a),) | |
| class IntBinaryOperation: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": { | |
| "op": (list(INT_BINARY_OPERATIONS.keys()),), | |
| "a": DEFAULT_INT, | |
| "b": DEFAULT_INT, | |
| } | |
| } | |
| RETURN_TYPES = ("INT",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/int" | |
| def op(self, op: str, a: int, b: int) -> tuple[int]: | |
| return (INT_BINARY_OPERATIONS[op](a, b),) | |
| class IntBinaryCondition: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": { | |
| "op": (list(INT_BINARY_CONDITIONS.keys()),), | |
| "a": DEFAULT_INT, | |
| "b": DEFAULT_INT, | |
| } | |
| } | |
| RETURN_TYPES = ("BOOL",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/int" | |
| def op(self, op: str, a: int, b: int) -> tuple[bool]: | |
| return (INT_BINARY_CONDITIONS[op](a, b),) | |
| NODE_CLASS_MAPPINGS = { | |
| "CM_IntUnaryOperation": IntUnaryOperation, | |
| "CM_IntUnaryCondition": IntUnaryCondition, | |
| "CM_IntBinaryOperation": IntBinaryOperation, | |
| "CM_IntBinaryCondition": IntBinaryCondition, | |
| } | |