Closed p-moon closed 1 year ago
diffusers trained LoRAs aren't compatibile out-of-the-box. The webui expects them in format created by https://github.com/kohya-ss/sd-scripts. Reformatting the JSON returned in the error also makes it pretty obvious all the keys in your LoRA are unet
for some reason.
{
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_k_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_k_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_out_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_out_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_q_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_q_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_v_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn1.processor.to_v_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_k_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_k_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_out_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_out_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_q_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_q_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_v_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_v_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_k_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_k_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_out_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_out_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_q_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_q_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_v_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn1.processor.to_v_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_k_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_k_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_out_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_out_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_q_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_q_lora.up.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_v_lora.down.weight": "unet",
"unet.down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_v_lora.up.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_k_lora.down.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_k_lora.up.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_out_lora.down.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_out_lora.up.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_q_lora.down.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_q_lora.up.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_v_lora.down.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn1.processor.to_v_lora.up.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_lora.down.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_lora.up.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_out_lora.down.weight": "unet",
"unet.down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_out_lora.up.weight": "unet"
}
My guess is your LoRA has keys that are nested and they need to be flattened for the webui. I don't have links onhand but I believe there's a few scripts available that do this. They might be in the diffusers repo.
Thank you for your help. I did find a solution yesterday, which can be solved using the following script https://github.com/harrywang/finetune-sd/blob/main/convert-to-safetensors.py
Thank you for your help. I did find a solution yesterday, which can be solved using the following script
import re
import os
import argparse
import torch;
from safetensors.torch import save_file
def main(args):
## use GPU or CPU
if torch.cuda.is_available():
device = 'cuda'
checkpoint = torch.load(args.file, map_location=torch.device('cuda'))
else:
device = 'cpu'
# if on CPU or want to have maximum precision on GPU, use default full-precision setting
checkpoint = torch.load(args.file, map_location=torch.device('cpu'))
print(f'device is {device}')
new_dict = dict()
for idx, key in enumerate(checkpoint):
new_key = re.sub('\.processor\.', '_', key)
new_key = re.sub('mid_block\.', 'mid_block_', new_key)
new_key = re.sub('_lora.up.', '.lora_up.', new_key)
new_key = re.sub('_lora.down.', '.lora_down.', new_key)
new_key = re.sub('\.(\d+)\.', '_\\1_', new_key)
new_key = re.sub('to_out', 'to_out_0', new_key)
new_key = 'lora_unet_' + new_key
new_dict[new_key] = checkpoint[key]
file_name = os.path.splitext(args.file)[0] # get the file name without the extension
new_lora_name = file_name + '_converted.safetensors'
print("Saving " + new_lora_name)
save_file(new_dict, new_lora_name)
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--file",
type=str,
default=None,
required=True,
help="path to the full file name",
)
args = parser.parse_args()
return args
if __name__ == "__main__":
args = parse_args()
main(args)
The solution above is great for LoRA trained on 1.5, 2.0 base models. But there's still no working script for SDXL model.
Is there an existing issue for this?
What happened?
I trained a testcar. safetensors file using the script provided by the diffusers library. When I use the webui to load the lora model and generate images, an error is reported saying:
Steps to reproduce the problem
my train script:
What should have happened?
The lora model should be used to generate images
Version or Commit where the problem happens
68f336bd994bed5442ad95bad6b6ad5564a5409a
What Python version are you running on ?
None
What platforms do you use to access the UI ?
Linux
What device are you running WebUI on?
Other GPUs
Cross attention optimization
Automatic
What browsers do you use to access the UI ?
No response
Command Line Arguments
List of extensions
DreamArtist-sd-webui-extension | git@github.com:7eu7d7/DreamArtist-sd-webui-extension.git | master | 12f80775 | Mon Apr 24 05:53:26 2023 | 未知/unknown Stable-Diffusion-Webui-Civitai-Helper | git@github.com:butaixianran/Stable-Diffusion-Webui-Civitai-Helper.git | main | 920ca326 | Tue May 23 11:53:22 2023 | 未知/unknown a1111-sd-webui-locon | git@github.com:KohakuBlueleaf/a1111-sd-webui-locon.git | main | b6911354 | Wed Jun 14 13:56:44 2023 | 未知/unknown a1111-sd-webui-lycoris | git@github.com:KohakuBlueleaf/a1111-sd-webui-lycoris.git | main | 8e97bf54 | Sun Jul 9 07:44:58 2023 | 未知/unknown a1111-sd-webui-tagcomplete | git@github.com:DominikDoom/a1111-sd-webui-tagcomplete.git | main | 7f188563 | Sun Jun 25 10:34:57 2023 | 未知/unknown lora-prompt-tool | git@github.com:a2569875/lora-prompt-tool.git | main | f45a77e7 | Fri Jul 7 09:27:16 2023 | 未知/unknown sd-webui-bilingual-localization | git@github.com:journey-ad/sd-webui-bilingual-localization.git | main | 89a02280 | Thu Apr 27 03:54:25 2023 | 未知/unknown sd-webui-controlnet | git@github.com:Mikubill/sd-webui-controlnet.git | main | b9e09db3 | Mon Jul 3 04:30:20 2023 | 未知/unknown sd-webui-deforum | git@github.com:deforum-art/sd-webui-deforum.git | automatic1111-webui | b58056f9 | Tue Jun 6 21:47:35 2023 | 未知/unknown sd-webui-model-converter | git@github.com:Akegarasu/sd-webui-model-converter.git | main | 2a3834d7 | Wed Jun 28 13:41:44 2023 | 未知/unknown sd-webui-prompt-all-in-one | git@github.com:Physton/sd-webui-prompt-all-in-one.git | main | bfd1929b | Sun Jul 2 01:53:24 2023 | 未知/unknown sd-webui-prompt-history | https://github.com/namkazt/sd-webui-prompt-history | main | bde3e95e | Sat Jul 15 06:23:45 2023 | 未知/unknown sd-webui-segment-anything | https://github.com/continue-revolution/sd-webui-segment-anything.git | master | ffe26315 | Wed Jun 28 18:49:49 2023 | 未知/unknown sd-webui-train-tools | git@github.com:liasece/sd-webui-train-tools.git | main | a5a2b889 | Tue Jun 6 05:47:23 2023 | 未知/unknown sd-webui-xldemo-txt2img | git@github.com:lifeisboringsoprogramming/sd-webui-xldemo-txt2img.git | main | e193c1c1 | Mon Jul 17 00:58:40 2023 | 未知/unknown sdweb-easy-prompt-selector | git@github.com:lijialong1313/sdweb-easy-prompt-selector.git | main | 288e796a | Fri Jun 16 03:04:33 2023 | 未知/unknown sdweb-easy-prompt-selector-zhcn | git@github.com:fiua/sdweb-easy-prompt-selector-zhcn.git | main | 2a5b2594 | Sun Jul 9 23:08:04 2023 | 未知/unknown stable-diffusion-webui-localization-zh_CN | git@github.com:dtlnor/stable-diffusion-webui-localization-zh_CN.git | main | 582ca24d | Thu Mar 30 07:06:14 2023 | 未知/unknown LDSR | built-in | 无/None | | Thu Aug 10 09:00:56 2023 | 低秩微调模型(LoRA)/Lora | built-in | 无/None | | Thu Aug 10 09:00:56 2023 | ScuNET | built-in | 无/None | | Thu Aug 10 09:00:56 2023 | SwinIR | built-in | 无/None | | Thu Aug 10 09:00:56 2023 | canvas-zoom-and-pan | built-in | 无/None | | Thu Aug 10 09:00:56 2023 | extra-options-section | built-in | 无/None | | Thu Aug 10 09:00:56 2023 | mobile | built-in | 无/None | | Thu Aug 10 09:00:56 2023 | prompt-bracket-checker
DreamArtist-sd-webui-extension git@github.com:7eu7d7/DreamArtist-sd-webui-extension.git master 12f80775 Mon Apr 24 05:53:26 2023 未知/unknown Stable-Diffusion-Webui-Civitai-Helper git@github.com:butaixianran/Stable-Diffusion-Webui-Civitai-Helper.git main 920ca326 Tue May 23 11:53:22 2023 未知/unknown a1111-sd-webui-locon git@github.com:KohakuBlueleaf/a1111-sd-webui-locon.git main b6911354 Wed Jun 14 13:56:44 2023 未知/unknown a1111-sd-webui-lycoris git@github.com:KohakuBlueleaf/a1111-sd-webui-lycoris.git main 8e97bf54 Sun Jul 9 07:44:58 2023 未知/unknown a1111-sd-webui-tagcomplete git@github.com:DominikDoom/a1111-sd-webui-tagcomplete.git main 7f188563 Sun Jun 25 10:34:57 2023 未知/unknown lora-prompt-tool git@github.com:a2569875/lora-prompt-tool.git main f45a77e7 Fri Jul 7 09:27:16 2023 未知/unknown sd-webui-bilingual-localization git@github.com:journey-ad/sd-webui-bilingual-localization.git main 89a02280 Thu Apr 27 03:54:25 2023 未知/unknown sd-webui-controlnet git@github.com:Mikubill/sd-webui-controlnet.git main b9e09db3 Mon Jul 3 04:30:20 2023 未知/unknown sd-webui-deforum git@github.com:deforum-art/sd-webui-deforum.git automatic1111-webui b58056f9 Tue Jun 6 21:47:35 2023 未知/unknown sd-webui-model-converter git@github.com:Akegarasu/sd-webui-model-converter.git main 2a3834d7 Wed Jun 28 13:41:44 2023 未知/unknown sd-webui-prompt-all-in-one git@github.com:Physton/sd-webui-prompt-all-in-one.git main bfd1929b Sun Jul 2 01:53:24 2023 未知/unknown sd-webui-prompt-history https://github.com/namkazt/sd-webui-prompt-history main bde3e95e Sat Jul 15 06:23:45 2023 未知/unknown sd-webui-segment-anything https://github.com/continue-revolution/sd-webui-segment-anything.git master ffe26315 Wed Jun 28 18:49:49 2023 未知/unknown sd-webui-train-tools git@github.com:liasece/sd-webui-train-tools.git main a5a2b889 Tue Jun 6 05:47:23 2023 未知/unknown sd-webui-xldemo-txt2img git@github.com:lifeisboringsoprogramming/sd-webui-xldemo-txt2img.git main e193c1c1 Mon Jul 17 00:58:40 2023 未知/unknown sdweb-easy-prompt-selector git@github.com:lijialong1313/sdweb-easy-prompt-selector.git main 288e796a Fri Jun 16 03:04:33 2023 未知/unknown sdweb-easy-prompt-selector-zhcn git@github.com:fiua/sdweb-easy-prompt-selector-zhcn.git main 2a5b2594 Sun Jul 9 23:08:04 2023 未知/unknown stable-diffusion-webui-localization-zh_CN git@github.com:dtlnor/stable-diffusion-webui-localization-zh_CN.git main 582ca24d Thu Mar 30 07:06:14 2023 未知/unknown LDSR built-in 无/None Thu Aug 10 09:00:56 2023
低秩微调模型(LoRA)/Lora built-in 无/None Thu Aug 10 09:00:56 2023
ScuNET built-in 无/None Thu Aug 10 09:00:56 2023
SwinIR built-in 无/None Thu Aug 10 09:00:56 2023
canvas-zoom-and-pan built-in 无/None Thu Aug 10 09:00:56 2023
extra-options-section built-in 无/None Thu Aug 10 09:00:56 2023
mobile built-in 无/None Thu Aug 10 09:00:56 2023
prompt-bracket-checker
Console logs
Additional information
No response