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.
Files changed (73) hide show
  1. optimum/rbln/__init__.py +47 -9
  2. optimum/rbln/__version__.py +1 -1
  3. optimum/rbln/diffusers/models/autoencoder_kl.py +36 -31
  4. optimum/rbln/diffusers/models/controlnet.py +53 -43
  5. optimum/rbln/diffusers/models/unet_2d_condition.py +40 -31
  6. optimum/rbln/diffusers/pipelines/controlnet/multicontrolnet.py +4 -0
  7. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet.py +28 -23
  8. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +28 -23
  9. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +28 -37
  10. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +30 -39
  11. optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +24 -14
  12. optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +24 -15
  13. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +26 -17
  14. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +26 -17
  15. optimum/rbln/modeling_alias.py +6 -11
  16. optimum/rbln/modeling_base.py +467 -261
  17. optimum/rbln/modeling_config.py +199 -73
  18. optimum/rbln/transformers/__init__.py +43 -1
  19. optimum/rbln/transformers/models/__init__.py +23 -1
  20. optimum/rbln/transformers/models/auto/__init__.py +14 -0
  21. optimum/rbln/transformers/models/auto/auto_factory.py +84 -0
  22. optimum/rbln/transformers/models/auto/modeling_auto.py +95 -0
  23. optimum/rbln/transformers/models/bart/__init__.py +1 -0
  24. optimum/rbln/transformers/models/bart/bart_architecture.py +203 -58
  25. optimum/rbln/transformers/models/bart/modeling_bart.py +125 -0
  26. optimum/rbln/transformers/models/bert/__init__.py +24 -0
  27. optimum/rbln/transformers/models/bert/modeling_bert.py +101 -0
  28. optimum/rbln/transformers/models/clip/__init__.py +1 -1
  29. optimum/rbln/transformers/models/clip/modeling_clip.py +127 -26
  30. optimum/rbln/transformers/models/decoderonly/decoderonly_architecture.py +28 -4
  31. optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py +409 -150
  32. optimum/rbln/transformers/models/dpt/modeling_dpt.py +21 -8
  33. optimum/rbln/transformers/models/exaone/__init__.py +32 -0
  34. optimum/rbln/transformers/models/exaone/exaone_architecture.py +72 -0
  35. optimum/rbln/transformers/models/exaone/hf_hub_cached/configuration_exaone.py +181 -0
  36. optimum/rbln/transformers/models/exaone/hf_hub_cached/modeling_exaone.py +1725 -0
  37. optimum/rbln/transformers/models/exaone/modeling_exaone.py +78 -0
  38. optimum/rbln/transformers/models/gemma/modeling_gemma.py +1 -1
  39. optimum/rbln/transformers/models/gpt2/gpt2_architecture.py +4 -1
  40. optimum/rbln/transformers/models/gpt2/modeling_gpt2.py +1 -1
  41. optimum/rbln/transformers/models/llama/modeling_llama.py +1 -1
  42. optimum/rbln/transformers/models/llava_next/__init__.py +24 -0
  43. optimum/rbln/transformers/models/llava_next/modeling_llava_next.py +662 -0
  44. optimum/rbln/transformers/models/midm/midm_architecture.py +5 -1
  45. optimum/rbln/transformers/models/midm/modeling_midm.py +6 -1
  46. optimum/rbln/transformers/models/mistral/modeling_mistral.py +1 -1
  47. optimum/rbln/transformers/models/phi/__init__.py +24 -0
  48. optimum/rbln/transformers/models/phi/modeling_phi.py +69 -0
  49. optimum/rbln/transformers/models/phi/phi_architecture.py +406 -0
  50. optimum/rbln/transformers/models/qwen2/__init__.py +24 -0
  51. optimum/rbln/transformers/models/qwen2/modeling_qwen2.py +67 -0
  52. optimum/rbln/transformers/models/qwen2/qwen2_architecture.py +29 -0
  53. optimum/rbln/transformers/models/seq2seq/__init__.py +24 -0
  54. optimum/rbln/{modeling_seq2seq.py → transformers/models/seq2seq/modeling_seq2seq.py} +198 -168
  55. optimum/rbln/transformers/models/t5/__init__.py +1 -0
  56. optimum/rbln/transformers/models/t5/modeling_t5.py +55 -0
  57. optimum/rbln/transformers/models/t5/t5_architecture.py +122 -47
  58. optimum/rbln/transformers/models/wav2vec2/modeling_wav2vec2.py +17 -12
  59. optimum/rbln/transformers/models/whisper/generation_whisper.py +68 -0
  60. optimum/rbln/transformers/models/whisper/modeling_whisper.py +172 -111
  61. optimum/rbln/transformers/models/whisper/whisper_architecture.py +44 -17
  62. optimum/rbln/transformers/models/xlm_roberta/modeling_xlm_roberta.py +18 -16
  63. optimum/rbln/transformers/utils/rbln_quantization.py +48 -60
  64. optimum/rbln/utils/import_utils.py +50 -1
  65. optimum/rbln/utils/logging.py +82 -0
  66. optimum/rbln/utils/runtime_utils.py +33 -0
  67. optimum/rbln/utils/timer_utils.py +43 -0
  68. {optimum_rbln-0.1.9.dist-info → optimum_rbln-0.1.12.dist-info}/METADATA +9 -7
  69. optimum_rbln-0.1.12.dist-info/RECORD +103 -0
  70. {optimum_rbln-0.1.9.dist-info → optimum_rbln-0.1.12.dist-info}/WHEEL +1 -1
  71. optimum_rbln-0.1.12.dist-info/entry_points.txt +4 -0
  72. optimum_rbln-0.1.9.dist-info/RECORD +0 -78
  73. {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 ....modeling_base import RBLNBaseModel
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
- rbln_config_kwargs, rbln_constructor_kwargs = RBLNBaseModel.pop_rbln_kwargs_from_kwargs(kwargs)
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
- model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
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
- rbln_config_kwargs.pop("rbln_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
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
- **rbln_config_kwargs,
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
- **rbln_config_kwargs,
131
- **rbln_constructor_kwargs,
142
+ rbln_config={**rbln_config},
132
143
  )
133
144
 
134
- batch_size = rbln_config_kwargs.pop("rbln_batch_size", 1)
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
- **rbln_config_kwargs,
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.from_pretrained(
159
- model_id=cid.config._name_or_path,
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
- **rbln_config_kwargs,
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.from_pretrained(
173
- model_id=controlnet.config._name_or_path,
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
- **rbln_config_kwargs,
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
- # use for CI to access each compiled model
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 ....modeling_base import RBLNBaseModel
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
- rbln_config_kwargs, rbln_constructor_kwargs = RBLNBaseModel.pop_rbln_kwargs_from_kwargs(kwargs)
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
- model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
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
- rbln_config_kwargs.pop("rbln_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
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
- **rbln_config_kwargs,
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
- **rbln_config_kwargs,
130
- **rbln_constructor_kwargs,
141
+ rbln_config={**rbln_config},
131
142
  )
132
143
 
133
- batch_size = rbln_config_kwargs.pop("rbln_batch_size", 1)
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
- **rbln_config_kwargs,
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.from_pretrained(
158
- model_id=cid.config._name_or_path,
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
- **rbln_config_kwargs,
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.from_pretrained(
172
- model_id=controlnet.config._name_or_path,
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
- **rbln_config_kwargs,
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
- # use for CI to access each compiled model
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 ....modeling_base import RBLNBaseModel
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
- rbln_config_kwargs, rbln_constructor_kwargs = RBLNBaseModel.pop_rbln_kwargs_from_kwargs(kwargs)
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
- model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
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
- rbln_config_kwargs.pop("rbln_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
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
- **rbln_config_kwargs,
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
- **rbln_config_kwargs,
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
- **rbln_config_kwargs,
140
- **rbln_constructor_kwargs,
150
+ rbln_config={**rbln_config},
141
151
  )
142
152
 
143
- batch_size = rbln_config_kwargs.pop("rbln_batch_size", 1)
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
- **rbln_config_kwargs,
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.from_pretrained(
169
- model_id=cid.config._name_or_path,
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
- **rbln_config_kwargs,
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.from_pretrained(
184
- model_id=controlnet.config._name_or_path,
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
- **rbln_config_kwargs,
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 ....modeling_base import RBLNBaseModel
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
- rbln_config_kwargs, rbln_constructor_kwargs = RBLNBaseModel.pop_rbln_kwargs_from_kwargs(kwargs)
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
- model = super().from_pretrained(**{k: v for k, v in kwargs_dict.items() if v is not None})
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
- rbln_config_kwargs.pop("rbln_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
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
- **rbln_config_kwargs,
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
- **rbln_config_kwargs,
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
- **rbln_config_kwargs,
140
- **rbln_constructor_kwargs,
151
+ rbln_config={**rbln_config},
141
152
  )
142
153
 
143
- batch_size = rbln_config_kwargs.pop("rbln_batch_size", 1)
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
- **rbln_config_kwargs,
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.from_pretrained(
169
- model_id=cid.config._name_or_path,
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
- **rbln_config_kwargs,
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.from_pretrained(
184
- model_id=controlnet.config._name_or_path,
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
- **rbln_config_kwargs,
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", "RBLNCLIPTextModel"),
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(