§
    ‚Štj&  ã                   ó  — d dl mZ d dlmZ ddlmZ ddlmZmZ ddl	m
Z
  ej        e¦  «        Z ed¬	¦  «        e G d
„ de¦  «        ¦   «         ¦   «         Z ed¬	¦  «        e G d„ de¦  «        ¦   «         ¦   «         ZddgZdS )é    )ÚAny)Ústricté   )ÚPreTrainedConfig)Úauto_docstringÚloggingé   )ÚSiglipVisionConfigzgoogle/gemma-3-4b-it)Ú
checkpointc            
       ó@  ‡ — e Zd ZU dZdZdgZddddddddddœ	Zdgd	gfd
dgd
gfd
gd
gfdœZ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"<   d#Zee
d$<   d%Ze	d&z  e
d'<   d(Ze	ee	         z  d&z  e
d)<   d*Ze	d&z  e
d+<   d#Zee
d,<   d&Zed&z  e
d-<   d.Z ee
d/<   d0Z!e	ez  d&z  e
d1<   dZ"e	e
d2<   d3Z#e	d&z  e
d4<   d&Z$ee         d&z  e
d5<   d&Z%ed&z  e
d6<   d&Z&ed&z  e
d7<   d.Z'ed&z  e
d8<   d9d:d;œZ(ˆ fd<„Z)d=„ Z*d>„ Z+ˆ xZ,S )?ÚGemma3TextConfigaé  
    query_pre_attn_scalar (`float`, *optional*, defaults to 256):
        scaling factor used on the attention scores
    final_logit_softcapping (`float`, *optional*):
        Scaling factor when applying tanh softcapping on the logits.
    attn_logit_softcapping (`float`, *optional*):
        Scaling factor when applying tanh softcapping on the attention scores.
    use_bidirectional_attention (`bool`, *optional*, defaults to `False`):
        If True, the model will attend to all text tokens instead of using a causal mask. This does not change
        behavior for vision tokens.

    ```python
    >>> from transformers import Gemma3TextModel, Gemma3TextConfig
    >>> # Initializing a Gemma3Text gemma3_text-7b style configuration
    >>> configuration = Gemma3TextConfig()
    >>> # Initializing a model from the gemma3_text-7b style configuration
    >>> model = Gemma3TextModel(configuration)
    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```
    Úgemma3_textÚpast_key_valuesÚcolwiseÚreplicated_with_grad_allreduceÚrowwise)	zlayers.*.self_attn.q_projzlayers.*.self_attn.k_projzlayers.*.self_attn.v_projzlayers.*.self_attn.q_normzlayers.*.self_attn.k_normzlayers.*.self_attn.o_projzlayers.*.mlp.gate_projzlayers.*.mlp.up_projzlayers.*.mlp.down_projÚ	input_idsÚinputs_embedsÚhidden_statesÚattention_mask)Úembed_tokensÚlayersÚnormi@  Ú
vocab_sizei 	  Úhidden_sizei $  Úintermediate_sizeé   Únum_hidden_layersé   Únum_attention_headsé   Únum_key_value_headsé   Úhead_dimÚgelu_pytorch_tanhÚhidden_activationi   Úmax_position_embeddingsç{®Gáz”?Úinitializer_rangeg�íµ ÷Æ°>Úrms_norm_epsTÚ	use_cacher   NÚpad_token_idé   Úeos_token_idr	   Úbos_token_idÚtie_word_embeddingsÚrope_parametersFÚattention_biasg        Úattention_dropoutÚquery_pre_attn_scalari   Úsliding_windowÚlayer_typesÚfinal_logit_softcappingÚattn_logit_softcappingÚuse_bidirectional_attentiong    €„.Ag     ˆÃ@)ÚglobalÚlocalc                 óü   •‡ — ‰ j         r‰ j        dz  dz   ‰ _        |                     dd¦  «        ‰ _        ‰ j        €%ˆ fd„t          ‰ j        ¦  «        D ¦   «         ‰ _         t          ¦   «         j        di |¤Ž d S )Nr	   r-   Úsliding_window_patterné   c                 óL   •— g | ] }t          |d z   ‰j        z  ¦  «        rdnd‘Œ!S )r-   Úsliding_attentionÚfull_attention)ÚboolÚ_sliding_window_pattern)Ú.0ÚiÚselfs     €úm/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/gemma3/configuration_gemma3.pyú
<listcomp>z2Gemma3TextConfig.__post_init__.<locals>.<listcomp>p   sI   ø€ ð  ð  ð  àõ (,¨Q°©U°dÔ6RÑ,RÑ'SÔ'SÐiÐ#Ð#ÐYið ð  ð  ó    © )	r9   r5   ÚgetrC   r6   Úranger   ÚsuperÚ__post_init__©rF   ÚkwargsÚ	__class__s   ` €rG   rN   zGemma3TextConfig.__post_init__h   s¢   øø€ ØÔ+ð 	AØ#'Ô#6¸!Ñ#;¸qÑ"@ˆDÔð (.§z¢zÐ2JÈAÑ'NÔ'NˆÔ$àÔÐ#ð ð  ð  ð  å˜tÔ5Ñ6Ô6ð ñ  ô  ˆDÔð
 	�‰ŒÔÐ'Ð' Ð'Ð'Ð'Ð'Ð'rI   c                 ól   — | j         | j        z  dk    r t          d| j         › d| j        › d�¦  «        ‚dS )zOPart of `@strict`-powered validation. Validates the architecture of the config.r   zThe hidden size (z6) is not a multiple of the number of attention heads (z).N)r   r    Ú
ValueError)rF   s    rG   Úvalidate_architecturez&Gemma3TextConfig.validate_architecturew   s[   € àÔ˜dÔ6Ñ6¸!Ò;Ð;Ýð7 DÔ$4ð 7ð 7ØÔ2ð7ð 7ð 7ñô ð ð <Ð;rI   c                 ór  — |                      dd ¦  «        }ddiddidœ}| j        �| j        n|| _        |� | j        d                              |¦  «         | j                             d¦  «        €ddi| j        d<   | j        d                              d|                      d| j        d         ¦  «        ¦  «         | j                             d¦  «        €ddi| j        d<   | j        d                              d|                      d	| j        d
         ¦  «        ¦  «         |                      ¦   «          |S )NÚrope_scalingÚ	rope_typeÚdefault)r@   rA   rA   Ú
rope_thetar:   r@   Úrope_local_base_freqr;   )Úpopr1   ÚupdaterK   Ú
setdefaultÚdefault_thetaÚstandardize_rope_params)rF   rP   rV   Údefault_rope_paramss       rG   Úconvert_rope_params_to_dictz,Gemma3TextConfig.convert_rope_params_to_dict   s_  € Ø—z’z .°$Ñ7Ô7ˆð
 #.¨yÐ!9Ø*¨IÐ6ð
ð 
Ðð 8<Ô7KÐ7W˜tÔ3Ð3Ð]pˆÔØÐ#ØÔ Ð!1Ô2×9Ò9¸,ÑGÔGÐGð Ô×#Ò#Ð$4Ñ5Ô5Ð=Ø6AÀ9Ð5MˆDÔ Ð!1Ñ2ØÔÐ-Ô.×9Ò9Ø˜&Ÿ*š* \°4Ô3EÀhÔ3OÑPÔPñ	
ô 	
ð 	
ð Ô×#Ò#Ð$7Ñ8Ô8Ð@Ø9DÀiÐ8PˆDÔ Ð!4Ñ5ØÔÐ0Ô1×<Ò<Ø˜&Ÿ*š*Ð%;¸TÔ=OÐPWÔ=XÑYÔYñ	
ô 	
ð 	
ð
 	×$Ò$Ñ&Ô&Ð&ØˆrI   )-Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚkeys_to_ignore_at_inferenceÚbase_model_tp_planÚbase_model_pp_planr   ÚintÚ__annotations__r   r   r   r    r"   r$   r&   Ústrr'   r)   Úfloatr*   r+   rB   r,   r.   Úlistr/   r0   r1   Údictr2   r3   r4   r5   r6   r7   r8   r9   r^   rN   rT   ra   Ú__classcell__©rQ   s   @rG   r   r   !   s¼  ø€ € € € € € ðð ð, €JØ#4Ð"5Ðà%.Ø%.Ø%.Ø%EØ%EØ%.Ø"+Ø )Ø"+ð
ð 
Ðð &˜¨Ð(9Ð:Ø#Ð%5Ð6¸Ð8IÐJØ!Ð" _Ð$5Ð6ðð Ðð €J�ÐÐÑØ€K�ÐÐÑØ!Ð�sÐ!Ð!Ñ!ØÐ�sÐÐÑØ Ð˜Ð Ð Ñ Ø Ð˜Ð Ð Ñ Ø€HˆcÐÐÑØ0Ð�sÐ0Ð0Ñ0Ø#*Ð˜SÐ*Ð*Ñ*Ø#Ð�uÐ#Ð#Ñ#Ø€L�%ÐÐÑØ€IˆtÐÐÑØ €L�#˜‘*Ð Ð Ñ Ø+,€L�#˜˜Sœ	‘/ DÑ(Ð,Ð,Ñ,Ø €L�#˜‘*Ð Ð Ñ Ø $Ð˜Ð$Ð$Ñ$Ø#'€O�T˜D‘[Ð'Ð'Ñ'Ø €N�DÐ Ð Ñ Ø,/Ð�s˜U‘{ TÑ)Ð/Ð/Ñ/Ø!$Ð˜3Ð$Ð$Ñ$Ø!%€N�C˜$‘JÐ%Ð%Ñ%Ø$(€K��c”˜TÑ!Ð(Ð(Ñ(Ø,0Ð˜U T™\Ð0Ð0Ñ0Ø+/Ð˜E D™LÐ/Ð/Ñ/Ø/4Ð ¨¡Ð4Ð4Ñ4Ø*°XÐ>Ð>€Mð(ð (ð (ð (ð (ðð ð ðð ð ð ð ð ð rI   r   c                   ó
  ‡ — e Zd ZU dZdZddddœZeedœZdZ	ee
eef         z  dz  ed	<   dZee
eef         z  dz  ed
<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   ˆ fd„Zˆ xZS )ÚGemma3Configa  
    mm_tokens_per_image (`int`, *optional*, defaults to 256):
        The number of tokens per image embedding.
    boi_token_index (`int`, *optional*, defaults to 255999):
        The begin-of-image token index to wrap the image prompt.
    eoi_token_index (`int`, *optional*, defaults to 256000):
        The end-of-image token index to wrap the image prompt.

    Example:

    ```python
    >>> from transformers import Gemma3ForConditionalGeneration, Gemma3Config, SiglipVisionConfig, Gemma3TextConfig

    >>> # Initializing a Siglip-like vision config
    >>> vision_config = SiglipVisionConfig()

    >>> # Initializing a Gemma3 Text config
    >>> text_config = Gemma3TextConfig()

    >>> # Initializing a Gemma3 gemma-3-4b style configuration
    >>> configuration = Gemma3Config(vision_config, text_config)

    >>> # Initializing a model from the gemma-3-4b style configuration
    >>> model = Gemma3TextConfig(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```Úgemma3Úimage_token_indexÚboi_token_indexÚeoi_token_index)Úimage_token_idÚboi_token_idÚeoi_token_id)Útext_configÚvision_configNr{   r|   r#   Úmm_tokens_per_imageiÿç i è i   r(   r)   Tr0   c                 óÎ  •— | j         €.t          ¦   «         | _         t                               d¦  «         n0t	          | j         t
          ¦  «        rt          di | j         ¤Ž| _         t	          | j        t
          ¦  «        rt          di | j        ¤Ž| _        n4| j        €-t          ¦   «         | _        t                               d¦  «          t          ¦   «         j	        di |¤Ž d S )Nz@text_config is None, using default Gemma3TextConfig text config.zFvision_config is None, using default SiglipVisionConfig vision config.rJ   )
r{   r   ÚloggerÚinfoÚ
isinstancero   r|   r
   rM   rN   rO   s     €rG   rN   zGemma3Config.__post_init__Ñ   sÞ   ø€ ØÔÐ#Ý/Ñ1Ô1ˆDÔÝ�KŠKÐZÑ[Ô[Ð[Ð[Ý˜Ô(­$Ñ/Ô/ð 	DÝ/ÐCÐC°$Ô2BÐCÐCˆDÔå�dÔ(­$Ñ/Ô/ð 	bÝ!3Ð!IÐ!I°dÔ6HÐ!IÐ!IˆDÔÐØÔÐ'Ý!3Ñ!5Ô!5ˆDÔÝ�KŠKÐ`ÑaÔaÐaà�‰ŒÔÐ'Ð' Ð'Ð'Ð'Ð'Ð'rI   )rb   rc   rd   re   rf   Úattribute_mapr   r
   Úsub_configsr{   ro   rl   r   rk   r|   r}   rj   rv   rw   ru   r)   rm   r0   rB   rN   rp   rq   s   @rG   rs   rs   �   s9  ø€ € € € € € ðð ð: €Jà-Ø)Ø)ðð €Mð (Ø+ðð €Kð
 =A€KÐ! D¨¨c¨¤NÑ2°TÑ9Ð@Ð@Ñ@Ø@D€MÐ%¨¨S°#¨X¬Ñ6¸Ñ=ÐDÐDÑDØ&)Ð˜˜t™Ð)Ð)Ñ)Ø")€O�S˜4‘ZÐ)Ð)Ñ)Ø")€O�S˜4‘ZÐ)Ð)Ñ)Ø$+Ð�s˜T‘zÐ+Ð+Ñ+Ø&*Ð�u˜t‘|Ð*Ð*Ñ*Ø'+Ð˜ ™Ð+Ð+Ñ+ð(ð (ð (ð (ð (ð (ð (ð (ð (rI   rs   N)Útypingr   Úhuggingface_hub.dataclassesr   Úconfiguration_utilsr   Úutilsr   r   Úsiglipr
   Ú
get_loggerrb   r   r   rs   Ú__all__rJ   rI   rG   ú<module>r‹      s6  ðð* Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð 
ˆÔ	˜HÑ	%Ô	%€ð €Ð1Ð2Ñ2Ô2Øðwð wð wð wð wÐ'ñ wô wñ „ñ 3Ô2ðwðt €Ð1Ð2Ñ2Ô2Øð?(ð ?(ð ?(ð ?(ð ?(Ð#ñ ?(ô ?(ñ „ñ 3Ô2ð?(ðD Ð-Ð
.€€€rI   