0

Training finished, but Loras don't work

@moracposted 8/17/2026, 3:45:36 PM·0 replies

What happened?

I've attempted to train numerous LTX Character LoRAs both with and without audio in Phosphene 4.5.0. The training completes and a lora file is generated, but videos generated with those Loras don't do anything. In fact using the same seed and prompt generates the same exact video with or without the lora. The same thing happens in other LTX 2.5 generation programs. I've tried quick training and long (5000) training and both have the same problem.

I can download Loras from CivitAI and they work fine both in Phosphene and other LTX 2.5 generation programs, so the problem is with the training.

Steps to reproduce

  1. Add images and train a Character LoRA.
  2. Try to use said Lora

Your system (OS / GPU / RAM / VRAM / etc.)
MacOS 26.1, M4 Mac Studio with 128 GB RAM.

Logs / full error output

There are no errors, be here's the training log from a simple 16 image training with no audio.

[10:14:59] caffeinate active — Mac won't idle-sleep while queue is running
[10:14:59] [train] profile: Full training
[10:14:59] [train] LoRA target modules: to_q, to_k, to_v, to_out
[10:14:59] [train] using user-provided captions: 16 / 16 images
[10:14:59] [train] trn-20260817-1013-01 — preset=quick trigger='sywjdwfszw' steps=480 rank=8 images=16 → /Users/user/pinokio/api/phosphene.git/mlx_models/loras/sywjdwfszw_v2.safetensors
[10:14:59] [train] spec: /Users/user/pinokio/api/phosphene.git/state/train_character/trn-20260817-1013-01/spec.json
[10:14:59] [train] $ /Users/user/pinokio/api/phosphene.git/scripts/lora_lab_run.sh python -m lora_lab.train_character --spec /Users/user/pinokio/api/phosphene.git/state/train_character/trn-20260817-1013-01/spec.json --job-id trn-20260817-1013-01
[10:14:59] [train] {"event":"start","job_id":"trn-20260817-1013-01"}
[10:14:59] [train]
[10:14:59] [train] {"event":"plan","preset":"quick","rank":8,"alpha":8,"steps":480,"lr":0.0001,"resolution":512,"caption_strategy":"class_word","estimated_wall_s":986,"image_count":16}
[10:14:59] [train] {"event":"crop_start","total":16,"crop_strategy":"center","width":512,"height":512}
[10:14:59] [train] {"event":"crop_progress","done":1,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_001.png"}
[10:14:59] [train] {"event":"crop_progress","done":2,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_002.png"}
[10:14:59] [train] {"event":"crop_progress","done":3,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_003.png"}
[10:14:59] [train] {"event":"crop_progress","done":4,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_004.png"}
[10:14:59] [train] {"event":"crop_progress","done":5,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_005.png"}
[10:14:59] [train] {"event":"crop_progress","done":6,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_006.png"}
[10:14:59] [train] {"event":"crop_progress","done":7,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_007.png"}
[10:14:59] [train] {"event":"crop_progress","done":8,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_008.png"}
[10:15:00] [train] {"event":"crop_progress","done":9,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_009.png"}
[10:15:00] [train] {"event":"crop_progress","done":10,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_010.png"}
[10:15:00] [train] {"event":"crop_progress","done":11,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_011.png"}
[10:15:00] [train] {"event":"crop_progress","done":12,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_012.png"}
[10:15:00] [train] {"event":"crop_progress","done":13,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_013.png"}
[10:15:00] [train] {"event":"crop_progress","done":14,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_014.png"}
[10:15:00] [train] {"event":"crop_progress","done":15,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_015.png"}
[10:15:00] [train] {"event":"crop_progress","done":16,"total":16,"path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed/char_016.png"}
[10:15:00] [train] {"event":"crop_done"}
[10:15:00] [train] {"event":"preprocess_start","total":16,"width":512,"height":512}
[10:15:00] [train] found 16 images in /Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/images_renamed
[10:15:00] [train] Phase 1: encoding text captions (Gemma)...
[10:15:03] [train]   [1/16] Encoding: '[VISUAL]: sywjdwfszw, The figure is ...'
[10:15:06] [train]   [2/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:09] [train]   [3/16] Encoding: '[VISUAL]: sywjdwfszw, The figure is ...'
[10:15:11] [train]   [4/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:14] [train]   [5/16] Encoding: '[VISUAL]: sywjdwfszw, The character stands ...'
[10:15:16] [train]   [6/16] Encoding: '[VISUAL]: sywjdwfszw, The figure leans ...'
[10:15:19] [train]   [7/16] Encoding: '[VISUAL]: sywjdwfszw, The figure stands ..'
[10:15:22] [train]   [8/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:24] [train]   [9/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:27] [train]   [10/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:29] [train]   [11/16] Encoding: '[VISUAL]: sywjdwfszw, The figure is ...'
[10:15:32] [train]   [12/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:35] [train]   [13/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:37] [train]   [14/16] Encoding: '[VISUAL]: sywjdwfszw, The character is ...'
[10:15:40] [train]   [15/16] Encoding: '[VISUAL]: sywjdwfszw, The character stands ...'
[10:15:43] [train]   [16/16] Encoding: '[VISUAL]: sywjdwfszw, The figure stands in a shadowed doorway, arms outstretched ...'
[10:15:45] [train]   Text encoding complete.
[10:15:45] [train] Phase 2: encoding image latents at 512x512 (1 frame each, crop_anchor=center)...
[10:15:45] [train]   target latent shape per image: [128, 1, 16, 16]
[10:15:45] [train]   [1/16] encoding: char_001.png
[10:15:45] [train]   [2/16] encoding: char_002.png
[10:15:46] [train]   [3/16] encoding: char_003.png
[10:15:46] [train]   [4/16] encoding: char_004.png
[10:15:46] [train]   [5/16] encoding: char_005.png
[10:15:46] [train]   [6/16] encoding: char_006.png
[10:15:46] [train]   [7/16] encoding: char_007.png
[10:15:46] [train]   [8/16] encoding: char_008.png
[10:15:46] [train]   [9/16] encoding: char_009.png
[10:15:46] [train]   [10/16] encoding: char_010.png
[10:15:46] [train]   [11/16] encoding: char_011.png
[10:15:47] [train]   [12/16] encoding: char_012.png
[10:15:47] [train]   [13/16] encoding: char_013.png
[10:15:47] [train]   [14/16] encoding: char_014.png
[10:15:47] [train]   [15/16] encoding: char_015.png
[10:15:47] [train]   [16/16] encoding: char_016.png
[10:15:47] [train]   image encoding complete
[10:15:47] [train] preprocessing complete. 16 samples written to /Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/training_data/.precomputed
[10:15:47] [train]   latents:    /Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/training_data/.precomputed/latents
[10:15:47] [train]   conditions: /Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/training_data/.precomputed/conditions
[10:15:47] [train] {"event":"preprocess_progress","done":16,"total":16}
[10:15:47] [train] {"event":"preprocess_done"}
[10:15:47] [train] {"event":"train_start","total_steps":480,"estimated_wall_s":986}
[10:15:47] [train]                               Training Configuration
[10:15:47] [train] ╭──────────────────────┬─────────────────────────────────────────────────────────╮
[10:15:47] [train] │ Model                │                                                         │
[10:15:47] [train] │   Base               │ /Users/user/pinokio/api/phosphene.git/mlx_mo... │
[10:15:47] [train] │   Text Encoder       │ /Users/user/pinokio/api/phosphene.git/mlx_mo... │
[10:15:47] [train] │   Training Mode      │ LORA                                                    │
[10:15:47] [train] │   Load Checkpoint    │ --                                                      │
[10:15:47] [train] │                      │                                                         │
[10:15:47] [train] │ LoRA                 │                                                         │
[10:15:47] [train] │   Rank / Alpha       │ 8 / 8                                                   │
[10:15:47] [train] │   Dropout            │ 0.0                                                     │
[10:15:47] [train] │   Target Modules     │ to_q, to_k, to_v, to_out                                │
[10:15:47] [train] │                      │                                                         │
[10:15:47] [train] │ Strategy             │                                                         │
[10:15:47] [train] │   Name               │ text_to_video                                           │
[10:15:47] [train] │   Audio              │ no                                                      │
[10:15:47] [train] │                      │                                                         │
[10:15:47] [train] │ Optimization         │                                                         │
[10:15:47] [train] │   Steps              │ 480                                                     │
[10:15:47] [train] │   Learning Rate      │ 1.00e-04                                                │
[10:15:47] [train] │   Batch Size         │ 1                                                       │
[10:15:47] [train] │   Grad Accumulation  │ 1                                                       │
[10:15:47] [train] │   Optimizer          │ adamw                                                   │
[10:15:47] [train] │   Scheduler          │ constant                                                │
[10:15:47] [train] │   Max Grad Norm      │ 1.0                                                     │
[10:15:47] [train] │   Grad Checkpointing │ no                                                      │
[10:15:47] [train] │                      │                                                         │
[10:15:47] [train] │ Validation           │                                                         │
[10:15:47] [train] │   Prompts            │ --                                                      │
[10:15:47] [train] │   Interval           │ Disabled                                                │
[10:15:47] [train] │   Video Dims         │ 960x544, 97 frames                                      │
[10:15:47] [train] │   Frame Rate         │ 25.0 fps                                                │
[10:15:47] [train] │   Inference Steps    │ 50                                                      │
[10:15:47] [train] │   CFG Scale          │ 4.0                                                     │
[10:15:47] [train] │   STG                │ scale=1.0; blocks=29; mode=stg_av                       │
[10:15:47] [train] │   Seed               │ 42                                                      │
[10:15:47] [train] │                      │                                                         │
[10:15:47] [train] │ Data & Output        │                                                         │
[10:15:47] [train] │   Dataset            │ /Users/user/pinokio/drive/drives/peers/d1785... │
[10:15:47] [train] │   Dataloader Workers │ 0                                                       │
[10:15:47] [train] │   Output Dir         │ /Users/user/pinokio/drive/drives/peers/d1785... │
[10:15:47] [train] │   Seed               │ 42                                                      │
[10:15:47] [train] │                      │                                                         │
[10:15:47] [train] │ Integrations         │                                                         │
[10:15:47] [train] │   Checkpoints        │ Every 96 steps (keep 2)                                 │
[10:15:47] [train] │   W&B                │ Disabled                                                │
[10:15:47] [train] │   HF Hub             │ Disabled                                                │
[10:15:47] [train] ╰──────────────────────┴─────────────────────────────────────────────────────────╯
[10:15:47] [train] 2026-08-17 10:15:47,782 INFO lora_lab.train | image-only override: first_frame_conditioning_p=0.0, with_audio=False
[10:15:47] [train] 2026-08-17 10:15:47,782 - ltx_trainer_mlx.model_loader - INFO - Loading LTX-2 model from /Users/user/pinokio/api/phosphene.git/mlx_models/ltx-2.3-mlx-q4
[10:15:47] [train] 2026-08-17 10:15:47,782 INFO lora_lab.train | training-side override: using full-precision transformer-dev.safetensors (20.6 GB) from /Users/user/pinokio/api/phosphene.git/mlx_models/ltx-2.3-mlx-q8 (not distilled)
[10:15:47] [train] 2026-08-17 10:15:47,782 - ltx_trainer_mlx.model_loader - INFO - Loading transformer from transformer-dev.safetensors
[10:15:48] [train] 2026-08-17 10:15:48,004 INFO lora_lab.train | lora target filter: kept 576 video targets, dropped 576 audio targets (audio_attn / audio_ff)
[10:15:48] [train] Progress bars disabled. Intermediate status messages will be logged instead.
[10:17:36] [train] step 50/480 loss=0.702
[10:17:36] [train] step 50/480 loss=0.702
[10:19:23] [train] step 100/480 loss=0.6494
[10:19:23] [train] step 100/480 loss=0.6494
[10:21:09] [train] step 150/480 loss=1.621
[10:21:09] [train] step 150/480 loss=1.621
[10:22:55] [train] step 200/480 loss=0.7596
[10:22:55] [train] step 200/480 loss=0.7596
[10:24:42] [train] step 250/480 loss=1.0933
[10:24:42] [train] step 250/480 loss=1.0933
[10:26:28] [train] step 300/480 loss=1.1618
[10:26:28] [train] step 300/480 loss=1.1618
[10:28:14] [train] step 350/480 loss=0.8034
[10:28:14] [train] step 350/480 loss=0.8034
[10:30:00] [train] step 400/480 loss=0.5522
[10:30:00] [train] step 400/480 loss=0.5522
[10:31:45] [train] step 450/480 loss=0.5115
[10:31:45] [train] step 450/480 loss=0.5115
[10:32:48] [train] step 480/480 loss=1.0145
[10:32:48] [train] step 480/480 loss=1.0145
[10:32:48] [train] {"event":"train_done","checkpoint":"/Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/train_output/checkpoints/lora_weights_step_00480.safetensors"}
[10:32:48] [train] checkpoint → /Users/user/pinokio/drive/drives/peers/d1785982009947/state/train_character/trn-20260817-1013-01/train_output/checkpoints/lora_weights_step_00480.safetensors
[10:32:48] [train] {"event":"sidecar_written","path":"/Users/user/pinokio/drive/drives/peers/d1785982009947/mlx_models/loras/sywjdwfszw_v2.safetensors.json"}
[10:32:48] [train] done · ?
[10:32:49] [train] avatar copied → /Users/user/pinokio/api/phosphene.git/mlx_models/characters/sywjdwfszw/avatar.png
[10:32:49] [train] done: /Users/user/pinokio/api/phosphene.git/mlx_models/loras/sywjdwfszw_v2.safetensors (elapsed 1069.77s)
Replies (0)
Up to 10 files, 25MB each. Images are optimized; GIFs -> MP4; videos 720p (max 120s).
Training finished, but Loras don't work · Pinokio