Skip to content

Commit a8cd34e

Browse files
committed
Support additional LoRA formats
Brings support from kohya-ss implementations in their FramePack-LoraReady fork as well as their contributions to FramePack-eichi (that do not seem to be correctly attributed to kohya-ss in thei primary eichi repo) https://gist.github.com/kohya-ss/fa4b7ae7119c10850ae7d70c90a59277 https://github.com/kohya-ss/FramePack-LoRAReady/blob/3613b67366b0bbf4a719c85ba9c3954e075e0e57 https://github.com/kohya-ss/FramePack-eichi/blob/4085a24baf08d6f1c25e2de06f376c3fc132a470
1 parent 12e71c3 commit a8cd34e

File tree

14 files changed

+1789
-225
lines changed

14 files changed

+1789
-225
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ input_files/
66
queue_images/
77
modules/toolbox/model_esrgan/
88
modules/toolbox/model_rife/
9+
modules/toolbox/model_*/**/*.pth
910
.framepack/
1011
modules/toolbox/data/
1112
modules/toolbox/bin
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from .lora_utils import (
2+
merge_lora_to_state_dict,
3+
)
4+
5+
from .lora_loader import load_and_apply_lora
6+
7+
__all__ = [
8+
"merge_lora_to_state_dict",
9+
"load_and_apply_lora",
10+
]
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# FramePack-eichi Dynamic Swap LoRA
2+
#
3+
# このモジュールは後方互換性のために残されていますが、
4+
# 実際にはdirect_applicationによるLoRA適用が使用されています。
5+
# https://github.com/kohya-ss/FramePack-eichi/blob/4085a24baf08d6f1c25e2de06f376c3fc132a470/webui/lora_utils/dynamic_swap_lora.py
6+
7+
import os
8+
import torch
9+
import warnings
10+
11+
# 国際化対応
12+
from locales.i18n_extended import translate as _
13+
14+
15+
class DynamicSwapLoRAManager:
16+
"""
17+
この旧式のLoRA管理クラスは後方互換性のために残されていますが、
18+
実際の処理では使用されません。代わりに直接的なLoRA適用が行われます。
19+
"""
20+
21+
def __init__(self):
22+
"""初期化"""
23+
self.is_active = False
24+
self.lora_path = None
25+
self.lora_scale = 0.8
26+
warnings.warn(
27+
_(
28+
"DynamicSwapLoRAManagerは非推奨です。代わりにlora_loader.load_and_apply_lora()を使用してください。"
29+
),
30+
DeprecationWarning,
31+
stacklevel=2,
32+
)
33+
34+
def load_lora(self, lora_path, is_diffusers=False):
35+
"""
36+
LoRAファイルをロードする (実際には、パスの記録のみ)
37+
38+
Args:
39+
lora_path: LoRAファイルのパス
40+
is_diffusers: 互換性のために残されたパラメータ(使用されない)
41+
"""
42+
if not os.path.exists(lora_path):
43+
raise FileNotFoundError(
44+
_("LoRAファイルが見つかりません: {0}").format(lora_path)
45+
)
46+
47+
self.lora_path = lora_path
48+
self.is_active = True
49+
50+
print(
51+
_("LoRAファイルがロードされました (非推奨インターフェース): {0}").format(
52+
lora_path
53+
)
54+
)
55+
print(
56+
_("注意: ")
57+
+ _(
58+
"DynamicSwapLoRAManagerは非推奨です。代わりにlora_loader.load_and_apply_lora()を使用してください。"
59+
)
60+
)
61+
62+
def set_scale(self, scale):
63+
"""
64+
LoRA適用スケールを設定する
65+
66+
Args:
67+
scale: LoRAの適用強度
68+
"""
69+
self.lora_scale = scale
70+
71+
def install_hooks(self, model):
72+
"""
73+
モデルにLoRAフックをインストールする (実際には、直接適用を行う)
74+
75+
Args:
76+
model: フックをインストールするモデル
77+
"""
78+
# 直接適用モードを使用してLoRAを適用
79+
from .lora_loader import load_and_apply_lora
80+
81+
print(
82+
_(
83+
"警告: DynamicSwapLoRAManagerは非推奨です。直接適用モードにリダイレクトします。"
84+
)
85+
)
86+
87+
load_and_apply_lora(
88+
model,
89+
self.lora_path,
90+
self.lora_scale,
91+
device=torch.device("cuda" if torch.cuda.is_available() else "cpu"),
92+
)
93+
94+
print(_("LoRAは直接適用モードで適用されました。"))

0 commit comments

Comments
 (0)