Instructions to use qwecja/ltx-ugc-bundle with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LTX.io
How to use qwecja/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 qwecja/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
| from .conditioning_loader import LTXVLoadConditioning | |
| from .conditioning_saver import LTXVSaveConditioning | |
| from .decoder_noise import DecoderNoise | |
| from .dynamic_conditioning import DynamicConditioning | |
| from .easy_samplers import ( | |
| LinearOverlapLatentTransition, | |
| LTXVBaseSampler, | |
| LTXVExtendSampler, | |
| LTXVInContextSampler, | |
| LTXVNormalizingSampler, | |
| ) | |
| from .gemma_api_conditioning import GemmaAPITextEncode | |
| from .gemma_encoder import LTXVGemmaCLIPModelLoader, LTXVGemmaEnhancePrompt | |
| from .guide import LTXVAddGuideAdvanced, LTXVAddGuideAdvancedAttention | |
| from .guiders import GuiderParametersNode, MultimodalGuiderNode | |
| from .hdr import LTXVHDRDecodePostprocess | |
| from .iclora import ( | |
| LTXAddVideoICLoRAGuide, | |
| LTXAddVideoICLoRAGuideAdvanced, | |
| LTXICLoRALoaderModelOnly, | |
| LTXVSetAudioRefTokens, | |
| ) | |
| from .latent_norm import ( | |
| LTXVAdainLatent, | |
| LTXVPerStepAdainPatcher, | |
| LTXVPerStepStatNormPatcher, | |
| LTXVStatNormLatent, | |
| ) | |
| from .latents import ( | |
| LTXVAddLatentGuide, | |
| LTXVImgToVideoConditionOnly, | |
| LTXVSelectLatents, | |
| LTXVSetVideoLatentNoiseMasks, | |
| ) | |
| from .looping_sampler import LTXVLoopingSampler, MultiPromptProvider | |
| from .low_vram_loaders import ( | |
| LowVRAMAudioVAELoader, | |
| LowVRAMCheckpointLoader, | |
| LowVRAMLatentUpscaleModelLoader, | |
| ) | |
| from .masks import LTXVPreprocessMasks | |
| from .nodes_registry import NODE_CLASS_MAPPINGS as RUNTIME_NODE_CLASS_MAPPINGS | |
| from .nodes_registry import ( | |
| NODE_DISPLAY_NAME_MAPPINGS as RUNTIME_NODE_DISPLAY_NAME_MAPPINGS, | |
| ) | |
| from .nodes_registry import NODES_DISPLAY_NAME_PREFIX, camel_case_to_spaces | |
| from .prompt_enhancer_nodes import LTXVPromptEnhancer, LTXVPromptEnhancerLoader | |
| from .pyramid_blending import LTXVLaplacianPyramidBlend | |
| from .q8_nodes import LTXVQ8LoraModelLoader, LTXVQ8Patch | |
| from .sparse_tracks import LTXVDrawTracks, LTXVSparseTrackEditor | |
| from .stg import ( | |
| LTXVApplySTG, | |
| STGAdvancedPresetsNode, | |
| STGGuiderAdvancedNode, | |
| STGGuiderNode, | |
| ) | |
| from .tiled_sampler import LTXVTiledSampler | |
| from .tiled_vae_decode import LTXVTiledVAEDecode | |
| from .tricks import NODE_CLASS_MAPPINGS as TRICKS_NODE_CLASS_MAPPINGS | |
| from .tricks import NODE_DISPLAY_NAME_MAPPINGS as TRICKS_NODE_DISPLAY_NAME_MAPPINGS | |
| from .utiltily_nodes import FloatToInt, ImageToCPU | |
| from .vae_patcher import LTXVPatcherVAE | |
| from .vanish_nodes import LTXVDilateVideoMask, LTXVInpaintPreprocess | |
| # Static node mappings, required for ComfyUI-Manager mapping to work | |
| NODE_CLASS_MAPPINGS = { | |
| "Set VAE Decoder Noise": DecoderNoise, | |
| "LTXVLinearOverlapLatentTransition": LinearOverlapLatentTransition, | |
| "LTXVAddGuideAdvanced": LTXVAddGuideAdvanced, | |
| "LTXVAddGuideAdvancedAttention": LTXVAddGuideAdvancedAttention, | |
| "LTXVAddLatentGuide": LTXVAddLatentGuide, | |
| "LTXVAdainLatent": LTXVAdainLatent, | |
| "LTXVImgToVideoConditionOnly": LTXVImgToVideoConditionOnly, | |
| "LTXVPerStepAdainPatcher": LTXVPerStepAdainPatcher, | |
| "LTXVApplySTG": LTXVApplySTG, | |
| "LTXVBaseSampler": LTXVBaseSampler, | |
| "LTXVInContextSampler": LTXVInContextSampler, | |
| "LTXVExtendSampler": LTXVExtendSampler, | |
| "LTXVNormalizingSampler": LTXVNormalizingSampler, | |
| "LTXVPreprocessMasks": LTXVPreprocessMasks, | |
| "LTXVPatcherVAE": LTXVPatcherVAE, | |
| "LTXVPromptEnhancer": LTXVPromptEnhancer, | |
| "LTXVPromptEnhancerLoader": LTXVPromptEnhancerLoader, | |
| "LTXQ8Patch": LTXVQ8Patch, | |
| "LTXVQ8LoraModelLoader": LTXVQ8LoraModelLoader, | |
| "LTXVSelectLatents": LTXVSelectLatents, | |
| "LTXVSetVideoLatentNoiseMasks": LTXVSetVideoLatentNoiseMasks, | |
| "LTXVTiledSampler": LTXVTiledSampler, | |
| "LTXVLoopingSampler": LTXVLoopingSampler, | |
| "LTXVTiledVAEDecode": LTXVTiledVAEDecode, | |
| "MultimodalGuider": MultimodalGuiderNode, | |
| "GuiderParameters": GuiderParametersNode, | |
| "STGAdvancedPresets": STGAdvancedPresetsNode, | |
| "STGGuiderAdvanced": STGGuiderAdvancedNode, | |
| "STGGuiderNode": STGGuiderNode, | |
| "LTXVMultiPromptProvider": MultiPromptProvider, | |
| "ImageToCPU": ImageToCPU, | |
| "LTXFloatToInt": FloatToInt, | |
| "LTXVStatNormLatent": LTXVStatNormLatent, | |
| "LTXVPerStepStatNormPatcher": LTXVPerStepStatNormPatcher, | |
| "LTXVGemmaCLIPModelLoader": LTXVGemmaCLIPModelLoader, | |
| "LTXVGemmaEnhancePrompt": LTXVGemmaEnhancePrompt, | |
| "GemmaAPITextEncode": GemmaAPITextEncode, | |
| "DynamicConditioning": DynamicConditioning, | |
| "LowVRAMCheckpointLoader": LowVRAMCheckpointLoader, | |
| "LowVRAMAudioVAELoader": LowVRAMAudioVAELoader, | |
| "LowVRAMLatentUpscaleModelLoader": LowVRAMLatentUpscaleModelLoader, | |
| "LTXAddVideoICLoRAGuide": LTXAddVideoICLoRAGuide, | |
| "LTXAddVideoICLoRAGuideAdvanced": LTXAddVideoICLoRAGuideAdvanced, | |
| "LTXICLoRALoaderModelOnly": LTXICLoRALoaderModelOnly, | |
| "LTXVSetAudioRefTokens": LTXVSetAudioRefTokens, | |
| "LTXVLoadConditioning": LTXVLoadConditioning, | |
| "LTXVSaveConditioning": LTXVSaveConditioning, | |
| "LTXVDrawTracks": LTXVDrawTracks, | |
| "LTXVSparseTrackEditor": LTXVSparseTrackEditor, | |
| "LTXVDilateVideoMask": LTXVDilateVideoMask, | |
| "LTXVInpaintPreprocess": LTXVInpaintPreprocess, | |
| "LTXVLaplacianPyramidBlend": LTXVLaplacianPyramidBlend, | |
| "LTXVHDRDecodePostprocess": LTXVHDRDecodePostprocess, | |
| } | |
| # Consistent display names between static and dynamic node mappings in nodes_registry.py, | |
| # to prevent ComfyUI initializing them with default display names. | |
| NODE_DISPLAY_NAME_MAPPINGS = { | |
| name: f"{NODES_DISPLAY_NAME_PREFIX} {camel_case_to_spaces(name)}" | |
| for name in NODE_CLASS_MAPPINGS.keys() | |
| } | |
| # Merge the node mappings from tricks into the main mappings | |
| NODE_CLASS_MAPPINGS.update(TRICKS_NODE_CLASS_MAPPINGS) | |
| NODE_DISPLAY_NAME_MAPPINGS.update(TRICKS_NODE_DISPLAY_NAME_MAPPINGS) | |
| # Update with runtime mappings (these will override static mappings if there are any differences) | |
| NODE_CLASS_MAPPINGS.update(RUNTIME_NODE_CLASS_MAPPINGS) | |
| NODE_DISPLAY_NAME_MAPPINGS.update(RUNTIME_NODE_DISPLAY_NAME_MAPPINGS) | |
| WEB_DIRECTORY = "./web" | |
| # Export so that ComfyUI can pick them up. | |
| __all__ = [ | |
| "NODE_CLASS_MAPPINGS", | |
| "NODE_DISPLAY_NAME_MAPPINGS", | |
| "WEB_DIRECTORY", | |
| ] | |