optimum-rbln 0.8.2a4__py3-none-any.whl → 0.9.3rc0__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 +96 -9
- optimum/rbln/__version__.py +16 -3
- optimum/rbln/cli.py +660 -0
- optimum/rbln/configuration_utils.py +153 -42
- optimum/rbln/diffusers/__init__.py +7 -0
- optimum/rbln/diffusers/configurations/models/configuration_autoencoder_kl.py +3 -3
- optimum/rbln/diffusers/configurations/models/configuration_autoencoder_kl_cosmos.py +1 -1
- optimum/rbln/diffusers/configurations/models/configuration_controlnet.py +3 -3
- optimum/rbln/diffusers/configurations/models/configuration_prior_transformer.py +4 -4
- optimum/rbln/diffusers/configurations/models/configuration_transformer_cosmos.py +9 -4
- optimum/rbln/diffusers/configurations/models/configuration_transformer_sd3.py +9 -4
- optimum/rbln/diffusers/configurations/models/configuration_unet_2d_condition.py +3 -3
- optimum/rbln/diffusers/configurations/models/configuration_vq_model.py +3 -3
- optimum/rbln/diffusers/configurations/pipelines/configuration_controlnet.py +35 -19
- optimum/rbln/diffusers/configurations/pipelines/configuration_cosmos.py +14 -11
- optimum/rbln/diffusers/configurations/pipelines/configuration_kandinsky2_2.py +30 -20
- optimum/rbln/diffusers/configurations/pipelines/configuration_stable_diffusion.py +13 -9
- optimum/rbln/diffusers/configurations/pipelines/configuration_stable_diffusion_3.py +17 -13
- optimum/rbln/diffusers/configurations/pipelines/configuration_stable_diffusion_xl.py +17 -10
- optimum/rbln/diffusers/modeling_diffusers.py +30 -14
- optimum/rbln/diffusers/models/__init__.py +3 -13
- optimum/rbln/diffusers/models/autoencoders/autoencoder_kl.py +31 -3
- optimum/rbln/diffusers/models/autoencoders/autoencoder_kl_cosmos.py +28 -3
- optimum/rbln/diffusers/models/autoencoders/vq_model.py +31 -3
- optimum/rbln/diffusers/models/transformers/prior_transformer.py +1 -1
- optimum/rbln/diffusers/models/transformers/transformer_cosmos.py +9 -1
- optimum/rbln/diffusers/models/transformers/transformer_sd3.py +9 -1
- optimum/rbln/diffusers/models/unets/unet_2d_condition.py +6 -3
- optimum/rbln/diffusers/pipelines/__init__.py +11 -5
- optimum/rbln/diffusers/pipelines/auto_pipeline.py +307 -0
- optimum/rbln/diffusers/pipelines/cosmos/configuration_cosmos_guardrail.py +19 -16
- optimum/rbln/diffusers/pipelines/cosmos/cosmos_guardrail.py +14 -18
- optimum/rbln/diffusers/pipelines/cosmos/pipeline_cosmos_text2world.py +31 -1
- optimum/rbln/diffusers/pipelines/cosmos/pipeline_cosmos_video2world.py +31 -1
- optimum/rbln/diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_combined.py +1 -6
- optimum/rbln/modeling.py +71 -19
- optimum/rbln/modeling_base.py +99 -21
- optimum/rbln/ops/attn.py +158 -0
- optimum/rbln/ops/flash_attn.py +166 -0
- optimum/rbln/ops/kv_cache_update.py +5 -0
- optimum/rbln/ops/linear.py +7 -0
- optimum/rbln/transformers/__init__.py +92 -0
- optimum/rbln/transformers/configuration_generic.py +9 -7
- optimum/rbln/transformers/modeling_attention_utils.py +252 -0
- optimum/rbln/transformers/modeling_generic.py +51 -9
- optimum/rbln/transformers/modeling_outputs.py +37 -0
- optimum/rbln/transformers/models/__init__.py +91 -30
- optimum/rbln/transformers/models/auto/__init__.py +2 -0
- optimum/rbln/transformers/models/auto/auto_factory.py +92 -17
- optimum/rbln/transformers/models/auto/modeling_auto.py +45 -0
- optimum/rbln/transformers/models/bart/bart_architecture.py +1 -3
- optimum/rbln/transformers/models/bart/configuration_bart.py +2 -0
- optimum/rbln/transformers/models/bert/bert_architecture.py +16 -0
- optimum/rbln/transformers/models/bert/modeling_bert.py +8 -4
- optimum/rbln/transformers/models/blip_2/configuration_blip_2.py +42 -11
- optimum/rbln/transformers/models/blip_2/modeling_blip_2.py +94 -30
- optimum/rbln/transformers/models/clip/configuration_clip.py +10 -7
- optimum/rbln/transformers/models/clip/modeling_clip.py +27 -4
- optimum/rbln/transformers/models/colpali/colpali_architecture.py +3 -6
- optimum/rbln/transformers/models/colpali/configuration_colpali.py +37 -21
- optimum/rbln/transformers/models/colpali/modeling_colpali.py +113 -96
- optimum/rbln/transformers/models/colqwen2/__init__.py +2 -0
- optimum/rbln/transformers/models/colqwen2/colqwen2_architecture.py +233 -0
- optimum/rbln/transformers/models/colqwen2/configuration_colqwen2.py +74 -0
- optimum/rbln/transformers/models/colqwen2/modeling_colqwen2.py +446 -0
- optimum/rbln/transformers/models/decoderonly/__init__.py +3 -2
- optimum/rbln/transformers/models/decoderonly/configuration_decoderonly.py +109 -37
- optimum/rbln/transformers/models/decoderonly/configuration_lora.py +411 -0
- optimum/rbln/transformers/models/decoderonly/decoderonly_architecture.py +318 -309
- optimum/rbln/transformers/models/decoderonly/decoderonly_runtime_utils.py +504 -0
- optimum/rbln/transformers/models/decoderonly/generation_decoderonly.py +111 -0
- optimum/rbln/transformers/models/decoderonly/lora_architecture.py +204 -0
- optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py +453 -897
- optimum/rbln/transformers/models/depth_anything/__init__.py +16 -0
- optimum/rbln/transformers/models/depth_anything/configuration_depth_anything.py +24 -0
- optimum/rbln/transformers/models/depth_anything/modeling_depth_anything.py +25 -0
- optimum/rbln/transformers/models/exaone/modeling_exaone.py +42 -4
- optimum/rbln/transformers/models/gemma/__init__.py +2 -2
- optimum/rbln/transformers/models/gemma/configuration_gemma.py +9 -1
- optimum/rbln/transformers/models/gemma/gemma_architecture.py +1 -4
- optimum/rbln/transformers/models/gemma/modeling_gemma.py +22 -1
- optimum/rbln/transformers/models/gemma3/configuration_gemma3.py +49 -13
- optimum/rbln/transformers/models/gemma3/gemma3_architecture.py +12 -2
- optimum/rbln/transformers/models/gemma3/gemma3_runtime_utils.py +245 -0
- optimum/rbln/transformers/models/gemma3/modeling_gemma3.py +201 -349
- optimum/rbln/transformers/models/gpt2/__init__.py +2 -2
- optimum/rbln/transformers/models/gpt2/configuration_gpt2.py +31 -3
- optimum/rbln/transformers/models/gpt2/gpt2_architecture.py +10 -8
- optimum/rbln/transformers/models/gpt2/modeling_gpt2.py +18 -1
- optimum/rbln/transformers/models/grounding_dino/__init__.py +10 -0
- optimum/rbln/transformers/models/grounding_dino/configuration_grounding_dino.py +92 -0
- optimum/rbln/transformers/models/grounding_dino/grounding_dino_architecture.py +599 -0
- optimum/rbln/transformers/models/grounding_dino/modeling_grounding_dino.py +1032 -0
- optimum/rbln/transformers/models/idefics3/configuration_idefics3.py +35 -7
- optimum/rbln/transformers/models/idefics3/modeling_idefics3.py +26 -27
- optimum/rbln/transformers/models/llama/__init__.py +2 -2
- optimum/rbln/transformers/models/llama/configuration_llama.py +9 -1
- optimum/rbln/transformers/models/llama/modeling_llama.py +22 -1
- optimum/rbln/transformers/models/llava/__init__.py +16 -0
- optimum/rbln/transformers/models/llava/configuration_llava.py +72 -0
- optimum/rbln/transformers/models/llava/modeling_llava.py +478 -0
- optimum/rbln/transformers/models/llava_next/configuration_llava_next.py +15 -17
- optimum/rbln/transformers/models/llava_next/modeling_llava_next.py +235 -375
- optimum/rbln/transformers/models/midm/midm_architecture.py +4 -1
- optimum/rbln/transformers/models/midm/modeling_midm.py +42 -4
- optimum/rbln/transformers/models/mistral/__init__.py +2 -2
- optimum/rbln/transformers/models/mistral/configuration_mistral.py +9 -1
- optimum/rbln/transformers/models/mistral/mistral_architecture.py +1 -1
- optimum/rbln/transformers/models/mistral/modeling_mistral.py +26 -3
- optimum/rbln/transformers/models/opt/__init__.py +2 -2
- optimum/rbln/transformers/models/opt/configuration_opt.py +8 -1
- optimum/rbln/transformers/models/opt/modeling_opt.py +28 -16
- optimum/rbln/transformers/models/opt/opt_architecture.py +4 -4
- optimum/rbln/transformers/models/pegasus/__init__.py +17 -0
- optimum/rbln/transformers/models/pegasus/configuration_pegasus.py +38 -0
- optimum/rbln/transformers/models/pegasus/modeling_pegasus.py +71 -0
- optimum/rbln/transformers/models/pegasus/pegasus_architecture.py +161 -0
- optimum/rbln/transformers/models/phi/__init__.py +2 -2
- optimum/rbln/transformers/models/phi/configuration_phi.py +9 -1
- optimum/rbln/transformers/models/phi/modeling_phi.py +10 -1
- optimum/rbln/transformers/models/phi/phi_architecture.py +11 -7
- optimum/rbln/transformers/models/pixtral/__init__.py +16 -0
- optimum/rbln/transformers/models/pixtral/configuration_pixtral.py +43 -0
- optimum/rbln/transformers/models/pixtral/modeling_pixtral.py +310 -0
- optimum/rbln/transformers/models/pixtral/pixtral_architecture.py +73 -0
- optimum/rbln/transformers/models/qwen2/__init__.py +2 -2
- optimum/rbln/transformers/models/qwen2/configuration_qwen2.py +9 -1
- optimum/rbln/transformers/models/qwen2/modeling_qwen2.py +27 -1
- optimum/rbln/transformers/models/qwen2_5_vl/configuration_qwen2_5_vl.py +21 -6
- optimum/rbln/transformers/models/qwen2_5_vl/modeling_qwen2_5_vl.py +15 -21
- optimum/rbln/transformers/models/qwen2_5_vl/qwen2_5_vl_architecture.py +28 -7
- optimum/rbln/transformers/models/qwen2_vl/__init__.py +19 -0
- optimum/rbln/transformers/models/qwen2_vl/configuration_qwen2_vl.py +88 -0
- optimum/rbln/transformers/models/qwen2_vl/modeling_qwen2_vl.py +514 -0
- optimum/rbln/transformers/models/qwen2_vl/qwen2_vl_architecture.py +165 -0
- optimum/rbln/transformers/models/qwen3/configuration_qwen3.py +2 -2
- optimum/rbln/transformers/models/qwen3/modeling_qwen3.py +86 -330
- optimum/rbln/transformers/models/qwen3/qwen3_architecture.py +1 -245
- optimum/rbln/transformers/models/seq2seq/configuration_seq2seq.py +20 -13
- optimum/rbln/transformers/models/seq2seq/modeling_seq2seq.py +24 -3
- optimum/rbln/transformers/models/seq2seq/seq2seq_architecture.py +2 -2
- optimum/rbln/transformers/models/siglip/__init__.py +2 -6
- optimum/rbln/transformers/models/siglip/configuration_siglip.py +1 -1
- optimum/rbln/transformers/models/siglip/modeling_siglip.py +5 -16
- optimum/rbln/transformers/models/swin/__init__.py +16 -0
- optimum/rbln/transformers/models/swin/configuration_swin.py +42 -0
- optimum/rbln/transformers/models/swin/modeling_swin.py +341 -0
- optimum/rbln/transformers/models/t5/configuration_t5.py +2 -0
- optimum/rbln/transformers/models/t5/t5_architecture.py +8 -1
- optimum/rbln/transformers/models/time_series_transformer/configuration_time_series_transformer.py +3 -3
- optimum/rbln/transformers/models/time_series_transformer/modeling_time_series_transformer.py +4 -14
- optimum/rbln/transformers/models/time_series_transformer/time_series_transformers_architecture.py +7 -1
- optimum/rbln/transformers/models/wav2vec2/modeling_wav2vec2.py +1 -0
- optimum/rbln/transformers/models/whisper/configuration_whisper.py +12 -13
- optimum/rbln/transformers/models/whisper/generation_whisper.py +28 -6
- optimum/rbln/transformers/models/whisper/modeling_whisper.py +28 -3
- optimum/rbln/transformers/models/xlm_roberta/__init__.py +2 -8
- optimum/rbln/transformers/utils/rbln_quantization.py +391 -75
- optimum/rbln/transformers/utils/rbln_runtime_wrapper.py +79 -0
- optimum/rbln/utils/depreacate_utils.py +16 -0
- optimum/rbln/utils/runtime_utils.py +28 -18
- optimum/rbln/utils/submodule.py +31 -9
- {optimum_rbln-0.8.2a4.dist-info → optimum_rbln-0.9.3rc0.dist-info}/METADATA +8 -7
- {optimum_rbln-0.8.2a4.dist-info → optimum_rbln-0.9.3rc0.dist-info}/RECORD +167 -125
- optimum_rbln-0.9.3rc0.dist-info/entry_points.txt +2 -0
- {optimum_rbln-0.8.2a4.dist-info → optimum_rbln-0.9.3rc0.dist-info}/WHEEL +0 -0
- {optimum_rbln-0.8.2a4.dist-info → optimum_rbln-0.9.3rc0.dist-info}/licenses/LICENSE +0 -0
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from .configuration_gpt2 import RBLNGPT2LMHeadModelConfig
|
|
16
|
-
from .modeling_gpt2 import RBLNGPT2LMHeadModel
|
|
15
|
+
from .configuration_gpt2 import RBLNGPT2LMHeadModelConfig, RBLNGPT2ModelConfig
|
|
16
|
+
from .modeling_gpt2 import RBLNGPT2LMHeadModel, RBLNGPT2Model
|
|
@@ -12,11 +12,39 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from ..decoderonly.configuration_decoderonly import RBLNDecoderOnlyModelForCausalLMConfig
|
|
15
|
+
from ..decoderonly.configuration_decoderonly import RBLNDecoderOnlyModelConfig, RBLNDecoderOnlyModelForCausalLMConfig
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class RBLNGPT2LMHeadModelConfig(RBLNDecoderOnlyModelForCausalLMConfig):
|
|
19
19
|
"""
|
|
20
|
-
Configuration class for
|
|
21
|
-
|
|
20
|
+
Configuration class for RBLN GPT2 models.
|
|
21
|
+
|
|
22
|
+
This class is an alias of RBLNDecoderOnlyModelForCausalLMConfig.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RBLNGPT2ModelConfig(RBLNDecoderOnlyModelConfig):
|
|
27
|
+
"""
|
|
28
|
+
Configuration class for RBLN GPT2 models.
|
|
29
|
+
|
|
30
|
+
This class is an alias of RBLNDecoderOnlyModelConfig.
|
|
31
|
+
|
|
32
|
+
Example usage:
|
|
33
|
+
```python
|
|
34
|
+
from optimum.rbln import RBLNGPT2Model, RBLNGPT2ModelConfig
|
|
35
|
+
|
|
36
|
+
# Create a configuration object
|
|
37
|
+
config = RBLNGPT2ModelConfig(
|
|
38
|
+
batch_size=1,
|
|
39
|
+
max_seq_len=1024,
|
|
40
|
+
tensor_parallel_size=4
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Use the configuration with from_pretrained
|
|
44
|
+
model = RBLNGPT2Model.from_pretrained(
|
|
45
|
+
"openai/gpt2",
|
|
46
|
+
export=True,
|
|
47
|
+
rbln_config=config
|
|
48
|
+
)
|
|
49
|
+
```
|
|
22
50
|
"""
|
|
@@ -13,11 +13,10 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import math
|
|
16
|
-
from typing import TYPE_CHECKING, Tuple
|
|
16
|
+
from typing import TYPE_CHECKING, Tuple, Union
|
|
17
17
|
|
|
18
18
|
import torch
|
|
19
19
|
import torch.nn as nn
|
|
20
|
-
from transformers import PreTrainedModel
|
|
21
20
|
|
|
22
21
|
from ..decoderonly.decoderonly_architecture import (
|
|
23
22
|
DecoderOnlyAttention,
|
|
@@ -28,7 +27,7 @@ from ..decoderonly.decoderonly_architecture import (
|
|
|
28
27
|
|
|
29
28
|
|
|
30
29
|
if TYPE_CHECKING:
|
|
31
|
-
from transformers import GPT2LMHeadModel
|
|
30
|
+
from transformers import GPT2LMHeadModel, GPT2Model
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
class GPT2Wrapper(DecoderOnlyWrapper):
|
|
@@ -44,11 +43,11 @@ class GPT2Wrapper(DecoderOnlyWrapper):
|
|
|
44
43
|
def get_attn_layer(self, layer: nn.Module):
|
|
45
44
|
return layer.attn
|
|
46
45
|
|
|
47
|
-
def get_model_layer(self,
|
|
48
|
-
return
|
|
46
|
+
def get_model_layer(self, model: Union["GPT2LMHeadModel", "GPT2Model"]):
|
|
47
|
+
return model.transformer if self.is_causal_lm else model
|
|
49
48
|
|
|
50
|
-
def get_decoder_layers(self,
|
|
51
|
-
return
|
|
49
|
+
def get_decoder_layers(self, model: Union["GPT2LMHeadModel", "GPT2Model"]):
|
|
50
|
+
return model.transformer.h if self.is_causal_lm else model.h
|
|
52
51
|
|
|
53
52
|
|
|
54
53
|
class GPT2Model(DecoderOnlyModel):
|
|
@@ -76,7 +75,10 @@ class GPT2Attention(DecoderOnlyAttention):
|
|
|
76
75
|
self.o_proj = self._original_mod.c_proj
|
|
77
76
|
self.split_size = self._original_mod.split_size
|
|
78
77
|
|
|
79
|
-
def projection(self, hidden_states) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
|
78
|
+
def projection(self, hidden_states, lora_int_id) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
|
79
|
+
if lora_int_id is not None:
|
|
80
|
+
raise NotImplementedError("LoRA is not supported for GPT2Attention")
|
|
81
|
+
|
|
80
82
|
query_states, key_states, value_states = self.c_attn(hidden_states).split(self.split_size, dim=2)
|
|
81
83
|
return query_states, key_states, value_states
|
|
82
84
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from ....utils import logging
|
|
16
|
-
from ...models.decoderonly import RBLNDecoderOnlyModelForCausalLM
|
|
16
|
+
from ...models.decoderonly import RBLNDecoderOnlyModel, RBLNDecoderOnlyModelForCausalLM
|
|
17
17
|
from .gpt2_architecture import GPT2Wrapper
|
|
18
18
|
|
|
19
19
|
|
|
@@ -36,3 +36,20 @@ class RBLNGPT2LMHeadModel(RBLNDecoderOnlyModelForCausalLM):
|
|
|
36
36
|
|
|
37
37
|
_decoder_wrapper_cls = GPT2Wrapper
|
|
38
38
|
_use_rotary_emb = False
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class RBLNGPT2Model(RBLNDecoderOnlyModel):
|
|
42
|
+
"""
|
|
43
|
+
The GPT2 Model transformer without a language modeling head.
|
|
44
|
+
|
|
45
|
+
This model inherits from [`RBLNDecoderOnlyModel`]. Check the superclass documentation for the generic methods the
|
|
46
|
+
library implements for all its model.
|
|
47
|
+
|
|
48
|
+
A class to convert and run pre-trained transformers based GPT2Model model on RBLN devices.
|
|
49
|
+
It implements the methods to convert a pre-trained transformers GPT2Model model into a RBLN transformer model by:
|
|
50
|
+
- transferring the checkpoint weights of the original into an optimized RBLN graph,
|
|
51
|
+
- compiling the resulting graph using the RBLN compiler.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
_decoder_wrapper_cls = GPT2Wrapper
|
|
55
|
+
_use_rotary_emb = False
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from .configuration_grounding_dino import (
|
|
2
|
+
RBLNGroundingDinoDecoderConfig,
|
|
3
|
+
RBLNGroundingDinoEncoderConfig,
|
|
4
|
+
RBLNGroundingDinoForObjectDetectionConfig,
|
|
5
|
+
)
|
|
6
|
+
from .modeling_grounding_dino import (
|
|
7
|
+
RBLNGroundingDinoDecoder,
|
|
8
|
+
RBLNGroundingDinoEncoder,
|
|
9
|
+
RBLNGroundingDinoForObjectDetection,
|
|
10
|
+
)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
2
|
+
# you may not use this file except in compliance with the License.
|
|
3
|
+
# You may obtain a copy of the License at:
|
|
4
|
+
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
|
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
9
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
10
|
+
# See the License for the specific language governing permissions and
|
|
11
|
+
# limitations under the License.
|
|
12
|
+
|
|
13
|
+
from typing import Any, List, Optional, Tuple, Union
|
|
14
|
+
|
|
15
|
+
import torch
|
|
16
|
+
|
|
17
|
+
from ...configuration_generic import RBLNImageModelConfig, RBLNModelConfig
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class RBLNGroundingDinoForObjectDetectionConfig(RBLNImageModelConfig):
|
|
21
|
+
submodules = [
|
|
22
|
+
"text_backbone",
|
|
23
|
+
"backbone",
|
|
24
|
+
"encoder",
|
|
25
|
+
"decoder",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
def __init__(
|
|
29
|
+
self,
|
|
30
|
+
batch_size: Optional[int] = None,
|
|
31
|
+
encoder: Optional["RBLNGroundingDinoEncoderConfig"] = None,
|
|
32
|
+
decoder: Optional["RBLNGroundingDinoDecoderConfig"] = None,
|
|
33
|
+
text_backbone: Optional["RBLNModelConfig"] = None,
|
|
34
|
+
backbone: Optional["RBLNModelConfig"] = None,
|
|
35
|
+
output_attentions: Optional[bool] = None,
|
|
36
|
+
output_hidden_states: Optional[bool] = None,
|
|
37
|
+
**kwargs: Any,
|
|
38
|
+
):
|
|
39
|
+
"""
|
|
40
|
+
Args:
|
|
41
|
+
batch_size (Optional[int]): The batch size for image and text processing. Defaults to 1.
|
|
42
|
+
encoder (Optional["RBLNModelConfig"]): The encoder configuration. Defaults to None.
|
|
43
|
+
decoder (Optional["RBLNModelConfig"]): The decoder configuration. Defaults to None.
|
|
44
|
+
text_backbone (Optional["RBLNModelConfig"]): The text backbone configuration. Defaults to None.
|
|
45
|
+
backbone (Optional["RBLNModelConfig"]): The backbone configuration. Defaults to None.
|
|
46
|
+
output_attentions (Optional[bool]): Whether to output attentions. Defaults to None.
|
|
47
|
+
output_hidden_states (Optional[bool]): Whether to output hidden states. Defaults to None.
|
|
48
|
+
kwargs: Additional arguments passed to the parent RBLNModelConfig.
|
|
49
|
+
|
|
50
|
+
Raises:
|
|
51
|
+
ValueError: If batch_size is not a positive integer.
|
|
52
|
+
"""
|
|
53
|
+
super().__init__(**kwargs)
|
|
54
|
+
self.encoder = encoder
|
|
55
|
+
self.decoder = decoder
|
|
56
|
+
self.text_backbone = text_backbone
|
|
57
|
+
self.backbone = backbone
|
|
58
|
+
self.output_attentions = output_attentions if output_attentions is not None else False
|
|
59
|
+
self.output_hidden_states = output_hidden_states if output_hidden_states is not None else False
|
|
60
|
+
|
|
61
|
+
if not isinstance(self.batch_size, int) or self.batch_size < 0:
|
|
62
|
+
raise ValueError(f"batch_size must be a positive integer, got {self.batch_size}")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class RBLNGroundingDinoComponentConfig(RBLNImageModelConfig):
|
|
66
|
+
def __init__(
|
|
67
|
+
self,
|
|
68
|
+
image_size: Optional[Union[int, Tuple[int, int]]] = None,
|
|
69
|
+
batch_size: Optional[int] = None,
|
|
70
|
+
spatial_shapes_list: Optional[List[Tuple[int, int]]] = None,
|
|
71
|
+
output_attentions: Optional[bool] = False,
|
|
72
|
+
output_hidden_states: Optional[bool] = False,
|
|
73
|
+
**kwargs: Any,
|
|
74
|
+
):
|
|
75
|
+
super().__init__(image_size=image_size, batch_size=batch_size, **kwargs)
|
|
76
|
+
self.spatial_shapes_list = spatial_shapes_list
|
|
77
|
+
self.output_attentions = output_attentions
|
|
78
|
+
self.output_hidden_states = output_hidden_states
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def spatial_shapes(self):
|
|
82
|
+
if self.spatial_shapes_list is None:
|
|
83
|
+
raise ValueError("Spatial shapes are not defined. Please set them before accessing.")
|
|
84
|
+
return torch.tensor(self.spatial_shapes_list)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class RBLNGroundingDinoEncoderConfig(RBLNGroundingDinoComponentConfig):
|
|
88
|
+
pass
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class RBLNGroundingDinoDecoderConfig(RBLNGroundingDinoComponentConfig):
|
|
92
|
+
pass
|