Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
renzhc
diffusers_dcu
Commits
adbb0486
Unverified
Commit
adbb0486
authored
Jun 27, 2024
by
Sayak Paul
Committed by
GitHub
Jun 27, 2024
Browse files
[LoRA] fix conversion utility so that lora dora loads correctly (#8688)
fix conversion utility so that lora dora loads correctly
parent
effe4b97
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
7 deletions
+7
-7
src/diffusers/loaders/lora_conversion_utils.py
src/diffusers/loaders/lora_conversion_utils.py
+7
-7
No files found.
src/diffusers/loaders/lora_conversion_utils.py
View file @
adbb0486
...
...
@@ -142,10 +142,10 @@ def _convert_non_diffusers_lora_to_diffusers(state_dict, unet_name="unet", text_
network_alphas
=
{}
# Check for DoRA-enabled LoRAs.
if
any
(
"dora_scale"
in
k
an
d
(
"
l
ora_
unet_
"
in
k
or
"lora_te_"
in
k
or
"lora_te1_"
in
k
or
"lora_te2_"
in
k
)
for
k
in
state_dict
)
:
dora_present_in_unet
=
any
(
"dora_scale"
in
k
and
"lora_unet_"
in
k
for
k
in
state_dict
)
dora_present_in_te
=
an
y
(
"
d
ora_
scale
"
in
k
and
(
"lora_te_"
in
k
or
"lora_te1_"
in
k
)
for
k
in
state_dict
)
dora_present_in_te2
=
any
(
"dora_scale"
in
k
and
"lora_te2_"
in
k
for
k
in
state_dict
)
if
dora_present_in_unet
or
dora_present_in_te
or
dora_present_in_te2
:
if
is_peft_version
(
"<"
,
"0.9.0"
):
raise
ValueError
(
"You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`."
...
...
@@ -173,7 +173,7 @@ def _convert_non_diffusers_lora_to_diffusers(state_dict, unet_name="unet", text_
unet_state_dict
[
diffusers_name
.
replace
(
".down."
,
".up."
)]
=
state_dict
.
pop
(
lora_name_up
)
# Store DoRA scale if present.
if
"
dora_
scale"
in
state_dic
t
:
if
dora_
present_in_une
t
:
dora_scale_key_to_replace
=
"_lora.down."
if
"_lora.down."
in
diffusers_name
else
".lora.down."
unet_state_dict
[
diffusers_name
.
replace
(
dora_scale_key_to_replace
,
".lora_magnitude_vector."
)
...
...
@@ -192,7 +192,7 @@ def _convert_non_diffusers_lora_to_diffusers(state_dict, unet_name="unet", text_
te2_state_dict
[
diffusers_name
.
replace
(
".down."
,
".up."
)]
=
state_dict
.
pop
(
lora_name_up
)
# Store DoRA scale if present.
if
"
dora_
scale"
in
state_dict
:
if
dora_
present_in_te
or
dora_present_in_te2
:
dora_scale_key_to_replace_te
=
(
"_lora.down."
if
"_lora.down."
in
diffusers_name
else
".lora_linear_layer."
)
...
...
@@ -214,7 +214,7 @@ def _convert_non_diffusers_lora_to_diffusers(state_dict, unet_name="unet", text_
if
len
(
state_dict
)
>
0
:
raise
ValueError
(
f
"The following keys have not been correctly renamed:
\n\n
{
', '
.
join
(
state_dict
.
keys
())
}
"
)
logger
.
info
(
"
Kohya-style
checkpoint detected."
)
logger
.
info
(
"
Non-diffusers
checkpoint detected."
)
# Construct final state dict.
unet_state_dict
=
{
f
"
{
unet_name
}
.
{
module_name
}
"
:
params
for
module_name
,
params
in
unet_state_dict
.
items
()}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment