+
    œ°³j…À  ã                   ól  € ^ RI Ht ^ RIHt ^ RIt^ RIHt ^RIHt	 ^RI
Ht ^RIHtHt ^RIHt ^RIHt ^R	IHtHt ^R
IHtHtHtHtHtHtHt ^RIHtH t  ^RI!H"t"H#t#H$t$H%t% ^RI&H't'H(t( ^RI)H*t*H+t+ ^RI,H-t- ^RI.H/t/H0t0H1t1H2t2H3t3 ^RI4H5t5 ^RI6H7t7H8t8 ^RI9H:t: ^RI;H<t< ^RI=H>t>H?t? ]1! RR7      ] ! R R]"4      4       4       t@]1! RR7      ] ! R R]/4      4       4       tA ! R R]P„                  4      tC ! R R ]Pˆ                  4      tE ! R! R"]Pˆ                  4      tF ! R# R$]Pˆ                  4      tGR% tH]! R&4      RHR' l4       tIR( R) ltJRIR* R+ lltK]! ]I4       ! R, R-]Pˆ                  4      4       tL ! R. R/] 4      tM]1 ! R0 R1]+4      4       tNR2 R3 ltO]1 ! R4 R5]N4      4       tP]1 ! R6 R7]N]4      4       tQ ! R8 R9]Pˆ                  4      tRRJR: R; lltSR< R= ltT]1! R>R7       ! R? R@]N4      4       tU]1! R>R7       ! RA RB]N]4      4       tV]1! RCR7       ! RD RE]]N4      4       tW ! RF RG]]N4      tX. RKOtYR# )Lé    )ÚCallable)Ú	dataclassN)Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚPreTrainedConfig)ÚGenerationMixin)Úuse_kernel_forward_from_hubÚuse_kernelized_func)Ú_preprocess_mask_argumentsÚblockwise_overlayÚcreate_causal_maskÚcreate_masks_for_generateÚ!create_sliding_window_causal_maskÚmaybe_pad_block_sequence_idsÚsliding_window_overlay)Ú GenericForSequenceClassificationÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚBaseModelOutputWithPoolingÚCausalLMOutputWithPastÚ SequenceClassifierOutputWithPast)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚtorch_compilable_check)Údeprecate_kwarg)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputs)Ú	AutoModel)ÚGemma3ConfigÚGemma3TextConfigzK
    Base class for Gemma3 outputs, with hidden states and attentions.
    ©Úcustom_introc                   ó4   a € ] tR t^<t o RtRtV 3R ltRtV tR# )ÚGemma3ModelOutputWithPasta  
image_hidden_states (`torch.FloatTensor`, *optional*):
    A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
    image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
Nc                óH   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   # )é   NÚimage_hidden_states)ÚtorchÚFloatTensor)ÚformatÚ__classdict__s   "€Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/gemma3/modeling_gemma3.pyÚ__annotate__Ú&Gemma3ModelOutputWithPast.__annotate__<   s   ø‡ ‚ ñ ×*Ñ*¨TÕ1Ñ8ò ó    © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r1   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r5   s   @r6   r.   r.   <   s   ø‡ € ñð 59Ð÷ ƒ r9   r.   zR
    Base class for Gemma3 causal language model (or autoregressive) outputs.
    c                   óH   a € ] tR t^Lt o RtRtRtRtRtRt	Rt
V 3R ltRtV tR# )ÚGemma3CausalLMOutputWithPasta  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Language modeling loss (for next-token prediction).
logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.text_config.vocab_size)`):
    Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
    It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

    Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
    `past_key_values` input) to speed up sequential decoding.
image_hidden_states (`torch.FloatTensor`, *optional*):
    A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
    image_hidden_states of the model produced by the vision encoder after projecting last hidden state.
Nc                ó:  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[ P                  R,          ;R&   # )r0   NÚlossÚlogitsÚpast_key_valuesÚhidden_statesÚ
attentionsr1   )r2   r3   r   Útuple)r4   r5   s   "€r6   r7   Ú)Gemma3CausalLMOutputWithPast.__annotate__L   s˜   ø‡ ‚ ñ, ×
Ñ
˜dÕ
"Ñ)ñ- ñ. ×Ñ Õ$Ñ+ñ/ ñ0 ˜T•\Ñ(ñ1 ñ2 ™×*Ñ*Õ+¨dÕ2Ñ9ñ3 ñ4 ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ5 ñ6 ×*Ñ*¨TÕ1Ñ8ò7 r9   r:   )r;   r<   r=   r>   r?   rG   rH   rI   rJ   rK   r1   r@   rA   rB   rC   s   @r6   rE   rE   L   s2   ø‡ € ñð &*€DØ'+€FØ$(€OØ59€MØ26€JØ48Ð÷7 ƒ r9   rE   c                   ó^   a a€ ] tR t^jt oRtRV3R lV 3R llltV3R lV 3R lltRtVtV ;t	# )ÚGemma3TextScaledWordEmbeddingzT
This module overrides nn.Embeddings' forward by multiplying with embeddings scale.
c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[ RS[/# )r0   Únum_embeddingsÚembedding_dimÚpadding_idxÚembed_scale©ÚintÚfloat)r4   r5   s   "€r6   r7   Ú*Gemma3TextScaledWordEmbedding.__annotate__o   s0   ø€ ÷ Rñ R¡sð R¹3ð RÉSð RÑ_dñ Rr9   c                ó–   <€ \         SV `  WV4       W@n        \        P                  ! \
        P                  ! V4      R R7      V n        R# )F©Ú
persistentN)ÚsuperÚ__init__Úscalar_embed_scaleÚnnÚBufferr2   ÚtensorrT   )ÚselfrQ   rR   rS   rT   Ú	__class__s   &&&&&€r6   r]   Ú&Gemma3TextScaledWordEmbedding.__init__o   s4   ø€ Ü‰Ñ˜¸ÔDØ"-ÔÜŸ9š9¤U§\¢\°+Ó%>È5ÔQˆÖr9   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r0   Ú	input_ids©r2   ÚTensor)r4   r5   s   "€r6   r7   rX   t   s   ø€ ÷ Sñ S¡§¡ñ Sr9   c                óŠ   <€ \         SV `  V4      V P                  P                  V P                  P
                  4      ,          # ©N)r\   ÚforwardrT   ÚtoÚweightÚdtype)rb   rf   rc   s   &&€r6   rk   Ú%Gemma3TextScaledWordEmbedding.forwardt   s2   ø€ Ü‰w‰˜yÓ)¨D×,<Ñ,<×,?Ñ,?ÀÇÁ×@QÑ@QÓ,RÕRÐRr9   )rT   r^   ©ç      ð?©
r;   r<   r=   r>   r?   r]   rk   rA   rB   Ú__classcell__©rc   r5   s   @@r6   rO   rO   j   s(   ù‡ € ñ÷Rõ R÷
S÷ Só Sr9   rO   c                   óD   a a€ ] tR t^xt oV3R lV 3R lltR tRtVtV ;t# )Ú	Gemma3MLPc                ó    <€ V ^8„  d   QhRS[ /# ©r0   Úconfig©r*   )r4   r5   s   "€r6   r7   ÚGemma3MLP.__annotate__y   s   ø€ ÷ 7ñ 7Ñ/ñ 7r9   c                óØ  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n	        \        VP                  ,          V n        R# ©F©ÚbiasN)r\   r]   ry   Úhidden_sizeÚintermediate_sizer_   ÚLinearÚ	gate_projÚup_projÚ	down_projr   Úhidden_activationÚact_fn©rb   ry   rc   s   &&€r6   r]   ÚGemma3MLP.__init__y   s¤   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 4×#3Ñ#3°T×5KÑ5KÐRWÔXˆŒÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPUÔVˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRWÔXˆŒÜ˜V×5Ñ5Õ6ˆŽr9   c                ó�   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pV# rj   )r…   r‡   rƒ   r„   )rb   Úxr…   s   && r6   rk   ÚGemma3MLP.forwardƒ   s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr9   )r‡   ry   r…   rƒ   r€   r�   r„   ©	r;   r<   r=   r>   r]   rk   rA   rB   rs   rt   s   @@r6   rv   rv   x   s   ù‡ € ÷7ó 7÷ò r9   rv   c                   óT   a a€ ] tR t^ˆt oRV3R lV 3R llltR tR tR tRtVt	V ;t
# )ÚGemma3RMSNormc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r0   ÚdimÚepsrU   )r4   r5   s   "€r6   r7   ÚGemma3RMSNorm.__annotate__‰   s   ø€ ÷ 5ñ 5™Cð 5¡eñ 5r9   c                óŽ   <€ \         SV `  4        W n        \        P                  ! \
        P                  ! V4      4      V n        R # rj   )r\   r]   r’   r_   Ú	Parameterr2   Úzerosrm   )rb   r‘   r’   rc   s   &&&€r6   r]   ÚGemma3RMSNorm.__init__‰   s,   ø€ Ü‰ÑÔØŒÜ—l’l¤5§;¢;¨sÓ#3Ó4ˆŽr9   c                óž   € V\         P                  ! VP                  ^4      P                  RRR7      V P                  ,           4      ,          # )r0   T)Úkeepdiméÿÿÿÿ)r2   ÚrsqrtÚpowÚmeanr’   )rb   r‹   s   &&r6   Ú_normÚGemma3RMSNorm._normŽ   s4   € Ø”5—;’;˜qŸu™u Q›xŸ}™}¨R¸˜}Ó>ÀÇÁÕIÓJÕJÐJr9   c                ó²   € V P                  VP                  4       4      pVR V P                  P                  4       ,           ,          pVP                  V4      # rp   )rž   rW   rm   Útype_as)rb   r‹   Úoutputs   && r6   rk   ÚGemma3RMSNorm.forward‘   sC   € Ø—‘˜AŸG™G›IÓ&ˆð ˜3 §¡×!2Ñ!2Ó!4Õ4Õ5ˆØ�~‰~˜aÓ Ð r9   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)rL   rm   Úshaper’   )rb   s   &r6   Ú
extra_reprÚGemma3RMSNorm.extra_repr˜   s'   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$·(±(°Ð<Ð<r9   )r’   rm   )g�íµ ÷Æ°>)r;   r<   r=   r>   r]   rž   rk   r¦   rA   rB   rs   rt   s   @@r6   r�   r�   ˆ   s$   ù‡ € ÷5õ 5ò
Kò!÷=ò =r9   r�   c                   óÎ   a a€ ] tR t^œt o]! RRR7      R
V3R lV 3R lll4       t]]! RRR7      RV3R lR ll4       4       t]P                  ! 4       ]
R 4       4       tR	tVtV ;t# )ÚGemma3RotaryEmbeddingÚdevicez5.18)Úversionc                ó    <€ V ^8„  d   QhRS[ /# rx   rz   )r4   r5   s   "€r6   r7   Ú"Gemma3RotaryEmbedding.__annotate__ž   s   ø€ ÷ Uñ UÑ/ñ Ur9   c           
     óÞ  <€ \         SV `  4        VP                  V n        VP                  V n        Wn        \        \        VP                  4      4      V n        / V n	        V P                   Fû  pV P
                  P                  V,          pVf   K&  VR,          V P                  V&   V P                  pV P                  V,          R8w  d   \        V P                  V,          ,          pV! V P
                  W#R7      w  rg\        W R2\        P                  ! VRR7      4       \        W R2\        P                  ! VP!                  4       RR7      4       \        W R2V4       Ký  	  R # )	NÚ	rope_typeÚdefault©Ú
layer_typeÚ	_inv_freqFrZ   Ú_original_inv_freqÚ_attention_scaling)r\   r]   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenry   ÚsortedÚsetÚlayer_typesr¯   Úrope_parametersÚcompute_default_rope_parametersr   Úsetattrr_   r`   Úclone)	rb   ry   rª   r²   Úrope_paramsÚrope_init_fnÚcurr_inv_freqÚcurr_attention_scalingrc   s	   &&&     €r6   r]   ÚGemma3RotaryEmbedding.__init__�   s'  ø€ ä‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!ØŒÜ!¤# f×&8Ñ&8Ó"9Ó:ˆÔØˆŒØ×*Ô*ˆJØŸ+™+×5Ñ5°jÕAˆKØÒ"Ùà)4°[Õ)AˆD�N‰N˜:Ñ&Ø%)×%IÑ%IˆLØ�~‰~˜jÕ)¨YÔ6Ü2°4·>±>À*Õ3MÕN�Ù4@ÀÇÁÈfÔ4lÑ1ˆMÜ�D˜L¨	Ð2´B·I²I¸mÐX]Ô4^Ô_Ü�D˜LÐ(:Ð;¼R¿YºYÀ}×GZÑGZÓG\ÐinÔ=oÔpÜ�D˜LÐ(:Ð;Ð=SÖTó +r9   c                ód   <€ V ^8„  d   QhRS[ RS[R,          RS[S[P                  S[3,          /# )r0   ry   r²   NÚreturn)r*   ÚstrrL   r2   rh   rW   )r4   r5   s   "€r6   r7   r­   µ   s7   ø€ ÷ 5ñ 5Ù ð5Ù;>À½:ð5á	‰u�|‰|™UÐ"Õ	#ñ5r9   c           	     ó>  € V P                   V,          R,          p\        V RR4      ;'       g    V P                  V P                  ,          pRpRV\        P
                  ! ^ V^\        P                  R7      V,          ,          ,          pVP                  V4      V3# )a.  
Computes the inverse frequencies according to the original RoPE implementation
Args:
    config ([`~transformers.PreTrainedConfig`]):
        The model configuration.
    layer_type (`str`):
        The current layer type if the model has different RoPE parameters per type.
        Should not be used unless `config.layer_types is not None`

Returns:
    Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
    post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
Ú
rope_thetaÚhead_dimNrq   ©rn   )r¼   Úgetattrr€   Únum_attention_headsr2   ÚarangerW   rl   )ry   rª   r²   ÚkwargsÚbaser‘   Úattention_factorÚinv_freqs   &&&,    r6   r½   Ú5Gemma3RotaryEmbedding.compute_default_rope_parameters³   sƒ   € ð& ×%Ñ% jÕ1°,Õ?ˆÜ�f˜j¨$Ó/×cÐc°6×3EÑ3EÈ×IcÑIcÕ3cˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÔ#MÐPSÕ#SÕTÕUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4r9   c                óZ  € \        W R 24      p\        W R24      pVR
,          P                  VP                  ^ ,          R^4      P                  \        P
                  VP                  R7      pVR,          P                  4       p\        VP                  P                  \        4      '       d2   VP                  P                  R8w  d   VP                  P                  MRp\        VRR7      ;_uu_ 4        Wg,          P                  ^^4      p	\        P                  ! W™3RR7      p
V
P                  4       V,          pV
P                  4       V,          pRRR4       XP                  VP                  R	7      XP                  VP                  R	7      3#   + '       g   i     LH; i)r³   rµ   N©rn   rª   ÚmpsÚcpuF)Údevice_typeÚenabled©r‘   rË   )NºNNNNrš   )rÛ   NrÛ   )rÌ   Úexpandr¥   rl   r2   rW   rª   Ú
isinstanceÚtyperÇ   r%   Ú	transposeÚcatÚcosÚsinrn   )rb   r‹   Úposition_idsr²   rÒ   Úattention_scalingÚinv_freq_expandedÚposition_ids_expandedrØ   ÚfreqsÚembrá   râ   s   &&&&         r6   rk   ÚGemma3RotaryEmbedding.forwardÎ   sJ  € ô ˜4 <¨yÐ!9Ó:ˆÜ# D¨LÐ8JÐ*KÓLÐð �]Õ#×*Ñ*¨<×+=Ñ+=¸aÕ+@À"ÀaÓH×KÑKÔRW×R]ÑR]Ðfg×fnÑfnÐKÓoð 	ð !-¨ZÕ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÒ'EÈ!Ï(É(Ï-É-Ð[`ÔJ`�a—h‘h—m’mÐfkˆä¨¸U×CÖCØ&Õ>×IÑIÈ!ÈQÓOˆEÜ—)’)˜U˜N°Ô3ˆCØ—'‘'“)Ð/Õ/ˆCØ—'‘'“)Ð/Õ/ˆC÷	 Dð �v‰v˜AŸG™GˆvÓ$ c§f¡f°1·7±7 fÓ&;Ð;Ð;÷ D×Cús   Ã:A FÆF*	)ry   r»   r·   r¸   r¯   rj   )NN)r;   r<   r=   r>   r$   r]   Ústaticmethodr½   r2   Úno_gradr   rk   rA   rB   rs   rt   s   @@r6   r©   r©   œ   su   ù‡ € Ù�X vÔ.÷Uô Uó /ðUð* Ù�X vÔ.÷5ñ 5ó /ó ð5ð2 ‡]‚]ƒ_Øñ<ó ó ÷<ð <r9   r©   c                óÌ   € V RRV P                   R,          ^,          13,          pV RV P                   R,          ^,          R13,          p\        P                  ! V) V3RR7      # )z*Rotates half the hidden dims of the input..NrÚ   rš   )r¥   r2   rà   )r‹   Úx1Úx2s   &  r6   Úrotate_halfrï   ä   sZ   € à	
ˆ3Ð"�!—'‘'˜"•+ Õ"Ð"Ð"Õ	#€BØ	
ˆ3�—‘˜•˜qÕ Ñ"Ð"Õ	#€BÜ�9Š9�r�c˜2�Y BÔ'Ð'r9   Úrotary_pos_embc                óÈ   € VP                  V4      pVP                  V4      pW,          \        V 4      V,          ,           pW,          \        V4      V,          ,           pWV3# )aI  Applies Rotary Position Embedding to the query and key tensors.

Args:
    q (`torch.Tensor`): The query tensor.
    k (`torch.Tensor`): The key tensor.
    cos (`torch.Tensor`): The cosine part of the rotary embedding.
    sin (`torch.Tensor`): The sine part of the rotary embedding.
    unsqueeze_dim (`int`, *optional*, defaults to 1):
        The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
        sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
        that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
        k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
        cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
        the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
Returns:
    `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
)Ú	unsqueezerï   )ÚqÚkrá   râ   Úunsqueeze_dimÚq_embedÚk_embeds   &&&&&  r6   Úapply_rotary_pos_embrø   ë   sS   € ð& �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ�wœ; q›>¨CÕ/Õ0€GØ�wœ; q›>¨CÕ/Õ0€GØÐÐr9   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r0   rJ   Ún_reprÆ   )r2   rh   rV   )r4   s   "r6   r7   r7     s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur9   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
)rÛ   rÛ   NrÛ   rÛ   )r¥   rÜ   Úreshape)rJ   rú   ÚbatchÚnum_key_value_headsÚslenrÊ   s   &&    r6   Ú	repeat_kvr     sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr9   c                ór  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        \
        ,          R\        R,          R	\        R,          R
\        \        P                  \        P                  3,          /	# )r0   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚdropoutÚscalingÚsoftcaprÆ   )r_   ÚModuler2   rh   rW   rV   rL   )r4   s   "r6   r7   r7     s™   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ”S�[ð%ô �T�\ð%ô �T�\ð%ô Œ5�<‰<œŸ™Ð%Õ&ñ%r9   c                 ó¤  € Vf   V P                   R,          p\        W P                  4      p	\        W0P                  4      p
\        P                  ! WP                  ^^4      4      V,          pVe'   W·,          p\        P                  ! V4      pW·,          pVe	   W´,           p\        P                  P                  VR\        P                  R7      P                  VP                  4      p\        P                  P                  WµV P                  R7      p\        P                  ! Wº4      pVP                  ^^4      P                  4       pWË3# )N)r‘   rn   )ÚpÚtrainingç      à¿rš   )rÊ   r   Únum_key_value_groupsr2   Úmatmulrß   Útanhr_   Ú
functionalÚsoftmaxÚfloat32rl   rn   r  r  Ú
contiguous)r  r  r  r  r  r  r  r	  rÏ   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&&,    r6   Úeager_attention_forwardr    s  € ð ‚Ø—/‘/ 4Õ'ˆä˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LàÒØ#Õ-ˆÜ—z’z ,Ó/ˆØ#Õ-ˆØÒ!Ø#Õ4ˆô —=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KØÐ$Ð$r9   c                   óX   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )	ÚGemma3Attentioni3  z=Multi-headed attention from 'Attention Is All You Need' paperc                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r0   ry   Ú	layer_idx©r*   rV   )r4   r5   s   "€r6   r7   ÚGemma3Attention.__annotate__7  s    ø€ ÷ Rñ RÑ/ð R¹Cñ Rr9   c                ó~  <€ \         SV `  4        \        VR 4      '       d   VP                  V,          MRV n        Wn        W n        \        VRVP                  VP                  ,          4      V n
        VP                  VP                  ,          V n        VP                  R,          V n        V P
                  P                  V n        V P
                  P                   '       * V n        \$        P&                  ! VP                  VP                  V P                  ,          VP(                  R7      V n        \$        P&                  ! VP                  VP                  V P                  ,          VP(                  R7      V n        \$        P&                  ! VP                  VP                  V P                  ,          VP(                  R7      V n        \$        P&                  ! VP                  V P                  ,          VP                  VP(                  R7      V n        V P
                  P2                  V n        V P                  R8X  d   VP4                  MRV n        V P                  R8H  V n        \9        VP                  VP:                  R7      V n        \9        VP                  VP:                  R7      V n        R# )r»   NrÊ   r~   Úsliding_attention)r‘   r’   r  ) r\   r]   Úhasattrr»   r²   ry   r  rÌ   r€   rÍ   rÊ   rþ   r  Úquery_pre_attn_scalarr  Úattention_dropoutÚuse_bidirectional_attentionÚ	is_causalr_   r‚   Úattention_biasÚq_projÚk_projÚv_projÚo_projÚattn_logit_softcappingÚsliding_windowÚ
is_slidingr�   Úrms_norm_epsÚq_normÚk_norm©rb   ry   r  rc   s   &&&€r6   r]   ÚGemma3Attention.__init__7  sï  ø€ Ü‰ÑÔÜ;BÀ6È=×;YÒ;Y˜&×,Ñ,¨YÖ7Ð_cˆŒØŒØ"ŒÜ ¨
°F×4FÑ4FÈ&×JdÑJdÕ4dÓeˆŒØ$*×$>Ñ$>À&×B\ÑB\Õ$\ˆÔ!Ø×3Ñ3°TÕ9ˆŒØ!%§¡×!>Ñ!>ˆÔØ!Ÿ[™[×DÑDÔDˆŒä—i’iØ×Ñ × :Ñ :¸T¿]¹]Õ JÐQW×QfÑQfô
ˆŒô —i’iØ×Ñ × :Ñ :¸T¿]¹]Õ JÐQW×QfÑQfô
ˆŒô —i’iØ×Ñ × :Ñ :¸T¿]¹]Õ JÐQW×QfÑQfô
ˆŒô —i’iØ×&Ñ&¨¯©Õ6¸×8JÑ8JÐQW×QfÑQfô
ˆŒð '+§k¡k×&HÑ&HˆÔ#Ø7;·±ÐJ]Ô7]˜f×3Ò3ÐcgˆÔØŸ/™/Ð-@Ñ@ˆŒä#¨¯©¸V×=PÑ=PÔQˆŒÜ#¨¯©¸V×=PÑ=PÔQˆŽr9   c                ó(  <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  R,          S[S[ P                  ,          R,          3,          /# )r0   rJ   Úposition_embeddingsr  NrI   rÏ   rÆ   )r2   rh   r   r   r    rL   )r4   r5   s   "€r6   r7   r!  U  s‰   ø€ ÷ *)ñ *)á—|‘|ð*)ñ #Ÿ\™\ð*)ñ Ÿ™ tÕ+ð	*)ñ
  �ð*)ñ Ñ+Õ,ð*)ñ 
‰u�|‰|™UŸ\™\¨DÕ0±%¹¿¹Õ2EÈÕ2LÐLÕ	Mñ*)r9   c           	     ól  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p	V P                  V4      P                  V4      P	                  ^^4      p
V P                  V4      pV P                  V	4      p	Vw  r¼\        W‰W¼4      w  r‰Ve   VP                  WšV P                  4      w  rš\        P                  ! V P                  P                  \         4      pT! V VV	V
V3RV P"                  '       d   V P$                  MRRV P&                  RV P(                  /VB w  rïVP*                  ! . VORN5!  P-                  4       pV P/                  V4      pWï3# )Nr  ç        r  r/  rš   )r¥   rÊ   r*  Úviewrß   r+  r,  r2  r3  rø   Úupdater  r   Úget_interfacery   Ú_attn_implementationr  r  r&  r  r/  rü   r  r-  )rb   rJ   r7  r  rI   rÏ   Úinput_shapeÚhidden_shapeÚquery_statesr  r  rá   râ   Úattention_interfacer  r  s   &&&&&,          r6   rk   ÚGemma3Attention.forwardU  s³  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆà—{‘{ <Ó0ˆØ—[‘[ Ó,ˆ
à&‰ˆÜ#7¸ÐRUÓ#[Ñ ˆàÒ&Ø'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ
%
ð /3¯m¯m¨m�D×*Ò*Àð
%
ð —L‘Lð
%
ð  ×.Ñ.ð
%
ð ñ
%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆØÐ(Ð(r9   )r&  r.  ry   rÊ   r(  r0  r3  r+  r  r²   r  r-  r2  r*  r  r/  r,  )NNNrr   rt   s   @@r6   r  r  3  s#   ù‡ € áG÷Ró R÷<*)÷ *)ò *)r9   r  c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚGemma3DecoderLayeri‚  c                ó&   <€ V ^8„  d   QhRS[ RS[/# r  r   )r4   r5   s   "€r6   r7   ÚGemma3DecoderLayer.__annotate__ƒ  s    ø€ ÷ 
cñ 
cÑ/ð 
c¹Cñ 
cr9   c                óÐ  <€ \         SV `  4        Wn        VP                  V n        W n        \        WR 7      V n        \        V4      V n        \        V P                  VP                  R7      V n        \        V P                  VP                  R7      V n        \        V P                  VP                  R7      V n        \        V P                  VP                  R7      V n        R# ))ry   r  ©r’   N)r\   r]   ry   r€   r  r  Ú	self_attnrv   Úmlpr�   r1  Úinput_layernormÚpost_attention_layernormÚpre_feedforward_layernormÚpost_feedforward_layernormr4  s   &&&€r6   r]   ÚGemma3DecoderLayer.__init__ƒ  sª   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ"ŒÜ(°ÔLˆŒÜ˜VÓ$ˆŒÜ,¨T×-=Ñ-=À6×CVÑCVÔWˆÔÜ(5°d×6FÑ6FÈF×L_ÑL_Ô(`ˆÔ%Ü)6°t×7GÑ7GÈV×M`ÑM`Ô)aˆÔ&Ü*7¸×8HÑ8HÈf×NaÑNaÔ*bˆÖ'r9   c                óD  <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[S[ P                  S[ P                  3,          R,          3,          /# )	r0   rJ   r7  r  Nrã   rI   rÏ   rÆ   )r2   rh   Ú
LongTensorr   r   r    rL   r3   )r4   r5   s   "€r6   r7   rF  �  s£   ø€ ÷ ñ á—|‘|ðñ #Ÿ\™\ðñ Ÿ™ tÕ+ð	ñ
 ×&Ñ&¨Õ-ðñ  �ðñ Ñ+Õ,ðñ 
‰u× Ñ ¡%©×(9Ñ(9¹5×;LÑ;LÐ(LÕ"MÐPTÕ"TÐTÕ	Uñr9   c                ó  € TpV P                  V4      pV P                  ! RR VRVRVRVRV/VB w  rV P                  V4      pWq,           pTpV P                  V4      pV P	                  V4      pV P                  V4      pWq,           pV# )rJ   r7  r  rã   rI   r:   )rK  rI  rL  rM  rJ  rN  )	rb   rJ   r7  r  rã   rI   rÏ   ÚresidualÚ_s	   &&&&&&,  r6   rk   ÚGemma3DecoderLayer.forward�  s½   € ð !ˆà×,Ñ,¨]Ó;ˆàŸ>š>ñ 
Ø'ð
à 3ð
ð *ð
ð &ð	
ð
 ,ð
ð ñ
Ñˆð ×5Ñ5°mÓDˆØ Õ0ˆà ˆØ×6Ñ6°}ÓEˆØŸ™ Ó/ˆØ×7Ñ7¸ÓFˆØ Õ0ˆàÐr9   )	ry   r€   rK  r  rJ  rL  rN  rM  rI  )NNNNr�   rt   s   @@r6   rD  rD  ‚  s    ù‡ € ÷
có 
c÷÷ ò r9   rD  c                   óž   a a€ ] tR tRt oRtRtR.tR.tRtRt	Rt
RtRtR]R]/tRt]P$                  ! 4       V 3R l4       tV3R	 ltR
tVtV ;t# )ÚGemma3PreTrainedModeli°  ÚmodelTrD  rI   rJ   rK   c                ó(  <€ \         SV `  V4       \        V\        4      '       d#   \        P
                  ! VP                  4       R# R VP                  P                  9   d#   \        P
                  ! VP                  4       R# \        V\        4      '       d.   \        P                  ! VP                  VP                  4       R# \        V\        4      '       d´   VP                   F¡  pVP                   pVP"                  V,          R8w  d   \$        VP"                  V,          ,          pV! VP&                  VR7      w  rE\        P(                  ! \+        W R24      V4       \        P(                  ! \+        W R24      V4       K£  	  R# R# )ÚRMSNormr°   r±   r³   r´   N)r\   Ú_init_weightsrÝ   ÚGemma3MultiModalProjectorÚinitÚzeros_Úmm_input_projection_weightrc   r;   rm   rO   Ú	constant_rT   r^   r©   r»   r½   r¯   r   ry   Úcopy_rÌ   )rb   r  r²   rÁ   rÂ   rT  rc   s   &&    €r6   r[  Ú#Gemma3PreTrainedModel._init_weightsÃ  s  ø€ ä‰Ñ˜fÔ%Ü�fÔ7×8Ò8Ü�KŠK˜×9Ñ9Ö:à˜&×*Ñ*×3Ñ3Ô3Ü�KŠK˜Ÿ™Ö&Ü˜Ô =×>Ò>Ü�NŠN˜6×-Ñ-¨v×/HÑ/HÖIÜ˜Ô 5×6Ò6Ø$×0Ô0�
Ø%×EÑE�Ø×#Ñ# JÕ/°9Ô<Ü#6°v×7GÑ7GÈ
Õ7SÕ#T�LÙ#/°·±È*Ô#UÑ �Ü—
’
œ7 6¨\¸Ð+CÓDÀmÔTÜ—
’
œ7 6¨\Ð9KÐ+LÓMÈ}Ö]ó 1ñ 7r9   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rx   ©r)   )r4   r5   s   "€r6   r7   Ú"Gemma3PreTrainedModel.__annotate__°  s   ø‡ ‚ áÑò r9   r:   )ÚimageÚtext)r;   r<   r=   r>   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphÚ_supports_attention_backendrD  r  Ú_can_record_outputsÚinput_modalitiesr2   rë   r[  r@   rA   rB   rs   rt   s   @@r6   rW  rW  °  s~   ù‡ € ð  ÐØ&*Ð#Ø-Ð.ÐØ#4Ð"5ÐØÐØ€NØÐà!ÐØ"&ÐàÐ+Ø�oðÐð )Ðà
‡]‚]ƒ_ô^ó ð^÷) … r9   rW  c                ór   € V ^8„  d   QhR\         R\        \         \         \         \         .\        3,          /# )r0   r/  rÆ   )rV   r   Úbool)r4   s   "r6   r7   r7   ×  s/   € ÷ 
ñ 
´#ð 
¼(ÄCÌÌcÔSVÐCWÔY]ÐC]Õ:^ñ 
r9   c                ó   a € R V 3R llpV# )z9
Enables a bidirectional mask within the sliding window.
c          
      óT   € V ^8„  d   QhR\         R\         R\         R\         R\        /# )r0   Ú	batch_idxÚhead_idxÚq_idxÚkv_idxrÆ   )rV   rt  )r4   s   "r6   r7   Ú3_bidirectional_window_overlay.<locals>.__annotate__Ü  s/   € ÷ 4ñ 4œcð 4¬Sð 4¼ð 4Äcð 4Ìdñ 4r9   c                ó,   <€ \        W#,
          4      S8  # )z‹A token can attend to any other token if their absolute distance is within
the (exclusive) sliding window size (distance < sliding_window).)Úabs)rw  rx  ry  rz  r/  s   &&&&€r6   Ú
inner_maskÚ1_bidirectional_window_overlay.<locals>.inner_maskÜ  s   ø€ ô �5•>Ó" ^Ñ3Ð3r9   r:   )r/  r~  s   f r6   Ú_bidirectional_window_overlayr€  ×  s   ø€ ÷
4ð 4ð
 Ðr9   c                   ó‚   a a€ ] tR tRt oRtV3R lV 3R llt]]]R	V3R lR ll4       4       4       t	V3R lt
RtVtV ;t# )
ÚGemma3TextModeliä  c                ó    <€ V ^8„  d   QhRS[ /# rx   rz   )r4   r5   s   "€r6   r7   ÚGemma3TextModel.__annotate__é  s   ø€ ÷ ñ Ñ/ñ r9   c           	     ó6  <€ \         SV `  V4       VP                  V n        VP                  V n        \        VP                  VP                  V P                  V P                  P                  R ,          R7      V n        \        P                  ! \        VP                  4       Uu. uF  p\        W4      NK  	  up4      V n        \        VP                  VP                   R7      V n        \%        V4      V n        RV n        V P+                  4        R# u upi )ç      à?)rT   rH  FN)r\   r]   Úpad_token_idrS   Ú
vocab_sizerO   r€   ry   Úembed_tokensr_   Ú
ModuleListÚrangeÚnum_hidden_layersrD  Úlayersr�   r1  Únormr©   Ú
rotary_embÚgradient_checkpointingÚ	post_initr4  s   && €r6   r]   ÚGemma3TextModel.__init__é  sá   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒô :Ø×Ñ˜v×1Ñ1°4×3CÑ3CÐQU×Q\ÑQ\×QhÑQhÐjmÕQmô
ˆÔô —m’mÜDIÈ&×JbÑJbÔDcÓdÑDc°yÔ Ö2ÑDcÑdó
ˆŒô " &×"4Ñ"4¸&×:MÑ:MÔNˆŒ	Ü/°Ó7ˆŒØ&+ˆÔ#ð 	�‰Öùò es   Â'Dc                óþ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[R,          RS[S[,          R	S[/# )
r0   rf   Nr  rã   rI   Úinputs_embedsÚ	use_cacherÏ   rÆ   )	r2   rQ  rh   r   r3   rt  r   r    r   )r4   r5   s   "€r6   r7   r„  ÿ  s�   ø€ ÷ C
ñ C
á×#Ñ# dÕ*ðC
ñ Ÿ™ tÕ+ðC
ñ ×&Ñ&¨Õ-ð	C
ñ
  �ðC
ñ ×(Ñ(¨4Õ/ðC
ñ ˜$•;ðC
ñ Ñ+Õ,ðC
ñ 
!ñC
r9   c                ót  € VR J VR J,          '       d   \        R4      hVf   V P                  V4      pV'       d   Vf   \        V P                  R7      pVfb   Ve   VP	                  4       M^ p\
        P                  ! VP                  ^,          VP                  R7      V,           pVP                  ^ 4      p\        T;p	\        4      '       gƒ   RV P                  RVRVRVRV/p
V
P                  4       pV P                  P                  '       d)   R	 V
R
&   \        V P                  P                  4      VR
&   R\!        R/ V
B R\#        R/ VB /p	Tp/ p\%        V P                  P&                  4       F  pV P)                  WÃV4      WÞ&   K  	  \+        V P,                  R V P                  P.                   4       FY  w  ppV! V3RW�P                  P&                  V,          ,          RWÐP                  P&                  V,          ,          RVRV/VB pK[  	  V P1                  V4      p\3        VVR7      # )Nú:You must specify exactly one of input_ids or inputs_embeds©ry   ©rª   ry   r”  r  rI   rã   c                  óN   € \         P                  ! R \         P                  R7      # )TrË   )r2   ra   rt  )Úargss   *r6   Ú<lambda>Ú)Gemma3TextModel.forward.<locals>.<lambda>$  s   € ÄÇÂÈTÔY^×YcÑYcÕ@dr9   Úor_mask_functionÚfull_attentionr#  r7  )Úlast_hidden_staterI   r:   )Ú
ValueErrorr‰  r   ry   Úget_seq_lengthr2   rÎ   r¥   rª   rò   rÝ   ÚdictÚcopyr'  r€  r/  r   r   rº   r»   r�  Ú	enumerater�  rŒ  rŽ  r   )rb   rf   r  rã   rI   r”  r•  rÏ   Úpast_seen_tokensÚcausal_mask_mappingÚmask_kwargsÚsliding_mask_kwargsrJ   r7  r²   ÚiÚdecoder_layers   &&&&&&&,         r6   rk   ÚGemma3TextModel.forwardü  s>  € ð ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZàÒ Ø ×-Ñ-¨iÓ8ˆMç˜Ò0Ü*°$·+±+Ô>ˆOàÒØCRÒC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÕ(>À}×G[ÑG[Ô\Ð_oÕoˆLØ'×1Ñ1°!Ó4ˆLô °Ð?Ð-Ä×FÒFð ˜$Ÿ+™+Ø Ø  .Ø! ?Ø ðˆKð #.×"2Ñ"2Ó"4Ðà�{‰{×6×6Ð6Ù2d�Ð.Ñ/Ü:WÐX\×XcÑXc×XrÑXrÓ:sÐ#Ð$6Ñ7ð !Ô"4Ñ"C°{Ñ"CØ#Ô%FÑ%]ÐI\Ñ%]ð#Ðð &ˆØ ÐÜ˜dŸk™k×5Ñ5Ö6ˆJØ.2¯o©o¸mÐ[eÓ.fÐÓ+ñ 7ô !*¨$¯+©+Ð6U¸¿¹×8UÑ8UÐ*VÖ WÑˆAˆ}Ù)Øñà2·;±;×3JÑ3JÈ1Õ3MÕNðð %8¿¹×8OÑ8OÐPQÕ8RÕ$Sðð *ð	ð
 !0ðð ñŠMñ !Xð Ÿ	™	 -Ó0ˆä&Ø+Ø+ô
ð 	
r9   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rx   rz   )r4   r5   s   "€r6   r7   r„  ä  s   ø‡ ‚ áÑò r9   )r‰  r�  r�  rŽ  rS   r�  rˆ  ©rg  )NNNNNN)r;   r<   r=   r>   rr  r]   r&   r'   r!   rk   r@   rA   rB   rs   rt   s   @@r6   r‚  r‚  ä  sJ   ù‡ € ð !Ð÷ó ð&  ØØ÷C
ñ C
ó ó ó  ðC
÷7 … r9   r‚  c                   óœ   a a€ ] tR tRt oRR/tRR/tRR.R.3/tRR/tV3R	 lV 3R
 llt]	]
RV3R lR ll4       4       tV3R ltRtVtV ;t# )ÚGemma3ForCausalLMiE  úlm_head.weightzmodel.embed_tokens.weightÚlm_headÚcolwise_gather_outputrJ   rH   Úkeep_full_weightc                ó    <€ V ^8„  d   QhRS[ /# rx   rz   )r4   r5   s   "€r6   r7   ÚGemma3ForCausalLM.__annotate__M  s   ø€ ÷ ñ Ñ/ñ r9   c                óì   <€ \         SV `  V4       \        V4      V n        VP                  V n        \
        P                  ! VP                  VP                  R R7      V n        V P                  4        R# r}   )
r\   r]   r‚  rX  rˆ  r_   r‚   r€   r²  r‘  rˆ   s   &&€r6   r]   ÚGemma3ForCausalLM.__init__M  sU   ø€ Ü‰Ñ˜Ô Ü$ VÓ,ˆŒ
Ø ×+Ñ+ˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Ör9   c                óP  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[R,          R	S[S[ P                  ,          R
S[S[,          RS[	/
# )r0   rf   Nr  rã   rI   r”  Úlabelsr•  Úlogits_to_keeprÏ   rÆ   )
r2   rQ  rh   r   r3   rt  rV   r   r    r   )r4   r5   s   "€r6   r7   r¶  X  s»   ø€ ÷ ;
ñ ;
á×#Ñ# dÕ*ð;
ñ Ÿ™ tÕ+ð;
ñ ×&Ñ&¨Õ-ð	;
ñ
  �ð;
ñ ×(Ñ(¨4Õ/ð;
ñ × Ñ  4Õ'ð;
ñ ˜$•;ð;
ñ ™eŸl™lÕ*ð;
ñ Ñ+Õ,ð;
ñ 
 ñ;
r9   c	                óF  € V P                   ! R
RVRVRVRVRVRV/V	B p
V
P                  p\        V\        4      '       d   \	        V) R4      MTpV P                  VRVR3,          4      pV P                  P                  eO   WÐP                  P                  ,          p\        P                  ! V4      pWÐP                  P                  ,          pRpVe   V P                  ! WÖV P                  3/ V	B p\        VVV
P                  V
P                  V
P                  R	7      # )a"  
Example:

```python
>>> from transformers import AutoTokenizer, Gemma3ForCausalLM

>>> model = Gemma3ForCausalLM.from_pretrained("google/gemma-2-9b")
>>> tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b")

>>> prompt = "What is your favorite condiment?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"What is your favorite condiment?"
```rf   r  rã   rI   r”  r•  NrÛ   )rG   rH   rI   rJ   rK   r:   )rX  r   rÝ   rV   Úslicer²  ry   Úfinal_logit_softcappingr2   r  Úloss_functionrˆ  r   rI   rJ   rK   )rb   rf   r  rã   rI   r”  rº  r•  r»  rÏ   ÚoutputsrJ   Úslice_indicesrH   rG   s   &&&&&&&&&,     r6   rk   ÚGemma3ForCausalLM.forwardV  s0  € ð@ ,0¯:ª:ñ ,
Øð,
à)ð,
ð &ð,
ð ,ð	,
ð
 (ð,
ð  ð,
ð ñ,
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆØ�;‰;×.Ñ.Ò:ØŸk™k×AÑAÕAˆFÜ—Z’Z Ó'ˆFØŸk™k×AÑAÕAˆFàˆØÒØ×%Ò% f°d·o±oÑPÈÑPˆDä%ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r9   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rx   rz   )r4   r5   s   "€r6   r7   r¶  E  ó   ø‡ ‚ ñ Ñò r9   )r²  rX  rˆ  )NNNNNNNr   )r;   r<   r=   r>   Ú_tied_weights_keysÚ_tp_planÚ_pp_planÚ
_fsdp_planr]   r"   r!   rk   r@   rA   rB   rs   rt   s   @@r6   r°  r°  E  sm   ù‡ € à*Ð,GÐHÐØÐ2Ð3€HØ˜_Ð-°¨zÐ:Ð;€HØÐ/Ð0€J÷ó ð Ø÷;
ñ ;
ó ó ð;
÷' … r9   r°  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )r\  i–  c                ó    <€ V ^8„  d   QhRS[ /# rx   rd  )r4   r5   s   "€r6   r7   Ú&Gemma3MultiModalProjector.__annotate__—  s   ø€ ÷ \ñ \™|ñ \r9   c                ó®  <€ \         SV `  4        \        P                  ! \        P
                  ! VP                  P                  VP                  P                  4      4      V n	        \        VP                  P                  VP                  P                  R 7      V n        \        VP                  P                  VP                  P                  ,          4      V n        \        VP"                  R,          4      V n        V P                   V P$                  ,          V n        \        P(                  ! V P&                  V P&                  R7      V n        R# )rH  r†  )Úkernel_sizeÚstrideN)r\   r]   r_   r•   r2   r–   Úvision_configr€   Útext_configr_  r�   Úlayer_norm_epsÚmm_soft_emb_normrV   Ú
image_sizeÚ
patch_sizeÚpatches_per_imageÚmm_tokens_per_imageÚtokens_per_siderÍ  Ú	AvgPool2dÚavg_poolrˆ   s   &&€r6   r]   Ú"Gemma3MultiModalProjector.__init__—  sì   ø€ Ü‰ÑÔä*,¯,ª,Ü�KŠK˜×,Ñ,×8Ñ8¸&×:LÑ:L×:XÑ:XÓYó+
ˆÔ'ô !.Ø× Ñ ×,Ñ,°&×2FÑ2F×2UÑ2Uô!
ˆÔô "% V×%9Ñ%9×%DÑ%DÈ×H\ÑH\×HgÑHgÕ%gÓ!hˆÔÜ" 6×#=Ñ#=¸sÕ#BÓCˆÔØ×1Ñ1°T×5IÑ5IÕIˆÔÜŸš°×1AÑ1AÈ$×JZÑJZÔ[ˆŽr9   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r0   Úvision_outputsrg   )r4   r5   s   "€r6   r7   rË  §  s   ø€ ÷ @ñ @¡e§l¡lñ @r9   c                óž  € VP                   w  r#pVP                  ^^4      pVP                  W$V P                  V P                  4      pVP	                  4       pV P                  V4      pVP                  ^4      pVP                  ^^4      pV P                  V4      p\        P                  ! WpP                  4      pVP                  V4      # ©é   )r¥   rß   rü   rÕ  r  rÙ  ÚflattenrÒ  r2   r  r_  r¡   )	rb   rÜ  Ú
batch_sizerT  r€   Úreshaped_vision_outputsÚpooled_vision_outputsÚnormed_vision_outputsÚprojected_vision_outputss	   &&       r6   rk   Ú!Gemma3MultiModalProjector.forward§  sÇ   € Ø%3×%9Ñ%9Ñ"ˆ
�{à"0×":Ñ":¸1¸aÓ"@ÐØ"9×"AÑ"AØ T×%;Ñ%;¸T×=SÑ=Só#
Ðð #:×"DÑ"DÓ"FÐà $§¡Ð.EÓ FÐØ 5× =Ñ =¸aÓ @ÐØ 5× ?Ñ ?ÀÀ1Ó EÐà $× 5Ñ 5Ð6KÓ LÐä#(§<¢<Ð0E×GfÑGfÓ#gÐ Ø'×/Ñ/°Ó?Ð?r9   )rÙ  rÍ  r_  rÒ  rÕ  r×  r�   rt   s   @@r6   r\  r\  –  s#   ù‡ € ÷\ó \÷ @÷ @ð @r9   r\  c                ó†   € V ^8„  d   QhR\         P                  R\         P                  R,          R\         P                  /# )r0   Útoken_type_idsrª   NrÆ   )r2   rh   rª   )r4   s   "r6   r7   r7   º  s6   € ÷ ñ ´E·L±Lð Ì%Ï,É,ÐY]ÕJ]ð Ôin×iuÑiuñ r9   c                 ó$  € V ^8H  P                  VR7      p\        P                  P                  VR^ R7      RRR13,          pW#( ,          p\        P
                  ! VP                  4       ^R7      ^,
          p\        P                  ! W%R4      pV# )rß  r™  )r  rÛ   NrÚ   )rß  r   rš   )rl   r_   r  Úpadr2   ÚcumsumrV   Úwhere)rè  rª   Úis_imageÚis_previous_imageÚnew_image_startÚ	group_idsÚblock_sequence_idss   &&     r6   Úget_block_sequence_ids_for_maskrò  º  s…   € ð  !Ñ#×'Ñ'¨vÐ'Ó6€HÜŸ™×)Ñ)¨(°FÀ!Ð)ÓDÀQÈÈÈÀVÕLÐØÐ!3Õ3€OÜ—’˜_×0Ñ0Ó2¸Ô:¸QÕ>€IÜŸš X¸"Ó=ÐØÐr9   c                óæ   € V ^8„  d   QhR\         R\        P                  R\        P                  R,          R\        R,          R\        P                  R,          R\        P                  R\        /# )	r0   ry   r”  r  NrI   rã   rñ  rÆ   )r	   r2   rh   r   r£  )r4   s   "r6   r7   r7   Å  sl   € ÷ 9ñ 9Üð9ä—<‘<ð9ô —L‘L 4Õ'ð9ô ˜T•\ð	9ô
 —,‘, Õ%ð9ô Ÿ™ð9ô 
ñ9r9   c           
     ó~  € RV RVRVRVRV/p\        R/ VBRV/B p\        VRR4      '       d.   R	VP                  9   d   VP                  P                  R	4      pM^ p\	        R/ VBR
V/B w  p	  r«r¬V	'       d   TpM\        WRW¼4      p\        R/ VBR\        V4      R\        V P                  4      R
V/B pRVRV/# )z×Create full_attention and sliding_attention masks with correct composition.

For global (full attention) layers:  OR(causal, blockwise)
For local (sliding window) layers:  AND(sliding_window, OR(causal, blockwise))
ry   r”  r  rI   rã   rñ  r0  NTr  rž  Úand_mask_functionrŸ  r#  r:   )	r   rÌ   r0  Úindexr   r   r   r   r/  )ry   r”  r  rI   rã   rñ  r¨  Ú	full_maskÚsliding_layer_idxÚ
early_exitrT  Ú	kv_lengthÚ	kv_offsetÚpadded_block_sequence_idsÚsliding_masks   &&&&&&         r6   Úcreate_masks_for_vision_modelrþ  Å  s  € ð 	�&Ø˜Ø˜.Ø˜?Ø˜ð€Kô #ÑX [ÑXÐEWÒX€Iô ˆ ¨d×3Ò3¸À×@ZÑ@ZÔ8ZØ+×6Ñ6×<Ñ<¸TÓBÑàÐô 4Nñ 4Ø
ñ4à#ò4Ñ0€J��1�a A÷ Ø$6Ñ!ä$@Ø°	ó%
Ð!ô &ñ Ø
ñä*Ð+DÓEðô 1°×1FÑ1FÓGðð $ò	€Lð 	˜)Ø˜\ðð r9   zy
    The Base Gemma3 model which consists of a vision backbone and a language model without language modeling head.,
    c                   ó²   a a€ ] tR tRt oRtV3R lV 3R llt]]! RR7      V3R lR l4       4       tV3R	 lR
 lt	]]RV3R lR ll4       4       t
RtVtV ;t# )ÚGemma3Modeli  Fc                ó    <€ V ^8„  d   QhRS[ /# rx   rd  )r4   r5   s   "€r6   r7   ÚGemma3Model.__annotate__
  s   ø€ ÷ ñ ™|ñ r9   c                ó6  <€ \         SV `  V4       \        P                  ! VP                  R 7      V n        \        V4      V n        VP                  P                  V n	        \        P                  ! VP                  R 7      pW n
        V P                  4        R# )r˜  N)r\   r]   r(   Úfrom_configrÏ  Úvision_towerr\  Úmulti_modal_projectorrÐ  rˆ  Úlanguage_modelr‘  )rb   ry   r  rc   s   && €r6   r]   ÚGemma3Model.__init__
  so   ø€ Ü‰Ñ˜Ô Ü%×1Ò1¸×9MÑ9MÔNˆÔÜ%>¸vÓ%FˆÔ"Ø ×,Ñ,×7Ñ7ˆŒä"×.Ò.°f×6HÑ6HÔIˆØ,ÔØ�‰Ör9   zOProjects the last hidden state from the vision model into language model space.r+   c                ó`   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          /# )r0   Úpixel_valuesrÏ   rÆ   )r2   r3   r   r    rL   r   )r4   r5   s   "€r6   r7   r    s7   ø€ ÷ ñ Ù!×-Ñ-ðÙ9?Ñ@RÕ9Sðá	Ñ+Õ	+ñr9   c                óv   € V P                   ! RR VRR/VB pVP                  pV P                  V4      Vn        V# )r
  Úreturn_dictTr:   )r  r   r  Úpooler_output)rb   r
  rÏ   rÜ  r   s   &&,  r6   Úget_image_featuresÚGemma3Model.get_image_features  sI   € ð
 ×*Ò*Ña¸ÐaÐRVÐaÐZ`ÑaˆØ*×<Ñ<ÐØ'+×'AÑ'AÐBSÓ'TˆÔ$àÐr9   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r0   rf   r”  Úimage_features)r2   rQ  r3   )r4   r5   s   "€r6   r7   r    s7   ø€ ÷ "ñ "Ù×)Ñ)ð"Ù:?×:KÑ:Kð"Ù]b×]nÑ]nñ"r9   c           
     óX  € Vfo   W P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  pVP                  R4      pMWP                  P                  8H  pVP                  4       pVP                  ^ ,          VP                  ^,          ,          pVP                  R4      P                  VP                  4      p\        WRP                  R,          ,          VP                  4       8H  RV RV 24       V# )z×
Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
equal to the length of multimodal features. If the lengths are different, an error is raised.
rÕ   z6Image features and image tokens do not match, tokens: z, features: r:   rš   )Úget_input_embeddingsr2   Úfullry   Úimage_token_idÚlongrª   ÚallÚsumr¥   rò   rl   r#   Únumel)rb   rf   r”  r  Úspecial_image_maskÚn_image_tokensÚn_image_featuress   &&&&   r6   Úget_placeholder_maskÚ Gemma3Model.get_placeholder_mask  s  € ð ÒØ!.×2KÑ2KÔ2MÜ—
’
˜2˜tŸ{™{×9Ñ9ÄÇÁÐTa×ThÑThÔió3ñ "Ðð "4×!7Ñ!7¸Ó!;Ñà!*¯k©k×.HÑ.HÑ!HÐà+×/Ñ/Ó1ˆØ)×/Ñ/°Õ2°^×5IÑ5IÈ!Õ5LÕLÐØ/×9Ñ9¸"Ó=×@Ñ@À×AUÑAUÓVÐÜØ×0Ñ0°Õ4Õ4¸×8LÑ8LÓ8NÑNØDÀ^ÐDTÐT`ÐaqÐ`rÐsô	
ð "Ð!r9   c                ó†  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[R,          RS[S[,          RS[S[	,          /# )r0   rf   Nr
  r  rã   rI   rè  r”  rº  r•  Ú	lm_kwargsrÆ   )
r2   rQ  r3   rh   r   rt  r   r    rL   r.   )r4   r5   s   "€r6   r7   r  9  så   ø€ ÷ d
ñ d
á×#Ñ# dÕ*ðd
ñ ×'Ñ'¨$Õ.ðd
ñ Ÿ™ tÕ+ð	d
ñ
 ×&Ñ&¨Õ-ðd
ñ  �ðd
ñ ×(Ñ(¨4Õ/ðd
ñ ×(Ñ(¨4Õ/ðd
ñ × Ñ  4Õ'ðd
ñ ˜$•;ðd
ñ Ñ.Õ/ðd
ñ 
Ñ*Õ	*ñd
r9   c
                ó˜  € VRJ VRJ,          '       d   \        R4      hVeS   V P                  P                  V P                  8¼  d.   WP                  P                  8H  pVP	                  4       p^ WË&   MTpVf   V P                  4       ! V4      pVeh   V P                  VRR7      P                  pVP                  VP                  VP                  4      pV P                  WVR7      pVP                  W½4      p\        T;p\        4      '       gX   RV P                  P                  4       RVRVR	VR
V/pVe%   \!        WgP                  R7      p\#        RRV/VB pM\%        R/ VB pV P&                  ! RRVR
VR	VRVRV	RR/V
B p\)        VP*                  VP,                  VP.                  VP0                  Ve   XR7      # RR7      # )aþ  
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
    config.text_config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
    (masked), the loss is only computed for the tokens with labels in `[0, ..., config.text_config.vocab_size]`.

Example:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Gemma3ForConditionalGeneration

>>> model = Gemma3ForConditionalGeneration.from_pretrained("google/gemma32-3b-mix-224")
>>> processor = AutoProcessor.from_pretrained("google/gemma32-3b-mix-224")

>>> prompt = "Where is the cat standing?"
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, text=prompt,  return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(**inputs,)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Where is the cat standing?\nsnow"
```Nr—  T)r  )r”  r  ry   r”  r  rI   rã   r™  rñ  r•  r  )r   rI   rJ   rK   r1   r:   )r¡  ry   r  rˆ  r¿   r  r  r  rl   rª   rn   r  Úmasked_scatterrÝ   r£  Úget_text_configrò  rþ  r   r  r.   r   rI   rJ   rK   )rb   rf   r
  r  rã   rI   rè  r”  rº  r•  r   r  Úllm_input_idsr  r§  r¨  rñ  rÀ  s   &&&&&&&&&&,       r6   rk   ÚGemma3Model.forward7  s  € ðX ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZð Ò  T§[¡[×%?Ñ%?À4Ç?Á?Ô%RØ!*¯k©k×.HÑ.HÑ!HÐØ%ŸO™OÓ-ˆMØ01ˆMÒ-à%ˆMàÒ Ø ×5Ñ5Ô7¸ÓFˆMð Ò#Ø!×4Ñ4°\ÈtÐ4ÓT×bÑbˆNØ+×.Ñ.¨}×/CÑ/CÀ]×EXÑEXÓYˆNØ!%×!:Ñ!:ØÀ~ð ";ó "Ðð *×8Ñ8Ð9KÓ\ˆMô °Ð?Ð-Ä×FÒFà˜$Ÿ+™+×5Ñ5Ó7Ø Ø  .Ø! ?Ø ðˆKð Ò)Ü%DÀ^×\pÑ\pÔ%qÐ"Ü&Cñ 'Ø'9ð'à!ñ'Ñ#ô
 '@Ñ&NÀ+Ñ&NÐ#à×%Ò%ñ 
Ø.ð
à%ð
ð ,ð
ð (ð	
ð
  ð
ð ð
ð ñ
ˆô )Ø%×7Ñ7Ø#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø2>Ò2J ô
ð 	
ð
 QUô
ð 	
r9   )r  r  r  rˆ  )	NNNNNNNNN)r;   r<   r=   r>   Úaccepts_loss_kwargsr]   r"   r!   r  r  rk   rA   rB   rs   rt   s   @@r6   r   r     sn   ù‡ € ð  Ð÷ó ð ÙÐ!rÔs÷ó tó ð÷"ð "ð0 Ø÷d
ñ d
ó ó ÷d
ð d
r9   r   c                   ó¼   a a€ ] tR tRt oRR/tV3R lV 3R llt]V3R lR l4       t]]RV3R lR	 ll4       4       t	RV 3R
 llt
]RV3R lR ll4       tRtVtV ;t# )ÚGemma3ForConditionalGenerationi   r±  z(model.language_model.embed_tokens.weightc                ó    <€ V ^8„  d   QhRS[ /# rx   rd  )r4   r5   s   "€r6   r7   Ú+Gemma3ForConditionalGeneration.__annotate__¨  s   ø€ ÷ ñ ™|ñ r9   c                óò   <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  P                  VP                  P                  R R7      V n	        V P                  4        R# r}   )r\   r]   r   rX  r_   r‚   rÐ  r€   rˆ  r²  r‘  rˆ   s   &&€r6   r]   Ú'Gemma3ForConditionalGeneration.__init__¨  sS   ø€ Ü‰Ñ˜Ô Ü  Ó(ˆŒ
Ü—y’y ×!3Ñ!3×!?Ñ!?À×ASÑAS×A^ÑA^ÐejÔkˆŒØ�‰Ör9   c                óJ   <€ V ^8„  d   QhRS[ P                  RS[S[,          /# )r0   r
  rÏ   )r2   r3   r   r    )r4   r5   s   "€r6   r7   r*  ¯  s+   ø€ ÷ Eñ E©u×/@Ñ/@ð EÉFÑSeÕLfñ Er9   c                ó<   € V P                   P                  ! V3/ VB # rj   )rX  r  )rb   r
  rÏ   s   &&,r6   r  Ú1Gemma3ForConditionalGeneration.get_image_features®  s   € à�z‰z×,Ò,¨\ÑD¸VÑDÐDr9   c                ó°  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[R,          RS[S[ P                  ,          RS[S[,          RS[	S[
,          /# )r0   rf   Nr
  r  rã   rI   rè  r”  rº  r•  r»  r   rÆ   )r2   rQ  r3   rh   r   rt  rV   r   r    rL   rE   )r4   r5   s   "€r6   r7   r*  ´  sù   ø€ ÷ [
ñ [
á×#Ñ# dÕ*ð[
ñ ×'Ñ'¨$Õ.ð[
ñ Ÿ™ tÕ+ð	[
ñ
 ×&Ñ&¨Õ-ð[
ñ  �ð[
ñ ×(Ñ(¨4Õ/ð[
ñ ×(Ñ(¨4Õ/ð[
ñ × Ñ  4Õ'ð[
ñ ˜$•;ð[
ñ ™eŸl™lÕ*ð[
ñ Ñ.Õ/ð[
ñ 
Ñ-Õ	-ñ[
r9   c                óÊ  € V P                   ! RRVRVRVRVRVRVRVRV	R	VR
R/
VB pV^ ,          p\        V
\        4      '       d   \        V
) R4      MT
pV P	                  VRVR3,          4      pRpVe7   V P
                  ! RRVR	VRV P                  P                  P                  /VB p\        VVVP                  VP                  VP                  VP                  R7      # )aÉ  
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
    config.text_config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
    (masked), the loss is only computed for the tokens with labels in `[0, ..., config.text_config.vocab_size]`.

Example:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Gemma3ForConditionalGeneration

>>> model = Gemma3ForConditionalGeneration.from_pretrained("google/gemma-3-4b-it")
>>> processor = AutoProcessor.from_pretrained("google/gemma-3-4b-it")

>>> messages = [
...     {
...         "role": "system",
...         "content": [
...             {"type": "text", "text": "You are a helpful assistant."}
...         ]
...     },
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"user\nYou are a helpful assistant.\n\n\n\n\n\nWhere is the cat standing?\nmodel\nBased on the image, the cat is standing in a snowy area, likely outdoors. It appears to"
```
rf   r
  rè  r  rã   rI   r”  r•  rº  r  TNrÛ   rH   rˆ  )rG   rH   rI   rJ   rK   r1   r:   )rX  rÝ   rV   r½  r²  r¿  ry   rÐ  rˆ  rE   rI   rJ   rK   r1   )rb   rf   r
  r  rã   rI   rè  r”  rº  r•  r»  r   rÀ  rJ   rÁ  rH   rG   s   &&&&&&&&&&&,     r6   rk   Ú&Gemma3ForConditionalGeneration.forward²  sD  € ðz —*’*ñ 
Øð
à%ð
ð *ð
ð *ð	
ð
 &ð
ð ,ð
ð (ð
ð  ð
ð ð
ð ð
ð ñ
ˆð   �
ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆàˆØÒØ×%Ò%ñ ØðØ&,ðØ9=¿¹×9PÑ9P×9[Ñ9[ðØ_hñˆDô ,ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø '× ;Ñ ;ô
ð 	
r9   c                ó\   <€ \         SV `  ! V3R VRV/VB pV'       g   V'       d   RVR&   V# )r•  Úis_first_iterationNrè  )r\   Úprepare_inputs_for_generation)rb   rf   r•  r4  rÏ   Úmodel_inputsrc   s   &&&&, €r6   r5  Ú<Gemma3ForConditionalGeneration.prepare_inputs_for_generation  sE   ø€ Ü‘wÒ<Øñ
Ø!*ð
Ø?Qð
ØU[ñ
ˆ÷ #¯)à-1ˆLÐ)Ñ*àÐr9   c                óà   <€ V ^8„  d   QhRS[ RS[P                  RS[P                  R,          RS[R,          RS[P                  R,          RS[P                  R,          RS[R,          R	S[/# )
r0   ry   r”  r  NrI   rã   rè  r4  rÆ   )r	   r2   rh   r   rt  r£  )r4   r5   s   "€r6   r7   r*    s€   ø€ ÷ 8ñ 8Ù ð8á—|‘|ð8ñ Ÿ™ tÕ+ð8ñ  �ð	8ñ
 —l‘l TÕ)ð8ñ Ÿ™ tÕ+ð8ñ ! 4�Kð8ñ 
ñ8r9   c           
     óš   € R V P                  4       RVRVRVRV/pVe$   \        WQP                  R7      p	\        RRV	/VB # \	        R/ VB # )ry   r”  r  rI   rã   r™  rñ  r:   )r#  rò  rª   rþ  r   )
ry   r”  r  rI   rã   rè  r4  rÏ   r¨  rñ  s
   &&&&&&&,  r6   r   Ú8Gemma3ForConditionalGeneration.create_masks_for_generate  ss   € ð �f×,Ñ,Ó.Ø˜]Ø˜nØ˜Ø˜Lð
ˆð Ò%Ü!@À×XlÑXlÔ!mÐÜ0ñ Ø#5ðàñð ô
 )Ñ7¨;Ñ7Ð7r9   )r²  rX  )
NNNNNNNNNr   )TF)NF)r;   r<   r=   r>   rÅ  r]   r!   r  r"   rk   r5  rê   r   rA   rB   rs   rt   s   @@r6   r(  r(     s{   ù‡ € ð +Ð,VÐWÐ÷ó ð ÷Eó ðEð Ø÷[
ñ [
ó ó ð[
÷zð ÷8ñ 8ó ÷8ð 8r9   r(  zÎ
Gemma3TextForSequenceClassification is a text-only sequence classification model that works with Gemma3TextConfig.
It uses the generic sequence classification implementation for efficiency and consistency.c                   ó0   a € ] tR tRt o RtV 3R ltRtV tR# )Ú#Gemma3TextForSequenceClassificationi8  c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rx   rz   )r4   r5   s   "€r6   r7   Ú0Gemma3TextForSequenceClassification.__annotate__8  rÄ  r9   r:   Nr®  )r;   r<   r=   r>   rr  r@   rA   rB   rC   s   @r6   r<  r<  8  s   ø‡ € ð !Ð÷ ƒ r9   r<  c                   óB   a a€ ] tR tRt oRV3R lV 3R llltRtVtV ;t# )ÚGemma3ForSequenceClassificationiB  c                ób  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[S[,          RS[/
# )r0   rf   Nr
  r  rã   rI   rè  r”  rº  rÏ   rÆ   )r2   rQ  r3   rh   r   r   r    r   )r4   r5   s   "€r6   r7   Ú,Gemma3ForSequenceClassification.__annotate__C  sÄ   ø€ ÷ 
ñ 
á×#Ñ# dÕ*ð
ñ ×'Ñ'¨$Õ.ð
ñ Ÿ™ tÕ+ð	
ñ
 ×&Ñ&¨Õ-ð
ñ  �ð
ñ ×(Ñ(¨4Õ/ð
ñ ×(Ñ(¨4Õ/ð
ñ × Ñ  4Õ'ð
ñ Ñ+Õ,ð
ñ 
*ñ
r9   c	                óD   <€ \         S
V `  ! RR VRVRVRVRVRVRVRV/V	B # )	rf   r  rã   rI   r”  r
  rè  rº  r:   )r\   rk   )rb   rf   r
  r  rã   rI   rè  r”  rº  rÏ   rc   s   &&&&&&&&&,€r6   rk   Ú'Gemma3ForSequenceClassification.forwardC  sl   ø€ ô ‰wŠñ 

Øð

à)ð

ð &ð

ð ,ð	

ð
 (ð

ð &ð

ð *ð

ð ð

ð ñ

ð 
	
r9   r:   )NNNNNNNN)r;   r<   r=   r>   rk   rA   rB   rs   rt   s   @@r6   r@  r@  B  s   ù‡ € ÷
÷ 
õ 
r9   r@  rÞ  )r9  NNrj   )rW  r‚  r°  r(  r   r@  r<  )ZÚcollections.abcr   Údataclassesr   r2   Útorch.nnr_   Ú r   r]  Úactivationsr   Úcache_utilsr   r   Úconfiguration_utilsr	   Ú
generationr
   Úintegrationsr   r   Úmasking_utilsr   r   r   r   r   r   r   Úmodeling_layersr   r   Úmodeling_outputsr   r   r   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r    r!   r"   r#   Úutils.deprecationr$   Úutils.genericr%   r&   Úutils.output_capturingr'   Úautor(   Úconfiguration_gemma3r)   r*   r.   rE   Ú	EmbeddingrO   r
  rv   r�   r©   rï   rø   r   r  r  rD  rW  r€  r‚  r°  r\  rò  rþ  r   r(  r<  r@  Ú__all__r:   r9   r6   Ú<module>r\     s†  ðõ* %Ý !ã Ý å &Ý !ß .Ý 3Ý )ß L÷÷ ñ ÷ \÷ó ÷ Lß FÝ &ß nÕ nÝ 0ß GÝ 5Ý ß @ñ ðôð
 ô9Ð 7ó 9ó óð9ñ ðôð
 ô9 ;ó 9ó óð9ô0S B§L¡Lô Sô�—	‘	ô ô =�B—I‘Iô =ô(E<˜BŸI™Iô E<òP(ñ Ð-Ó.óó /ðõ2	U÷%ñD Ð)Ó*ôK)�b—i‘ió K)ó +ðK)ô\+Ð3ô +ð\ ô#^˜Oó #^ó ð#^õL
ð ô]
Ð+ó ]
ó ð]
ð@ ôM
Ð-¨ó M
ó ðM
ô`!@ §	¡	ô !@÷Hõ9ñx ðôô
W
Ð'ó W
óð
W
ñt ðôô
P8Ð%:¸Oó P8óð
P8ñf ð^ôô
!Ð*JÐLaó !óð
!ô

Ð&FÐH]ô 
ò4‚r9   