Ë
    ÜÓ^jW  ã                   óv   — d dl mZ ddlmZ ddlmZ ddlmZmZ  ed¬«      e G d	„ d
e«      «       «       Z	d
gZ
y)é    )Ústricté   )ÚPreTrainedConfig)Úauto_docstringé   )ÚCONFIG_MAPPINGÚ
AutoConfigzlerobot/pi0_base)Ú
checkpointc                   ó  ‡ — e Zd ZU dZdZeedœZdZee	z  dz  e
d<   dZee	z  dz  e
d<   dZee
d<   d	Zee
d
<   d	Zee
d<   dZee
d<   dZee
d<   dZee
d<   dZee
d<   dZee
d<   dZee
d<   dZee
d<   dZee
d<   ˆ fd„Zd„ Zˆ xZS )Ú	PI0ConfigaÜ  
    vlm_config (`dict`, *optional*):
        Configuration for the vlm backbone (PaliGemmaModel).
    dit_config (`dict`, *optional*):
        Configuration for the DiT backbone. Defaults to a Gemma 300M variant.
    chunk_size (`int`, *optional*, defaults to 50):
        Number of action steps to predict per chunk.
    max_state_dim (`int`, *optional*, defaults to 32):
        Maximum state vector dimension (shorter vectors are zero-padded).
    max_action_dim (`int`, *optional*, defaults to 32):
        Maximum action vector dimension (shorter vectors are zero-padded).
    num_inference_steps (`int`, *optional*, defaults to 10):
        Number of denoising steps during inference.
    time_sampling_beta_alpha (`float`, *optional*, defaults to 1.5):
        Alpha parameter for Beta distribution used to sample diffusion time during training.
    time_sampling_beta_beta (`float`, *optional*, defaults to 1.0):
        Beta parameter for Beta distribution used to sample diffusion time during training.
    time_sampling_scale (`float`, *optional*, defaults to 0.999):
        Scale factor for sampled time values.
    time_sampling_offset (`float`, *optional*, defaults to 0.001):
        Offset added to sampled time values.
    min_period (`float`, *optional*, defaults to 0.004):
        Minimum period for sinusoidal time embedding.
    max_period (`float`, *optional*, defaults to 4.0):
        Maximum period for sinusoidal time embedding.
    loss_reduction (`str`, *optional*, defaults to `"mean"`):
        The reduction to use on MSE loss.

    Example:
    ```python
    >>> from transformers import PI0ForConditionalGeneration, PI0Config

    >>> config = PI0Config()
    >>> model = PI0ForConditionalGeneration(config)
    ```
    Úpi0)Ú
vlm_configÚ
dit_configNr   r   é2   Ú
chunk_sizeé    Úmax_state_dimÚmax_action_dimé
   Únum_inference_stepsg      ø?Útime_sampling_beta_alphag      ð?Útime_sampling_beta_betag+‡ÙÎ÷ï?Útime_sampling_scalegü©ñÒMbP?Útime_sampling_offsetgü©ñÒMbp?Ú
min_periodg      @Ú
max_periodÚmeanÚloss_reductionc                 óà  •— t        | j                  t        «      r:| j                  j                  dd«      }t	        |   di | j                  ¤Ž| _        n5| j                  €)t	        d   ddddddd	d
œdddddddd	ddœ	dd	¬«      | _        t        | j
                  t        «      r:| j
                  j                  dd«      }t	        |   di | j
                  ¤Ž| _        nD| j
                  €8t	        d   dddddd| j                  j                  j                  ¬«      | _        d| j
                  _        d| j
                  _	        d| j                  j                  _	        t        ‰| �,  di |¤Ž y )NÚ
model_typeÚ	paligemmaÚgemmai   é   i @  é   é   i€ì )r    Úhidden_sizeÚnum_hidden_layersÚintermediate_sizeÚnum_attention_headsÚnum_key_value_headsÚ
vocab_sizeÚsiglip_vision_modeliÐ  i€  é   éà   é   é   F)	r    r(   r&   Ú
patch_sizeÚ
image_sizer'   r)   r+   Úvision_use_head)Útext_configÚvision_configÚprojection_dimÚimage_token_idi   i   é   )r&   r'   r(   r)   r*   Úhead_dimr+   T© )Ú
isinstancer   ÚdictÚgetr   r   r4   r+   Ú	is_causalÚuse_bidirectional_attentionÚsuperÚ__post_init__)ÚselfÚkwargsÚvlm_model_typeÚdit_model_typeÚ	__class__s       €út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/pi0/configuration_pi0.pyrA   zPI0Config.__post_init__T   sX  ø€ Ü�d—o‘o¤tÔ,Ø!Ÿ_™_×0Ñ0°¸{ÓKˆNÜ,¨^Ñ<ÑO¸t¿¹ÑOˆD�OØ�_‰_Ð$Ü,¨[Ñ9à")Ø#'Ø)+Ø).Ø+,Ø+,Ø"(ñð #8Ø)-Ø#'Ø"$Ø"%Ø)+Ø+-Ø"(Ø',ñ
ð  $Ø%ô-ˆDŒOô2 �d—o‘o¤tÔ,Ø!Ÿ_™_×0Ñ0°¸wÓGˆNÜ,¨^Ñ<ÑO¸t¿¹ÑOˆD�OØ�_‰_Ð$Ü,¨WÑ5Ø Ø"$Ø"&Ø$%Ø$%ØØŸ?™?×6Ñ6×AÑAôˆDŒOð %)ˆ�‰Ô!Ø6:ˆ�‰Ô3ØBFˆ�‰×#Ñ#Ô?Ü‰ÑÑ' Ó'ó    c                 ó–   — | j                   j                  dz  dk7  r-t        d| j                  j                   j                  › d�«      ‚y)zOPart of `@strict`-powered validation. Validates the architecture of the config.r   r   zDiT hidden dim=(z) must be divisible by 2N)r   r&   Ú
ValueErrorÚconfig)rB   s    rG   Úvalidate_architecturezPI0Config.validate_architecture†   sE   € à�?‰?×&Ñ&¨Ñ*¨aÒ/ÜÐ/°·±×0FÑ0F×0RÑ0RÐ/SÐSkÐlÓmÐmð 0rH   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r	   Úsub_configsr   r<   r   Ú__annotations__r   r   Úintr   r   r   r   Úfloatr   r   r   r   r   r   ÚstrrA   rL   Ú__classcell__)rF   s   @rG   r   r      sÃ   ø… ñ#ðJ €JØ!+¸:ÑF€Kà15€J�Ð'Ñ'¨$Ñ.Ó5Ø15€J�Ð'Ñ'¨$Ñ.Ó5Ø€J�ÓØ€M�3ÓØ€N�CÓØ!Ð˜Ó!Ø&)Ð˜eÓ)Ø%(Ð˜UÓ(Ø!&Ð˜Ó&Ø"'Ð˜%Ó'Ø€J�ÓØ€J�ÓØ €N�CÓ ô0(ödnrH   r   N)Úhuggingface_hub.dataclassesr   Úconfiguration_utilsr   Úutilsr   Úautor   r	   r   Ú__all__r:   rH   rG   ú<module>r\      sM   ðõ( /å 3Ý #ß -ñ Ð-Ô.ØôlnÐ ó lnó ó /ðlnð^ ˆ-�rH   