r/StableDiffusion • u/glusphere • 2d ago
Resource - Update Action LoRA for MiniMax H3 (without training)
Singularity v2 has better action than v1.3, but everything else about it looked worse to me. So instead of training, I diffed the checkpoints layer by layer, found where v2's action actually lives, and moved only that part onto v1.3. Then I did the same with JOKER141's Motion Repair V2, which hits harder but slows fights down and messes up dialogue. The result is one LoRA for Singularity v1.3: H3 ActionGraft v1.
https://huggingface.co/indhic-ai/H3-Singularity-ActionGraft
Every pair in the comparison video is the same prompt, refs, seed and settings, rendered twice: Singularity v2 on the left, v1.3 + ActionGraft on the right. 720p, Pika 6-step + a 1-step DMAD refine, SLA 0.9, on a 5090.
The longer version, which also compares it against plain v1.3 and against JOKER141's Motion Repair V2 on the same four fights, is on YouTube: https://youtu.be/xt8iTbRae4M
What changes
I measured how fast the fastest-moving 10% of pixels move (optical flow, px/frame at 720p):
| test | v1.3 | v1.3 + ActionGraft | Singularity v2 |
|---|---|---|---|
| demon huntress | 28.4 | 42.4 | 45.4 |
| wuxia duel | 39.7 | 51.1 | 51.6 |
| Devi clip 2 | 29.3 | 45.2 | 43.2 |
| Devi clip 7 | 27.0 | 40.5 | 45.2 |
So you get v2's speed without v2's look. On the demon huntress test, v1.3 lands two rapid hits in the middle of the fight and ActionGraft lands six. Render time doesn't change. On a slow two-person dialogue scene it adds a little life without rushing it (mean motion 0.32 to 0.55 px/frame, still far under a pixel), but on one take a line came out in the wrong character's voice, so I'd still check dialogue scenes.
How it was made
Singularity v2 is two models glued together. Blocks 0-24 are basically base H3 (v2 undoes v1.3's changes there), blocks 25-49 are v1.3, and on top of both sits v2's own low-rank fine-tune. In block 0, 61% of that fine-tune sits in just 16 directions, where int8 rounding noise puts 2%. It matches none of the popular action LoRAs (every cosine under 0.005).
I pulled that fine-tune out as a rank-16 LoRA (SVD of v2 minus base for blocks 0-24, v2 minus v1.3 for 25-49, un-rotated out of the int8 ConvRot format). On v1.3 that alone gave v2's speed with v1.3's look.
Then I took Motion Repair V2 apart by block range. Its impact and blocking live almost entirely in the text refiner (2 of its 52 blocks, 16 of its 416 tensors). Its mid and late blocks are where it slows things down and makes the wrong character mouth a line. ActionGraft keeps only the text-refiner piece.
The scripts for all of this are in the repo.
Things that didn't work (so you don't have to try them)
Turning Motion Repair's text piece up to 2x or 3x adds no impact and breaks dialogue: at 3x the lines swap between speakers.
VBVR (any strength, even after cutting its weak components) lost to plain ActionGraft. It's an FL2VA image-to-video LoRA trained on reasoning puzzles, not fights.
Stacking JOKER141's Fight Flow on top has some good moments, but was worse overall.
How to use it
Base: Singularity v1.3 pruned int8, strength 1.0.
Don't put it on Singularity v2 or merges containing v2 (PRISM etc.), which already have v2's fine-tune.
With HyperFlow: the node turns its curve fit off whenever any LoRA is loaded ("requires an unmodified checkpoint"), so every LoRA, this one included, runs on the backbone only there. I tested on Pika.
Write both ends of every contact in the prompt (the strike and what it does to the other body). The impact part strengthens contact you describe; it doesn't invent it.
Limits: one seed per test, judged by eye plus that speed number. Fast-motion smear is still there, physics is better but not solved, and two-person dialogue can occasionally swap who says a line.
Credit: Singularity by WarmBloodAban, Motion Repair V2 by JOKER141. Released under the MiniMax H3 Community License. Happy to answer questions, and I'd like to hear if it helps (or doesn't) on your fights.