§
    ‚ŠtjK#  ã                   óØ  — d Z ddlmZ ddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mZmZ dd	lmZ 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 ddlmZ ddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&  ej'        e(¦  «        Z) G d„ dej*        ¦  «        Z+ G d„ de¦  «        Z, G d„ de¦  «        Z- G d„ de"¦  «        Z. G d„ de¦  «        Z/ G d„ de ¦  «        Z0 G d „ d!e!¦  «        Z1g d"¢Z2dS )#zPyTorch Starcoder2 model.é    )ÚCallableN)Únné   )ÚACT2FN)ÚCacheÚDynamicCache)Úcreate_causal_maskÚ!create_sliding_window_causal_mask)ÚFlashAttentionKwargs)ÚBaseModelOutputWithPast)ÚALL_ATTENTION_FUNCTIONS)ÚUnpack)ÚTransformersKwargsÚlogging)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚMistralAttentionÚMistralDecoderLayerÚMistralForCausalLMÚ MistralForSequenceClassificationÚMistralForTokenClassificationÚMistralModelÚapply_rotary_pos_embÚeager_attention_forwardé   )ÚStarcoder2Configc                   óZ   ‡ — e Zd Zdefˆ fd„Zdeej                 dz  dej        fd„Zˆ xZ	S )ÚStarcoder2MLPÚconfigc                 ó4  •— t          ¦   «                              ¦   «          |j        }t          j        ||j        |j        ¬¦  «        | _        t          j        |j        ||j        ¬¦  «        | _        t          |j
                 | _        |j        | _        d S )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      €úo/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/starcoder2/modular_starcoder2.pyr%   zStarcoder2MLP.__init__5   s{   ø€ Ý‰Œ×ÒÑÔÐØÔ&ˆ	Ý”I˜i¨Ô)AÈÌÐXÑXÔXˆŒ	Ý”i Ô 8¸)È&Ì/ÐZÑZÔZˆŒÝ˜&Ô+Ô,ˆŒØ &Ô 7ˆÔÐÐó    Úhidden_statesNÚreturnc                 óÜ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }t          j                             || j        | j        ¬¦  «        }|S )N©ÚpÚtraining)r*   r-   r+   r   Ú
functionalÚdropoutr.   r9   )r/   r4   s     r2   ÚforwardzStarcoder2MLP.forward=   s^   € ØŸ	š	 -Ñ0Ô0ˆØŸš Ñ/Ô/ˆØŸš MÑ2Ô2ˆÝœ×-Ò-¨m¸tÔ?TÐ_cÔ_lÐ-ÑmÔmˆØÐr3   )
Ú__name__Ú
__module__Ú__qualname__r   r%   ÚtupleÚtorchÚFloatTensorr<   Ú__classcell__©r1   s   @r2   r   r   4   sw   ø€ € € € € ð8Ð/ð 8ð 8ð 8ð 8ð 8ð 8ð U¨5Ô+<Ô%=ÀÑ%Dð ÈÔIZð ð ð ð ð ð ð ð r3   r   c                   óì   ‡ — e Zd Zddededz  fˆ fd„Z	 ddej        deej        ej        f         dej        dz  de	dz  d	e
e         d
eej        ej        dz  eej                 dz  f         fd„Zˆ xZS )ÚStarcoder2AttentionNr    Ú	layer_idxc                 óþ  •— t          ¦   «                              ||¬¦  «         |j        | _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _	        t          j        |j        |j
        | j        z  |j        ¬¦  «        | _        t          j        |j        |j
        | j        z  |j        ¬¦  «        | _        t          j        |j        | j        z  |j        |j        ¬¦  «        | _        d S )N©r    rG   r"   )r$   r%   r.   r   r'   r&   Únum_attention_headsÚhead_dimr)   Úq_projÚnum_key_value_headsÚk_projÚv_projÚo_proj©r/   r    rG   r1   s      €r2   r%   zStarcoder2Attention.__init__F   sÙ   ø€ Ý‰Œ×Ò °)ÐÑ<Ô<Ð<Ø &Ô 7ˆÔÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐekÔetÐuÑuÔuˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐekÔetÐuÑuÔuˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐekÔetÐuÑuÔuˆŒÝ”i Ô :¸T¼]Ñ JÈFÔL^ÐekÔetÐuÑuÔuˆŒˆˆr3   r4   Úposition_embeddingsÚattention_maskÚpast_key_valuesÚkwargsr5   c           
      ó¤  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
|\  }}t          ||	||¦  «        \  }}	|�|                     |	|
| j	        ¦  «        \  }	}
t          j        | j        j        t          ¦  «        } || ||	|
|f| j        sdn| j        | j        t%          | j        dd ¦  «        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }t,          j                             || j        | j        ¬¦  «        }||fS )Néÿÿÿÿr   r   g        Úsliding_window)r;   ÚscalingrX   r7   )ÚshaperK   rL   ÚviewÚ	transposerN   rO   r   ÚupdaterG   r   Úget_interfacer    Ú_attn_implementationr   r9   Úattention_dropoutrY   ÚgetattrÚreshapeÚ
contiguousrP   r   r:   r;   r.   )r/   r4   rR   rS   rT   rU   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss                   r2   r<   zStarcoder2Attention.forwardN   sü  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆà&‰ˆˆSÝ#7¸ÀjÐRUÐWZÑ#[Ô#[Ñ ˆ�jàÐ&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð
%
ð  $œ}ÐH�C�C°$Ô2HØ”LÝ" 4¤;Ð0@À$ÑGÔGð
%
ð 
%
ð ð
%
ð 
%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆÝ”m×+Ò+Ø˜4Ô0¸4¼=ð ,ñ 
ô 
ˆð ˜LÐ(Ð(r3   )N)r=   r>   r?   r   Úintr%   rA   ÚTensorr@   r   r   r   r<   rC   rD   s   @r2   rF   rF   E   sø   ø€ € € € € ðvð vÐ/ð v¸CÀ$¹Jð vð vð vð vð vð vð )-ð+)ð +)à”|ð+)ð # 5¤<°´Ð#=Ô>ð+)ð œ tÑ+ð	+)ð
  ™ð+)ð Ð-Ô.ð+)ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸¼Ô2EÈÑ2LÐLÔ	Mð+)ð +)ð +)ð +)ð +)ð +)ð +)ð +)r3   rF   c                   ó(   ‡ — e Zd Zdedefˆ fd„Zˆ xZS )ÚStarcoder2DecoderLayerr    rG   c                 ó4  •— t          ¦   «                              ||¦  «         t          ||¬¦  «        | _        t	          |¦  «        | _        t          j        |j        |j	        ¬¦  «        | _
        t          j        |j        |j	        ¬¦  «        | _        d S )NrI   ©Úeps)r$   r%   rF   Ú	self_attnr   Úmlpr   Ú	LayerNormr&   Únorm_epsilonÚinput_layernormÚpost_attention_layernormrQ   s      €r2   r%   zStarcoder2DecoderLayer.__init__}   s€   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ý,°FÀiÐPÑPÔPˆŒÝ  Ñ(Ô(ˆŒÝ!œ|¨FÔ,>ÀFÔDWÐXÑXÔXˆÔÝ(*¬°VÔ5GÈVÔM`Ð(aÑ(aÔ(aˆÔ%Ð%Ð%r3   )r=   r>   r?   r   rn   r%   rC   rD   s   @r2   rq   rq   |   sX   ø€ € € € € ðbÐ/ð b¸Cð bð bð bð bð bð bð bð bð bð br3   rq   c                   óØ   ‡ — e Zd Zdefˆ fd„Zee	 	 	 	 	 	 ddej        dz  dej	        dz  dej        dz  de
dz  dej        dz  d	edz  d
ee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚStarcoder2Modelr    c                 ó  •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        ‰j        ‰j	        ¬¦  «        | _
        ‰j        | _        d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS © )rq   )Ú.0rG   r    s     €r2   ú
<listcomp>z,Starcoder2Model.__init__.<locals>.<listcomp>‰   s$   ø€ ÐhÐhÐh¸9Õ# F¨IÑ6Ô6ÐhÐhÐhr3   rs   )r$   r%   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersrw   r&   rx   ÚnormÚembedding_dropout)r/   r    r1   s    `€r2   r%   zStarcoder2Model.__init__†   s€   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”mØhÐhÐhÐhÍÈfÔNfÑHgÔHgÐhÑhÔhñ
ô 
ˆŒõ ”L Ô!3¸Ô9LÐMÑMÔMˆŒ	Ø!'Ô!9ˆÔÐÐr3   NÚ	input_idsrS   Úposition_idsrT   Úinputs_embedsÚ	use_cacherU   r5   c           
      óÔ  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|r|€t          | j        ¬¦  «        }|€V|�|                     ¦   «         nd}t          j        |j        d         |j        ¬¦  «        |z   }| 	                    d¦  «        }| j        j
        €t          nt          }	 |	| j        ||||¬¦  «        }
|}t          j                             || j        | j        ¬¦  «        }|                      ||¬¦  «        }| j        d | j        j        …         D ]} ||f|
||||d	œ|¤Ž}Œ|                      |¦  «        }t-          ||r|nd ¬
¦  «        S )Nz:You must specify exactly one of input_ids or inputs_embeds)r    r   r   )Údevice)r    rŠ   rS   rT   r‰   r7   )r‰   )rS   r‰   rT   r‹   rR   )Úlast_hidden_staterT   )Ú
ValueErrorÚembed_tokensr   r    Úget_seq_lengthrA   ÚarangerZ   r�   Ú	unsqueezerX   r	   r
   r   r:   r;   r‡   r9   Ú
rotary_embr…   r„   r†   r   )r/   rˆ   rS   r‰   rT   rŠ   r‹   rU   Úpast_seen_tokensÚmask_functionÚcausal_maskr4   rR   Údecoder_layers                 r2   r<   zStarcoder2Model.forwardŽ   sÕ  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø ×-Ò-¨iÑ8Ô8ˆMàð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOàÐØCRÐC^˜×=Ò=Ñ?Ô?Ð?ÐdeÐÝ œ<¨Ô(;¸AÔ(>À}ÔG[Ð\Ñ\Ô\Ð_oÑoˆLØ'×1Ò1°!Ñ4Ô4ˆLà.2¬kÔ.HÐ.PÕ*Ð*ÕVwˆØ#�mØ”;Ø'Ø)Ø+Ø%ð
ñ 
ô 
ˆð &ˆÝœ×-Ò-Ø˜TÔ3¸d¼mð .ñ 
ô 
ˆð #Ÿošo¨mÈ,˜oÑWÔWÐà!œ[Ð)H¨4¬;Ô+HÐ)HÔIð 		ð 		ˆMØ)˜MØðà*Ø)Ø /Ø#Ø$7ðð ð ðð ˆMˆMð Ÿ	š	 -Ñ0Ô0ˆå&Ø+Ø/8ÐB˜O˜O¸dð
ñ 
ô 
ð 	
r3   )NNNNNN)r=   r>   r?   r   r%   r   r   rA   Ú
LongTensorro   r   rB   Úboolr   r   r@   r   r<   rC   rD   s   @r2   r|   r|   …   s
  ø€ € € € € ð:Ð/ð :ð :ð :ð :ð :ð :ð  Øð .2Ø.2Ø04Ø(,Ø26Ø!%ð7
ð 7
àÔ# dÑ*ð7
ð œ tÑ+ð7
ð Ô&¨Ñ-ð	7
ð
  ™ð7
ð Ô(¨4Ñ/ð7
ð ˜$‘;ð7
ð Ð+Ô,ð7
ð 
Ð(Ñ	(ð7
ð 7
ð 7
ñ „_ñ  Ôð7
ð 7
ð 7
ð 7
ð 7
r3   r|   c                   ó   — e Zd ZdS )ÚStarcoder2ForCausalLMN©r=   r>   r?   r   r3   r2   rœ   rœ   Ê   ó   € € € € € Ø€Dr3   rœ   c                   ó   — e Zd ZdS )Ú#Starcoder2ForSequenceClassificationNr�   r   r3   r2   r    r    Î   rž   r3   r    c                   ó   — e Zd ZdS )Ú Starcoder2ForTokenClassificationNr�   r   r3   r2   r¢   r¢   Ò   rž   r3   r¢   )rœ   r|   ÚStarcoder2PreTrainedModelr    r¢   )3Ú__doc__Úcollections.abcr   rA   r   Úactivationsr   Úcache_utilsr   r   Úmasking_utilsr	   r
   Úmodeling_flash_attention_utilsr   Úmodeling_outputsr   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   Úutils.genericr   Úutils.output_capturingr   Úmistral.modeling_mistralr   r   r   r   r   r   r   r   Úconfiguration_starcoder2r   Ú
get_loggerr=   ÚloggerÚModuler   rF   rq   r|   rœ   r    r¢   Ú__all__r   r3   r2   ú<module>r¶      sà  ðð&  Ð à $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ BÐ BÐ BÐ BÐ BÐ BØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 7Ð 6Ð 6Ð 6Ð 6Ð 6ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð �B”Iñ ô ð ð"4)ð 4)ð 4)ð 4)ð 4)Ð*ñ 4)ô 4)ð 4)ðnbð bð bð bð bÐ0ñ bô bð bðB
ð B
ð B
ð B
ð B
�lñ B
ô B
ð B
ðJ	ð 	ð 	ð 	ð 	Ð.ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð*Jñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð'Dñ 	ô 	ð 	ðð ð €€€r3   