§
    ‚Štj„  ã                   ó  — d dl mZ d dl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 ddlmZ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$m%Z%m&Z& ddl'm(Z(  ej)        e*¦  «        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¦  «        Z1 G d„ d e!¦  «        Z2 G d!„ d"e ¦  «        Z3 G d#„ d$ee/¦  «        Z4g d%¢Z5dS )&é    )ÚCallableN)Únné   )ÚCacheÚDynamicCache)Úcreate_causal_maskÚ!create_sliding_window_causal_mask)ÚFlashAttentionKwargs)ÚGenericForQuestionAnswering)ÚBaseModelOutputWithPast)ÚALL_ATTENTION_FUNCTIONS)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úmerge_with_config_defaults)Úcapture_outputsé   )
ÚLlamaAttentionÚLlamaDecoderLayerÚLlamaForCausalLMÚLlamaForSequenceClassificationÚLlamaForTokenClassificationÚLlamaMLPÚ
LlamaModelÚLlamaPreTrainedModelÚapply_rotary_pos_embÚeager_attention_forwardé   )ÚMistralConfigc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú
MistralMLPc                 ó.  •— t          ¦   «                              |¦  «         t          j        | j        | j        d¬¦  «        | _        t          j        | j        | j        d¬¦  «        | _        t          j        | j        | j        d¬¦  «        | _        d S )NF©Úbias)	ÚsuperÚ__init__r   ÚLinearÚhidden_sizeÚintermediate_sizeÚ	gate_projÚup_projÚ	down_proj)ÚselfÚconfigÚ	__class__s     €úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/mistral/modular_mistral.pyr'   zMistralMLP.__init__%   s|   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ýœ 4Ô#3°TÔ5KÐRWÐXÑXÔXˆŒÝ”y Ô!1°4Ô3IÐPUÐVÑVÔVˆŒÝœ 4Ô#9¸4Ô;KÐRWÐXÑXÔXˆŒˆˆó    )Ú__name__Ú
__module__Ú__qualname__r'   Ú__classcell__©r0   s   @r1   r"   r"   $   sA   ø€ € € € € ðYð Yð Yð Yð Yð Yð Yð Yð Yr2   r"   c                   óÆ   ‡ — e Zd Zdede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  f         fd„Zˆ xZS )ÚMistralAttentionr/   Ú	layer_idxc                 ó  •— t          ¦   «                              ||¦  «         t          |dd ¦  «        p|j        |j        z  | _        t          j        |j        |j        | j        z  d¬¦  «        | _        t          j        |j        |j	        | j        z  d¬¦  «        | _
        t          j        |j        |j	        | j        z  d¬¦  «        | _        t          j        |j        | j        z  |j        d¬¦  «        | _        d S )NÚhead_dimFr$   )r&   r'   Úgetattrr)   Únum_attention_headsr<   r   r(   Úq_projÚnum_key_value_headsÚk_projÚv_projÚo_proj©r.   r/   r:   r0   s      €r1   r'   zMistralAttention.__init__-   sã   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ý ¨
°DÑ9Ô9Ðm¸VÔ=OÐSYÔSmÑ=mˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐejÐkÑkÔkˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐejÐkÑkÔkˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐejÐkÑkÔkˆŒÝ”i Ô :¸T¼]Ñ JÈFÔL^ÐejÐkÑkÔkˆŒˆˆr2   NÚhidden_statesÚposition_embeddingsÚattention_maskÚpast_key_valuesÚkwargsÚreturnc           
      óL  — |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 Ž                      ¦   «         }|                      |¦  «        }||fS )Néÿÿÿÿr   r   g        Úsliding_window)ÚdropoutÚscalingrM   )Úshaper<   r?   ÚviewÚ	transposerA   rB   r   Úupdater:   r   Úget_interfacer/   Ú_attn_implementationr   ÚtrainingÚattention_dropoutrO   r=   ÚreshapeÚ
contiguousrC   )r.   rE   rF   rG   rH   rI   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss                   r1   ÚforwardzMistralAttention.forward5   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 +Ñ.Ô.ˆØ˜LÐ(Ð(r2   )N)r3   r4   r5   r    Úintr'   ÚtorchÚTensorÚtupler   r   r
   rd   r6   r7   s   @r1   r9   r9   ,   sß   ø€ € € € € ðl˜}ð l¸ð lð lð lð lð lð lð )-ð')ð ')à”|ð')ð # 5¤<°´Ð#=Ô>ð')ð œ tÑ+ð	')ð
  ™ð')ð Ð-Ô.ð')ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð')ð ')ð ')ð ')ð ')ð ')ð ')ð ')r2   r9   c                   ó(   ‡ — e Zd Zdedefˆ fd„Zˆ xZS )ÚMistralDecoderLayerr/   r:   c                 ó    •— t          ¦   «                              ||¦  «         t          ||¬¦  «        | _        t	          |¦  «        | _        d S )N)r/   r:   )r&   r'   r9   Ú	self_attnr"   ÚmlprD   s      €r1   r'   zMistralDecoderLayer.__init__`   sD   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ý)°À9ÐMÑMÔMˆŒÝ˜fÑ%Ô%ˆŒˆˆr2   )r3   r4   r5   r    re   r'   r6   r7   s   @r1   rj   rj   _   sK   ø€ € € € € ð&˜}ð &¸ð &ð &ð &ð &ð &ð &ð &ð &ð &ð &r2   rj   c                   ó   — e Zd ZeedœZdS )ÚMistralPreTrainedModel)rE   Ú
attentionsN)r3   r4   r5   rj   r9   Ú_can_record_outputs© r2   r1   ro   ro   f   s#   € € € € € à,Ø&ðð ÐÐÐr2   ro   c                   óÌ   — e Zd Ze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fd
„¦   «         ¦   «         ¦   «         ZdS )ÚMistralModelNÚ	input_idsrG   Úposition_idsrH   Úinputs_embedsÚ	use_cacherI   rJ   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        ||||¬¦  «        }
|}|                      ||¬¦  «        }| 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/   rw   rG   rH   rv   )rv   )rG   rv   rH   rx   rF   )Úlast_hidden_staterH   )Ú
ValueErrorÚembed_tokensr   r/   Úget_seq_lengthrf   ÚarangerP   rz   Ú	unsqueezerM   r   r	   Ú
rotary_embÚlayersÚnum_hidden_layersÚnormr   )r.   ru   rG   rv   rH   rw   rx   rI   Úpast_seen_tokensÚmask_functionÚcausal_maskrE   rF   Údecoder_layers                 r1   rd   zMistralModel.forwardn   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Ø”;Ø'Ø)Ø+Ø%ð
ñ 
ô 
ˆð &ˆØ"Ÿošo¨mÈ,˜oÑWÔWÐà!œ[Ð)H¨4¬;Ô+HÐ)HÔIð 		ð 		ˆMØ)˜MØðà*Ø)Ø /Ø#Ø$7ðð ð ðð ˆMˆMð Ÿ	š	 -Ñ0Ô0ˆÝ&Ø+Ø/8ÐB˜O˜O¸dð
ñ 
ô 
ð 	
r2   )NNNNNN)r3   r4   r5   r   r   r   rf   Ú
LongTensorrg   r   ÚFloatTensorÚboolr   r   r   rd   rr   r2   r1   rt   rt   m   sÛ   € € € € € ØØØð .2Ø.2Ø04Ø(,Ø26Ø!%ð2
ð 2
àÔ# dÑ*ð2
ð œ tÑ+ð2
ð Ô&¨Ñ-ð	2
ð
  ™ð2
ð Ô(¨4Ñ/ð2
ð ˜$‘;ð2
ð Ð+Ô,ð2
ð 
!ð2
ð 2
ð 2
ñ „^ñ „_ñ  Ôð2
ð 2
ð 2
r2   rt   c                   ó   — e Zd ZdS )ÚMistralForCausalLMN©r3   r4   r5   rr   r2   r1   r�   r�   ¦   ó   € € € € € Ø€Dr2   r�   c                   ó   — e Zd ZdS )ÚMistralForTokenClassificationNrŽ   rr   r2   r1   r‘   r‘   ª   r�   r2   r‘   c                   ó   — e Zd ZdS )Ú MistralForSequenceClassificationNrŽ   rr   r2   r1   r“   r“   ®   r�   r2   r“   c                   ó   — e Zd ZdS )ÚMistralForQuestionAnsweringNrŽ   rr   r2   r1   r•   r•   ²   s   € € € € € € € r2   r•   )r�   r•   rt   ro   r“   r‘   )6Úcollections.abcr   rf   r   Úcache_utilsr   r   Úmasking_utilsr   r	   Úmodeling_flash_attention_utilsr
   Úmodeling_layersr   Úmodeling_outputsr   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úllama.modeling_llamar   r   r   r   r   r   r   r   r   r   Úconfiguration_mistralr    Ú
get_loggerr3   Úloggerr"   r9   rj   ro   rt   r�   r‘   r“   r•   Ú__all__rr   r2   r1   ú<module>r¦      sA  ðØ $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 1Ð 0Ð 0Ð 0Ð 0Ð 0ð 
ˆÔ	˜HÑ	%Ô	%€ðYð Yð Yð Yð Y�ñ Yô Yð Yð0)ð 0)ð 0)ð 0)ð 0)�~ñ 0)ô 0)ð 0)ðf&ð &ð &ð &ð &Ð+ñ &ô &ð &ðð ð ð ð Ð1ñ ô ð ð6
ð 6
ð 6
ð 6
ð 6
�:ñ 6
ô 6
ð 6
ðr	ð 	ð 	ð 	ð 	Ð)ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð$?ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð'Eñ 	ô 	ð 	ð \Ð [Ð [Ð [Ð [Ð"=Ð?UÑ [Ô [Ð [ðð ð €€€r2   