Skip to content

v1.2.64-minimax-h3-video-lora-training

Latest

Choose a tag to compare

@imprsnst imprsnst released this 07 Aug 11:01

MiniMax H3 LoRA training, now on video clips locally

image H3 LoRAs can now train on short video clips, so the adapter learns motion instead of just appearance.
  • Set Clip length (seconds) in the Trainer's Adjust panel to switch a run from stills to clips
  • Leave it empty and nothing changes: stills work exactly as before
  • Both write the same adapter file, and one dataset can hold images and clips together
  • Clips shorter than 22 frames (0.92s at 24fps) are skipped and named in the log, not fatal
  • Works on all four H3 nodes, including Reference to Video

What it costs

Measured, not projected.

Card Images, 512px Clips, 512px
L40S (46GB) 20.6GB · 0.63s/step (Should work)
RTX PRO 4500 Blackwell (32GB) 20.49GB · 0.72s/step 20.9GB · 3.01s/step
L4 (24GB) 20.55GB · 1.81s/step 20.4GB · not timed
Tesla T4 (16GB) 12.7GB · 16.2s/step not measured(Should work)
  • Clips cost about 4x per step and almost nothing extra in VRAM
  • The caption pass sets the peak, which is why resolution and clip length barely move it
  • A 500-step clip run is roughly 27 minutes of training on a 32GB card, plus about 7 minutes to
    load the checkpoint
  • Caching scales with dataset size, not step count: 173 clips takes about 20 minutes

On 16GB cards. Stills train at a 12.7GB peak, unchanged from v1.2.63.

Try it on a public dataset

The first clip LoRA was trained on
trojblue/test-HunyuanVideo-pixelart-videos,
173 short anime pixel art clips with captions.

hf download trojblue/test-HunyuanVideo-pixelart-videos \
  --repo-type dataset --local-dir ~/dataset
  • Captions ship in metadata.jsonl, so convert them to NNNN.txt sidecars first
  • Point Load from path at the train folder and the sidecars are picked up automatically
  • 6 of the 173 clips fall under the frame floor and are skipped, leaving 167 to train on
  • 500 steps at 512px with a 1 second clip length produced a usable adapter

Trainer quality of life

  • Load from path: import a whole folder without a file picker, caption sidecars included
  • Clips render in the dataset grid, the Load Dataset node and on canvas, instead of drawing black
  • Load Dataset fills with as many thumbnails as fit, rather than a fixed 6, and grows as you
    resize the node
  • Hover to play, double click to open on any dataset tile
  • Copy logs, all of them or a single line, straight from the Train LoRA node, with text
    selection working inside the node
  • Precache reports progress item by item, so a long cache no longer looks like a hang
  • The log keeps 3000 lines instead of 400, so a failed run's setup lines survive to be copied

Fixes

  • Your open project survives a page refresh and a Core restart. It used to live only in memory, so a
    reload dropped you on the launcher and a Core restart left an open tab failing every call with
    "No project is open"
  • One clip below the frame floor no longer throws away a 20 minute precache. Too-short clips are
    skipped individually and the run continues
  • A checkpoint the kernel cannot memory map is now refused in seconds with the exact fix in the
    message, rather than after the precache with a raw Cannot allocate memory (12) that reads like a
    corrupt download

Upgrading

The app reads its version from Core's installed metadata, so reinstall or it keeps reporting the old
one:

cd core && uv pip install --python .venv/bin/python -e . --no-deps

If you hit unable to mmap ... Cannot allocate memory on a machine with less RAM than the
checkpoint, the new preflight will tell you this:

sudo sysctl -w vm.overcommit_memory=1
# to keep it across reboots
echo 'vm.overcommit_memory = 1' | sudo tee /etc/sysctl.d/99-inline-studio.conf

Links

What's Changed

  • cuda version check based on hardware by @imprsnst in #29
  • Minimax H3 lora training with clip dataset by @imprsnst in #30

Full Changelog: v1.2.63...v1.2.64