ó
    ˆŽ¡jZT  ã                   óX  • S SK Jr  S SKrS SKJr  SSKJr  SSKJrJr  SSK	J
r
  SSKJrJr  SS	KJrJr  SS
KJr  SSKJrJrJr  SSKJrJr  SSKJrJr  SSKJrJr  SSK J!r!  SSK"J#r#J$r$J%r%  SSK&J'r'  SSK(J)r)J*r*  SSK+J,r,  SSK-J.r.   " S S\R^                  5      r0S r1\" S5      S9S j5       r2S\Rf                  S\4S\Rf                  4S jr5 S:S\R^                  S \Rf                  S!\Rf                  S"\Rf                  S#\Rf                  S-  S$\6S%\6S&\!\#   4S' jjr7\" \25       " S( S)\R^                  5      5       r8 " S* S+\5      r9\$ " S, S-\5      5       r: " S. S/\R^                  5      r;\$ " S0 S1\:5      5       r<\$ " S2 S3\:\
5      5       r= " S4 S5\\:5      r> " S6 S7\\:5      r?/ S8Qr@g);é    )ÚCallableN)Únné   )ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_kernel_forward_from_hubÚuse_kernelized_func)Úcreate_causal_maskÚ!create_sliding_window_causal_mask)ÚFlashAttentionKwargs)Ú GenericForSequenceClassificationÚGenericForTokenClassificationÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Údeprecate_kwarg)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputsé   )ÚStarcoder2Configc                   óv   ^ • \ rS rSrS\4U 4S jjrS\\R                     S-  S\R                  4S jr	Sr
U =r$ )	ÚStarcoder2MLPé5   Úconfigc                 óD  >• [         TU ]  5         UR                  n[        R                  " X!R
                  UR                  S9U l        [        R                  " UR
                  X!R                  S9U l        [        UR                     U l        UR                  U l        g )N©Úbias)ÚsuperÚ__init__Úhidden_sizer   ÚLinearÚintermediate_sizeÚuse_biasÚc_fcÚc_projr   Ú
hidden_actÚactÚresidual_dropout)Úselfr%   Ú	embed_dimÚ	__class__s      €ÚÀC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/models/starcoder2/modeling_starcoder2.pyr*   ÚStarcoder2MLP.__init__6   sq   ø€ Ü‰ÑÔØ×&Ñ&ˆ	Ü—I’I˜i×)AÑ)AÈÏÉÑXˆŒ	Ü—i’i × 8Ñ 8¸)Ï/É/ÑZˆŒÜ˜&×+Ñ+Ñ,ˆŒØ &× 7Ñ 7ˆÕó    Úhidden_statesNÚreturnc                 óÐ   • U R                  U5      nU R                  U5      nU R                  U5      n[        R                  R                  XR                  U R                  S9nU$ )N©ÚpÚtraining)r/   r2   r0   r   Ú
functionalÚdropoutr3   r?   )r4   r:   s     r7   ÚforwardÚStarcoder2MLP.forward>   sX   € ØŸ	™	 -Ó0ˆØŸ™ Ó/ˆØŸ™ MÓ2ˆÜŸ™×-Ñ-¨m×?TÑ?TÐ_c×_lÑ_lÐ-ÐmˆØÐr9   )r2   r/   r0   r3   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r!   r*   ÚtupleÚtorchÚFloatTensorrB   Ú__static_attributes__Ú__classcell__©r6   s   @r7   r#   r#   5   s>   ø† ð8Ð/÷ 8ð U¨5×+<Ñ+<Ñ%=ÀÑ%Dð È×IZÑIZ÷ ò r9   r#   c                 ó–   • U SSU R                   S   S-  24   nU SU R                   S   S-  S24   n[        R                  " U* U4SS9$ )z*Rotates half the hidden dims of the input..Néÿÿÿÿé   ©Údim)ÚshaperI   Úcat)ÚxÚx1Úx2s      r7   Úrotate_halfrX   F   sZ   € à	
ˆ3Ð"�!—'‘'˜"‘+ Ñ"Ð"Ð"Ñ	#€BØ	
ˆ3�—‘˜‘˜qÑ Ñ"Ð"Ñ	#€BÜ�9Š9�r�c˜2�Y BÑ'Ð'r9   Úrotary_pos_embc                 ó˜   • UR                  U5      nUR                  U5      nX-  [        U 5      U-  -   nX-  [        U5      U-  -   nXV4$ )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.
)Ú	unsqueezerX   )ÚqÚkÚcosÚsinÚunsqueeze_dimÚq_embedÚk_embeds          r7   Úapply_rotary_pos_embrc   M   sS   € ð& �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ‰wœ; q›>¨CÑ/Ñ0€GØ‰wœ; q›>¨CÑ/Ñ0€GØÐÐr9   r:   Ún_repr;   c                 ó    • U R                   u  p#pEUS:X  a  U $ U SS2SS2SSS2SS24   R                  X#XU5      n U R                  X#U-  XE5      $ )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    N)rS   ÚexpandÚreshape)r:   rd   ÚbatchÚnum_key_value_headsÚslenÚhead_dims         r7   Ú	repeat_kvrl   g   s_   € ð
 2?×1DÑ1DÑ.€E Ø�ƒzØÐØ!¢!¢Q¨ªa²Ð"2Ñ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÑ(CÀTÓTÐTr9   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingrA   Úkwargsc                 ó  • [        X R                  5      n[        X0R                  5      n	[        R                  " XR	                  SS5      5      U-  n
Ub  X¤-   n
[
        R                  R                  U
S[        R                  S9R                  UR                  5      n
[
        R                  R                  X¦U R                  S9n
[        R                  " X©5      nUR	                  SS5      R                  5       nXº4$ )NrP   r   rO   )rR   Údtyper=   r    )rl   Únum_key_value_groupsrI   ÚmatmulÚ	transposer   r@   ÚsoftmaxÚfloat32Útoru   rA   r?   Ú
contiguous)rm   rn   ro   rp   rq   rr   rA   rs   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs               r7   Úeager_attention_forwardr�   s   sÒ   € ô ˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÑL€LØÑ!Ø#Ñ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÐS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ð[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r9   c                   ó0  ^ • \ rS rSrSrSS\S\S-  4U 4S jjjr SS\R                  S\
\R                  \R                  4   S	\R                  S-  S
\S-  S\\   S\
\R                  \R                  S-  \
\R                     S-  4   4S jjrSrU =r$ )ÚStarcoder2AttentionéŒ   z=Multi-headed attention from 'Attention Is All You Need' paperNr%   Ú	layer_idxc                 ó„  >• [         TU ]  5         Xl        X l        [	        USS 5      =(       d    UR
                  UR                  -  U l        UR                  UR                  -  U l	        U R                  S-  U l
        UR                  U l        SU l        [        R                  " UR
                  UR                  U R                  -  UR                  S9U l        [        R                  " UR
                  UR                  U R                  -  UR                  S9U l        [        R                  " UR
                  UR                  U R                  -  UR                  S9U l        [        R                  " UR                  U R                  -  UR
                  UR                  S9U l        UR(                  U l        g )Nrk   g      à¿Tr'   )r)   r*   r%   r…   Úgetattrr+   Únum_attention_headsrk   ri   rv   rr   Úattention_dropoutÚ	is_causalr   r,   r.   Úq_projÚk_projÚv_projÚo_projr3   ©r4   r%   r…   r6   s      €r7   r*   ÚStarcoder2Attention.__init__�   sT  ø€ Ü‰ÑÔØŒØ"ŒÜ ¨
°DÓ9×m¸V×=OÑ=OÐSY×SmÑSmÑ=mˆŒØ$*×$>Ñ$>À&×B\ÑB\Ñ$\ˆÔ!Ø—}‘} dÑ*ˆŒØ!'×!9Ñ!9ˆÔØˆŒÜ—i’i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^Ðek×etÑetÑuˆŒÜ—i’i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^Ðek×etÑetÑuˆŒÜ—i’i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^Ðek×etÑetÑuˆŒÜ—i’i × :Ñ :¸T¿]¹]Ñ JÈF×L^ÑL^Ðek×etÑetÑuˆŒØ &× 7Ñ 7ˆÕr9   r:   Úposition_embeddingsrq   Úpast_key_valuesrs   r;   c           
      ó˜  • UR                   S S n/ UQSPU R                  P7nU R                  U5      R                  U5      R	                  SS5      nU R                  U5      R                  U5      R	                  SS5      n	U R                  U5      R                  U5      R	                  SS5      n
Uu  p¼[        X‰X¼5      u  p‰Ub  UR                  XšU R                  5      u  pš[        R                  " U R                  R                  [        5      nU" U UU	U
U4U R                  (       d  SOU R                   U R"                  [%        U R                  SS 5      S.UD6u  pïUR&                  " / UQSP76 R)                  5       nU R+                  U5      n[,        R.                  R1                  XàR2                  U R                  S9nXï4$ )NrO   r    rP   ç        Úsliding_window)rA   rr   r•   r=   )rS   rk   r‹   Úviewrx   rŒ   r�   rc   Úupdater…   r   Úget_interfacer%   Ú_attn_implementationr�   r?   r‰   rr   r‡   rg   r|   rŽ   r   r@   rA   r3   )r4   r:   r‘   rq   r’   rs   Úinput_shapeÚhidden_shapeÚquery_statesr}   r~   r^   r_   Úattention_interfacer€   r   s                   r7   rB   ÚStarcoder2Attention.forwardŸ   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ˆà&‰ˆÜ#7¸ÐRUÓ#[Ñ ˆàÑ&Ø'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð
%
ð  $Ÿ}Ÿ}‘C°$×2HÑ2HØ—L‘LÜ" 4§;¡;Ð0@À$ÓGñ
%
ð ñ
%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—k‘k +Ó.ˆÜ—m‘m×+Ñ+Ø×0Ñ0¸4¿=¹=ð ,ð 
ˆð Ð(Ð(r9   )r‰   r%   rk   rŠ   rŒ   r…   rv   rŽ   r‹   r3   rr   r�   ©N)rD   rE   rF   rG   Ú__doc__r!   Úintr*   rI   ÚTensorrH   r   r   r   rB   rK   rL   rM   s   @r7   rƒ   rƒ   Œ   s¼   ø† áGñ8Ð/ð 8¸CÀ$¹J÷ 8ð 8ð( )-ñ+)à—|‘|ð+)ð # 5§<¡<°·±Ð#=Ñ>ð+)ð Ÿ™ tÑ+ð	+)ð
  ™ð+)ð Ð-Ñ.ð+)ð 
ˆu�|‰|˜UŸ\™\¨DÑ0°%¸¿¹Ñ2EÈÑ2LÐLÑ	M÷+)ó +)r9   rƒ   c                   ó  ^ • \ rS rSrS\S\4U 4S jjr     SS\R                  S\R                  S-  S\R                  S-  S	\
S-  S
\S-  S\\R                  \R                  4   S-  S\\   S\R                  4S jjrSrU =r$ )ÚStarcoder2DecoderLayeréÍ   r%   r…   c                 ó8  >• [         TU ]  5         UR                  U l        [        XS9U l        [        U5      U l        [        R                  " UR                  UR                  S9U l
        [        R                  " UR                  UR                  S9U l        g )N)r%   r…   ©Úeps)r)   r*   r+   rƒ   Ú	self_attnr#   Úmlpr   Ú	LayerNormÚnorm_epsilonÚinput_layernormÚpost_attention_layernormr�   s      €r7   r*   ÚStarcoder2DecoderLayer.__init__Î   sr   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔÜ,°FÑPˆŒÜ  Ó(ˆŒÜ!Ÿ|š|¨F×,>Ñ,>ÀF×DWÑDWÑXˆÔÜ(*¯ª°V×5GÑ5GÈV×M`ÑM`Ñ(aˆÕ%r9   Nr:   rq   Úposition_idsr’   Ú	use_cacher‘   rs   r;   c           
      óº   • UnU R                  U5      nU R                  " SUUUUUUS.UD6u  pX�-   nUnU R                  U5      nU R                  U5      nX�-   nU$ )N)r:   rq   r°   r’   r±   r‘   © )r­   r©   r®   rª   )
r4   r:   rq   r°   r’   r±   r‘   rs   ÚresidualÚ_s
             r7   rB   ÚStarcoder2DecoderLayer.forwardÖ   sˆ   € ð !ˆØ×,Ñ,¨]Ó;ˆàŸ>š>ð 
Ø'Ø)Ø%Ø+ØØ 3ñ
ð ñ
Ñˆð !Ñ0ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØ Ñ0ˆØÐr9   )r+   r­   rª   r®   r©   )NNNFN)rD   rE   rF   rG   r!   r¡   r*   rI   r¢   Ú
LongTensorr   ÚboolrH   r   r   rB   rK   rL   rM   s   @r7   r¤   r¤   Í   sÄ   ø† ðbÐ/ð b¸C÷ bð /3Ø04Ø(,Ø!&ØHLñà—|‘|ðð Ÿ™ tÑ+ðð ×&Ñ&¨Ñ-ð	ð
  ™ðð ˜$‘;ðð # 5§<¡<°·±Ð#=Ñ>ÀÑEðð Ð+Ñ,ðð 
�‰÷ó r9   r¤   c                   óR   • \ rS rSr% \\S'   SrSrS/rS/r	Sr
SrSrSrSr\\S.rSrg	)
ÚStarcoder2PreTrainedModeléö   r%   ÚmodelTr¤   r’   )r:   Ú
attentionsr³   N)rD   rE   rF   rG   r!   Ú__annotations__Ú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_backendr¤   rƒ   Ú_can_record_outputsrK   r³   r9   r7   rº   rº   ö   sQ   ‡ àÓØÐØ&*Ð#Ø1Ð2ÐØ#4Ð"5ÐØÐØ€NØÐà!ÐØ"&Ðà/Ø)ñÓr9   rº   c            	       óÒ   ^ • \ rS rSr\" SSS9SS\4U 4S jjj5       r\\" SSS9SS\S\\	R                  \4   4S jj5       5       r\	R                  " 5       \S	 5       5       rS
rU =r$ )ÚStarcoder2RotaryEmbeddingi	  Údevicez5.18)Úversionr%   c                 óÄ  >• [         TU ]  5         UR                  U l        UR                  U l        Xl        U R
                  R                  S   U l        U R                  nU R                  S:w  a  [        U R                     nU" U R
                  U5      u  o@l
        [        R                  " USS9U l        [        R                  " UR                  5       SS9U l        g )NÚ	rope_typeÚdefaultF)Ú
persistent)r)   r*   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenr%   Úrope_parametersrÎ   Úcompute_default_rope_parametersr   Úattention_scalingr   ÚBufferÚinv_freqÚcloneÚoriginal_inv_freq)r4   r%   rË   Úrope_init_fnrØ   r6   s        €r7   r*   Ú"Starcoder2RotaryEmbedding.__init__
  s¬   ø€ ä‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒàŸ™×4Ñ4°[ÑAˆŒØ!%×!EÑ!EˆØ�>‰>˜YÓ&Ü.¨t¯~©~Ñ>ˆLÙ+7¸¿¹ÀVÓ+LÑ(ˆÔ(äŸ	š	 (°uÑ=ˆŒÜ!#§¢¨8¯>©>Ó+;ÈÑ!NˆÕr9   r;   c           	      ó   • U R                   S   n[        U SS5      =(       d    U R                  U R                  -  nSnSU[        R
                  " SUS[        R                  S9U-  -  -  nUR                  U5      U4$ )a~  
Computes the inverse frequencies according to the original RoPE implementation
Args:
    config ([`~transformers.PreTrainedConfig`]):
        The model configuration.
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_thetark   Ng      ð?r   rP   ©ru   )rÔ   r‡   r+   rˆ   rI   ÚarangeÚfloatr{   )r%   rË   rs   ÚbaserR   Úattention_factorrØ   s          r7   rÕ   Ú9Starcoder2RotaryEmbedding.compute_default_rope_parameters  s{   € ð ×%Ñ% lÑ3ˆÜ�f˜j¨$Ó/×c°6×3EÑ3EÈ×IcÑIcÑ3cˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÑ#MÐPSÑ#SÑTÑUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4r9   c                 ó  • U R                   S S S 2S 4   R                  UR                  S   SS5      R                  [        R
                  UR                  S9nUS S 2S S S 24   R                  5       n[        UR                  R                  [        5      (       a0  UR                  R                  S:w  a  UR                  R                  OSn[        USS9   X4-  R                  SS	5      n[        R                  " Xf4SS
9nUR                  5       U R                  -  nUR                  5       U R                  -  n	S S S 5        WR                  UR                   S9W	R                  UR                   S94$ ! , (       d  f       N@= f)Nr   rO   r    )ru   rË   ÚmpsÚcpuF)Údevice_typeÚenabledrP   rQ   rß   )rØ   rf   rS   r{   rI   rá   rË   Ú
isinstanceÚtypeÚstrr   rx   rT   r^   rÖ   r_   ru   )
r4   rU   r°   Úinv_freq_expandedÚposition_ids_expandedrè   ÚfreqsÚembr^   r_   s
             r7   rB   Ú!Starcoder2RotaryEmbedding.forward/  s;  € ð �M‰M˜$¢ 4˜-Ñ(×/Ñ/°×0BÑ0BÀ1Ñ0EÀrÈ1ÓM×PÑPÔW\×WbÑWbÐkl×ksÑksÐPÐtð 	ð !-ªQ°²a¨ZÑ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÑ'EÈ!Ï(É(Ï-É-Ð[`ÓJ`�a—h‘h—m’mÐfkˆä¨¸UÓCØ&Ñ>×IÑIÈ!ÈQÓOˆEÜ—)’)˜U˜N°Ñ3ˆCØ—'‘'“)˜d×4Ñ4Ñ4ˆCØ—'‘'“)˜d×4Ñ4Ñ4ˆC÷	 Dð �v‰v˜AŸG™GˆvÐ$ c§f¡f°1·7±7 fÐ&;Ð;Ð;÷ DÕCús   ÃA%E7Å7
F)rÖ   r%   rØ   rÒ   rÚ   rÓ   rÎ   rŸ   )rD   rE   rF   rG   r   r!   r*   ÚstaticmethodrH   rI   r¢   rá   rÕ   Úno_gradr   rB   rK   rL   rM   s   @r7   rÊ   rÊ   	  sŽ   ø† Ù�X vÑ.ñOÐ/÷ Oó /ðOð  Ù�X vÑ.ñ5Ð0@ð 5Ð\aÐbg×bnÑbnÐpuÐbuÑ\vô 5ó /ó ð5ð$ ‡]‚]ƒ_Øñ<ó ó ö<r9   rÊ   c                   óþ   ^ • \ rS rSrS\4U 4S jjr\\      SS\R                  S-  S\R                  S-  S\R                  S-  S\S-  S	\R                  S-  S
\S-  S\\   S\\-  4S jj5       5       rSrU =r$ )ÚStarcoder2ModeliB  r%   c           	      ó@  >• [         TU ]  U5        UR                  U l        UR                  U l        [
        R                  " UR                  UR                  U R                  5      U l        [
        R                  " [        UR                  5       Vs/ s H  n[        X5      PM     sn5      U l        [
        R                  " UR                  UR                  S9U l        [#        US9U l        SU l        UR(                  U l        U R+                  5         g s  snf )Nr§   ©r%   F)r)   r*   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr+   Úembed_tokensÚ
ModuleListÚrangeÚnum_hidden_layersr¤   Úlayersr«   r¬   ÚnormrÊ   Ú
rotary_embÚgradient_checkpointingÚembedding_dropoutÚ	post_initr�   s      €r7   r*   ÚStarcoder2Model.__init__D  sÜ   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔÜ—m’mÜHMÈf×NfÑNfÔHgÓhÒHg¸9Ô# FÖ6ÑHgÑhó
ˆŒô —L’L ×!3Ñ!3¸×9LÑ9LÑMˆŒ	Ü3¸6ÑBˆŒØ&+ˆÔ#Ø!'×!9Ñ!9ˆÔð 	�‰Õùò is   ÂDNÚ	input_idsrq   r°   r’   Úinputs_embedsr±   rs   r;   c           
      óø  • US L US L-  (       a  [        S5      eUc  U R                  U5      nU(       a  Uc  [        U R                  S9nUcU  Ub  UR	                  5       OSn[
        R                  " UR                  S   UR                  S9U-   nUR                  S5      nU R                  R                  c  [        O[        n	U	" U R                  UUUUS9n
Un[        R                  R                  X°R                   U R"                  S9nU R%                  X³S9nU R&                  S U R                  R(                    H  nU" U4U
UUUUS	.UD6nM     U R+                  U5      n[-        UU(       a  US
9$ S S
9$ )Nz:You must specify exactly one of input_ids or inputs_embedsr÷   r   r    )rË   )r%   r  rq   r’   r°   r=   )r°   )rq   r°   r’   r±   r‘   )Úlast_hidden_stater’   )Ú
ValueErrorrü   r   r%   Úget_seq_lengthrI   rà   rS   rË   r[   r•   r   r   r   r@   rA   r  r?   r  r   rÿ   r  r   )r4   r  rq   r°   r’   r  r±   rs   Úpast_seen_tokensÚmask_functionÚcausal_maskr:   r‘   Údecoder_layers                 r7   rB   ÚStarcoder2Model.forwardU  s—  € ð ˜Ð -°tÐ";×<ÜÐYÓZÐZàÑ Ø ×-Ñ-¨iÓ8ˆMæ˜Ñ0Ü*°$·+±+Ñ>ˆOàÑØCRÑC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÑ(>À}×G[ÑG[Ñ\Ð_oÑoˆLØ'×1Ñ1°!Ó4ˆLà.2¯k©k×.HÑ.HÑ.PÕ*ÔVwˆÙ#Ø—;‘;Ø'Ø)Ø+Ø%ñ
ˆð &ˆÜŸ™×-Ñ-Ø×3Ñ3¸d¿m¹mð .ð 
ˆð #Ÿo™o¨m˜oÐWÐà!Ÿ[™[Ð)H¨4¯;©;×+HÑ+HÓIˆMÙ)Øðà*Ø)Ø /Ø#Ø$7ñð ñŠMñ Jð Ÿ	™	 -Ó0ˆä&Ø+Þ/8˜Oñ
ð 	
à>Bñ
ð 	
r9   )rü   r  r  r   r  rù   r  rú   )NNNNNN)rD   rE   rF   rG   r!   r*   r   r   rI   r·   r¢   r   rJ   r¸   r   r   rH   r   rB   rK   rL   rM   s   @r7   rõ   rõ   B  sÌ   ø† ðÐ/÷ ð"  Øð .2Ø.2Ø04Ø(,Ø26Ø!%ñ7
à×#Ñ# dÑ*ð7
ð Ÿ™ tÑ+ð7
ð ×&Ñ&¨Ñ-ð	7
ð
  ™ð7
ð ×(Ñ(¨4Ñ/ð7
ð ˜$‘;ð7
ð Ð+Ñ,ð7
ð 
Ð(Ñ	(ô7
ó ó  ö7
r9   rõ   c                   óX  ^ • \ rS rSrSS0rSS0rSS/S/40rSS0rU 4S	 jr\	\
        SS\R                  S
-  S\R                  S
-  S\R                  S
-  S\S
-  S\R                  S
-  S\R                  S
-  S\S
-  S\\R                  -  S\\   S\4S jj5       5       rSrU =r$ )ÚStarcoder2ForCausalLMi‘  zlm_head.weightzmodel.embed_tokens.weightÚlm_headÚcolwise_gather_outputr:   ÚlogitsÚkeep_full_weightc                 óä   >• [         TU ]  U5        [        U5      U l        UR                  U l        [
        R                  " UR                  UR                  SS9U l        U R                  5         g )NFr'   )
r)   r*   rõ   r¼   rú   r   r,   r+   r  r  )r4   r%   r6   s     €r7   r*   ÚStarcoder2ForCausalLM.__init__˜  sU   ø€ Ü‰Ñ˜Ô Ü$ VÓ,ˆŒ
Ø ×+Ñ+ˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÑSˆŒð 	�‰Õr9   Nr  rq   r°   r’   r  Úlabelsr±   Úlogits_to_keeprs   r;   c	           
      ó|  • U R                   " SUUUUUUS.U	D6n
U
R                  n[        U[        5      (       a  [	        U* S5      OUnU R                  USS2USS24   5      nSnUb)  U R                  " SXÖU R                  R                  S.U	D6n[        UUU
R                  U
R                  U
R                  S9$ )a�  
Example:

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

>>> model = Starcoder2ForCausalLM.from_pretrained("meta-starcoder2/Starcoder2-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-starcoder2/Starcoder2-2-7b-hf")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> 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]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
```)r  rq   r°   r’   r  r±   N)r  r  rú   )Úlossr  r’   r:   r½   r³   )r¼   r
  rê   r¡   Úslicer  Úloss_functionr%   rú   r   r’   r:   r½   )r4   r  rq   r°   r’   r  r  r±   r  rs   Úoutputsr:   Úslice_indicesr  r  s                  r7   rB   ÚStarcoder2ForCausalLM.forward¡  sÖ   € ð> ,0¯:ª:ð ,
ØØ)Ø%Ø+Ø'Øñ,
ð ñ,
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÑ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÑØ×%Ò%Ðp¨VÈtÏ{É{×OeÑOeÑpÐioÑpˆDä%ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ñ
ð 	
r9   )r  r¼   rú   )NNNNNNNr   )rD   rE   rF   rG   Ú_tied_weights_keysÚ_tp_planÚ_pp_planÚ
_fsdp_planr*   r   r   rI   r·   r¢   r   rJ   r¸   r¡   r   r   r   rB   rK   rL   rM   s   @r7   r  r  ‘  s"  ø† à*Ð,GÐHÐØÐ2Ð3€HØ˜_Ð-°¨zÐ:Ð;€HØÐ/Ð0€Jõð Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ñ6
à×#Ñ# dÑ*ð6
ð Ÿ™ tÑ+ð6
ð ×&Ñ&¨Ñ-ð	6
ð
  ™ð6
ð ×(Ñ(¨4Ñ/ð6
ð × Ñ  4Ñ'ð6
ð ˜$‘;ð6
ð ˜eŸl™lÑ*ð6
ð Ð+Ñ,ð6
ð 
 ô6
ó ó ö6
r9   r  c                   ó   • \ rS rSrSrg)Ú#Starcoder2ForSequenceClassificationiÜ  r³   N©rD   rE   rF   rG   rK   r³   r9   r7   r(  r(  Ü  ó   † Úr9   r(  c                   ó   • \ rS rSrSrg)Ú Starcoder2ForTokenClassificationià  r³   Nr)  r³   r9   r7   r,  r,  à  r*  r9   r,  )r  rõ   rº   r(  r,  )r    )r”   )AÚcollections.abcr   rI   r   Úactivationsr   Úcache_utilsr   r   Ú
generationr	   Úintegrationsr
   r   Úmasking_utilsr   r   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   r   r   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.deprecationr   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_starcoder2r!   ÚModuler#   rX   rc   r¢   r¡   rl   rá   r�   rƒ   r¤   rº   rÊ   rõ   r  r(  r,  Ú__all__r³   r9   r7   Ú<module>r@     sà  ðõ4 %ã Ý å !ß .Ý )ß Lß RÝ B÷ñ ÷
 Pß Kß FÝ &ß IÑ IÝ 0ß GÝ 5Ý 6ô�B—I‘Iô ò"(ñ Ð-Ó.óó /ðð2	U˜UŸ\™\ð 	U°#ð 	U¸%¿,¹,ô 	Uð& ñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð ð%ð ð%ð Ð'Ñ(õ%ñ2 Ð)Ó*ô=)˜"Ÿ)™)ó =)ó +ð=)ô@&Ð7ô &ðR ô ó ó ðô$6< §	¡	ô 6<ðr ôK
Ð/ó K
ó ðK
ð\ ôG
Ð5°ó G
ó ðG
ôT	Ð*JÐLeô 	ô	Ð'DÐF_ô 	ò�r9   