optimum-rbln 0.8.0.post1__tar.gz → 0.8.1__tar.gz
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-0.8.1/.github/scripts/validate_docstrings.py +161 -0
- optimum_rbln-0.8.1/.github/version.yaml +1 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/check_code_quality.yml +1 -13
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/rbln_scheduled_test.yaml +8 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/rbln_trigger_on_pr.yaml +15 -5
- optimum_rbln-0.8.1/.github/workflows/test-docstrings.yml +137 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/PKG-INFO +6 -6
- optimum_rbln-0.8.1/examples/advanced/custom_class.py +159 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/pyproject.toml +8 -5
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/__init__.py +24 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/__version__.py +2 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/configuration_utils.py +53 -33
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/__init__.py +21 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/__init__.py +4 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/models/__init__.py +2 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/models/configuration_autoencoder_kl.py +9 -2
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/configurations/models/configuration_autoencoder_kl_cosmos.py +84 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/models/configuration_controlnet.py +4 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/models/configuration_prior_transformer.py +9 -2
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/configurations/models/configuration_transformer_cosmos.py +70 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/models/configuration_transformer_sd3.py +4 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/models/configuration_unet_2d_condition.py +9 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/models/configuration_vq_model.py +9 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/pipelines/__init__.py +1 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/pipelines/configuration_controlnet.py +29 -9
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/configurations/pipelines/configuration_cosmos.py +114 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/pipelines/configuration_kandinsky2_2.py +28 -12
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/pipelines/configuration_stable_diffusion.py +18 -6
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/pipelines/configuration_stable_diffusion_3.py +13 -6
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/configurations/pipelines/configuration_stable_diffusion_xl.py +12 -6
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/modeling_diffusers.py +72 -65
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/__init__.py +4 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/autoencoders/__init__.py +1 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/autoencoders/autoencoder_kl.py +17 -1
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/models/autoencoders/autoencoder_kl_cosmos.py +219 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/autoencoders/vae.py +45 -8
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/autoencoders/vq_model.py +17 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/controlnet.py +14 -8
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/transformers/__init__.py +1 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/transformers/prior_transformer.py +10 -0
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/models/transformers/transformer_cosmos.py +321 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/transformers/transformer_sd3.py +2 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/unets/unet_2d_condition.py +11 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/__init__.py +10 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/controlnet/multicontrolnet.py +1 -4
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl_img2img.py +7 -0
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/pipelines/cosmos/__init__.py +17 -0
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/pipelines/cosmos/configuration_cosmos_guardrail.py +102 -0
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/pipelines/cosmos/cosmos_guardrail.py +455 -0
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/pipelines/cosmos/pipeline_cosmos_text2world.py +98 -0
- optimum_rbln-0.8.1/src/optimum/rbln/diffusers/pipelines/cosmos/pipeline_cosmos_video2world.py +98 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_combined.py +48 -27
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_img2img.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_inpaint.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/kandinsky2_2/pipeline_kandinsky2_2_prior.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_img2img.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_3/pipeline_stable_diffusion_3_inpaint.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_img2img.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl_inpaint.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/modeling.py +71 -37
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/modeling_base.py +63 -109
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/__init__.py +41 -47
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/configuration_generic.py +16 -13
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/modeling_generic.py +21 -22
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/modeling_rope_utils.py +5 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/__init__.py +54 -4
- {optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/xlm_roberta → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/audio_spectrogram_transformer}/__init__.py +3 -2
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/exaone/configuration_exaone.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/audio_spectrogram_transformer/configuration_audio_spectrogram_transformer.py +5 -3
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/phi/modeling_phi.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/audio_spectrogram_transformer/modeling_audio_spectrogram_transformer.py +8 -14
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/auto/auto_factory.py +35 -12
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/bart/bart_architecture.py +14 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/bart/configuration_bart.py +12 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/bart/modeling_bart.py +16 -7
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/bert/configuration_bert.py +18 -3
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/bert/modeling_bert.py +24 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/blip_2/configuration_blip_2.py +15 -3
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/blip_2/modeling_blip_2.py +50 -4
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/clip/configuration_clip.py +15 -5
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/clip/modeling_clip.py +38 -13
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/colpali/__init__.py +2 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/colpali/colpali_architecture.py +221 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/colpali/configuration_colpali.py +68 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/colpali/modeling_colpali.py +383 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/decoderonly/configuration_decoderonly.py +223 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/decoderonly/decoderonly_architecture.py +102 -35
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py +253 -195
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/gemma/configuration_gemma.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/distilbert/__init__.py +3 -3
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/distilbert/configuration_distilbert.py +24 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/distilbert/modeling_distilbert.py +27 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/dpt/configuration_dpt.py +6 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/dpt/modeling_dpt.py +25 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/exaone/configuration_exaone.py +42 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/exaone/exaone_architecture.py +5 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/exaone/modeling_exaone.py +107 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/gemma/configuration_gemma.py +42 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gemma/gemma_architecture.py +5 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/gemma/modeling_gemma.py +83 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gemma3/configuration_gemma3.py +3 -3
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/gemma3/gemma3_architecture.py +214 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gemma3/modeling_gemma3.py +89 -244
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gpt2/configuration_gpt2.py +4 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gpt2/gpt2_architecture.py +6 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/idefics3/configuration_idefics3.py +12 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/idefics3/modeling_idefics3.py +41 -4
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/llama/configuration_llama.py +24 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/llama/modeling_llama.py +83 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/llava_next/configuration_llava_next.py +10 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/llava_next/modeling_llava_next.py +32 -4
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/midm/configuration_midm.py +24 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/midm/midm_architecture.py +6 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/midm/modeling_midm.py +106 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/mistral/configuration_mistral.py +24 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/mistral/modeling_mistral.py +92 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/opt/configuration_opt.py +4 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/opt/modeling_opt.py +10 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/opt/opt_architecture.py +7 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/phi/configuration_phi.py +24 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/phi/modeling_phi.py +83 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/phi/phi_architecture.py +1 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/qwen2/configuration_qwen2.py +24 -1
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/qwen2/modeling_qwen2.py +97 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/qwen2_5_vl/configuration_qwen2_5_vl.py +31 -3
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/qwen2_5_vl/modeling_qwen2_5_vl.py +54 -25
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/qwen2_5_vl/qwen2_5_vl_architecture.py +6 -4
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/xlm_roberta/modeling_xlm_roberta.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/resnet/__init__.py +6 -3
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/resnet/configuration_resnet.py +25 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/resnet/modeling_resnet.py +26 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/roberta/__init__.py +24 -0
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/configuration_alias.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/roberta/configuration_roberta.py +12 -28
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/modeling_alias.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/roberta/modeling_roberta.py +14 -28
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/seq2seq/__init__.py +1 -1
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/seq2seq/configuration_seq2seq2.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/seq2seq/configuration_seq2seq.py +2 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/seq2seq/modeling_seq2seq.py +7 -3
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/seq2seq/seq2seq_architecture.py +41 -3
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/siglip/configuration_siglip.py +10 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/siglip/modeling_siglip.py +69 -21
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/t5/configuration_t5.py +12 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/t5/modeling_t5.py +56 -8
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/t5/t5_architecture.py +5 -1
- {optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/time_series_transformers → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/time_series_transformer}/__init__.py +1 -1
- {optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/time_series_transformers → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/time_series_transformer}/configuration_time_series_transformer.py +9 -2
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/time_series_transformers/modeling_time_series_transformers.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/time_series_transformer/modeling_time_series_transformer.py +20 -11
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/dpt/modeling_dpt.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/vit/__init__.py +3 -4
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/vit/configuration_vit.py +24 -0
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/vit/modeling_vit.py +25 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/wav2vec2/__init__.py +1 -1
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/wav2vec2/configuration_wav2vec.py → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/wav2vec2/configuration_wav2vec2.py +7 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/wav2vec2/modeling_wav2vec2.py +1 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/whisper/configuration_whisper.py +10 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/whisper/modeling_whisper.py +41 -17
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/xlm_roberta/__init__.py +30 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/xlm_roberta/configuration_xlm_roberta.py +15 -2
- optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/xlm_roberta/modeling_xlm_roberta.py +29 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/model_utils.py +20 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/runtime_utils.py +49 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/submodule.py +6 -8
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/test_config.py +87 -3
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/test_llm.py +56 -2
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/test_transformers.py +23 -1
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/uv.lock +1032 -1019
- optimum_rbln-0.8.0.post1/.github/version.yaml +0 -1
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/decoderonly/configuration_decoderonly.py +0 -126
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/exaone/modeling_exaone.py +0 -46
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/gemma/modeling_gemma.py +0 -34
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/gemma3/gemma3_architecture.py +0 -446
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/llama/modeling_llama.py +0 -34
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/midm/modeling_midm.py +0 -45
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/mistral/modeling_mistral.py +0 -34
- optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/qwen2/modeling_qwen2.py +0 -34
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/ISSUE_TEMPLATE/model_request.md +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/pull_request_template.md +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/scripts/auto_code_review.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/scripts/validate_pr_checklist.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/auto_code_review.yml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/deploy-on-tag.yaml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/deploy.yaml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/pr-title-check.yaml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/pr_checklist_validator.yml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/rbln_check_compiler.yaml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/rbln_dispatch_pytest.yaml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/rbln_optimum_inference_test.yaml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.github/workflows/rbln_optimum_pytest.yaml +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/.gitignore +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/CODE_OF_CONDUCT.md +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/CONTRIBUTING.md +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/LICENSE +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/README.md +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/assets/rbln_logo.png +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/audio-classification/run_ast_audio_classification.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/depth-estimation/run_dpt.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/image-classification/run_image_classification.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/image-classification/run_vit_image_classification.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/image-to-text/run_idefics3.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/image-to-text/run_llava_next_image_to_text.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/kandinsky2_2/run_kandinsky2_2.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/kandinsky2_2/run_kandinsky2_2_combined.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/kandinsky2_2/run_kandinsky2_2_img2img.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/kandinsky2_2/run_kandinsky2_2_img2img_combined.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/kandinsky2_2/run_kandinsky2_2_inpaint.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/kandinsky2_2/run_kandinsky2_2_inpaint_combined.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/kandinsky2_2/run_kandinsky2_2_prior_interpolate.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/question-answering/run_question_answering.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/speech-recognition/run_wav2vec2.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/speech-recognition/run_whisper.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/stable-diffusion/run_stable_diffusion.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/stable-diffusion/run_stable_diffusion_controlnet.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/stable-diffusion/run_stable_diffusion_img2img.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/stable-diffusion/run_stable_diffusion_img2img_controlnet.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/stable-diffusion/run_stable_diffusion_inpaint.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/stable-diffusion/run_stable_diffusion_lora.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/stable-diffusion/run_stable_diffusion_multicontrolnet.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text-classification/run_bge_m3_text_classification.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text-classification/run_bge_reranker_v2_m3_text_classification.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text-classification/run_secureBERT.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text-classification/run_t5_classification.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text-classification/run_twitter_roberta_text_classification.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text2text-generation/run_bart_text2text_generation.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text2text-generation/run_llama_peft.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/text2text-generation/run_llama_text2text_generation.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/examples/time-series-forecasting/run_time_series_forecasting.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/scripts/uv-lock.sh +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/scripts/uv-sync.sh +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/models/unets/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/controlnet/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/kandinsky2_2/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_3/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/diffusers/pipelines/stable_diffusion_xl/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/ops/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/ops/attn.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/ops/flash_attn.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/ops/kv_cache_update.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/ops/linear.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/ops/sliding_window_attn.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/auto/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/auto/modeling_auto.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/bart/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/bert/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/blip_2/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/clip/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/decoderonly/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/dpt/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/exaone/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gemma/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gemma3/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gpt2/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/gpt2/modeling_gpt2.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/idefics3/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/llama/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/llama/llama_architecture.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/llava_next/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/midm/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/mistral/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/mistral/mistral_architecture.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/opt/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/phi/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/qwen2/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/qwen2/qwen2_architecture.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/qwen2_5_vl/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/siglip/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/t5/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1/src/optimum/rbln/transformers/models/time_series_transformers → optimum_rbln-0.8.1/src/optimum/rbln/transformers/models/time_series_transformer}/time_series_transformers_architecture.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/whisper/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/whisper/generation_whisper.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/models/whisper/whisper_architecture.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/utils/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/transformers/utils/rbln_quantization.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/decorator_utils.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/hub.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/import_utils.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/logging.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/src/optimum/rbln/utils/save_utils.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/__init__.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/psnr.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/requirements_sdxl.txt +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/run_stable_diffusion_xl_base.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/test_base.py +0 -0
- {optimum_rbln-0.8.0.post1 → optimum_rbln-0.8.1}/tests/test_diffusers.py +0 -0
@@ -0,0 +1,161 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Simple and reliable docstring validator for CI/CD.
|
4
|
+
Focuses on catching issues that would break mkdocstrings parsing.
|
5
|
+
"""
|
6
|
+
|
7
|
+
import subprocess
|
8
|
+
import sys
|
9
|
+
import tempfile
|
10
|
+
from pathlib import Path
|
11
|
+
|
12
|
+
|
13
|
+
def infer_module_name(file_path: Path) -> str:
|
14
|
+
"""
|
15
|
+
Infer module name from file path.
|
16
|
+
|
17
|
+
Example:
|
18
|
+
src/optimum/rbln/transformers/models/decoderonly/modeling_decoderonly.py
|
19
|
+
-> optimum.rbln.transformers.models.decoderonly.modeling_decoderonly
|
20
|
+
"""
|
21
|
+
if not any(keyword in file_path.name for keyword in ["configuration", "modeling"]):
|
22
|
+
return None
|
23
|
+
|
24
|
+
parts = file_path.parts
|
25
|
+
|
26
|
+
# Find 'src' directory index
|
27
|
+
try:
|
28
|
+
src_index = parts.index("src")
|
29
|
+
except ValueError:
|
30
|
+
# If no 'src' directory found, try common patterns
|
31
|
+
for common_src in ["lib", "package", file_path.parts[0]]:
|
32
|
+
if common_src in parts:
|
33
|
+
src_index = parts.index(common_src)
|
34
|
+
break
|
35
|
+
else:
|
36
|
+
# Fallback: use the first directory
|
37
|
+
src_index = 0
|
38
|
+
|
39
|
+
# Extract module path parts (everything after src, excluding .py)
|
40
|
+
module_parts = parts[src_index + 1 :]
|
41
|
+
|
42
|
+
# Remove .py extension from the last part
|
43
|
+
if module_parts and module_parts[-1].endswith(".py"):
|
44
|
+
module_parts = module_parts[:-1] + (module_parts[-1][:-3],)
|
45
|
+
|
46
|
+
# Join with dots
|
47
|
+
module_name = ".".join(module_parts)
|
48
|
+
return module_name
|
49
|
+
|
50
|
+
|
51
|
+
def test_mkdocstrings_parsing(file_path: Path, module_name: str = None) -> bool:
|
52
|
+
"""Test if mkdocstrings can parse the module documentation."""
|
53
|
+
try:
|
54
|
+
if module_name:
|
55
|
+
# Test with specific module name
|
56
|
+
test_content = f"""# Test Documentation
|
57
|
+
|
58
|
+
:::{module_name}
|
59
|
+
options:
|
60
|
+
show_source: false
|
61
|
+
filters: ["!^_"]
|
62
|
+
"""
|
63
|
+
else:
|
64
|
+
# Auto-infer module name from file path
|
65
|
+
inferred_module = infer_module_name(file_path)
|
66
|
+
if inferred_module is None:
|
67
|
+
print(
|
68
|
+
"⚠️ No module name provided, and the file is not a configuration or modeling file, skipping mkdocstrings test"
|
69
|
+
)
|
70
|
+
return True
|
71
|
+
print(f"ℹ️ Auto-inferred module name: {inferred_module}")
|
72
|
+
test_content = f"""# Test Documentation
|
73
|
+
|
74
|
+
:::{inferred_module}
|
75
|
+
options:
|
76
|
+
show_source: false
|
77
|
+
filters: ["!^_"]
|
78
|
+
"""
|
79
|
+
module_name = inferred_module
|
80
|
+
|
81
|
+
config = f"""site_name: Test
|
82
|
+
plugins:
|
83
|
+
- mkdocstrings:
|
84
|
+
handlers:
|
85
|
+
python:
|
86
|
+
paths: ["{Path(__file__).parent.parent.parent / "src"}"]
|
87
|
+
options:
|
88
|
+
show_source: false
|
89
|
+
filters: ["!^_"]
|
90
|
+
"""
|
91
|
+
|
92
|
+
with tempfile.TemporaryDirectory() as tmp_dir:
|
93
|
+
tmp_path = Path(tmp_dir)
|
94
|
+
(tmp_path / "mkdocs.yml").write_text(config)
|
95
|
+
docs_dir = tmp_path / "docs"
|
96
|
+
docs_dir.mkdir()
|
97
|
+
(docs_dir / "index.md").write_text(test_content)
|
98
|
+
|
99
|
+
result = subprocess.run(
|
100
|
+
["mkdocs", "build", "--strict"], cwd=tmp_path, capture_output=True, text=True, timeout=10
|
101
|
+
)
|
102
|
+
|
103
|
+
if result.returncode != 0:
|
104
|
+
print(f"❌ mkdocstrings parsing failed for {file_path}:")
|
105
|
+
print(f" Module: {module_name}")
|
106
|
+
# Show relevant errors and warnings
|
107
|
+
lines = result.stderr.split("\n")
|
108
|
+
relevant = [
|
109
|
+
l for l in lines if any(keyword in l for keyword in ["griffe", "WARNING", "ERROR", "CRITICAL"])
|
110
|
+
]
|
111
|
+
for line in relevant[:5]: # Show first 5 relevant lines
|
112
|
+
if line.strip():
|
113
|
+
print(f" {line.strip()}")
|
114
|
+
return False
|
115
|
+
|
116
|
+
return True
|
117
|
+
|
118
|
+
except subprocess.TimeoutExpired:
|
119
|
+
print(f"⚠️ Timeout testing {file_path} (non-fatal)")
|
120
|
+
return True # Don't fail on timeout
|
121
|
+
except Exception as e:
|
122
|
+
print(f"⚠️ Could not test mkdocstrings for {file_path}: {e} (non-fatal)")
|
123
|
+
return True # Don't fail on test errors
|
124
|
+
|
125
|
+
|
126
|
+
def main():
|
127
|
+
"""Main entry point."""
|
128
|
+
if len(sys.argv) < 2:
|
129
|
+
print("Usage: python validate_docstrings.py <python_file> [module_name]")
|
130
|
+
print()
|
131
|
+
print("Examples:")
|
132
|
+
print(" python validate_docstrings.py src/my_module.py")
|
133
|
+
print(" python validate_docstrings.py src/my_module.py my.module.name")
|
134
|
+
print()
|
135
|
+
print("Note: If module_name is not provided, it will be auto-inferred from file path")
|
136
|
+
sys.exit(1)
|
137
|
+
|
138
|
+
file_path = Path(sys.argv[1])
|
139
|
+
module_name = sys.argv[2] if len(sys.argv) > 2 else None
|
140
|
+
|
141
|
+
if not file_path.exists():
|
142
|
+
print(f"❌ File not found: {file_path}")
|
143
|
+
sys.exit(1)
|
144
|
+
|
145
|
+
print(f"🔍 Testing mkdocstrings parsing: {file_path}")
|
146
|
+
if module_name:
|
147
|
+
print(f"📦 Module: {module_name}")
|
148
|
+
|
149
|
+
# Test mkdocstrings compatibility
|
150
|
+
mkdocs_ok = test_mkdocstrings_parsing(file_path, module_name)
|
151
|
+
|
152
|
+
if mkdocs_ok:
|
153
|
+
print("✅ mkdocstrings parsing test passed!")
|
154
|
+
sys.exit(0)
|
155
|
+
else:
|
156
|
+
print("❌ mkdocstrings parsing test failed!")
|
157
|
+
sys.exit(1)
|
158
|
+
|
159
|
+
|
160
|
+
if __name__ == "__main__":
|
161
|
+
main()
|
@@ -0,0 +1 @@
|
|
1
|
+
rebel_compiler_version: 0.8.1.dev142+gab6ad3c7
|
@@ -1,19 +1,7 @@
|
|
1
1
|
name: check_code_quality
|
2
2
|
|
3
3
|
on:
|
4
|
-
|
5
|
-
branches: [main]
|
6
|
-
paths:
|
7
|
-
- "src/**/*.py"
|
8
|
-
- "tests/**/*.py"
|
9
|
-
- "examples/**/*.py"
|
10
|
-
|
11
|
-
pull_request:
|
12
|
-
branches: [main]
|
13
|
-
paths:
|
14
|
-
- "src/**/*.py"
|
15
|
-
- "tests/**/*.py"
|
16
|
-
- "examples/**/*.py"
|
4
|
+
workflow_call:
|
17
5
|
|
18
6
|
concurrency:
|
19
7
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
@@ -10,6 +10,14 @@ env:
|
|
10
10
|
HF_AUTH_TOKEN: ${{ secrets.HF_AUTH_TOKEN }}
|
11
11
|
|
12
12
|
jobs:
|
13
|
+
check-code-quality:
|
14
|
+
uses: ./.github/workflows/check_code_quality.yml
|
15
|
+
|
16
|
+
test-docstrings:
|
17
|
+
uses: ./.github/workflows/test-docstrings.yml
|
18
|
+
with:
|
19
|
+
test_all_files: true
|
20
|
+
|
13
21
|
load-version:
|
14
22
|
runs-on: rebel-k8s-runner
|
15
23
|
outputs:
|
@@ -24,9 +24,19 @@ jobs:
|
|
24
24
|
echo "No [skip ci] found, continuing with CI"
|
25
25
|
fi
|
26
26
|
|
27
|
+
check-code-quality:
|
28
|
+
needs: check-skip-ci
|
29
|
+
if: ${{ needs.check-skip-ci.outputs.should_skip != 'true' }}
|
30
|
+
uses: ./.github/workflows/check_code_quality.yml
|
31
|
+
|
32
|
+
test-docstrings:
|
33
|
+
needs: check-skip-ci
|
34
|
+
if: ${{ needs.check-skip-ci.outputs.should_skip != 'true' }}
|
35
|
+
uses: ./.github/workflows/test-docstrings.yml
|
36
|
+
|
27
37
|
load-version:
|
28
38
|
runs-on: rebel-k8s-runner
|
29
|
-
needs: check-skip-ci
|
39
|
+
needs: [check-skip-ci, check-code-quality, test-docstrings]
|
30
40
|
if: ${{ needs.check-skip-ci.outputs.should_skip != 'true' }}
|
31
41
|
outputs:
|
32
42
|
compiler_version: ${{ steps.get_version.outputs.compiler_version }}
|
@@ -41,7 +51,7 @@ jobs:
|
|
41
51
|
echo "compiler_version=$VERSION" >> $GITHUB_OUTPUT
|
42
52
|
|
43
53
|
check-compiler:
|
44
|
-
needs: [check-skip-ci, load-version]
|
54
|
+
needs: [check-skip-ci, check-code-quality, test-docstrings, load-version]
|
45
55
|
if: ${{ needs.check-skip-ci.outputs.should_skip != 'true' }}
|
46
56
|
uses: ./.github/workflows/rbln_check_compiler.yaml
|
47
57
|
with:
|
@@ -50,7 +60,7 @@ jobs:
|
|
50
60
|
|
51
61
|
check-team-member:
|
52
62
|
runs-on: rebel-k8s-runner
|
53
|
-
needs: [check-skip-ci, check-compiler]
|
63
|
+
needs: [check-skip-ci, check-code-quality, test-docstrings, check-compiler]
|
54
64
|
if: ${{ needs.check-skip-ci.outputs.should_skip != 'true' && needs.check-compiler.outputs.is_deploy_version == 'true' }}
|
55
65
|
outputs:
|
56
66
|
is_team_member: ${{ steps.check_member.outputs.IS_TEAM_MEMBER }}
|
@@ -75,7 +85,7 @@ jobs:
|
|
75
85
|
fi
|
76
86
|
|
77
87
|
optimum-rbln-pytest:
|
78
|
-
needs: [check-skip-ci, check-compiler, check-team-member]
|
88
|
+
needs: [check-skip-ci, check-code-quality, test-docstrings, check-compiler, check-team-member]
|
79
89
|
if: ${{ needs.check-skip-ci.outputs.should_skip != 'true' && needs.check-team-member.outputs.is_team_member == 'true' }}
|
80
90
|
uses: ./.github/workflows/rbln_optimum_pytest.yaml
|
81
91
|
with:
|
@@ -85,7 +95,7 @@ jobs:
|
|
85
95
|
secrets: inherit
|
86
96
|
|
87
97
|
optimum-rbln-inference-test:
|
88
|
-
needs: [check-skip-ci, check-compiler, check-team-member]
|
98
|
+
needs: [check-skip-ci, check-code-quality, test-docstrings, check-compiler, check-team-member]
|
89
99
|
if: ${{ needs.check-skip-ci.outputs.should_skip != 'true' && needs.check-team-member.outputs.is_team_member == 'true' }}
|
90
100
|
uses: ./.github/workflows/rbln_optimum_inference_test.yaml
|
91
101
|
with:
|
@@ -0,0 +1,137 @@
|
|
1
|
+
name: Test Docstring Parsing
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_call:
|
5
|
+
inputs:
|
6
|
+
test_all_files:
|
7
|
+
description: "Test all files in src/ instead of just changed files"
|
8
|
+
required: false
|
9
|
+
type: boolean
|
10
|
+
default: false
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
test-docstrings:
|
14
|
+
runs-on: ubuntu-latest-rbln
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@v4
|
18
|
+
with:
|
19
|
+
fetch-depth: 0 # Get full git history for file diff
|
20
|
+
|
21
|
+
- name: Set up Python
|
22
|
+
uses: actions/setup-python@v4
|
23
|
+
with:
|
24
|
+
python-version: '3.9'
|
25
|
+
|
26
|
+
- name: Install dependencies
|
27
|
+
run: |
|
28
|
+
pip install mkdocs mkdocs-material mkdocstrings mkdocstrings-python
|
29
|
+
|
30
|
+
- name: Get Python files to test
|
31
|
+
id: changed-files
|
32
|
+
run: |
|
33
|
+
if [ "${{ inputs.test_all_files }}" = "true" ]; then
|
34
|
+
# For scheduled test, get all Python files in src/
|
35
|
+
ALL_FILES=$(find src/ -name '*.py' -type f || true)
|
36
|
+
echo "Testing all Python files in src/:"
|
37
|
+
echo "$ALL_FILES"
|
38
|
+
|
39
|
+
if [ -n "$ALL_FILES" ]; then
|
40
|
+
FILES_JSON=$(echo "$ALL_FILES" | jq -R -s -c 'split("\n")[:-1]')
|
41
|
+
echo "files=$FILES_JSON" >> $GITHUB_OUTPUT
|
42
|
+
echo "has_changes=true" >> $GITHUB_OUTPUT
|
43
|
+
else
|
44
|
+
echo "has_changes=false" >> $GITHUB_OUTPUT
|
45
|
+
fi
|
46
|
+
else
|
47
|
+
# For PR, compare with base branch
|
48
|
+
if [ "${{ github.event_name }}" = "pull_request" ]; then
|
49
|
+
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep '\.py$' | grep 'src/' || true)
|
50
|
+
else
|
51
|
+
# For push, compare with previous commit
|
52
|
+
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD | grep '\.py$' | grep 'src/' || true)
|
53
|
+
fi
|
54
|
+
|
55
|
+
echo "Changed Python files:"
|
56
|
+
echo "$CHANGED_FILES"
|
57
|
+
|
58
|
+
# Convert to JSON array for matrix
|
59
|
+
if [ -n "$CHANGED_FILES" ]; then
|
60
|
+
FILES_JSON=$(echo "$CHANGED_FILES" | jq -R -s -c 'split("\n")[:-1]')
|
61
|
+
echo "files=$FILES_JSON" >> $GITHUB_OUTPUT
|
62
|
+
echo "has_changes=true" >> $GITHUB_OUTPUT
|
63
|
+
else
|
64
|
+
echo "has_changes=false" >> $GITHUB_OUTPUT
|
65
|
+
fi
|
66
|
+
fi
|
67
|
+
|
68
|
+
- name: Test docstring parsing
|
69
|
+
if: steps.changed-files.outputs.has_changes == 'true'
|
70
|
+
run: |
|
71
|
+
FILES='${{ steps.changed-files.outputs.files }}'
|
72
|
+
|
73
|
+
# Exclude files (hardcoded)
|
74
|
+
EXCLUDE_FILES=(
|
75
|
+
"src/optimum/rbln/transformers/models/llava_next/modeling_llava_next.py"
|
76
|
+
"src/optimum/rbln/transformers/models/t5/modeling_t5.py"
|
77
|
+
)
|
78
|
+
|
79
|
+
# Filter out excluded files
|
80
|
+
FILTERED_FILES=""
|
81
|
+
echo "$FILES" | jq -r '.[]' | while read -r file; do
|
82
|
+
should_exclude=false
|
83
|
+
for exclude_file in "${EXCLUDE_FILES[@]}"; do
|
84
|
+
if [[ "$file" == "$exclude_file" ]]; then
|
85
|
+
echo "⏭️ Skipping excluded file: $file"
|
86
|
+
should_exclude=true
|
87
|
+
break
|
88
|
+
fi
|
89
|
+
done
|
90
|
+
|
91
|
+
if [[ "$should_exclude" == "false" ]]; then
|
92
|
+
echo "$file" >> /tmp/filtered_files.txt
|
93
|
+
fi
|
94
|
+
done
|
95
|
+
|
96
|
+
# Check if we have files to process
|
97
|
+
if [[ ! -f /tmp/filtered_files.txt ]] || [[ ! -s /tmp/filtered_files.txt ]]; then
|
98
|
+
echo "No files to process after excluding files"
|
99
|
+
exit 0
|
100
|
+
fi
|
101
|
+
|
102
|
+
TOTAL_FILES=$(wc -l < /tmp/filtered_files.txt)
|
103
|
+
echo "Processing $TOTAL_FILES files with 16 parallel processes..."
|
104
|
+
|
105
|
+
# Function to validate a single file
|
106
|
+
validate_file() {
|
107
|
+
local file=$1
|
108
|
+
echo "Testing: $file"
|
109
|
+
python .github/scripts/validate_docstrings.py "$file"
|
110
|
+
if [ $? -ne 0 ]; then
|
111
|
+
echo "❌ Docstring test failed for $file"
|
112
|
+
return 1
|
113
|
+
fi
|
114
|
+
echo "✅ Docstring test passed for $file"
|
115
|
+
return 0
|
116
|
+
}
|
117
|
+
|
118
|
+
# Export function for use with xargs
|
119
|
+
export -f validate_file
|
120
|
+
|
121
|
+
# Process files in parallel with 16 processes
|
122
|
+
cat /tmp/filtered_files.txt | xargs -I {} -P 16 -n 1 bash -c 'validate_file "$@"' _ {}
|
123
|
+
|
124
|
+
# Check if any process failed
|
125
|
+
if [ $? -ne 0 ]; then
|
126
|
+
echo "❌ Some docstring tests failed"
|
127
|
+
exit 1
|
128
|
+
fi
|
129
|
+
|
130
|
+
echo "🎉 All docstring tests passed!"
|
131
|
+
|
132
|
+
# Clean up
|
133
|
+
rm -f /tmp/filtered_files.txt
|
134
|
+
|
135
|
+
- name: No changes detected
|
136
|
+
if: steps.changed-files.outputs.has_changes == 'false'
|
137
|
+
run: echo "No Python files to test"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: optimum-rbln
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.1
|
4
4
|
Summary: Optimum RBLN is the interface between the HuggingFace Transformers and Diffusers libraries and RBLN accelerators. It provides a set of tools enabling easy model loading and inference on single and multiple rbln device settings for different downstream tasks.
|
5
5
|
Project-URL: Homepage, https://rebellions.ai
|
6
6
|
Project-URL: Documentation, https://docs.rbln.ai
|
@@ -23,12 +23,12 @@ Classifier: Programming Language :: Python :: 3.12
|
|
23
23
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
24
24
|
Requires-Python: <3.13,>=3.9
|
25
25
|
Requires-Dist: accelerate>=1.0.1
|
26
|
-
Requires-Dist: diffusers
|
26
|
+
Requires-Dist: diffusers==0.34.0
|
27
27
|
Requires-Dist: packaging>=24.1
|
28
|
-
Requires-Dist: torch==2.
|
29
|
-
Requires-Dist: torchaudio<=2.
|
30
|
-
Requires-Dist: torchvision<=0.
|
31
|
-
Requires-Dist: transformers==4.
|
28
|
+
Requires-Dist: torch==2.7.0
|
29
|
+
Requires-Dist: torchaudio<=2.7.0
|
30
|
+
Requires-Dist: torchvision<=0.22.0
|
31
|
+
Requires-Dist: transformers==4.51.3
|
32
32
|
Description-Content-Type: text/markdown
|
33
33
|
|
34
34
|
|
@@ -0,0 +1,159 @@
|
|
1
|
+
"""
|
2
|
+
# Advanced Tutorial: Creating Custom RBLN Classes
|
3
|
+
|
4
|
+
This tutorial demonstrates how to create custom RBLN model classes for use with the optimum-rbln framework.
|
5
|
+
|
6
|
+
## Requirements for Custom Class Creation:
|
7
|
+
|
8
|
+
1. You must create two classes:
|
9
|
+
- A custom model class that inherits from RBLNModel
|
10
|
+
- A custom config class that inherits from RBLNModelConfig
|
11
|
+
|
12
|
+
2. The naming convention is critical:
|
13
|
+
- Model class: RBLN<OriginalModelName> (e.g., RBLNResNetModel)
|
14
|
+
- Config class: RBLN<OriginalModelName>Config (e.g., RBLNResNetModelConfig)
|
15
|
+
|
16
|
+
3. Your custom class MUST implement the _update_rbln_config method
|
17
|
+
- This method configures input shapes and compilation settings
|
18
|
+
|
19
|
+
4. You must register both classes with the auto registration system
|
20
|
+
- This enables the framework to discover and use your custom classes
|
21
|
+
|
22
|
+
Important: Custom RBLN classes can only be created for models that exist in
|
23
|
+
the transformers or diffusers libraries. You cannot create custom RBLN classes
|
24
|
+
for completely custom architectures without a corresponding HuggingFace implementation.
|
25
|
+
|
26
|
+
This example demonstrates creating a custom RBLN class for the ResNet model from transformers.
|
27
|
+
"""
|
28
|
+
|
29
|
+
from typing import TYPE_CHECKING, Optional, Tuple, Union
|
30
|
+
|
31
|
+
import torch
|
32
|
+
from transformers import ResNetModel # noqa: F401
|
33
|
+
from transformers.models.resnet.modeling_resnet import BaseModelOutputWithPoolingAndNoAttention
|
34
|
+
|
35
|
+
from optimum.rbln import RBLNAutoConfig, RBLNAutoModel, RBLNCompileConfig, RBLNModel, RBLNModelConfig
|
36
|
+
|
37
|
+
|
38
|
+
if TYPE_CHECKING:
|
39
|
+
from transformers import AutoFeatureExtractor, AutoProcessor, AutoTokenizer, PretrainedConfig, PreTrainedModel
|
40
|
+
|
41
|
+
|
42
|
+
# --------------------------------------------------------
|
43
|
+
# STEP 1: Create a custom model class that extends RBLNModel
|
44
|
+
# --------------------------------------------------------
|
45
|
+
# A custom RBLN model class must:
|
46
|
+
# - Follow the naming pattern: RBLN<OriginalModelName>
|
47
|
+
# - Implement the _update_rbln_config method (required)
|
48
|
+
# - Define a proper forward method matching the original model's inputs/outputs
|
49
|
+
#
|
50
|
+
# The _update_rbln_config method is critical - it sets up the input tensor
|
51
|
+
# specifications and other compilation parameters needed for the RBLN compiler.
|
52
|
+
#
|
53
|
+
# For our ResNet example, we need to:
|
54
|
+
# 1. Specify the input tensor shape for images (batch_size, channels, height, width)
|
55
|
+
# 2. Set the proper configuration options
|
56
|
+
# 3. Return the updated RBLN configuration
|
57
|
+
class RBLNResNetModel(RBLNModel):
|
58
|
+
@classmethod
|
59
|
+
def _update_rbln_config(
|
60
|
+
cls,
|
61
|
+
preprocessors: Optional[Union["AutoFeatureExtractor", "AutoProcessor", "AutoTokenizer"]] = None,
|
62
|
+
model: Optional["PreTrainedModel"] = None,
|
63
|
+
model_config: Optional["PretrainedConfig"] = None,
|
64
|
+
rbln_config: Optional["RBLNResNetModelConfig"] = None,
|
65
|
+
) -> "RBLNResNetModelConfig":
|
66
|
+
# Set image_size if not provided
|
67
|
+
if rbln_config.image_size is None:
|
68
|
+
if rbln_config.image_size is None:
|
69
|
+
rbln_config.image_size = model_config.image_size
|
70
|
+
|
71
|
+
if rbln_config.image_size is None:
|
72
|
+
raise ValueError("`image_size` should be specified!")
|
73
|
+
|
74
|
+
# Define input tensor specification for the compiler
|
75
|
+
# Format: (tensor_name, tensor_shape, dtype)
|
76
|
+
input_info = [
|
77
|
+
(
|
78
|
+
"pixel_values",
|
79
|
+
[rbln_config.batch_size, 3, rbln_config.image_size[0], rbln_config.image_size[1]],
|
80
|
+
"float32",
|
81
|
+
)
|
82
|
+
]
|
83
|
+
|
84
|
+
# Configure compilation settings
|
85
|
+
rbln_config.set_compile_cfgs([RBLNCompileConfig(input_info=input_info)])
|
86
|
+
return rbln_config
|
87
|
+
|
88
|
+
def forward(self, pixel_values, return_dict: Optional[bool] = None, **kwargs):
|
89
|
+
return_dict = return_dict if return_dict is not None else self.config.use_return_dict
|
90
|
+
|
91
|
+
# self.model is a list of rebel.Runtime objects
|
92
|
+
# See https://docs.rbln.ai/software/api/python/python_api.html#rebel.rebel_runtime.Runtime for more details
|
93
|
+
output = self.model[0](pixel_values)
|
94
|
+
|
95
|
+
if not return_dict:
|
96
|
+
return output
|
97
|
+
else:
|
98
|
+
return BaseModelOutputWithPoolingAndNoAttention(last_hidden_state=output[0], pooler_output=output[1])
|
99
|
+
|
100
|
+
|
101
|
+
# ----------------------------------------------------------------
|
102
|
+
# STEP 2: Create a custom configuration class that extends RBLNModelConfig
|
103
|
+
# ----------------------------------------------------------------
|
104
|
+
# The configuration class must:
|
105
|
+
# - Follow the naming pattern: RBLN<OriginalModelName>Config
|
106
|
+
# - Define model-specific parameters needed for compilation
|
107
|
+
#
|
108
|
+
# For ResNet, we need:
|
109
|
+
# - batch_size: Batch size for inference
|
110
|
+
# - image_size: Input image dimensions (height, width)
|
111
|
+
class RBLNResNetModelConfig(RBLNModelConfig):
|
112
|
+
def __init__(self, batch_size: int = None, image_size: Optional[Tuple[int, int]] = None, **kwargs):
|
113
|
+
super().__init__(**kwargs)
|
114
|
+
self.batch_size = batch_size or 1
|
115
|
+
self.image_size = image_size or (224, 224)
|
116
|
+
|
117
|
+
|
118
|
+
# ----------------------------------------------------------------
|
119
|
+
# STEP 3: Register both classes with the auto registration system
|
120
|
+
# ----------------------------------------------------------------
|
121
|
+
# Registration is essential for the RBLN framework to:
|
122
|
+
# 1. Discover your custom classes when needed
|
123
|
+
# 2. Enable using RBLNAutoModel.from_pretrained() with your model type
|
124
|
+
# 3. Connect your configuration class to the model class in the framework
|
125
|
+
RBLNAutoModel.register(RBLNResNetModel)
|
126
|
+
RBLNAutoConfig.register(RBLNResNetModelConfig)
|
127
|
+
|
128
|
+
|
129
|
+
# ----------------------------------------------------------------
|
130
|
+
# STEP 4: Usage Example - Creating and using the custom RBLN model
|
131
|
+
# ----------------------------------------------------------------
|
132
|
+
# Initialize the model from a pretrained HuggingFace model
|
133
|
+
# The 'export=True' parameter triggers the model compilation process
|
134
|
+
# rbln_image_size and rbln_batch_size are passed to the custom configuration
|
135
|
+
my_model = RBLNResNetModel.from_pretrained(
|
136
|
+
"microsoft/resnet-50", export=True, rbln_image_size=(224, 224), rbln_batch_size=1
|
137
|
+
)
|
138
|
+
|
139
|
+
# Save the compiled model for later use
|
140
|
+
my_model.save_pretrained("my_resnet_model_saved")
|
141
|
+
|
142
|
+
# Create a random input tensor for demonstration
|
143
|
+
# The shape must match what we defined in _update_rbln_config
|
144
|
+
random_image_input = torch.randn(1, 3, 224, 224)
|
145
|
+
|
146
|
+
# Run inference with the compiled model
|
147
|
+
output = my_model(random_image_input)
|
148
|
+
|
149
|
+
# Print each key-value pair in the output dictionary
|
150
|
+
for key, value in output.items():
|
151
|
+
print(key, value)
|
152
|
+
|
153
|
+
|
154
|
+
# ----------------------------------------------------------------
|
155
|
+
# STEP 5: Loading a saved RBLN model
|
156
|
+
# ----------------------------------------------------------------
|
157
|
+
# Load the model we just saved - no need to recompile
|
158
|
+
my_model_reloaded = RBLNResNetModel.from_pretrained("my_resnet_model_saved")
|
159
|
+
print(my_model_reloaded)
|
@@ -28,12 +28,12 @@ classifiers = [
|
|
28
28
|
]
|
29
29
|
keywords = ["transformers", "diffusers", "inference", "rbln", "atom", "rebel"]
|
30
30
|
dependencies = [
|
31
|
-
"torch==2.
|
32
|
-
"torchaudio<=2.
|
33
|
-
"torchvision<=0.
|
31
|
+
"torch==2.7.0",
|
32
|
+
"torchaudio<=2.7.0",
|
33
|
+
"torchvision<=0.22.0",
|
34
34
|
"accelerate>=1.0.1",
|
35
|
-
"transformers==4.
|
36
|
-
"diffusers
|
35
|
+
"transformers==4.51.3",
|
36
|
+
"diffusers==0.34.0",
|
37
37
|
"packaging>=24.1",
|
38
38
|
]
|
39
39
|
|
@@ -78,6 +78,9 @@ version-file = "src/optimum/rbln/__version__.py"
|
|
78
78
|
[tool.hatch.build.targets.wheel]
|
79
79
|
packages = ["src/optimum"]
|
80
80
|
|
81
|
+
[tool.hatch.metadata]
|
82
|
+
allow-direct-references = true
|
83
|
+
|
81
84
|
[tool.uv]
|
82
85
|
environments = [
|
83
86
|
"sys_platform == 'linux'"
|
@@ -26,6 +26,7 @@ _import_structure = {
|
|
26
26
|
"RBLNModel",
|
27
27
|
],
|
28
28
|
"configuration_utils": [
|
29
|
+
"RBLNAutoConfig",
|
29
30
|
"RBLNCompileConfig",
|
30
31
|
"RBLNModelConfig",
|
31
32
|
],
|
@@ -69,6 +70,8 @@ _import_structure = {
|
|
69
70
|
"RBLNCLIPVisionModelConfig",
|
70
71
|
"RBLNCLIPVisionModelWithProjection",
|
71
72
|
"RBLNCLIPVisionModelWithProjectionConfig",
|
73
|
+
"RBLNColPaliForRetrieval",
|
74
|
+
"RBLNColPaliForRetrievalConfig",
|
72
75
|
"RBLNDecoderOnlyModelForCausalLM",
|
73
76
|
"RBLNDecoderOnlyModelForCausalLMConfig",
|
74
77
|
"RBLNDistilBertForQuestionAnswering",
|
@@ -135,8 +138,17 @@ _import_structure = {
|
|
135
138
|
"diffusers": [
|
136
139
|
"RBLNAutoencoderKL",
|
137
140
|
"RBLNAutoencoderKLConfig",
|
141
|
+
"RBLNAutoencoderKLCosmos",
|
142
|
+
"RBLNAutoencoderKLCosmosConfig",
|
138
143
|
"RBLNControlNetModel",
|
139
144
|
"RBLNControlNetModelConfig",
|
145
|
+
"RBLNCosmosTextToWorldPipeline",
|
146
|
+
"RBLNCosmosVideoToWorldPipeline",
|
147
|
+
"RBLNCosmosTextToWorldPipelineConfig",
|
148
|
+
"RBLNCosmosVideoToWorldPipelineConfig",
|
149
|
+
"RBLNCosmosSafetyChecker",
|
150
|
+
"RBLNCosmosTransformer3DModel",
|
151
|
+
"RBLNCosmosTransformer3DModelConfig",
|
140
152
|
"RBLNDiffusionMixin",
|
141
153
|
"RBLNKandinskyV22CombinedPipeline",
|
142
154
|
"RBLNKandinskyV22CombinedPipelineConfig",
|
@@ -192,14 +204,24 @@ _import_structure = {
|
|
192
204
|
|
193
205
|
if TYPE_CHECKING:
|
194
206
|
from .configuration_utils import (
|
207
|
+
RBLNAutoConfig,
|
195
208
|
RBLNCompileConfig,
|
196
209
|
RBLNModelConfig,
|
197
210
|
)
|
198
211
|
from .diffusers import (
|
199
212
|
RBLNAutoencoderKL,
|
200
213
|
RBLNAutoencoderKLConfig,
|
214
|
+
RBLNAutoencoderKLCosmos,
|
215
|
+
RBLNAutoencoderKLCosmosConfig,
|
201
216
|
RBLNControlNetModel,
|
202
217
|
RBLNControlNetModelConfig,
|
218
|
+
RBLNCosmosSafetyChecker,
|
219
|
+
RBLNCosmosTextToWorldPipeline,
|
220
|
+
RBLNCosmosTextToWorldPipelineConfig,
|
221
|
+
RBLNCosmosTransformer3DModel,
|
222
|
+
RBLNCosmosTransformer3DModelConfig,
|
223
|
+
RBLNCosmosVideoToWorldPipeline,
|
224
|
+
RBLNCosmosVideoToWorldPipelineConfig,
|
203
225
|
RBLNDiffusionMixin,
|
204
226
|
RBLNKandinskyV22CombinedPipeline,
|
205
227
|
RBLNKandinskyV22CombinedPipelineConfig,
|
@@ -295,6 +317,8 @@ if TYPE_CHECKING:
|
|
295
317
|
RBLNCLIPVisionModelConfig,
|
296
318
|
RBLNCLIPVisionModelWithProjection,
|
297
319
|
RBLNCLIPVisionModelWithProjectionConfig,
|
320
|
+
RBLNColPaliForRetrieval,
|
321
|
+
RBLNColPaliForRetrievalConfig,
|
298
322
|
RBLNDecoderOnlyModelForCausalLM,
|
299
323
|
RBLNDecoderOnlyModelForCausalLMConfig,
|
300
324
|
RBLNDistilBertForQuestionAnswering,
|
@@ -17,5 +17,5 @@ __version__: str
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
18
18
|
version_tuple: VERSION_TUPLE
|
19
19
|
|
20
|
-
__version__ = version = '0.8.
|
21
|
-
__version_tuple__ = version_tuple = (0, 8,
|
20
|
+
__version__ = version = '0.8.1'
|
21
|
+
__version_tuple__ = version_tuple = (0, 8, 1)
|