optimum-rbln 0.1.13__py3-none-any.whl → 0.1.15__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 (79) hide show
  1. optimum/rbln/__init__.py +22 -12
  2. optimum/rbln/__version__.py +16 -1
  3. optimum/rbln/diffusers/__init__.py +22 -2
  4. optimum/rbln/diffusers/models/__init__.py +34 -3
  5. optimum/rbln/{transformers/generation → diffusers/models/autoencoders}/__init__.py +1 -2
  6. optimum/rbln/diffusers/models/{autoencoder_kl.py → autoencoders/autoencoder_kl.py} +44 -58
  7. optimum/rbln/diffusers/models/autoencoders/vae.py +84 -0
  8. optimum/rbln/diffusers/models/controlnet.py +54 -14
  9. optimum/rbln/diffusers/models/transformers/__init__.py +24 -0
  10. optimum/rbln/diffusers/models/transformers/transformer_sd3.py +203 -0
  11. optimum/rbln/diffusers/models/unets/__init__.py +24 -0
  12. optimum/rbln/diffusers/models/{unet_2d_condition.py → unets/unet_2d_condition.py} +78 -16
  13. optimum/rbln/diffusers/pipelines/__init__.py +22 -2
  14. optimum/rbln/diffusers/pipelines/controlnet/multicontrolnet.py +5 -26
  15. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +1 -0
  16. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +1 -0
  17. optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +1 -0
  18. optimum/rbln/diffusers/pipelines/stable_diffusion/__init__.py +1 -0
  19. optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +1 -0
  20. optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +0 -11
  21. optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +32 -0
  22. optimum/rbln/diffusers/pipelines/stable_diffusion_3/__init__.py +26 -0
  23. optimum/rbln/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py +32 -0
  24. optimum/rbln/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_img2img.py +32 -0
  25. optimum/rbln/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_inpaint.py +32 -0
  26. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/__init__.py +1 -0
  27. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +14 -6
  28. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +14 -6
  29. optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py +32 -0
  30. optimum/rbln/modeling.py +572 -0
  31. optimum/rbln/modeling_alias.py +1 -1
  32. optimum/rbln/modeling_base.py +164 -758
  33. optimum/rbln/modeling_diffusers.py +51 -122
  34. optimum/rbln/transformers/__init__.py +0 -2
  35. optimum/rbln/transformers/models/auto/auto_factory.py +117 -23
  36. optimum/rbln/transformers/models/auto/modeling_auto.py +37 -12
  37. optimum/rbln/transformers/models/bart/modeling_bart.py +3 -6
  38. optimum/rbln/transformers/models/bert/modeling_bert.py +3 -6
  39. optimum/rbln/transformers/models/clip/modeling_clip.py +8 -25
  40. optimum/rbln/transformers/models/decoderonly/__init__.py +0 -3
  41. optimum/rbln/transformers/models/decoderonly/decoderonly_architecture.py +672 -412
  42. optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py +38 -155
  43. optimum/rbln/transformers/models/dpt/modeling_dpt.py +1 -1
  44. optimum/rbln/transformers/models/exaone/exaone_architecture.py +61 -45
  45. optimum/rbln/transformers/models/exaone/modeling_exaone.py +4 -2
  46. optimum/rbln/transformers/models/gemma/gemma_architecture.py +33 -104
  47. optimum/rbln/transformers/models/gpt2/gpt2_architecture.py +50 -238
  48. optimum/rbln/transformers/models/gpt2/modeling_gpt2.py +3 -2
  49. optimum/rbln/transformers/models/llava_next/modeling_llava_next.py +2 -75
  50. optimum/rbln/transformers/models/midm/midm_architecture.py +88 -242
  51. optimum/rbln/transformers/models/midm/modeling_midm.py +6 -6
  52. optimum/rbln/transformers/models/phi/phi_architecture.py +61 -261
  53. optimum/rbln/transformers/models/seq2seq/modeling_seq2seq.py +1 -46
  54. optimum/rbln/transformers/models/t5/modeling_t5.py +102 -4
  55. optimum/rbln/transformers/models/wav2vec2/modeling_wav2vec2.py +1 -1
  56. optimum/rbln/transformers/models/whisper/modeling_whisper.py +1 -1
  57. optimum/rbln/transformers/models/xlm_roberta/modeling_xlm_roberta.py +3 -35
  58. optimum/rbln/transformers/utils/rbln_quantization.py +120 -3
  59. optimum/rbln/utils/decorator_utils.py +10 -6
  60. optimum/rbln/utils/hub.py +131 -0
  61. optimum/rbln/utils/import_utils.py +15 -1
  62. optimum/rbln/utils/model_utils.py +53 -0
  63. optimum/rbln/utils/runtime_utils.py +1 -1
  64. optimum/rbln/utils/submodule.py +114 -0
  65. optimum_rbln-0.1.15.dist-info/METADATA +106 -0
  66. {optimum_rbln-0.1.13.dist-info → optimum_rbln-0.1.15.dist-info}/RECORD +69 -66
  67. {optimum_rbln-0.1.13.dist-info → optimum_rbln-0.1.15.dist-info}/WHEEL +1 -1
  68. optimum/rbln/transformers/generation/streamers.py +0 -139
  69. optimum/rbln/transformers/generation/utils.py +0 -397
  70. optimum/rbln/transformers/models/exaone/hf_hub_cached/configuration_exaone.py +0 -181
  71. optimum/rbln/transformers/models/exaone/hf_hub_cached/modeling_exaone.py +0 -1725
  72. optimum/rbln/transformers/models/midm/hf_hub_cached/configuration_midm.py +0 -22
  73. optimum/rbln/transformers/models/midm/hf_hub_cached/midm_bitext_tokenization.py +0 -304
  74. optimum/rbln/transformers/models/midm/hf_hub_cached/modeling_midm.py +0 -1469
  75. optimum/rbln/transformers/models/midm/hf_hub_cached/rotary_position_embedding.py +0 -98
  76. optimum/rbln/utils/context.py +0 -58
  77. optimum_rbln-0.1.13.dist-info/METADATA +0 -120
  78. optimum_rbln-0.1.13.dist-info/entry_points.txt +0 -4
  79. {optimum_rbln-0.1.13.dist-info → optimum_rbln-0.1.15.dist-info}/licenses/LICENSE +0 -0
@@ -1,98 +0,0 @@
1
- # coding=utf-8
2
- # Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- import torch
17
- from einops import rearrange
18
- from torch import einsum, nn
19
-
20
-
21
- __all__ = ["RotaryEmbedding", "apply_rotary_pos_emb"]
22
-
23
-
24
- class RotaryEmbedding(nn.Module):
25
- """
26
- Implements Rotary Position Embedding from https://arxiv.org/abs/2104.09864.
27
- """
28
-
29
- def __init__(
30
- self, dim: int, seq_len_interpolation_factor: int = None, pretrained_max_position_embeddings: int = None
31
- ):
32
- """
33
- Args:
34
-
35
- dim (int): rotary embedding dimension
36
- seq_len_interpolation_factor (int): if not None, discrete positions will be interpolated
37
- by this factor via the trick in https://arxiv.org/abs/2306.15595.
38
- pretrained_max_position_embeddings (int): pre-trained max_position_embeddings before position interpolation.
39
- """
40
- super().__init__()
41
- self.seq_len_interpolation_factor = seq_len_interpolation_factor
42
- inv_freq = 1.0 / (10000 ** (torch.arange(0, dim, 2).float() / dim))
43
- self.register_buffer("inv_freq", inv_freq)
44
- self.pretrained_max_position_embeddings = pretrained_max_position_embeddings
45
-
46
- def forward(self, max_seq_len, offset=0):
47
- seq = torch.arange(max_seq_len, device=self.inv_freq.device) + offset
48
- seq = seq.type_as(self.inv_freq)
49
-
50
- if self.pretrained_max_position_embeddings is not None and self.seq_len_interpolation_factor is not None:
51
- if max_seq_len > self.pretrained_max_position_embeddings * self.seq_len_interpolation_factor:
52
- # dynamic linear scaling (length > position we have learned)
53
- seq *= 1 / (max_seq_len / self.pretrained_max_position_embeddings)
54
- else:
55
- # fixed linear scaling
56
- seq *= 1 / self.seq_len_interpolation_factor
57
-
58
- freqs = einsum("i , j -> i j", seq, self.inv_freq)
59
- # first part even vector components, second part odd vector components,
60
- # 2 * dim in dimension size
61
- emb = torch.cat((freqs, freqs), dim=-1)
62
- # emb [seq_length, .., dim]
63
- return rearrange(emb, "n d -> n 1 1 d")
64
-
65
-
66
- def _rotate_half(x):
67
- """
68
- change sign so the last dimension
69
- [A, B, C, D] -> [-C, -D, A, B]
70
- """
71
- x = rearrange(x, "... (j d) -> ... j d", j=2)
72
- x1, x2 = x.unbind(dim=-2)
73
- return torch.cat((-x2, x1), dim=-1)
74
-
75
-
76
- def apply_rotary_pos_emb(t, freqs):
77
- """
78
- input tensor t is of shape [seq_length, ..., dim]
79
- rotary positional embeding tensor freqs is of shape [seq_length, ..., dim]
80
- check https://kexue.fm/archives/8265 for detailed formulas
81
- """
82
- # Changes from the original RoPE implementation
83
- # 1. The original NeMo implementation assumes the input tensor of shape
84
- # [seq_length, ..., dim], but the HF layout is [..., seq_length, dim].
85
- # Thus freqs needs to be viewed as [..., seq_length, dim].
86
- freqs = freqs.permute(1, 2, 0, 3)
87
- # 2. Support for queries which past tokens are truncated
88
- assert freqs.shape[-2] >= t.shape[-2]
89
- if freqs.shape[-2] != t.shape[-2]:
90
- freqs = freqs[:, :, -t.shape[-2] :, :]
91
-
92
- rot_dim = freqs.shape[-1]
93
- # ideally t_pass is empty so rotary pos embedding is applied to all tensor t
94
- t, t_pass = t[..., :rot_dim], t[..., rot_dim:]
95
- # first part is cosine component
96
- # second part is sine component, need to change signs with _rotate_half method
97
- t = (t * freqs.cos()) + (_rotate_half(t) * freqs.sin())
98
- return torch.cat((t, t_pass), dim=-1)
@@ -1,58 +0,0 @@
1
- # Copyright 2024 Rebellions Inc.
2
-
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at:
6
-
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
-
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- # Portions of this software are licensed under the Apache License,
16
- # Version 2.0. See the NOTICE file distributed with this work for
17
- # additional information regarding copyright ownership.
18
-
19
- # All other portions of this software, including proprietary code,
20
- # are the intellectual property of Rebellions Inc. and may not be
21
- # copied, modified, or distributed without prior written permission
22
- # from Rebellions Inc.
23
-
24
- from contextlib import contextmanager
25
- from pathlib import Path
26
- from typing import Union
27
-
28
- from optimum.exporters import TasksManager
29
- from transformers import AutoConfig, AutoModel
30
-
31
-
32
- @contextmanager
33
- def override_auto_classes(config_func=None, model_func=None, skip_taskmanager=True):
34
- """Temporarily override Auto classes with original model classes"""
35
- original_config = AutoConfig.from_pretrained
36
- original_model = AutoModel.from_pretrained
37
- original_get_model_from_task = TasksManager.get_model_from_task
38
-
39
- def get_model_from_task(
40
- task: str,
41
- model_name_or_path: Union[str, Path],
42
- **kwargs,
43
- ):
44
- return model_func(model_name_or_path, **kwargs)
45
-
46
- def none_func(*args, **kwargs):
47
- return None
48
-
49
- try:
50
- AutoConfig.from_pretrained = config_func or none_func
51
- AutoModel.from_pretrained = model_func or none_func
52
- if skip_taskmanager:
53
- TasksManager.get_model_from_task = none_func if model_func is None else get_model_from_task
54
- yield
55
- finally:
56
- AutoConfig.from_pretrained = original_config
57
- AutoModel.from_pretrained = original_model
58
- TasksManager.get_model_from_task = original_get_model_from_task
@@ -1,120 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: optimum-rbln
3
- Version: 0.1.13
4
- Summary: Optimum RBLN is the interface between the Hugging Face Transformers and Diffusers libraries and RBLN accelerators.
5
- It provides a set of tools enabling easy model loading and inference on single and multiple rbln device settings for different downstream tasks.
6
-
7
- Keywords: transformers,diffusers,inference,rbln,atom,rebel
8
- Author-Email: "Rebellions Inc." <support@rebellions.ai>
9
- License: Apache
10
- Classifier: Development Status :: 2 - Pre-Alpha
11
- Classifier: License :: OSI Approved :: Apache Software License
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Intended Audience :: Education
14
- Classifier: Intended Audience :: Science/Research
15
- Classifier: Operating System :: POSIX :: Linux
16
- Classifier: Programming Language :: Python :: 3 :: Only
17
- Classifier: Programming Language :: Python :: 3.9
18
- Classifier: Programming Language :: Python :: 3.10
19
- Classifier: Programming Language :: Python :: 3.11
20
- Classifier: Programming Language :: Python :: 3.12
21
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
- Project-URL: Homepage, https://rebellions.ai
23
- Project-URL: Documentation, https://docs.rbln.ai
24
- Requires-Python: <3.13,>=3.9
25
- Requires-Dist: torch<=2.5.1
26
- Requires-Dist: torchvision<=0.20.1
27
- Requires-Dist: torchaudio<=2.5.1
28
- Requires-Dist: optimum==1.23.1
29
- Requires-Dist: accelerate>=0.28.0
30
- Requires-Dist: transformers==4.45.2
31
- Requires-Dist: diffusers<=0.31.0
32
- Requires-Dist: einops>=0.8.0
33
- Requires-Dist: packaging>=24.1
34
- Requires-Dist: halo
35
- Provides-Extra: tests
36
- Requires-Dist: pytest>=8.1.1; extra == "tests"
37
- Requires-Dist: psutil>=5.9.8; extra == "tests"
38
- Requires-Dist: parameterized>=0.9.0; extra == "tests"
39
- Requires-Dist: GitPython>=3.1.42; extra == "tests"
40
- Requires-Dist: sentencepiece>=0.2.0; extra == "tests"
41
- Requires-Dist: datasets>=2.18.0; extra == "tests"
42
- Requires-Dist: sacremoses>=0.1.1; extra == "tests"
43
- Requires-Dist: safetensors>=0.4.2; extra == "tests"
44
- Provides-Extra: quality
45
- Requires-Dist: ruff>=0.3.3; extra == "quality"
46
- Requires-Dist: isort>=5.13.2; extra == "quality"
47
- Requires-Dist: hf-doc-builder>=0.5.0; extra == "quality"
48
- Description-Content-Type: text/markdown
49
-
50
- <!---
51
- Copyright 2023 The HuggingFace Team. All rights reserved.
52
-
53
- Licensed under the Apache License, Version 2.0 (the "License");
54
- you may not use this file except in compliance with the License.
55
- You may obtain a copy of the License at
56
-
57
- http://www.apache.org/licenses/LICENSE-2.0
58
-
59
- Unless required by applicable law or agreed to in writing, software
60
- distributed under the License is distributed on an "AS IS" BASIS,
61
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
62
- See the License for the specific language governing permissions and
63
- limitations under the License.
64
- -->
65
-
66
- # Optimum RBLN
67
-
68
- 🤗 Optimum RBLN is the interface between the 🤗 Transformers library and RBLN Accelerators including [ATOM](https://atom_link) and [REBEL](https://rebel_link).
69
- It provides a set of tools enabling easy model loading and inference on single- and multi-Accelerator settings for different downstream tasks.
70
- The list of officially validated models and tasks is available [here](https://docs.rbln.ai/software/optimum/optimum_rbln.html). Users can try other models and tasks with only few changes.
71
-
72
- ## Install from PyPI
73
-
74
- To install the latest release of this package:
75
-
76
- - Export environment variables to access to RBLN private PyPI.
77
- ```bash
78
- export REBEL_PYPI_USERNAME=<username>
79
- export REBEL_PYPI_PASSWORD=<password>
80
- ```
81
-
82
- - Install optimum-rbln package:
83
- ```bash
84
- pip install --index-url https://pypi.rebellions.in/simple optimum-rbln
85
- ```
86
-
87
- ## Install from source
88
-
89
- ### Prerequisites
90
-
91
- - Install [PDM](https://pdm-project.org/latest/) (refer [this link](https://pdm-project.org/latest/#installation) for detailed commands)
92
-
93
- The below command installs optimum-rbln along with its dependencies.
94
-
95
- ```bash
96
- git clone https://github.com/rebellions-sw/optimum-rbln.git
97
- cd optimum-rbln
98
- pdm install
99
- ```
100
-
101
- To install optional dependencies from all groups, specify `-G:all` option.
102
-
103
- ```bash
104
- pdm install -G:all
105
- ```
106
-
107
- If you want to install optimum-rbln as [editable mode](https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs) in existing venv,
108
- ```bash
109
- (venv) pip install -e .
110
- ```
111
-
112
- ## How to use it?
113
-
114
- ### Quick Start
115
-
116
- 🤗 Optimum RBLN was designed with one goal in mind: **to make inference straightforward for any 🤗 Transformers user while leveraging the complete power of RBLN Accelerators**.
117
-
118
- ### Documentation
119
-
120
- Check out [the documentation of Optimum RBLN](https://docs.rbln.ai/software/optimum/optimum_rbln.html) for more advanced usage.
@@ -1,4 +0,0 @@
1
- [console_scripts]
2
-
3
- [gui_scripts]
4
-