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.
Files changed (54) hide show
  1. optimum/rbln/__init__.py +10 -7
  2. optimum/rbln/__version__.py +1 -1
  3. optimum/rbln/diffusers/models/autoencoder_kl.py +0 -2
  4. optimum/rbln/diffusers/models/controlnet.py +0 -6
  5. optimum/rbln/diffusers/models/unet_2d_condition.py +0 -3
  6. optimum/rbln/diffusers/pipelines/controlnet/multicontrolnet.py +4 -0
  7. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet.py +18 -20
  8. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +18 -20
  9. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +19 -34
  10. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +20 -35
  11. optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +12 -13
  12. optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +12 -14
  13. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +13 -14
  14. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +13 -14
  15. optimum/rbln/modeling_alias.py +4 -9
  16. optimum/rbln/modeling_base.py +105 -139
  17. optimum/rbln/modeling_config.py +51 -0
  18. optimum/rbln/transformers/__init__.py +8 -0
  19. optimum/rbln/transformers/models/__init__.py +4 -1
  20. optimum/rbln/transformers/models/auto/modeling_auto.py +1 -0
  21. optimum/rbln/transformers/models/bart/__init__.py +1 -1
  22. optimum/rbln/transformers/models/bart/bart_architecture.py +18 -12
  23. optimum/rbln/transformers/models/bart/modeling_bart.py +25 -6
  24. optimum/rbln/transformers/models/bert/modeling_bert.py +1 -2
  25. optimum/rbln/transformers/models/clip/modeling_clip.py +0 -1
  26. optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py +172 -100
  27. optimum/rbln/transformers/models/dpt/modeling_dpt.py +0 -1
  28. optimum/rbln/transformers/models/exaone/__init__.py +32 -0
  29. optimum/rbln/transformers/models/exaone/exaone_architecture.py +72 -0
  30. optimum/rbln/transformers/models/exaone/hf_hub_cached/configuration_exaone.py +181 -0
  31. optimum/rbln/transformers/models/exaone/hf_hub_cached/modeling_exaone.py +1725 -0
  32. optimum/rbln/transformers/models/exaone/modeling_exaone.py +78 -0
  33. optimum/rbln/transformers/models/llava_next/modeling_llava_next.py +148 -152
  34. optimum/rbln/transformers/models/midm/modeling_midm.py +5 -0
  35. optimum/rbln/transformers/models/qwen2/__init__.py +24 -0
  36. optimum/rbln/transformers/models/qwen2/modeling_qwen2.py +67 -0
  37. optimum/rbln/transformers/models/qwen2/qwen2_architecture.py +29 -0
  38. optimum/rbln/transformers/models/seq2seq/__init__.py +24 -0
  39. optimum/rbln/{modeling_seq2seq.py → transformers/models/seq2seq/modeling_seq2seq.py} +107 -166
  40. optimum/rbln/transformers/models/t5/__init__.py +1 -0
  41. optimum/rbln/transformers/models/t5/modeling_t5.py +55 -0
  42. optimum/rbln/transformers/models/t5/t5_architecture.py +46 -32
  43. optimum/rbln/transformers/models/wav2vec2/modeling_wav2vec2.py +0 -1
  44. optimum/rbln/transformers/models/whisper/modeling_whisper.py +37 -12
  45. optimum/rbln/transformers/models/xlm_roberta/modeling_xlm_roberta.py +1 -2
  46. optimum/rbln/utils/import_utils.py +14 -0
  47. optimum/rbln/utils/logging.py +1 -1
  48. optimum/rbln/utils/runtime_utils.py +1 -1
  49. optimum/rbln/utils/timer_utils.py +26 -2
  50. {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/METADATA +4 -3
  51. {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/RECORD +54 -44
  52. {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/WHEEL +1 -1
  53. {optimum_rbln-0.1.11.dist-info → optimum_rbln-0.1.12.dist-info}/entry_points.txt +0 -0
  54. {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,
@@ -1 +1 @@
1
- __version__ = '0.1.11'
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 ....modeling_base import RBLNBaseModel
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
- rbln_kwargs, _ = RBLNBaseModel.resolve_rbln_config(rbln_config, kwargs)
75
+ rbln_config = {} if rbln_config is None else rbln_config
75
76
 
76
- device = rbln_kwargs.get("device", None)
77
- device_map = rbln_kwargs.get("device_map", None)
78
- create_runtimes = rbln_kwargs.get("create_runtimes", None)
79
- optimize_host_memory = rbln_kwargs.get("optimize_host_memory", None)
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
- rbln_kwargs.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
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={**rbln_kwargs},
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={**rbln_kwargs},
142
+ rbln_config={**rbln_config},
142
143
  )
143
144
 
144
- batch_size = rbln_kwargs.pop("batch_size", 1)
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={**rbln_kwargs},
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.from_pretrained(
168
- model_id=cid.config._name_or_path,
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={**rbln_kwargs},
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.from_pretrained(
181
- model_id=controlnet.config._name_or_path,
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={**rbln_kwargs},
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 ....modeling_base import RBLNBaseModel
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
- rbln_kwargs, _ = RBLNBaseModel.resolve_rbln_config(rbln_config, kwargs)
74
+ rbln_config = {} if rbln_config is None else rbln_config
74
75
 
75
- device = rbln_kwargs.get("device", None)
76
- device_map = rbln_kwargs.get("device_map", None)
77
- create_runtimes = rbln_kwargs.get("create_runtimes", None)
78
- optimize_host_memory = rbln_kwargs.get("optimize_host_memory", None)
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
- rbln_kwargs.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
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={**rbln_kwargs},
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={**rbln_kwargs},
141
+ rbln_config={**rbln_config},
141
142
  )
142
143
 
143
- batch_size = rbln_kwargs.pop("batch_size", 1)
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={**rbln_kwargs},
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.from_pretrained(
167
- model_id=cid.config._name_or_path,
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={**rbln_kwargs},
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.from_pretrained(
180
- model_id=controlnet.config._name_or_path,
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={**rbln_kwargs},
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 ....modeling_base import RBLNBaseModel
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
- rbln_kwargs, _ = RBLNBaseModel.resolve_rbln_config(rbln_config, kwargs)
75
+ rbln_config = {} if rbln_config is None else rbln_config
75
76
 
76
- device = rbln_kwargs.get("device", None)
77
- device_map = rbln_kwargs.get("device_map", None)
78
- create_runtimes = rbln_kwargs.get("create_runtimes", None)
79
- optimize_host_memory = rbln_kwargs.get("optimize_host_memory", None)
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
- rbln_kwargs.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
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={**rbln_kwargs},
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={**rbln_kwargs},
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={**rbln_kwargs},
150
+ rbln_config={**rbln_config},
150
151
  )
151
152
 
152
- batch_size = rbln_kwargs.pop("batch_size", 1)
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={**rbln_kwargs},
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.from_pretrained(
177
- model_id=cid.config._name_or_path,
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={**rbln_kwargs},
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.from_pretrained(
191
- model_id=controlnet.config._name_or_path,
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={**rbln_kwargs},
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 ....modeling_base import RBLNBaseModel
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
- rbln_kwargs, _ = RBLNBaseModel.resolve_rbln_config(rbln_config, kwargs)
76
+ rbln_config = {} if rbln_config is None else rbln_config
75
77
 
76
- device = rbln_kwargs.get("device", None)
77
- device_map = rbln_kwargs.get("device_map", None)
78
- create_runtimes = rbln_kwargs.get("create_runtimes", None)
79
- optimize_host_memory = rbln_kwargs.get("optimize_host_memory", None)
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
- rbln_kwargs.pop("guidance_scale", 5.0) > 1.0 and model.unet.config.time_cond_proj_dim is None
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={**rbln_kwargs},
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={**rbln_kwargs},
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={**rbln_kwargs},
151
+ rbln_config={**rbln_config},
150
152
  )
151
153
 
152
- batch_size = rbln_kwargs.pop("batch_size", 1)
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={**rbln_kwargs},
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.from_pretrained(
177
- model_id=cid.config._name_or_path,
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={**rbln_kwargs},
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.from_pretrained(
191
- model_id=controlnet.config._name_or_path,
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={**rbln_kwargs},
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(