optimum-rbln 0.1.9__py3-none-any.whl → 0.1.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- optimum/rbln/__init__.py +47 -9
- optimum/rbln/__version__.py +1 -1
- optimum/rbln/diffusers/models/autoencoder_kl.py +36 -31
- optimum/rbln/diffusers/models/controlnet.py +53 -43
- optimum/rbln/diffusers/models/unet_2d_condition.py +40 -31
- optimum/rbln/diffusers/pipelines/controlnet/multicontrolnet.py +4 -0
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet.py +28 -23
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +28 -23
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +28 -37
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +30 -39
- optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +24 -14
- optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +24 -15
- optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +26 -17
- optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +26 -17
- optimum/rbln/modeling_alias.py +6 -11
- optimum/rbln/modeling_base.py +467 -261
- optimum/rbln/modeling_config.py +199 -73
- optimum/rbln/transformers/__init__.py +43 -1
- optimum/rbln/transformers/models/__init__.py +23 -1
- optimum/rbln/transformers/models/auto/__init__.py +14 -0
- optimum/rbln/transformers/models/auto/auto_factory.py +84 -0
- optimum/rbln/transformers/models/auto/modeling_auto.py +95 -0
- optimum/rbln/transformers/models/bart/__init__.py +1 -0
- optimum/rbln/transformers/models/bart/bart_architecture.py +203 -58
- optimum/rbln/transformers/models/bart/modeling_bart.py +125 -0
- optimum/rbln/transformers/models/bert/__init__.py +24 -0
- optimum/rbln/transformers/models/bert/modeling_bert.py +101 -0
- optimum/rbln/transformers/models/clip/__init__.py +1 -1
- optimum/rbln/transformers/models/clip/modeling_clip.py +127 -26
- optimum/rbln/transformers/models/decoderonly/decoderonly_architecture.py +28 -4
- optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py +409 -150
- optimum/rbln/transformers/models/dpt/modeling_dpt.py +21 -8
- optimum/rbln/transformers/models/exaone/__init__.py +32 -0
- optimum/rbln/transformers/models/exaone/exaone_architecture.py +72 -0
- optimum/rbln/transformers/models/exaone/hf_hub_cached/configuration_exaone.py +181 -0
- optimum/rbln/transformers/models/exaone/hf_hub_cached/modeling_exaone.py +1725 -0
- optimum/rbln/transformers/models/exaone/modeling_exaone.py +78 -0
- optimum/rbln/transformers/models/gemma/modeling_gemma.py +1 -1
- optimum/rbln/transformers/models/gpt2/gpt2_architecture.py +4 -1
- optimum/rbln/transformers/models/gpt2/modeling_gpt2.py +1 -1
- optimum/rbln/transformers/models/llama/modeling_llama.py +1 -1
- optimum/rbln/transformers/models/llava_next/__init__.py +24 -0
- optimum/rbln/transformers/models/llava_next/modeling_llava_next.py +662 -0
- optimum/rbln/transformers/models/midm/midm_architecture.py +5 -1
- optimum/rbln/transformers/models/midm/modeling_midm.py +6 -1
- optimum/rbln/transformers/models/mistral/modeling_mistral.py +1 -1
- optimum/rbln/transformers/models/phi/__init__.py +24 -0
- optimum/rbln/transformers/models/phi/modeling_phi.py +69 -0
- optimum/rbln/transformers/models/phi/phi_architecture.py +406 -0
- optimum/rbln/transformers/models/qwen2/__init__.py +24 -0
- optimum/rbln/transformers/models/qwen2/modeling_qwen2.py +67 -0
- optimum/rbln/transformers/models/qwen2/qwen2_architecture.py +29 -0
- optimum/rbln/transformers/models/seq2seq/__init__.py +24 -0
- optimum/rbln/{modeling_seq2seq.py → transformers/models/seq2seq/modeling_seq2seq.py} +198 -168
- optimum/rbln/transformers/models/t5/__init__.py +1 -0
- optimum/rbln/transformers/models/t5/modeling_t5.py +55 -0
- optimum/rbln/transformers/models/t5/t5_architecture.py +122 -47
- optimum/rbln/transformers/models/wav2vec2/modeling_wav2vec2.py +17 -12
- optimum/rbln/transformers/models/whisper/generation_whisper.py +68 -0
- optimum/rbln/transformers/models/whisper/modeling_whisper.py +172 -111
- optimum/rbln/transformers/models/whisper/whisper_architecture.py +44 -17
- optimum/rbln/transformers/models/xlm_roberta/modeling_xlm_roberta.py +18 -16
- optimum/rbln/transformers/utils/rbln_quantization.py +48 -60
- optimum/rbln/utils/import_utils.py +50 -1
- optimum/rbln/utils/logging.py +82 -0
- optimum/rbln/utils/runtime_utils.py +33 -0
- optimum/rbln/utils/timer_utils.py +43 -0
- {optimum_rbln-0.1.9.dist-info → optimum_rbln-0.1.12.dist-info}/METADATA +9 -7
- optimum_rbln-0.1.12.dist-info/RECORD +103 -0
- {optimum_rbln-0.1.9.dist-info → optimum_rbln-0.1.12.dist-info}/WHEEL +1 -1
- optimum_rbln-0.1.12.dist-info/entry_points.txt +4 -0
- optimum_rbln-0.1.9.dist-info/RECORD +0 -78
- {optimum_rbln-0.1.9.dist-info → optimum_rbln-0.1.12.dist-info}/licenses/LICENSE +0 -0
@@ -35,8 +35,9 @@ from diffusers.utils import deprecate, logging
|
|
35
35
|
from diffusers.utils.torch_utils import is_compiled_module, is_torch_version
|
36
36
|
from transformers import CLIPTextModel
|
37
37
|
|
38
|
-
from ....
|
38
|
+
from ....modeling_config import use_rbln_config
|
39
39
|
from ....transformers import RBLNCLIPTextModel
|
40
|
+
from ....utils.runtime_utils import ContextRblnConfig
|
40
41
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
41
42
|
from ...pipelines.controlnet.multicontrolnet import RBLNMultiControlNetModel
|
42
43
|
|
@@ -46,6 +47,7 @@ logger = logging.get_logger(__name__)
|
|
46
47
|
|
47
48
|
class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
48
49
|
@classmethod
|
50
|
+
@use_rbln_config
|
49
51
|
def from_pretrained(cls, model_id, **kwargs):
|
50
52
|
"""
|
51
53
|
Pipeline for text-to-image generation using Stable Diffusion with ControlNet.
|
@@ -69,8 +71,13 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
69
71
|
text_encoder = kwargs.pop("text_encoder", None)
|
70
72
|
controlnet = kwargs.pop("controlnet", None)
|
71
73
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
74
|
+
rbln_config = kwargs.pop("rbln_config", None)
|
75
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
72
76
|
|
73
|
-
|
77
|
+
device = rbln_config.get("device", None)
|
78
|
+
device_map = rbln_config.get("device_map", None)
|
79
|
+
create_runtimes = rbln_config.get("create_runtimes", None)
|
80
|
+
optimize_host_memory = rbln_config.get("optimize_host_memory", None)
|
74
81
|
|
75
82
|
kwargs_dict = {
|
76
83
|
"pretrained_model_name_or_path": model_id,
|
@@ -98,13 +105,19 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
98
105
|
}
|
99
106
|
)
|
100
107
|
|
101
|
-
|
108
|
+
with ContextRblnConfig(
|
109
|
+
device=device,
|
110
|
+
device_map=device_map,
|
111
|
+
create_runtimes=create_runtimes,
|
112
|
+
optimze_host_mem=optimize_host_memory,
|
113
|
+
):
|
114
|
+
model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
|
102
115
|
|
103
116
|
if export is None or export is False:
|
104
117
|
return model
|
105
118
|
|
106
119
|
do_classifier_free_guidance = (
|
107
|
-
|
120
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
108
121
|
)
|
109
122
|
|
110
123
|
# compile model, create runtime
|
@@ -117,8 +130,7 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
117
130
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
118
131
|
rbln_use_encode=False,
|
119
132
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
120
|
-
**
|
121
|
-
**rbln_constructor_kwargs,
|
133
|
+
rbln_config={**rbln_config},
|
122
134
|
)
|
123
135
|
|
124
136
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -127,11 +139,10 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
127
139
|
subfolder="text_encoder",
|
128
140
|
export=True,
|
129
141
|
model_save_dir=model_save_dir,
|
130
|
-
**
|
131
|
-
**rbln_constructor_kwargs,
|
142
|
+
rbln_config={**rbln_config},
|
132
143
|
)
|
133
144
|
|
134
|
-
batch_size =
|
145
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
135
146
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
136
147
|
|
137
148
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -145,8 +156,7 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
145
156
|
rbln_use_encode=False,
|
146
157
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
147
158
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
148
|
-
**
|
149
|
-
**rbln_constructor_kwargs,
|
159
|
+
rbln_config={**rbln_config},
|
150
160
|
)
|
151
161
|
|
152
162
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -155,29 +165,25 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
155
165
|
for i, cid in enumerate(controlnet):
|
156
166
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
157
167
|
multicontrolnet.append(
|
158
|
-
RBLNControlNetModel.
|
159
|
-
|
168
|
+
RBLNControlNetModel.from_model(
|
169
|
+
model=cid,
|
160
170
|
subfolder=subfolder_name,
|
161
|
-
export=True,
|
162
171
|
model_save_dir=model_save_dir,
|
163
172
|
rbln_batch_size=unet_batch_size,
|
164
173
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
165
|
-
**
|
166
|
-
**rbln_constructor_kwargs,
|
174
|
+
rbln_config={**rbln_config},
|
167
175
|
)
|
168
176
|
)
|
169
177
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
170
178
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
171
179
|
else:
|
172
|
-
controlnet = RBLNControlNetModel.
|
173
|
-
|
180
|
+
controlnet = RBLNControlNetModel.from_model(
|
181
|
+
model=controlnet,
|
174
182
|
subfolder="controlnet",
|
175
|
-
export=True,
|
176
183
|
model_save_dir=model_save_dir,
|
177
184
|
rbln_batch_size=unet_batch_size,
|
178
185
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
179
|
-
**
|
180
|
-
**rbln_constructor_kwargs,
|
186
|
+
rbln_config={**rbln_config},
|
181
187
|
)
|
182
188
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
183
189
|
|
@@ -208,8 +214,7 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
208
214
|
# overwrite to replace incorrect config
|
209
215
|
model.save_config(model_save_dir)
|
210
216
|
|
211
|
-
|
212
|
-
if rbln_constructor_kwargs.pop("rbln_optimize_host_memory", None) is False:
|
217
|
+
if optimize_host_memory is False:
|
213
218
|
model.compiled_models = [vae.compiled_models[0], text_encoder.compiled_models[0], unet.compiled_models[0]]
|
214
219
|
if isinstance(controlnet, RBLNMultiControlNetModel):
|
215
220
|
for c_model in controlnet.nets:
|
@@ -34,8 +34,9 @@ from diffusers.utils import deprecate, logging
|
|
34
34
|
from diffusers.utils.torch_utils import is_compiled_module
|
35
35
|
from transformers import CLIPTextModel
|
36
36
|
|
37
|
-
from ....
|
37
|
+
from ....modeling_config import use_rbln_config
|
38
38
|
from ....transformers import RBLNCLIPTextModel
|
39
|
+
from ....utils.runtime_utils import ContextRblnConfig
|
39
40
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
40
41
|
from ...pipelines.controlnet.multicontrolnet import RBLNMultiControlNetModel
|
41
42
|
|
@@ -45,6 +46,7 @@ logger = logging.get_logger(__name__)
|
|
45
46
|
|
46
47
|
class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2ImgPipeline):
|
47
48
|
@classmethod
|
49
|
+
@use_rbln_config
|
48
50
|
def from_pretrained(cls, model_id, **kwargs):
|
49
51
|
"""
|
50
52
|
Pipeline for image-to-image generation using Stable Diffusion with ControlNet.
|
@@ -68,8 +70,13 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
68
70
|
text_encoder = kwargs.pop("text_encoder", None)
|
69
71
|
controlnet = kwargs.pop("controlnet", None)
|
70
72
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
73
|
+
rbln_config = kwargs.pop("rbln_config", None)
|
74
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
71
75
|
|
72
|
-
|
76
|
+
device = rbln_config.get("device", None)
|
77
|
+
device_map = rbln_config.get("device_map", None)
|
78
|
+
create_runtimes = rbln_config.get("create_runtimes", None)
|
79
|
+
optimize_host_memory = rbln_config.get("optimize_host_memory", None)
|
73
80
|
|
74
81
|
kwargs_dict = {
|
75
82
|
"pretrained_model_name_or_path": model_id,
|
@@ -97,13 +104,19 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
97
104
|
}
|
98
105
|
)
|
99
106
|
|
100
|
-
|
107
|
+
with ContextRblnConfig(
|
108
|
+
device=device,
|
109
|
+
device_map=device_map,
|
110
|
+
create_runtimes=create_runtimes,
|
111
|
+
optimze_host_mem=optimize_host_memory,
|
112
|
+
):
|
113
|
+
model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
|
101
114
|
|
102
115
|
if export is None or export is False:
|
103
116
|
return model
|
104
117
|
|
105
118
|
do_classifier_free_guidance = (
|
106
|
-
|
119
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
107
120
|
)
|
108
121
|
|
109
122
|
# compile model, create runtime
|
@@ -116,8 +129,7 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
116
129
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
117
130
|
rbln_use_encode=True,
|
118
131
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
119
|
-
**
|
120
|
-
**rbln_constructor_kwargs,
|
132
|
+
rbln_config={**rbln_config},
|
121
133
|
)
|
122
134
|
|
123
135
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -126,11 +138,10 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
126
138
|
subfolder="text_encoder",
|
127
139
|
export=True,
|
128
140
|
model_save_dir=model_save_dir,
|
129
|
-
**
|
130
|
-
**rbln_constructor_kwargs,
|
141
|
+
rbln_config={**rbln_config},
|
131
142
|
)
|
132
143
|
|
133
|
-
batch_size =
|
144
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
134
145
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
135
146
|
|
136
147
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -144,8 +155,7 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
144
155
|
rbln_use_encode=True,
|
145
156
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
146
157
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
147
|
-
**
|
148
|
-
**rbln_constructor_kwargs,
|
158
|
+
rbln_config={**rbln_config},
|
149
159
|
)
|
150
160
|
|
151
161
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -154,29 +164,25 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
154
164
|
for i, cid in enumerate(controlnet):
|
155
165
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
156
166
|
multicontrolnet.append(
|
157
|
-
RBLNControlNetModel.
|
158
|
-
|
167
|
+
RBLNControlNetModel.from_model(
|
168
|
+
model=cid,
|
159
169
|
subfolder=subfolder_name,
|
160
|
-
export=True,
|
161
170
|
model_save_dir=model_save_dir,
|
162
171
|
rbln_batch_size=unet_batch_size,
|
163
172
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
164
|
-
**
|
165
|
-
**rbln_constructor_kwargs,
|
173
|
+
rbln_config={**rbln_config},
|
166
174
|
)
|
167
175
|
)
|
168
176
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
169
177
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
170
178
|
else:
|
171
|
-
controlnet = RBLNControlNetModel.
|
172
|
-
|
179
|
+
controlnet = RBLNControlNetModel.from_model(
|
180
|
+
model=controlnet,
|
173
181
|
subfolder="controlnet",
|
174
|
-
export=True,
|
175
182
|
model_save_dir=model_save_dir,
|
176
183
|
rbln_batch_size=unet_batch_size,
|
177
184
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
178
|
-
**
|
179
|
-
**rbln_constructor_kwargs,
|
185
|
+
rbln_config={**rbln_config},
|
180
186
|
)
|
181
187
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
182
188
|
|
@@ -207,8 +213,7 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
207
213
|
# overwrite to replace incorrect config
|
208
214
|
model.save_config(model_save_dir)
|
209
215
|
|
210
|
-
|
211
|
-
if rbln_constructor_kwargs.pop("rbln_optimize_host_memory", None) is False:
|
216
|
+
if optimize_host_memory is False:
|
212
217
|
model.compiled_models = [
|
213
218
|
vae.compiled_models[0],
|
214
219
|
vae.compiled_models[1],
|
@@ -34,8 +34,9 @@ from diffusers.utils import deprecate, logging
|
|
34
34
|
from diffusers.utils.torch_utils import is_compiled_module, is_torch_version
|
35
35
|
from transformers import CLIPTextModel
|
36
36
|
|
37
|
-
from ....
|
37
|
+
from ....modeling_config import use_rbln_config
|
38
38
|
from ....transformers import RBLNCLIPTextModel, RBLNCLIPTextModelWithProjection
|
39
|
+
from ....utils.runtime_utils import ContextRblnConfig
|
39
40
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
40
41
|
from ...pipelines.controlnet.multicontrolnet import RBLNMultiControlNetModel
|
41
42
|
|
@@ -45,6 +46,7 @@ logger = logging.get_logger(__name__)
|
|
45
46
|
|
46
47
|
class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipeline):
|
47
48
|
@classmethod
|
49
|
+
@use_rbln_config
|
48
50
|
def from_pretrained(cls, model_id, **kwargs):
|
49
51
|
"""
|
50
52
|
Pipeline for text-to-image generation using Stable Diffusion XL with ControlNet.
|
@@ -69,8 +71,13 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
69
71
|
text_encoder_2 = kwargs.pop("text_encoder_2", None)
|
70
72
|
controlnet = kwargs.pop("controlnet", None)
|
71
73
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
74
|
+
rbln_config = kwargs.pop("rbln_config", None)
|
75
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
72
76
|
|
73
|
-
|
77
|
+
device = rbln_config.get("device", None)
|
78
|
+
device_map = rbln_config.get("device_map", None)
|
79
|
+
create_runtimes = rbln_config.get("create_runtimes", None)
|
80
|
+
optimize_host_memory = rbln_config.get("optimize_host_memory", None)
|
74
81
|
|
75
82
|
kwargs_dict = {
|
76
83
|
"pretrained_model_name_or_path": model_id,
|
@@ -98,13 +105,19 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
98
105
|
}
|
99
106
|
)
|
100
107
|
|
101
|
-
|
108
|
+
with ContextRblnConfig(
|
109
|
+
device=device,
|
110
|
+
device_map=device_map,
|
111
|
+
create_runtimes=create_runtimes,
|
112
|
+
optimze_host_mem=optimize_host_memory,
|
113
|
+
):
|
114
|
+
model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
|
102
115
|
|
103
116
|
if export is None or export is False:
|
104
117
|
return model
|
105
118
|
|
106
119
|
do_classifier_free_guidance = (
|
107
|
-
|
120
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
108
121
|
)
|
109
122
|
|
110
123
|
if not isinstance(vae, RBLNAutoencoderKL):
|
@@ -116,8 +129,7 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
116
129
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
117
130
|
rbln_use_encode=False,
|
118
131
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
119
|
-
**
|
120
|
-
**rbln_constructor_kwargs,
|
132
|
+
rbln_config={**rbln_config},
|
121
133
|
)
|
122
134
|
|
123
135
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -126,8 +138,7 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
126
138
|
subfolder="text_encoder",
|
127
139
|
export=True,
|
128
140
|
model_save_dir=model_save_dir,
|
129
|
-
**
|
130
|
-
**rbln_constructor_kwargs,
|
141
|
+
rbln_config={**rbln_config},
|
131
142
|
)
|
132
143
|
|
133
144
|
if not isinstance(text_encoder_2, RBLNCLIPTextModel):
|
@@ -136,11 +147,10 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
136
147
|
subfolder="text_encoder_2",
|
137
148
|
export=True,
|
138
149
|
model_save_dir=model_save_dir,
|
139
|
-
**
|
140
|
-
**rbln_constructor_kwargs,
|
150
|
+
rbln_config={**rbln_config},
|
141
151
|
)
|
142
152
|
|
143
|
-
batch_size =
|
153
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
144
154
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
145
155
|
|
146
156
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -155,8 +165,7 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
155
165
|
rbln_use_encode=False,
|
156
166
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
157
167
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
158
|
-
**
|
159
|
-
**rbln_constructor_kwargs,
|
168
|
+
rbln_config={**rbln_config},
|
160
169
|
)
|
161
170
|
|
162
171
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -165,31 +174,27 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
165
174
|
for i, cid in enumerate(controlnet):
|
166
175
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
167
176
|
multicontrolnet.append(
|
168
|
-
RBLNControlNetModel.
|
169
|
-
|
177
|
+
RBLNControlNetModel.from_model(
|
178
|
+
model=cid,
|
170
179
|
subfolder=subfolder_name,
|
171
|
-
export=True,
|
172
180
|
model_save_dir=model_save_dir,
|
173
181
|
rbln_batch_size=unet_batch_size,
|
174
182
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
175
183
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
176
|
-
**
|
177
|
-
**rbln_constructor_kwargs,
|
184
|
+
rbln_config={**rbln_config},
|
178
185
|
)
|
179
186
|
)
|
180
187
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
181
188
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
182
189
|
else:
|
183
|
-
controlnet = RBLNControlNetModel.
|
184
|
-
|
190
|
+
controlnet = RBLNControlNetModel.from_model(
|
191
|
+
model=controlnet,
|
185
192
|
subfolder="controlnet",
|
186
|
-
export=True,
|
187
193
|
model_save_dir=model_save_dir,
|
188
194
|
rbln_batch_size=unet_batch_size,
|
189
195
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
190
196
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
191
|
-
**
|
192
|
-
**rbln_constructor_kwargs,
|
197
|
+
rbln_config={**rbln_config},
|
193
198
|
)
|
194
199
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
195
200
|
|
@@ -222,20 +227,6 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
222
227
|
# overwrite to replace incorrect config
|
223
228
|
model.save_config(model_save_dir)
|
224
229
|
|
225
|
-
# use for CI to access each compiled model
|
226
|
-
if rbln_constructor_kwargs.pop("rbln_optimize_host_memory", None) is False:
|
227
|
-
model.compiled_models = [
|
228
|
-
vae.compiled_models[0],
|
229
|
-
text_encoder.compiled_models[0],
|
230
|
-
text_encoder_2.compiled_models[0],
|
231
|
-
unet.compiled_models[0],
|
232
|
-
]
|
233
|
-
if isinstance(controlnet, RBLNMultiControlNetModel):
|
234
|
-
for c_model in controlnet.nets:
|
235
|
-
model.compiled_models.append(c_model.compiled_models[0])
|
236
|
-
else:
|
237
|
-
model.compiled_models.append(controlnet.compiled_models[0])
|
238
|
-
|
239
230
|
return model
|
240
231
|
|
241
232
|
def check_inputs(
|
@@ -34,8 +34,9 @@ from diffusers.utils import deprecate, logging
|
|
34
34
|
from diffusers.utils.torch_utils import is_compiled_module
|
35
35
|
from transformers import CLIPTextModel
|
36
36
|
|
37
|
-
from ....
|
37
|
+
from ....modeling_config import use_rbln_config
|
38
38
|
from ....transformers import RBLNCLIPTextModel, RBLNCLIPTextModelWithProjection
|
39
|
+
from ....utils.runtime_utils import ContextRblnConfig
|
39
40
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
40
41
|
from ...pipelines.controlnet.multicontrolnet import RBLNMultiControlNetModel
|
41
42
|
|
@@ -45,6 +46,7 @@ logger = logging.get_logger(__name__)
|
|
45
46
|
|
46
47
|
class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNetImg2ImgPipeline):
|
47
48
|
@classmethod
|
49
|
+
@use_rbln_config
|
48
50
|
def from_pretrained(cls, model_id, **kwargs):
|
49
51
|
"""
|
50
52
|
Pipeline for image-to-image generation using Stable Diffusion XL with ControlNet.
|
@@ -70,7 +72,13 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
70
72
|
controlnet = kwargs.pop("controlnet", None)
|
71
73
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
72
74
|
|
73
|
-
|
75
|
+
rbln_config = kwargs.pop("rbln_config", None)
|
76
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
77
|
+
|
78
|
+
device = rbln_config.get("device", None)
|
79
|
+
device_map = rbln_config.get("device_map", None)
|
80
|
+
create_runtimes = rbln_config.get("create_runtimes", None)
|
81
|
+
optimize_host_memory = rbln_config.get("optimize_host_memory", None)
|
74
82
|
|
75
83
|
kwargs_dict = {
|
76
84
|
"pretrained_model_name_or_path": model_id,
|
@@ -98,13 +106,19 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
98
106
|
}
|
99
107
|
)
|
100
108
|
|
101
|
-
|
109
|
+
with ContextRblnConfig(
|
110
|
+
device=device,
|
111
|
+
device_map=device_map,
|
112
|
+
create_runtimes=create_runtimes,
|
113
|
+
optimze_host_mem=optimize_host_memory,
|
114
|
+
):
|
115
|
+
model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
|
102
116
|
|
103
117
|
if export is None or export is False:
|
104
118
|
return model
|
105
119
|
|
106
120
|
do_classifier_free_guidance = (
|
107
|
-
|
121
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
108
122
|
)
|
109
123
|
|
110
124
|
if not isinstance(vae, RBLNAutoencoderKL):
|
@@ -116,8 +130,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
116
130
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
117
131
|
rbln_use_encode=True,
|
118
132
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
119
|
-
**
|
120
|
-
**rbln_constructor_kwargs,
|
133
|
+
rbln_config={**rbln_config},
|
121
134
|
)
|
122
135
|
|
123
136
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -126,8 +139,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
126
139
|
subfolder="text_encoder",
|
127
140
|
export=True,
|
128
141
|
model_save_dir=model_save_dir,
|
129
|
-
**
|
130
|
-
**rbln_constructor_kwargs,
|
142
|
+
rbln_config={**rbln_config},
|
131
143
|
)
|
132
144
|
|
133
145
|
if not isinstance(text_encoder_2, RBLNCLIPTextModel):
|
@@ -136,11 +148,10 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
136
148
|
subfolder="text_encoder_2",
|
137
149
|
export=True,
|
138
150
|
model_save_dir=model_save_dir,
|
139
|
-
**
|
140
|
-
**rbln_constructor_kwargs,
|
151
|
+
rbln_config={**rbln_config},
|
141
152
|
)
|
142
153
|
|
143
|
-
batch_size =
|
154
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
144
155
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
145
156
|
|
146
157
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -155,8 +166,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
155
166
|
rbln_use_encode=True,
|
156
167
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
157
168
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
158
|
-
**
|
159
|
-
**rbln_constructor_kwargs,
|
169
|
+
rbln_config={**rbln_config},
|
160
170
|
)
|
161
171
|
|
162
172
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -165,31 +175,27 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
165
175
|
for i, cid in enumerate(controlnet):
|
166
176
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
167
177
|
multicontrolnet.append(
|
168
|
-
RBLNControlNetModel.
|
169
|
-
|
178
|
+
RBLNControlNetModel.from_model(
|
179
|
+
model=cid,
|
170
180
|
subfolder=subfolder_name,
|
171
|
-
export=True,
|
172
181
|
model_save_dir=model_save_dir,
|
173
182
|
rbln_batch_size=unet_batch_size,
|
174
183
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
175
184
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
176
|
-
**
|
177
|
-
**rbln_constructor_kwargs,
|
185
|
+
rbln_config={**rbln_config},
|
178
186
|
)
|
179
187
|
)
|
180
188
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
181
189
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
182
190
|
else:
|
183
|
-
controlnet = RBLNControlNetModel.
|
184
|
-
|
191
|
+
controlnet = RBLNControlNetModel.from_model(
|
192
|
+
model=controlnet,
|
185
193
|
subfolder="controlnet",
|
186
|
-
export=True,
|
187
194
|
model_save_dir=model_save_dir,
|
188
195
|
rbln_batch_size=unet_batch_size,
|
189
196
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
190
197
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
191
|
-
**
|
192
|
-
**rbln_constructor_kwargs,
|
198
|
+
rbln_config={**rbln_config},
|
193
199
|
)
|
194
200
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
195
201
|
|
@@ -213,7 +219,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
213
219
|
"vae": ("optimum.rbln", "RBLNAutoencoderKL"),
|
214
220
|
"text_encoder": ("optimum.rbln", "RBLNCLIPTextModel"),
|
215
221
|
"unet": ("optimum.rbln", "RBLNUNet2DConditionModel"),
|
216
|
-
"text_encoder_2": ("optimum.rbln", "
|
222
|
+
"text_encoder_2": ("optimum.rbln", "RBLNCLIPTextModelWithProjection"),
|
217
223
|
"controlnet": controlnet_dict,
|
218
224
|
}
|
219
225
|
model.register_to_config(**update_dict)
|
@@ -222,21 +228,6 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
222
228
|
# overwrite to replace incorrect config
|
223
229
|
model.save_config(model_save_dir)
|
224
230
|
|
225
|
-
# use for CI to access each compiled model
|
226
|
-
if rbln_constructor_kwargs.pop("rbln_optimize_host_memory", None) is False:
|
227
|
-
model.compiled_models = [
|
228
|
-
vae.compiled_models[0],
|
229
|
-
vae.compiled_models[1],
|
230
|
-
text_encoder.compiled_models[0],
|
231
|
-
text_encoder_2.compiled_models[0],
|
232
|
-
unet.compiled_models[0],
|
233
|
-
]
|
234
|
-
if isinstance(controlnet, RBLNMultiControlNetModel):
|
235
|
-
for c_model in controlnet.nets:
|
236
|
-
model.compiled_models.append(c_model.compiled_models[0])
|
237
|
-
else:
|
238
|
-
model.compiled_models.append(controlnet.compiled_models[0])
|
239
|
-
|
240
231
|
return model
|
241
232
|
|
242
233
|
def check_inputs(
|