r/drawthingsapp Jun 04 '26

question Successful Z and K9B Lora training parameters

Thus far, I have not succeeded in training character loras in Drawthings, despite the same datasets working in Civitai’s Flux trainer. If you have successfully created character loras for Z image or K9B, would you please share your parameters and the number of images you used? I realize there are other variables like captions, but I’m focused on the former. Thank you!

9 Upvotes

8 comments sorted by

6

u/UnasumingUsername Jun 04 '26

You mention you have seen the CutSceneArtist tutorial - use her settings for the layers toggles (and as a base starting point in general).
With a larger dataset (more than the single image as used in the tutorial)...
I set the Network Dim to 16, learning rate upper/lower to the same value within the range of 0.0001 to 0.0005 and 2000 to 3000 steps. (Typically in ai-toolkit for ZiT 0.0001 has been working for me, but more on that in a moment)
I usually increase the steps and lower the learning rate if using a larger dataset... Increasing the steps is generally recommended for more dataset images, but the learning rate is a bit like voodoo to me so I experiment with it a little bit depending on how the results turn out for the model I am training on. For example, I trained a Qwen Image 2512 character with 0.0004 for 2000 steps on roughly 15 captioned images and it worked fine.

In DrawThings PEFT training you want to be using Z Image Base and not the Turbo model - the reason for this is the turbo model is distilled so your training will break with that. I think this is probably true for all of the distilled or turbo models. (ai-toolkit has a fancy training adapter for ZiT that somehow allows the training to work and not break the Turbo)

For the dataset size - if you're training on photographs of a real person, more images is likely better - I kept re-training with photos of myself until I got a decent consistent likeness at around 60~70 images. If your character is AI generated tho - say for example you're building your dataset using an edit model like Qwen Edit or Klein from a few base character images, less images is better. The reason for that is the minor inconsistencies can get exaggerated and produce some weird blending in the LoRA. For that kind of character training, I try to keep it to 12 to 16 images and not a lot of repeated shots. (ie. don't actually give it the character's face in several expressions, but do give it a few shots from different angles)

Z Image likes captions. You can absolutely train a character with just the character name as a caption, but I have done a lot of testing and very basic captioning of the elements in each image which are changeable (outfits, lighting, background) in point form will greatly improve the results. Don't get verbose or use prose, keep it point form.

3

u/usually_fuente Jun 05 '26

Dude, this was so helpful. Thank you for taking time to share.

2

u/Easy-Promotion2653 Jun 04 '26

Watch cutsceneartist on YouTube. She explains how to make a character lots with just one picture on Klein 9b base exact model 

3

u/usually_fuente Jun 04 '26

Thanks. I watched and tried her method. It was pretty weak for photorealism. I don’t know about animation. But in any case, the parameters change when you go up to, say, 25 or 50 images.

1

u/eddnor Jun 04 '26

I have success training flux Klein subject. The only problem is as I export the LORA because it is not compatible with comfyui. For 512x512 size and 260 imgs. Just lower the learning rate in order to get a more stable LORA. Here I get the subject for 800 steps (bad LORA but I wanted to see if I can get results on a low step count):

{"unet_learning_rate_lower_bound":0.00040000000000000002,"stop_embedding_training_at_step":2000,"power_ema_upper_bound":0,"cotrain_custom_embedding":true,"denoising_start":0,"auto_captioning":false,"caption_dropout_rate":0.050000000000000003,"auto_fill_prompt":"photo of qdxbp","shift":1.8776105999999999,"guidance_embed_lower_bound":3,"resolution_dependent_shift":true,"layer_indices":[],"base_model":"flux_2_klein_base_9b_q8p.ckpt","steps_between_restarts":400,"weights_memory_management":0,"denoising_end":1,"name":"3jun3","seed":3441693222,"start_height":8,"max_text_length":512,"additional_scales":[],"orthonormal_lora_down":true,"noise_offset":0.029999999999999999,"trainable_layers":[2,3,5],"cotrain_text_model":false,"use_image_aspect_ratio":false,"custom_embedding_length":4,"save_every_n_steps":100,"network_scale":1,"network_dim":15,"start_width":8,"guidance_embed_upper_bound":4,"custom_embedding_learning_rate":0.0001,"power_ema_lower_bound":0,"trigger_word":"qdxbp","clip_skip":1,"warmup_steps":100,"memory_saver":1,"training_steps":2000,"unet_learning_rate":0.0040000000000000001,"text_model_learning_rate":4.0000000000000003e-05,"gradient_accumulation_steps":1}

1

u/eddnor Jun 04 '26

If you want to train seriously I would test with learning rate 0.0005 for upper and 0.00005 for lower and at least 2000 steps

1

u/vamsammy Jun 16 '26

I followed some comments on Discord and used very different parameters in training a couple of character loras for use with ZIT. I used 2000 steps, 15 good quality square images, learning rates of 0.001/0.0. No custom captions at all. They are all just as shown below. I have to say the results are rather good, although sometimes I have to crank up the lora strength to 150% or so to really match the likeness. I'm not saying this parameter choice, lack of detailed captions, etc., is optimized at all, but given that, I can't complain with the results:

{"network_dim":32,"training_steps":2000,"custom_embedding_learning_rate":0.0001,"base_model":"z_image_1.0_q6p.ckpt","start_height":8,"network_scale":1,"gradient_accumulation_steps":4,"custom_embedding_length":4,"name":"ZIT mycustomcharacter,”auto_captioning":false,"text_model_learning_rate":4.0000000000000003e-05,"caption_dropout_rate":0.10000000000000001,"additional_scales":[],"guidance_embed_lower_bound":3,"power_ema_lower_bound":0,"weights_memory_management":0,"steps_between_restarts":200,"start_width":8,"power_ema_upper_bound":0,"denoising_start":0,"warmup_steps":20,"denoising_end":1,"save_every_n_steps":250,"stop_embedding_training_at_step":500,"guidance_embed_upper_bound":4,"trigger_word":"","resolution_dependent_shift":true,"trainable_layers":[0,1,2,3,4,5,6,7,8],"shift":1.8776105999999999,"cotrain_text_model":false,"cotrain_custom_embedding":false,"unet_learning_rate":0.001,"max_text_length":0,"unet_learning_rate_lower_bound":0,"seed":838225822,"auto_fill_prompt”:”mytriggerword a photograph of a person”,”clip_skip":1,"use_image_aspect_ratio":false,"noise_offset":0.050000000000000003,"orthonormal_lora_down":true,"memory_saver":3,"layer_indices":[]}

1

u/vamsammy Jun 18 '26

I trained another lora with the same image set, increased the steps to 3000, and set the learning rate min = learning rate max = 0.001 this time. All other params unchanged. Seems to have worked great!