ControlNet¶
ControlNet 모델은 Stable Diffusion 모델에 추가적인 조건(예: 엣지 맵, 깊이 맵, 사람 포즈)을 더하여 생성되는 이미지의 구조를 더 정밀하게 제어할 수 있습니다. RBLN Optimum을 사용하면 RBLN NPU에서 ControlNet 모델 추론을 가속할 수 있습니다.
지원 NPU
Diffusers 파이프라인은 ATOM™에서만 실행됩니다. Rebel100™은 아직 지원하지 않습니다.
파이프라인 내 사용법¶
일반적으로 RBLNControlNetModel과 직접 상호 작용하지 않습니다. 대신, RBLNStableDiffusionControlNetPipeline 또는 RBLNStableDiffusionXLControlNetPipeline과 같은 RBLN ControlNet 파이프라인의 일부로 자동 로드 및 관리됩니다. Cosmos용 변형인 RBLNCosmosControlNetModel 역시 RBLNCosmos2_5_TransferPipeline에서 같은 방식으로 로드됩니다.
RBLN ControlNet 파이프라인을 구성할 때 파이프라인 설정 객체의 controlnet 인수를 통해 ControlNet 모델에 대한 특정 설정을 전달할 수 있습니다:
guidance scale이 ControlNet 배치 크기에 주는 영향을 처리하는 방법을 비롯해 파이프라인 사용·구성의 자세한 내용은 ControlNet 파이프라인 문서(표준, SDXL)에서 확인할 수 있습니다.
API 참조¶
RBLNControlNetModel ¶
Bases: RBLNModel
RBLN implementation of ControlNetModel for diffusion models.
This model is used to accelerate ControlNetModel models from diffusers library on RBLN NPUs.
This class inherits from [RBLNModel]. Check the superclass documentation for the generic methods the library implements for all its models.
forward(sample, timestep, encoder_hidden_states, controlnet_cond, conditioning_scale=1.0, added_cond_kwargs=None, return_dict=True, **kwargs) ¶
Forward pass for the RBLN-optimized ControlNetModel.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sample | FloatTensor | The noisy input tensor. | required |
timestep | Tensor | float | int | The number of timesteps to denoise an input. | required |
encoder_hidden_states | Tensor | The encoder hidden states. | required |
controlnet_cond | FloatTensor | The conditional input tensor of shape | required |
conditioning_scale | float | The scale factor for ControlNet outputs. | 1.0 |
added_cond_kwargs | dict[str, Tensor] | Additional conditions for the Stable Diffusion XL UNet. | None |
return_dict | bool | Whether or not to return a [ | True |
Returns:
| Type | Description |
|---|---|
ControlNetOutput | tuple | ( |
from_pretrained(model_id, export=None, rbln_config=None, **kwargs) classmethod ¶
The from_pretrained() function is utilized in its standard form as in the HuggingFace transformers library. User can use this function to load a pre-trained model from the HuggingFace library and convert it to a RBLN model to be run on RBLN NPUs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_id | str | Path | The model id of the pre-trained model to be loaded. It can be downloaded from the HuggingFace model hub or a local path, or a model id of a compiled model using the RBLN Compiler. | required |
export | bool | None | A boolean flag to indicate whether the model should be compiled. If None, it will be determined based on the existence of the compiled model files in the model_id. | None |
rbln_config | dict | RBLNModelConfig | None | Configuration for RBLN model compilation and runtime. This can be provided as a dictionary or an instance of the model's configuration class (e.g., | None |
kwargs | Any | Additional keyword arguments. Arguments with the prefix | {} |
Returns:
| Type | Description |
|---|---|
RBLNModel | A RBLN model instance ready for inference on RBLN NPU devices. |
get_hf_class() classmethod ¶
Lazily load and cache the HuggingFace class this model wraps.
The class is looked up in hf_library_name under the name without the RBLN prefix (e.g. RBLNLlamaForCausalLM -> LlamaForCausalLM).
save_pretrained(save_directory, push_to_hub=False, **kwargs) ¶
Saves a model and its configuration file to a directory, so that it can be re-loaded using the [~optimum.rbln.modeling_base.RBLNBaseModel.from_pretrained] class method.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
save_directory | str | Path | Directory where to save the model file. | required |
push_to_hub | bool | Whether or not to push your model to the HuggingFace model hub after saving it. | False |
from_model(model, config=None, rbln_config=None, model_save_dir=None, subfolder='', **kwargs) classmethod ¶
Converts and compiles a pre-trained HuggingFace library model into a RBLN model. This method performs the actual model conversion and compilation process.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model | PreTrainedModel | ModelMixin | The PyTorch model to be compiled. The object must be a HuggingFace transformers | required |
config | PretrainedConfig | None | The configuration object associated with the model. | None |
rbln_config | RBLNModelConfig | dict | None | Configuration for RBLN model compilation and runtime. This can be provided as a dictionary or an instance of the model's configuration class (e.g., | None |
kwargs | Any | Additional keyword arguments. Arguments with the prefix | {} |
The method performs the following steps:
- Compiles the PyTorch model into an optimized RBLN graph
- Configures the model for the specified NPU device
- Creates the necessary runtime objects if requested
- Saves the compiled model and configurations
Returns:
| Type | Description |
|---|---|
RBLNModel | A RBLN model instance ready for inference on RBLN NPU devices. |
RBLNControlNetModelConfig ¶
Bases: RBLNModelConfig
Configuration class for RBLN ControlNet models.
__init__(batch_size=None, max_seq_len=None, unet_sample_size=None, vae_sample_size=None, text_model_hidden_size=None, **kwargs) ¶
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
batch_size | int | None | The batch size for inference. Defaults to 1. | None |
max_seq_len | int | None | Maximum sequence length for text inputs when used with cross-attention. | None |
unet_sample_size | tuple[int, int] | None | The spatial dimensions (height, width) of the UNet output samples. | None |
vae_sample_size | tuple[int, int] | None | The spatial dimensions (height, width) of the VAE input/output images. | None |
text_model_hidden_size | int | None | Hidden size of the text encoder model used for conditioning. | None |
kwargs | Any | Additional arguments passed to the parent RBLNModelConfig. | {} |
Raises:
| Type | Description |
|---|---|
ValueError | If batch_size is not a positive integer. |
from_pretrained(path, rbln_config=None, return_unused_kwargs=False, **kwargs) classmethod ¶
Load a RBLNModelConfig from a path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path | str | Path to the RBLNModelConfig file or directory containing the config file. | required |
rbln_config | dict[str, Any] | None | Additional configuration to override. | None |
return_unused_kwargs | bool | Whether to return unused kwargs. | False |
kwargs | Any | Additional keyword arguments to override configuration values. Keys starting with 'rbln_' will have the prefix removed and be used to update the configuration. | {} |
Returns:
| Name | Type | Description |
|---|---|---|
RBLNModelConfig | Self | tuple[Self, dict[str, Any]] | The loaded configuration instance. |
Note
This method loads the configuration from the specified path and applies any provided overrides. If the loaded configuration class doesn't match the expected class, a warning will be logged.
Examples:
initialize_submodule_config(submodule_config=None, force_kwargs=False, **kwargs) ¶
Build the config of a submodule from the parent's runtime options and kwargs.
Returns the submodule config instance when its class is known (an instance was passed, or cls_name was given), otherwise the merged kwargs dict for the model class to resolve later.
get_load_overrides() ¶
Extract the options that must cross the load boundary, for passing to from_pretrained.
Returns the explicitly-set runtime options (device, device_map, create_runtimes, activate_profiler, timeout) and the subclass-specific non-save attributes (load-behavior flags such as _load_visual_runtime, which are never serialized so they can only travel with the caller), recursively including submodules. Compile-time attributes are not included: when loading a compiled model they come from the artifact's rbln_config.json, and this dict is merged on top of it.
Returns:
| Type | Description |
|---|---|
dict[str, Any] | Dictionary of load overrides, keyed like the |
CosmosControlNetWrapper ¶
Bases: CosmosPerFrameAdaLNMixin, Module
Compile graph: the ControlNet block stack. Embeddings are computed on the host.
RBLNCosmosControlNetModel ¶
Bases: RBLNModel
RBLN implementation of CosmosControlNetModel (Cosmos-Transfer2.5).
The block stack runs on the NPU; patch/time/rope/projection embeddings run on the host, mirroring RBLNCosmosTransformer3DModel. Its forward keeps the upstream signature and returns the per-block control residuals that the transformer injects every controlnet_block_every_n blocks.
from_pretrained(model_id, export=None, rbln_config=None, **kwargs) classmethod ¶
The from_pretrained() function is utilized in its standard form as in the HuggingFace transformers library. User can use this function to load a pre-trained model from the HuggingFace library and convert it to a RBLN model to be run on RBLN NPUs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_id | str | Path | The model id of the pre-trained model to be loaded. It can be downloaded from the HuggingFace model hub or a local path, or a model id of a compiled model using the RBLN Compiler. | required |
export | bool | None | A boolean flag to indicate whether the model should be compiled. If None, it will be determined based on the existence of the compiled model files in the model_id. | None |
rbln_config | dict | RBLNModelConfig | None | Configuration for RBLN model compilation and runtime. This can be provided as a dictionary or an instance of the model's configuration class (e.g., | None |
kwargs | Any | Additional keyword arguments. Arguments with the prefix | {} |
Returns:
| Type | Description |
|---|---|
RBLNModel | A RBLN model instance ready for inference on RBLN NPU devices. |
get_hf_class() classmethod ¶
Lazily load and cache the HuggingFace class this model wraps.
The class is looked up in hf_library_name under the name without the RBLN prefix (e.g. RBLNLlamaForCausalLM -> LlamaForCausalLM).
save_pretrained(save_directory, push_to_hub=False, **kwargs) ¶
Saves a model and its configuration file to a directory, so that it can be re-loaded using the [~optimum.rbln.modeling_base.RBLNBaseModel.from_pretrained] class method.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
save_directory | str | Path | Directory where to save the model file. | required |
push_to_hub | bool | Whether or not to push your model to the HuggingFace model hub after saving it. | False |
from_model(model, config=None, rbln_config=None, model_save_dir=None, subfolder='', **kwargs) classmethod ¶
Converts and compiles a pre-trained HuggingFace library model into a RBLN model. This method performs the actual model conversion and compilation process.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model | PreTrainedModel | ModelMixin | The PyTorch model to be compiled. The object must be a HuggingFace transformers | required |
config | PretrainedConfig | None | The configuration object associated with the model. | None |
rbln_config | RBLNModelConfig | dict | None | Configuration for RBLN model compilation and runtime. This can be provided as a dictionary or an instance of the model's configuration class (e.g., | None |
kwargs | Any | Additional keyword arguments. Arguments with the prefix | {} |
The method performs the following steps:
- Compiles the PyTorch model into an optimized RBLN graph
- Configures the model for the specified NPU device
- Creates the necessary runtime objects if requested
- Saves the compiled model and configurations
Returns:
| Type | Description |
|---|---|
RBLNModel | A RBLN model instance ready for inference on RBLN NPU devices. |
RBLNCosmosControlNetModelConfig ¶
Bases: RBLNModelConfig
Configuration class for the RBLN Cosmos ControlNet (Cosmos-Transfer2.5).
The ControlNet shares its latent geometry with the transformer it drives, so the size fields mirror RBLNCosmosTransformer3DModelConfig and are filled by the pipeline config.
__init__(batch_size=None, num_frames=None, height=None, width=None, max_seq_len=None, embedding_dim=None, num_latent_frames=None, latent_height=None, latent_width=None, img_context_num_tokens=None, **kwargs) ¶
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
batch_size | int | None | The batch size for inference. Defaults to 1. | None |
num_frames | int | None | The number of frames per generated chunk. | None |
height | int | None | The height in pixels of the generated video. | None |
width | int | None | The width in pixels of the generated video. | None |
max_seq_len | int | None | Maximum sequence length of prompt embeds. | None |
embedding_dim | int | None | Embedding vector dimension of prompt embeds (after the ControlNet's own cross-attention projection input). | None |
num_latent_frames | int | None | The number of frames in latent space. | None |
latent_height | int | None | The height in pixels in latent space. | None |
latent_width | int | None | The width in pixels in latent space. | None |
img_context_num_tokens | int | None | Number of image-context tokens the graph was compiled with; filled from the model config (Transfer2.5 feeds a zero image context of this size when none is given). | None |
kwargs | Any | Additional arguments passed to the parent RBLNModelConfig. | {} |
Raises:
| Type | Description |
|---|---|
ValueError | If batch_size is not a positive integer. |
from_pretrained(path, rbln_config=None, return_unused_kwargs=False, **kwargs) classmethod ¶
Load a RBLNModelConfig from a path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path | str | Path to the RBLNModelConfig file or directory containing the config file. | required |
rbln_config | dict[str, Any] | None | Additional configuration to override. | None |
return_unused_kwargs | bool | Whether to return unused kwargs. | False |
kwargs | Any | Additional keyword arguments to override configuration values. Keys starting with 'rbln_' will have the prefix removed and be used to update the configuration. | {} |
Returns:
| Name | Type | Description |
|---|---|---|
RBLNModelConfig | Self | tuple[Self, dict[str, Any]] | The loaded configuration instance. |
Note
This method loads the configuration from the specified path and applies any provided overrides. If the loaded configuration class doesn't match the expected class, a warning will be logged.
Examples:
initialize_submodule_config(submodule_config=None, force_kwargs=False, **kwargs) ¶
Build the config of a submodule from the parent's runtime options and kwargs.
Returns the submodule config instance when its class is known (an instance was passed, or cls_name was given), otherwise the merged kwargs dict for the model class to resolve later.
get_load_overrides() ¶
Extract the options that must cross the load boundary, for passing to from_pretrained.
Returns the explicitly-set runtime options (device, device_map, create_runtimes, activate_profiler, timeout) and the subclass-specific non-save attributes (load-behavior flags such as _load_visual_runtime, which are never serialized so they can only travel with the caller), recursively including submodules. Compile-time attributes are not included: when loading a compiled model they come from the artifact's rbln_config.json, and this dict is merged on top of it.
Returns:
| Type | Description |
|---|---|
dict[str, Any] | Dictionary of load overrides, keyed like the |