optimum-rbln 0.1.11__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 +10 -7
- optimum/rbln/__version__.py +1 -1
- optimum/rbln/diffusers/models/autoencoder_kl.py +0 -2
- optimum/rbln/diffusers/models/controlnet.py +0 -6
- optimum/rbln/diffusers/models/unet_2d_condition.py +0 -3
- optimum/rbln/diffusers/pipelines/controlnet/multicontrolnet.py +4 -0
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet.py +18 -20
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +18 -20
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +19 -34
- optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +20 -35
- optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +12 -13
- optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +12 -14
- optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +13 -14
- optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +13 -14
- optimum/rbln/modeling_alias.py +4 -9
- optimum/rbln/modeling_base.py +105 -139
- optimum/rbln/modeling_config.py +51 -0
- optimum/rbln/transformers/__init__.py +8 -0
- optimum/rbln/transformers/models/__init__.py +4 -1
- optimum/rbln/transformers/models/auto/modeling_auto.py +1 -0
- optimum/rbln/transformers/models/bart/__init__.py +1 -1
- optimum/rbln/transformers/models/bart/bart_architecture.py +18 -12
- optimum/rbln/transformers/models/bart/modeling_bart.py +25 -6
- optimum/rbln/transformers/models/bert/modeling_bert.py +1 -2
- optimum/rbln/transformers/models/clip/modeling_clip.py +0 -1
- optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py +172 -100
- optimum/rbln/transformers/models/dpt/modeling_dpt.py +0 -1
- 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/llava_next/modeling_llava_next.py +148 -152
- optimum/rbln/transformers/models/midm/modeling_midm.py +5 -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} +107 -166
- 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 +46 -32
- optimum/rbln/transformers/models/wav2vec2/modeling_wav2vec2.py +0 -1
- optimum/rbln/transformers/models/whisper/modeling_whisper.py +37 -12
- optimum/rbln/transformers/models/xlm_roberta/modeling_xlm_roberta.py +1 -2
- optimum/rbln/utils/import_utils.py +14 -0
- optimum/rbln/utils/logging.py +1 -1
- optimum/rbln/utils/runtime_utils.py +1 -1
- optimum/rbln/utils/timer_utils.py +26 -2
- {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/METADATA +4 -3
- {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/RECORD +54 -44
- {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/WHEEL +1 -1
- {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/entry_points.txt +0 -0
- {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/licenses/LICENSE +0 -0
optimum/rbln/__init__.py
CHANGED
@@ -35,11 +35,10 @@ _import_structure = {
|
|
35
35
|
"RBLNBertForQuestionAnswering",
|
36
36
|
"RBLNDistilBertForQuestionAnswering",
|
37
37
|
"RBLNResNetForImageClassification",
|
38
|
-
"RBLNT5ForConditionalGeneration",
|
39
|
-
"RBLNBartForConditionalGeneration",
|
40
38
|
"RBLNXLMRobertaForSequenceClassification",
|
41
39
|
"RBLNRobertaForSequenceClassification",
|
42
40
|
"RBLNRobertaForMaskedLM",
|
41
|
+
"RBLNViTForImageClassification"
|
43
42
|
],
|
44
43
|
"modeling_base": [
|
45
44
|
"RBLNBaseModel",
|
@@ -50,9 +49,6 @@ _import_structure = {
|
|
50
49
|
"RBLNModelForSequenceClassification",
|
51
50
|
"RBLNModelForMaskedLM",
|
52
51
|
],
|
53
|
-
"modeling_seq2seq": [
|
54
|
-
"RBLNModelForSeq2SeqLM",
|
55
|
-
],
|
56
52
|
"transformers": [
|
57
53
|
"BatchTextIteratorStreamer",
|
58
54
|
"RBLNAutoModel",
|
@@ -67,16 +63,20 @@ _import_structure = {
|
|
67
63
|
"RBLNAutoModelForSequenceClassification",
|
68
64
|
"RBLNAutoModelForSpeechSeq2Seq",
|
69
65
|
"RBLNAutoModelForVision2Seq",
|
66
|
+
"RBLNBartForConditionalGeneration",
|
70
67
|
"RBLNBartModel",
|
71
68
|
"RBLNBertModel",
|
72
69
|
"RBLNCLIPTextModel",
|
73
70
|
"RBLNCLIPTextModelWithProjection",
|
74
71
|
"RBLNCLIPVisionModel",
|
75
72
|
"RBLNDPTForDepthEstimation",
|
73
|
+
"RBLNExaoneForCausalLM",
|
76
74
|
"RBLNGemmaForCausalLM",
|
77
75
|
"RBLNGPT2LMHeadModel",
|
76
|
+
"RBLNQwen2ForCausalLM",
|
78
77
|
"RBLNWav2Vec2ForCTC",
|
79
78
|
"RBLNLlamaForCausalLM",
|
79
|
+
"RBLNT5ForConditionalGeneration",
|
80
80
|
"RBLNPhiForCausalLM",
|
81
81
|
"RBLNLlavaNextForConditionalGeneration",
|
82
82
|
"RBLNMidmLMHeadModel",
|
@@ -118,12 +118,12 @@ if TYPE_CHECKING:
|
|
118
118
|
)
|
119
119
|
from .modeling_alias import (
|
120
120
|
RBLNASTForAudioClassification,
|
121
|
-
RBLNBartForConditionalGeneration,
|
122
121
|
RBLNBertForQuestionAnswering,
|
123
122
|
RBLNResNetForImageClassification,
|
124
123
|
RBLNRobertaForMaskedLM,
|
125
124
|
RBLNRobertaForSequenceClassification,
|
126
125
|
RBLNT5ForConditionalGeneration,
|
126
|
+
RBLNViTForImageClassification,
|
127
127
|
RBLNXLMRobertaForSequenceClassification,
|
128
128
|
)
|
129
129
|
from .modeling_base import (
|
@@ -136,7 +136,6 @@ if TYPE_CHECKING:
|
|
136
136
|
RBLNModelForSequenceClassification,
|
137
137
|
)
|
138
138
|
from .modeling_config import RBLNCompileConfig, RBLNConfig
|
139
|
-
from .modeling_seq2seq import RBLNModelForSeq2SeqLM
|
140
139
|
from .transformers import (
|
141
140
|
BatchTextIteratorStreamer,
|
142
141
|
RBLNAutoModel,
|
@@ -151,12 +150,14 @@ if TYPE_CHECKING:
|
|
151
150
|
RBLNAutoModelForSequenceClassification,
|
152
151
|
RBLNAutoModelForSpeechSeq2Seq,
|
153
152
|
RBLNAutoModelForVision2Seq,
|
153
|
+
RBLNBartForConditionalGeneration,
|
154
154
|
RBLNBartModel,
|
155
155
|
RBLNBertModel,
|
156
156
|
RBLNCLIPTextModel,
|
157
157
|
RBLNCLIPTextModelWithProjection,
|
158
158
|
RBLNCLIPVisionModel,
|
159
159
|
RBLNDPTForDepthEstimation,
|
160
|
+
RBLNExaoneForCausalLM,
|
160
161
|
RBLNGemmaForCausalLM,
|
161
162
|
RBLNGPT2LMHeadModel,
|
162
163
|
RBLNLlamaForCausalLM,
|
@@ -164,6 +165,8 @@ if TYPE_CHECKING:
|
|
164
165
|
RBLNMidmLMHeadModel,
|
165
166
|
RBLNMistralForCausalLM,
|
166
167
|
RBLNPhiForCausalLM,
|
168
|
+
RBLNQwen2ForCausalLM,
|
169
|
+
RBLNT5ForConditionalGeneration,
|
167
170
|
RBLNWav2Vec2ForCTC,
|
168
171
|
RBLNWhisperForConditionalGeneration,
|
169
172
|
RBLNXLMRobertaModel,
|
optimum/rbln/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.1.
|
1
|
+
__version__ = '0.1.12'
|
@@ -58,9 +58,7 @@ class RBLNRuntimeVAEDecoder(RBLNPytorchRuntime):
|
|
58
58
|
|
59
59
|
|
60
60
|
class RBLNAutoencoderKL(RBLNModel):
|
61
|
-
model_type = "rbln_model"
|
62
61
|
config_name = "config.json"
|
63
|
-
auto_model_class = AutoModel # feature extraction
|
64
62
|
|
65
63
|
def __post_init__(self, **kwargs):
|
66
64
|
super().__post_init__(**kwargs)
|
@@ -105,9 +105,6 @@ class _ControlNetModel_Cross_Attention(torch.nn.Module):
|
|
105
105
|
|
106
106
|
|
107
107
|
class RBLNControlNetModel(RBLNModel):
|
108
|
-
model_type = "rbln_model"
|
109
|
-
auto_model_class = AutoModel # feature extraction
|
110
|
-
|
111
108
|
def __post_init__(self, **kwargs):
|
112
109
|
super().__post_init__(**kwargs)
|
113
110
|
self.use_encoder_hidden_states = any(
|
@@ -116,9 +113,6 @@ class RBLNControlNetModel(RBLNModel):
|
|
116
113
|
|
117
114
|
@classmethod
|
118
115
|
def from_pretrained(cls, *args, **kwargs):
|
119
|
-
if "subfolder" in kwargs:
|
120
|
-
del kwargs["subfolder"]
|
121
|
-
|
122
116
|
def get_model_from_task(
|
123
117
|
task: str,
|
124
118
|
model_name_or_path: Union[str, Path],
|
@@ -126,9 +126,6 @@ class _UNet_SDXL(torch.nn.Module):
|
|
126
126
|
|
127
127
|
|
128
128
|
class RBLNUNet2DConditionModel(RBLNModel):
|
129
|
-
model_type = "rbln_model"
|
130
|
-
auto_model_class = AutoModel # feature extraction
|
131
|
-
|
132
129
|
def __post_init__(self, **kwargs):
|
133
130
|
super().__post_init__(**kwargs)
|
134
131
|
self.in_features = self.rbln_config.model_cfg.get("in_features", None)
|
@@ -102,6 +102,10 @@ class RBLNMultiControlNetModel(RBLNModel):
|
|
102
102
|
real_save_path = save_directory + suffix
|
103
103
|
model.save_pretrained(real_save_path)
|
104
104
|
|
105
|
+
@classmethod
|
106
|
+
def _get_rbln_config(cls, **rbln_config_kwargs):
|
107
|
+
pass
|
108
|
+
|
105
109
|
def forward(
|
106
110
|
self,
|
107
111
|
sample: torch.FloatTensor,
|
@@ -35,7 +35,7 @@ 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
40
|
from ....utils.runtime_utils import ContextRblnConfig
|
41
41
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
@@ -47,6 +47,7 @@ logger = logging.get_logger(__name__)
|
|
47
47
|
|
48
48
|
class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
49
49
|
@classmethod
|
50
|
+
@use_rbln_config
|
50
51
|
def from_pretrained(cls, model_id, **kwargs):
|
51
52
|
"""
|
52
53
|
Pipeline for text-to-image generation using Stable Diffusion with ControlNet.
|
@@ -71,12 +72,12 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
71
72
|
controlnet = kwargs.pop("controlnet", None)
|
72
73
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
73
74
|
rbln_config = kwargs.pop("rbln_config", None)
|
74
|
-
|
75
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
75
76
|
|
76
|
-
device =
|
77
|
-
device_map =
|
78
|
-
create_runtimes =
|
79
|
-
optimize_host_memory =
|
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)
|
80
81
|
|
81
82
|
kwargs_dict = {
|
82
83
|
"pretrained_model_name_or_path": model_id,
|
@@ -116,7 +117,7 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
116
117
|
return model
|
117
118
|
|
118
119
|
do_classifier_free_guidance = (
|
119
|
-
|
120
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
120
121
|
)
|
121
122
|
|
122
123
|
# compile model, create runtime
|
@@ -129,7 +130,7 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
129
130
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
130
131
|
rbln_use_encode=False,
|
131
132
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
132
|
-
rbln_config={**
|
133
|
+
rbln_config={**rbln_config},
|
133
134
|
)
|
134
135
|
|
135
136
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -138,10 +139,10 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
138
139
|
subfolder="text_encoder",
|
139
140
|
export=True,
|
140
141
|
model_save_dir=model_save_dir,
|
141
|
-
rbln_config={**
|
142
|
+
rbln_config={**rbln_config},
|
142
143
|
)
|
143
144
|
|
144
|
-
batch_size =
|
145
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
145
146
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
146
147
|
|
147
148
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -155,7 +156,7 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
155
156
|
rbln_use_encode=False,
|
156
157
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
157
158
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
158
|
-
rbln_config={**
|
159
|
+
rbln_config={**rbln_config},
|
159
160
|
)
|
160
161
|
|
161
162
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -164,27 +165,25 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
164
165
|
for i, cid in enumerate(controlnet):
|
165
166
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
166
167
|
multicontrolnet.append(
|
167
|
-
RBLNControlNetModel.
|
168
|
-
|
168
|
+
RBLNControlNetModel.from_model(
|
169
|
+
model=cid,
|
169
170
|
subfolder=subfolder_name,
|
170
|
-
export=True,
|
171
171
|
model_save_dir=model_save_dir,
|
172
172
|
rbln_batch_size=unet_batch_size,
|
173
173
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
174
|
-
rbln_config={**
|
174
|
+
rbln_config={**rbln_config},
|
175
175
|
)
|
176
176
|
)
|
177
177
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
178
178
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
179
179
|
else:
|
180
|
-
controlnet = RBLNControlNetModel.
|
181
|
-
|
180
|
+
controlnet = RBLNControlNetModel.from_model(
|
181
|
+
model=controlnet,
|
182
182
|
subfolder="controlnet",
|
183
|
-
export=True,
|
184
183
|
model_save_dir=model_save_dir,
|
185
184
|
rbln_batch_size=unet_batch_size,
|
186
185
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
187
|
-
rbln_config={**
|
186
|
+
rbln_config={**rbln_config},
|
188
187
|
)
|
189
188
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
190
189
|
|
@@ -215,7 +214,6 @@ class RBLNStableDiffusionControlNetPipeline(StableDiffusionControlNetPipeline):
|
|
215
214
|
# overwrite to replace incorrect config
|
216
215
|
model.save_config(model_save_dir)
|
217
216
|
|
218
|
-
# use for CI to access each compiled model
|
219
217
|
if optimize_host_memory is False:
|
220
218
|
model.compiled_models = [vae.compiled_models[0], text_encoder.compiled_models[0], unet.compiled_models[0]]
|
221
219
|
if isinstance(controlnet, RBLNMultiControlNetModel):
|
@@ -34,7 +34,7 @@ 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
39
|
from ....utils.runtime_utils import ContextRblnConfig
|
40
40
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
@@ -46,6 +46,7 @@ logger = logging.get_logger(__name__)
|
|
46
46
|
|
47
47
|
class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2ImgPipeline):
|
48
48
|
@classmethod
|
49
|
+
@use_rbln_config
|
49
50
|
def from_pretrained(cls, model_id, **kwargs):
|
50
51
|
"""
|
51
52
|
Pipeline for image-to-image generation using Stable Diffusion with ControlNet.
|
@@ -70,12 +71,12 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
70
71
|
controlnet = kwargs.pop("controlnet", None)
|
71
72
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
72
73
|
rbln_config = kwargs.pop("rbln_config", None)
|
73
|
-
|
74
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
74
75
|
|
75
|
-
device =
|
76
|
-
device_map =
|
77
|
-
create_runtimes =
|
78
|
-
optimize_host_memory =
|
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)
|
79
80
|
|
80
81
|
kwargs_dict = {
|
81
82
|
"pretrained_model_name_or_path": model_id,
|
@@ -115,7 +116,7 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
115
116
|
return model
|
116
117
|
|
117
118
|
do_classifier_free_guidance = (
|
118
|
-
|
119
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
119
120
|
)
|
120
121
|
|
121
122
|
# compile model, create runtime
|
@@ -128,7 +129,7 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
128
129
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
129
130
|
rbln_use_encode=True,
|
130
131
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
131
|
-
rbln_config={**
|
132
|
+
rbln_config={**rbln_config},
|
132
133
|
)
|
133
134
|
|
134
135
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -137,10 +138,10 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
137
138
|
subfolder="text_encoder",
|
138
139
|
export=True,
|
139
140
|
model_save_dir=model_save_dir,
|
140
|
-
rbln_config={**
|
141
|
+
rbln_config={**rbln_config},
|
141
142
|
)
|
142
143
|
|
143
|
-
batch_size =
|
144
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
144
145
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
145
146
|
|
146
147
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -154,7 +155,7 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
154
155
|
rbln_use_encode=True,
|
155
156
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
156
157
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
157
|
-
rbln_config={**
|
158
|
+
rbln_config={**rbln_config},
|
158
159
|
)
|
159
160
|
|
160
161
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -163,27 +164,25 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
163
164
|
for i, cid in enumerate(controlnet):
|
164
165
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
165
166
|
multicontrolnet.append(
|
166
|
-
RBLNControlNetModel.
|
167
|
-
|
167
|
+
RBLNControlNetModel.from_model(
|
168
|
+
model=cid,
|
168
169
|
subfolder=subfolder_name,
|
169
|
-
export=True,
|
170
170
|
model_save_dir=model_save_dir,
|
171
171
|
rbln_batch_size=unet_batch_size,
|
172
172
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
173
|
-
rbln_config={**
|
173
|
+
rbln_config={**rbln_config},
|
174
174
|
)
|
175
175
|
)
|
176
176
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
177
177
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
178
178
|
else:
|
179
|
-
controlnet = RBLNControlNetModel.
|
180
|
-
|
179
|
+
controlnet = RBLNControlNetModel.from_model(
|
180
|
+
model=controlnet,
|
181
181
|
subfolder="controlnet",
|
182
|
-
export=True,
|
183
182
|
model_save_dir=model_save_dir,
|
184
183
|
rbln_batch_size=unet_batch_size,
|
185
184
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
186
|
-
rbln_config={**
|
185
|
+
rbln_config={**rbln_config},
|
187
186
|
)
|
188
187
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
189
188
|
|
@@ -214,7 +213,6 @@ class RBLNStableDiffusionControlNetImg2ImgPipeline(StableDiffusionControlNetImg2
|
|
214
213
|
# overwrite to replace incorrect config
|
215
214
|
model.save_config(model_save_dir)
|
216
215
|
|
217
|
-
# use for CI to access each compiled model
|
218
216
|
if optimize_host_memory is False:
|
219
217
|
model.compiled_models = [
|
220
218
|
vae.compiled_models[0],
|
@@ -34,7 +34,7 @@ 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
39
|
from ....utils.runtime_utils import ContextRblnConfig
|
40
40
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
@@ -46,6 +46,7 @@ logger = logging.get_logger(__name__)
|
|
46
46
|
|
47
47
|
class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipeline):
|
48
48
|
@classmethod
|
49
|
+
@use_rbln_config
|
49
50
|
def from_pretrained(cls, model_id, **kwargs):
|
50
51
|
"""
|
51
52
|
Pipeline for text-to-image generation using Stable Diffusion XL with ControlNet.
|
@@ -71,12 +72,12 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
71
72
|
controlnet = kwargs.pop("controlnet", None)
|
72
73
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
73
74
|
rbln_config = kwargs.pop("rbln_config", None)
|
74
|
-
|
75
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
75
76
|
|
76
|
-
device =
|
77
|
-
device_map =
|
78
|
-
create_runtimes =
|
79
|
-
optimize_host_memory =
|
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)
|
80
81
|
|
81
82
|
kwargs_dict = {
|
82
83
|
"pretrained_model_name_or_path": model_id,
|
@@ -116,7 +117,7 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
116
117
|
return model
|
117
118
|
|
118
119
|
do_classifier_free_guidance = (
|
119
|
-
|
120
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
120
121
|
)
|
121
122
|
|
122
123
|
if not isinstance(vae, RBLNAutoencoderKL):
|
@@ -128,7 +129,7 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
128
129
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
129
130
|
rbln_use_encode=False,
|
130
131
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
131
|
-
rbln_config={**
|
132
|
+
rbln_config={**rbln_config},
|
132
133
|
)
|
133
134
|
|
134
135
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -137,7 +138,7 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
137
138
|
subfolder="text_encoder",
|
138
139
|
export=True,
|
139
140
|
model_save_dir=model_save_dir,
|
140
|
-
rbln_config={**
|
141
|
+
rbln_config={**rbln_config},
|
141
142
|
)
|
142
143
|
|
143
144
|
if not isinstance(text_encoder_2, RBLNCLIPTextModel):
|
@@ -146,10 +147,10 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
146
147
|
subfolder="text_encoder_2",
|
147
148
|
export=True,
|
148
149
|
model_save_dir=model_save_dir,
|
149
|
-
rbln_config={**
|
150
|
+
rbln_config={**rbln_config},
|
150
151
|
)
|
151
152
|
|
152
|
-
batch_size =
|
153
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
153
154
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
154
155
|
|
155
156
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -164,7 +165,7 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
164
165
|
rbln_use_encode=False,
|
165
166
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
166
167
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
167
|
-
rbln_config={**
|
168
|
+
rbln_config={**rbln_config},
|
168
169
|
)
|
169
170
|
|
170
171
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -173,29 +174,27 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
173
174
|
for i, cid in enumerate(controlnet):
|
174
175
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
175
176
|
multicontrolnet.append(
|
176
|
-
RBLNControlNetModel.
|
177
|
-
|
177
|
+
RBLNControlNetModel.from_model(
|
178
|
+
model=cid,
|
178
179
|
subfolder=subfolder_name,
|
179
|
-
export=True,
|
180
180
|
model_save_dir=model_save_dir,
|
181
181
|
rbln_batch_size=unet_batch_size,
|
182
182
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
183
183
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
184
|
-
rbln_config={**
|
184
|
+
rbln_config={**rbln_config},
|
185
185
|
)
|
186
186
|
)
|
187
187
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
188
188
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
189
189
|
else:
|
190
|
-
controlnet = RBLNControlNetModel.
|
191
|
-
|
190
|
+
controlnet = RBLNControlNetModel.from_model(
|
191
|
+
model=controlnet,
|
192
192
|
subfolder="controlnet",
|
193
|
-
export=True,
|
194
193
|
model_save_dir=model_save_dir,
|
195
194
|
rbln_batch_size=unet_batch_size,
|
196
195
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
197
196
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
198
|
-
rbln_config={**
|
197
|
+
rbln_config={**rbln_config},
|
199
198
|
)
|
200
199
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
201
200
|
|
@@ -228,20 +227,6 @@ class RBLNStableDiffusionXLControlNetPipeline(StableDiffusionXLControlNetPipelin
|
|
228
227
|
# overwrite to replace incorrect config
|
229
228
|
model.save_config(model_save_dir)
|
230
229
|
|
231
|
-
# use for CI to access each compiled model
|
232
|
-
if optimize_host_memory is False:
|
233
|
-
model.compiled_models = [
|
234
|
-
vae.compiled_models[0],
|
235
|
-
text_encoder.compiled_models[0],
|
236
|
-
text_encoder_2.compiled_models[0],
|
237
|
-
unet.compiled_models[0],
|
238
|
-
]
|
239
|
-
if isinstance(controlnet, RBLNMultiControlNetModel):
|
240
|
-
for c_model in controlnet.nets:
|
241
|
-
model.compiled_models.append(c_model.compiled_models[0])
|
242
|
-
else:
|
243
|
-
model.compiled_models.append(controlnet.compiled_models[0])
|
244
|
-
|
245
230
|
return model
|
246
231
|
|
247
232
|
def check_inputs(
|
@@ -34,7 +34,7 @@ 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
39
|
from ....utils.runtime_utils import ContextRblnConfig
|
40
40
|
from ...models import RBLNAutoencoderKL, RBLNControlNetModel, RBLNUNet2DConditionModel
|
@@ -46,6 +46,7 @@ logger = logging.get_logger(__name__)
|
|
46
46
|
|
47
47
|
class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNetImg2ImgPipeline):
|
48
48
|
@classmethod
|
49
|
+
@use_rbln_config
|
49
50
|
def from_pretrained(cls, model_id, **kwargs):
|
50
51
|
"""
|
51
52
|
Pipeline for image-to-image generation using Stable Diffusion XL with ControlNet.
|
@@ -70,13 +71,14 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
70
71
|
text_encoder_2 = kwargs.pop("text_encoder_2", None)
|
71
72
|
controlnet = kwargs.pop("controlnet", None)
|
72
73
|
model_save_dir = kwargs.pop("model_save_dir", None)
|
74
|
+
|
73
75
|
rbln_config = kwargs.pop("rbln_config", None)
|
74
|
-
|
76
|
+
rbln_config = {} if rbln_config is None else rbln_config
|
75
77
|
|
76
|
-
device =
|
77
|
-
device_map =
|
78
|
-
create_runtimes =
|
79
|
-
optimize_host_memory =
|
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)
|
80
82
|
|
81
83
|
kwargs_dict = {
|
82
84
|
"pretrained_model_name_or_path": model_id,
|
@@ -116,7 +118,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
116
118
|
return model
|
117
119
|
|
118
120
|
do_classifier_free_guidance = (
|
119
|
-
|
121
|
+
rbln_config.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
|
120
122
|
)
|
121
123
|
|
122
124
|
if not isinstance(vae, RBLNAutoencoderKL):
|
@@ -128,7 +130,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
128
130
|
rbln_unet_sample_size=model.unet.config.sample_size,
|
129
131
|
rbln_use_encode=True,
|
130
132
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
131
|
-
rbln_config={**
|
133
|
+
rbln_config={**rbln_config},
|
132
134
|
)
|
133
135
|
|
134
136
|
if not isinstance(text_encoder, RBLNCLIPTextModel):
|
@@ -137,7 +139,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
137
139
|
subfolder="text_encoder",
|
138
140
|
export=True,
|
139
141
|
model_save_dir=model_save_dir,
|
140
|
-
rbln_config={**
|
142
|
+
rbln_config={**rbln_config},
|
141
143
|
)
|
142
144
|
|
143
145
|
if not isinstance(text_encoder_2, RBLNCLIPTextModel):
|
@@ -146,10 +148,10 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
146
148
|
subfolder="text_encoder_2",
|
147
149
|
export=True,
|
148
150
|
model_save_dir=model_save_dir,
|
149
|
-
rbln_config={**
|
151
|
+
rbln_config={**rbln_config},
|
150
152
|
)
|
151
153
|
|
152
|
-
batch_size =
|
154
|
+
batch_size = rbln_config.pop("batch_size", 1)
|
153
155
|
unet_batch_size = batch_size * 2 if do_classifier_free_guidance else batch_size
|
154
156
|
|
155
157
|
if not isinstance(unet, RBLNUNet2DConditionModel):
|
@@ -164,7 +166,7 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
164
166
|
rbln_use_encode=True,
|
165
167
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
166
168
|
rbln_is_controlnet=True if "controlnet" in model.config.keys() else False,
|
167
|
-
rbln_config={**
|
169
|
+
rbln_config={**rbln_config},
|
168
170
|
)
|
169
171
|
|
170
172
|
if not isinstance(controlnet, (RBLNControlNetModel, RBLNMultiControlNetModel)):
|
@@ -173,29 +175,27 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
173
175
|
for i, cid in enumerate(controlnet):
|
174
176
|
subfolder_name = "controlnet" if i == 0 else f"controlnet_{i}"
|
175
177
|
multicontrolnet.append(
|
176
|
-
RBLNControlNetModel.
|
177
|
-
|
178
|
+
RBLNControlNetModel.from_model(
|
179
|
+
model=cid,
|
178
180
|
subfolder=subfolder_name,
|
179
|
-
export=True,
|
180
181
|
model_save_dir=model_save_dir,
|
181
182
|
rbln_batch_size=unet_batch_size,
|
182
183
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
183
184
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
184
|
-
rbln_config={**
|
185
|
+
rbln_config={**rbln_config},
|
185
186
|
)
|
186
187
|
)
|
187
188
|
controlnet = RBLNMultiControlNetModel(multicontrolnet, config=controlnet[0].config)
|
188
189
|
controlnet_dict = ("optimum.rbln", "RBLNMultiControlNetModel")
|
189
190
|
else:
|
190
|
-
controlnet = RBLNControlNetModel.
|
191
|
-
|
191
|
+
controlnet = RBLNControlNetModel.from_model(
|
192
|
+
model=controlnet,
|
192
193
|
subfolder="controlnet",
|
193
|
-
export=True,
|
194
194
|
model_save_dir=model_save_dir,
|
195
195
|
rbln_batch_size=unet_batch_size,
|
196
196
|
rbln_text_model_hidden_size=model.text_encoder_2.config.hidden_size,
|
197
197
|
rbln_vae_scale_factor=model.vae_scale_factor,
|
198
|
-
rbln_config={**
|
198
|
+
rbln_config={**rbln_config},
|
199
199
|
)
|
200
200
|
controlnet_dict = ("optimum.rbln", "RBLNControlNetModel")
|
201
201
|
|
@@ -228,21 +228,6 @@ class RBLNStableDiffusionXLControlNetImg2ImgPipeline(StableDiffusionXLControlNet
|
|
228
228
|
# overwrite to replace incorrect config
|
229
229
|
model.save_config(model_save_dir)
|
230
230
|
|
231
|
-
# use for CI to access each compiled model
|
232
|
-
if optimize_host_memory is False:
|
233
|
-
model.compiled_models = [
|
234
|
-
vae.compiled_models[0],
|
235
|
-
vae.compiled_models[1],
|
236
|
-
text_encoder.compiled_models[0],
|
237
|
-
text_encoder_2.compiled_models[0],
|
238
|
-
unet.compiled_models[0],
|
239
|
-
]
|
240
|
-
if isinstance(controlnet, RBLNMultiControlNetModel):
|
241
|
-
for c_model in controlnet.nets:
|
242
|
-
model.compiled_models.append(c_model.compiled_models[0])
|
243
|
-
else:
|
244
|
-
model.compiled_models.append(controlnet.compiled_models[0])
|
245
|
-
|
246
231
|
return model
|
247
232
|
|
248
233
|
def check_inputs(
|