This is a complete re-haul of the dataset from scratch. Triggerword: PENISLORA
Donate to my kofi and I can train an i2v optimized version.
Dataset
I took out all the images and this was trained purely on video. Due to the issues we had with motion before. Next I went through the dataset and anything low resolution (640x) I put into its own bucket group because training them on higher resolution gave blurry penis heads. Also because 9:16 videos train weird, I converted all those to cropped 4:3 or 16:9 with black bars. This left me with 4 groups: HD 16:9 / 4:3 and LOW Res 16:9 / 4:3 (1280x704, 1088x832 on HD, and 640x360, 640x480 on Low res). The newly added data was mostly 121 frame clips. So a majority of our data is trained on high resolution and longer. I created a whole new tool to both trim clips and crop them. And I used mradermacher's Qwen3.5-27B-heretic-GGUF with my captioning tool to caption the new clips. And I am blown away by how good this was at captioning NSFW. Gemini is still better but it can only do SFW dataset captioning. I recommend you check this model out.
Training
Trained on Musubi Fork by Akane on ltx2.3 branch. So I had run this for like 5 days straight tweaking the dataset as I went. And then suddenly LTX 2.3 dropped. So I scrapped the LTX 2.0 working version and started from 0 but with the ideal settings. I accidentally trained the audio on LTX2.0 version and it sounds great despite not being captioned. So I might do V2 on LTX2.3 with sound next so understand V1 is not trained on audio. It took around 24 hours of straight training to reach 17.5K steps at 6s/it. I think maybe I should've trained lower resolution to speed things up, but the result was good. We got detail on the penis head around 15K steps in. The shaft and motion were pretty solid from 4K steps in. Around 17.5K we started seeing raising in avg loss and worse result so I stuck with 17K, though the 16.5K checkpoint was also good.
Prompting
Same as old versions. Use PENISLORA trigger at front. The word for penis is "Penis". Not trained on flaccid penis and most penis in the dataset are circumcised. You can also prompt "Penis shown from the front" or "penis shown from the side". "Blow job" is captioned and as is "deepthroat" but there is not a ton of data so YMMV. I think maybe cum is captioned partially but I tried to remove this from the dataset as I think it will need a separate lora for that, but give it a try (if its still in the dataset it would be "cum shoots from the penis"). If penis has no action you can state "the man's penis is exposed". Use "the man strokes his penis" or "the woman strokes the man's penis" for jerking or hand jobs.
Known Issues
Sometimes penis head doesn't come out right, especially with showing from odd angles. Try different seeds. The penis may be super bouncy, this was due to some poor captioning on data where the penis was not being stroked or sucked. I think easy to fix in v2. Nipples may not be great. Sometimes breasts are weird. Try to use a different lora to fix that. You probably will get random penis on women if they're nude. Maybe try a different lora to fix that. Will try to fix in future versions these problems. It may be a bit overcooked. Let me know, I can try to give earlier checkpoints.
Description
This is a complete re-haul of the dataset from scratch.
Dataset
I took out all the images and this was trained purely on video. Due to the issues we had with motion before. Next I went through the dataset and anything low resolution (640x) I put into its own bucket group because training them on higher resolution gave blurry penis heads. Also because 9:16 videos train weird, I converted all those to cropped 4:3 or 16:9 with black bars. This left me with 4 groups: HD 16:9 / 4:3 and LOW Res 16:9 / 4:3 (1280x704, 1088x832 on HD, and 640x360, 640x480 on Low res). The newly added data was mostly 121 frame clips and total 215 clips. So a majority of our data is trained on high resolution and longer. I created a whole new tool to both trim clips and crop them. And I used mradermacher's Qwen3.5-27B-heretic-GGUF with my captioning tool to caption the new clips. And I am blown away by how good this was at captioning NSFW. Gemini is still better but it can only do SFW dataset captioning. I recommend you check this model out.
Training
Trained on Musubi Fork by Akane on ltx2.3 branch. So I had run this for like 5 days straight tweaking the dataset as I went. And then suddenly LTX 2.3 dropped. So I scrapped the LTX 2.0 working version and started from 0 but with the ideal settings. I accidentally trained the audio on LTX2.0 version and it sounds great despite not being captioned. So I might do V2 on LTX2.3 with sound next so understand V1 is not trained on audio. It took around 24 hours of straight training to reach 17.5K steps at 6s/it. I think maybe I should've trained lower resolution to speed things up, but the result was good. We got detail on the penis head around 15K steps in. The shaft and motion were pretty solid from 4K steps in. Around 17.5K we started seeing raising in avg loss and worse result so I stuck with 17K, though the 16.5K checkpoint was also good.
Prompting
Same as old versions. Use PENISLORA trigger at front. The word for penis is "Penis". Not trained on flaccid penis and most penis in the dataset are circumcised. You can also prompt "Penis shown from the front" or "penis shown from the side". "Blow job" is captioned and as is "deepthroat" but there is not a ton of data so YMMV. I think maybe cum is captioned partially but I tried to remove this from the dataset as I think it will need a separate lora for that, but give it a try (if its still in the dataset it would be "cum shoots from the penis"). If penis has no action you can state "the man's penis is exposed". Use "the man strokes his penis" or "the woman strokes the man's penis" for jerking or hand jobs.
Known Issues
Sometimes penis head doesn't come out right, especially with showing from odd angles. Try different seeds. The penis may be super bouncy, this was due to some poor captioning on data where the penis was not being stroked or sucked. I think easy to fix in v2. Nipples may not be great. Sometimes breasts are weird. Try to use a different lora to fix that. You probably will get random penis on women if they're nude. Maybe try a different lora to fix that. Will try to fix in future versions these problems. It may be a bit overcooked. Let me know, I can try to give earlier checkpoints.
FAQ
Comments (12)
Should this be used at full strength? Im looking for LTX2.3 Handjob Lora's so trying this out as its mentioned in the dataset.
Any chance you can do one for small breasts like A cup or something? I've noticed LTX 2, and basically all existing lora, seem to cause boobs no matter what to massively inflate. Even the better nudity lora fails to properly handle its small sizes. Hoping someone can make a working lora.
okay the version for 2.3 looks really good now! You definately can see the jump in quality!
what should i write for handjob?
Best male-focused lora for LTX2.3 so far.
I updated to the newer example workflow from ltx2.3 and its x10 better. Please give it a try. Its in my example workflows in the suggested resources section.
why the output always become black and white style?
I just want to congratulate lora's like this, it's ambitious to try and push the limited with models like ltx 2.3, and even though these are in beta form and ported over from 2.0. It's still far more boundary pushing to be aiming so high, rather than the "easy wan 2.2 path". Ltx 2.3 is capable of some crazy stuff wan 2.2 couldn't imagine it it's widest dreams.
This Lora works awesome aso for LTX 2.0.
For i2v and t2v works very well. I love it. Thanks Bro for ur hard work and that u share us ur great Lora to us.
Great work!
very mishaped when using 9:16 and t2v
May want to correct the base model to 2.3
Details
Files
plora_2.3_V6-step00016500.comfy.safetensors
Mirrors
plora_2.3_V6-step00016500.comfy.safetensors
plora_2.3_V6-step00016500.comfy.safetensors
plora_2.3_V6-step00016500.comfy.safetensors
plora_2.3_V6-step00016500.comfy.safetensors
plora_2.3_V6-step00016500.comfy.safetensors
plora_2.3_V6-step00016500.comfy.safetensors
plora_2.3_V6-step00016500.comfy.safetensors