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
File size: 1,559 Bytes
46dc982 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import { api } from "../../../scripts/api.js";
import { app } from "../../../scripts/app.js";
// Simple script that adds the current queue size to the window title
// Adds a favicon that changes color while active
app.registerExtension({
name: "pysssss.FaviconStatus",
async setup() {
let link = document.querySelector("link[rel~='icon']");
if (!link) {
link = document.createElement("link");
link.rel = "icon";
document.head.appendChild(link);
}
const getUrl = (active, user) => new URL(`assets/favicon${active ? "-active" : ""}${user ? ".user" : ""}.ico`, import.meta.url);
const testUrl = async (active) => {
const url = getUrl(active, true);
const r = await fetch(url, {
method: "HEAD",
});
if (r.status === 200) {
return url;
}
return getUrl(active, false);
};
const activeUrl = await testUrl(true);
const idleUrl = await testUrl(false);
let executing = false;
const update = () => (link.href = executing ? activeUrl : idleUrl);
for (const e of ["execution_start", "progress"]) {
api.addEventListener(e, () => {
executing = true;
update();
});
}
api.addEventListener("executing", ({ detail }) => {
// null will be sent when it's finished
executing = !!detail;
update();
});
api.addEventListener("status", ({ detail }) => {
let title = "ComfyUI";
if (detail && detail.exec_info.queue_remaining) {
title = `(${detail.exec_info.queue_remaining}) ${title}`;
}
document.title = title;
update();
executing = false;
});
update();
},
});
|