Nodes/ComfyUI-fal-API/LTX Video LoRA Trainer (fal)
ComfyUI Node

LTX Video LoRA Trainer (fal)

Train a video LoRA without a local GPU

By gokayfem·Created 2 years ago·Updated a day ago· 203
LTX Video LoRA Trainer (fal)
    • lora_file_url
    training_data_url
    rank128
    number_of_steps1000
    number_of_frames81
    frame_rate25
    resolutionmedium
    aspect_ratio1:1
    learning_rate0.00
    trigger_phrase
    auto_scale_inputfalse
    split_input_into_scenestrue
    split_input_duration_threshold30.00
    validation_negative_promptblurry, low quality, bad quality, out of focus
    validation_number_of_frames81
    validation_resolutionhigh
    validation_aspect_ratio1:1
    validation_reversefalse

    Training a video LoRA locally is a real commitment - a big model, a lot of VRAM, and hours of your GPU pinned. This node hands that whole job to fal: point it at a dataset, set a few knobs, and it trains an LTX Video LoRA on fal's hardware, returning a URL to the finished .safetensors. LTX is the sensible target for this because it's the speed tier of local video - Lightricks built it to draft in seconds where Wan takes minutes - so LTX LoRAs are cheap to train and fast to use afterward. The quality sits a tier below Wan, which is the trade you're accepting for the speed.

    What it actually does

    You give it a training_data_url - a ZIP of your clips - and fal runs the LTX trainer remotely, then hands back a lora_file_url. Nothing trains on your machine; you pay for the GPU time on fal. The pack makes the dataset side painless too: its FAL/Utils nodes turn a folder of clips (or a video's frames) into the ZIP URL this node wants, so the full pipeline is load clips → build ZIP → this node → LoRA without leaving ComfyUI.

    The inputs that matter

    • training_data_url (required): the ZIP of training clips. Build it with the pack's dataset utilities and paste the URL here.
    • trigger_phrase: the word you'll put in prompts to invoke the LoRA. Use a rare token that isn't a real word (ltxstyl3, ohwx) so it doesn't collide with normal vocabulary.
    • rank (8–128, default 128): capacity. Higher captures more but bloats the file and risks overfitting; a style or single subject rarely needs the full 128.
    • number_of_steps (default 1000): how long it trains. More isn't automatically better - overcooking is real.
    • learning_rate (default 0.0002): leave it unless you know why you're changing it.

    There's a stack of number_of_frames, frame_rate, resolution, aspect_ratio settings plus a full set of validation_* options that generate preview clips during training. The single output is a STRING, the URL to your trained LoRA - download it and drop it in an LTX workflow to use.

    Installing it

    ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/gokayfem/ComfyUI-fal-API.git
    cd ComfyUI-fal-API
    pip install -r requirements.txt
    

    Restart ComfyUI. No model in models/; you need fal-client and a fal API key in config.ini under [API], or the FAL_KEY env var.

    Where people get burned

    The dataset is where LoRAs live or die, and that's on you, not the node - clean, consistent clips beat a big messy pile every time. If your training_data_url isn't reachable by fal, training fails immediately; the pack's own ZIP-upload utilities are the reliable way to produce a URL fal can actually fetch. Note the SDXL rank tables don't port here - video LoRAs behave differently, and rank 128 as a default is a ceiling, not a target.

    The bigger gotcha is expectations: a training run is a chunky, single billable job - you can't cache your way out of it the way you can with a repeated generation, so get the dataset and settings right before you submit. If it errors, read fal's message; the pack passes the real text through, and it usually names the parameter or the unreachable URL.

    CategoryFAL/Training

    Inputs (17)

    NameTypeDefaultDescription
    training_data_urlSTRING
    rankCOMBO1285 options: 8, 16, 32, 64, 128
    number_of_stepsINT1000100–10000
    number_of_framesINT811–1000
    frame_rateINT251–60
    resolutionCOMBOmedium3 options: low, medium, high
    aspect_ratioCOMBO1:13 options: 16:9, 1:1, 9:16
    learning_rateFLOAT0.000.00001–0.01
    trigger_phraseoptSTRING
    auto_scale_inputoptBOOLEANfalse
    split_input_into_scenesoptBOOLEANtrue
    split_input_duration_thresholdoptFLOAT30.001–300
    validation_negative_promptoptSTRINGblurry, low quality, bad quality, out of focus
    validation_number_of_framesoptINT811–1000
    validation_resolutionoptCOMBOhigh3 options: low, medium, high
    validation_aspect_ratiooptCOMBO1:13 options: 16:9, 1:1, 9:16
    validation_reverseoptBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    lora_file_urlSTRING