§
    ‚Štj7*  ã                   ó  — d dl mZ 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 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 ddl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,dZ-d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#¦  «        Z4 G d!„ d"e ¦  «        Z5 G d#„ d$e!¦  «        Z6 G d%„ d&e"¦  «        Z7g d'¢Z8dS )(é    )ÚCallable)ÚOptionalNé   )ÚCacheÚDynamicCache)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPast)ÚALL_ATTENTION_FUNCTIONS)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚCLIPMLP)	ÚLlamaAttentionÚLlamaForCausalLMÚLlamaForSequenceClassificationÚLlamaForTokenClassificationÚ
LlamaModelÚLlamaPreTrainedModelÚLlamaRotaryEmbeddingÚapply_rotary_pos_embÚeager_attention_forwardé   )Ú	PhiConfigzmicrosoft/phi-1r   c                   óf   — e Zd Ze	 	 	 d	dedz  ded         dedz  dedef         fd„¦   «         Z	dS )
ÚPhiRotaryEmbeddingNÚconfigÚdeviceztorch.deviceÚseq_lenÚreturnztorch.Tensorc                 óV  — | j         d         }| j                              dd¦  «        }t          | dd¦  «        p| j        | j        z  }t          ||z  ¦  «        }d}d|t          j        d|dt          j        ¬¦  «         	                    |t          j
        ¬	¦  «        |z  z  z  }||fS )
a¨  
        Computes the inverse frequencies according to the original RoPE implementation
        Args:
            config ([`~transformers.PreTrainedConfig`]):
                The model configuration.
            device (`torch.device`):
                The device to use for initialization of the inverse frequencies.
            seq_len (`int`, *optional*):
                The current sequence length. Unused for this type of RoPE.
        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Úpartial_rotary_factorg      ð?Úhead_dimNr   r   )Údtype)r"   r)   )Úrope_parametersÚgetÚgetattrÚhidden_sizeÚnum_attention_headsÚintÚtorchÚarangeÚint64ÚtoÚfloat)	r!   r"   r#   Úbaser'   r(   ÚdimÚattention_factorÚinv_freqs	            úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/phi/modular_phi.pyÚcompute_default_rope_parametersz2PhiRotaryEmbedding.compute_default_rope_parameters(   sº   € ð& Ô% lÔ3ˆØ &Ô 6× :Ò :Ð;RÐTWÑ XÔ XÐÝ˜6 :¨tÑ4Ô4Ðh¸Ô8JÈfÔNhÑ8hˆÝ�(Ð2Ñ2Ñ3Ô3ˆàÐð Ø•U”\ ! S¨!µ5´;Ð?Ñ?Ô?×BÒBÈ&ÕX]ÔXcÐBÑdÔdÐgjÑjÑkñ
ˆð Ð)Ð)Ð)ó    )NNN)
Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r/   Útupler4   r:   © r;   r9   r    r    '   s|   € € € € € Øà#'Ø+/Ø"ð*ð *Ø˜DÑ ð*à˜Ô(ð*ð �t‘ð*ð 
ˆ~˜uÐ$Ô	%ð	*ð *ð *ñ „\ð*ð *ð *r;   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j        ej        dz  f         f
d
„Z
ˆ xZS )ÚPhiAttentionr!   Ú	layer_idxc                 óð  •— t          ¦   «                              ||¦  «         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¬¦  «        | _        | `t          | j        |j        d         z  ¦  «        | _        |j        | _        | j        r^t          j        |j        |j        z  |j        d¬¦  «        | _        t          j        |j        |j        z  |j        d¬¦  «        | _        d S d S )NT©Úbiasr'   )ÚepsÚelementwise_affine)ÚsuperÚ__init__ÚnnÚLinearr-   r.   r(   Úq_projÚnum_key_value_headsÚk_projÚv_projÚdenseÚo_projr/   r*   Úrotary_ndimsÚqk_layernormÚ	LayerNormÚlayer_norm_epsÚq_layernormÚk_layernorm©Úselfr!   rD   Ú	__class__s      €r9   rK   zPhiAttention.__init__J   sf  ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ý”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐeiÐjÑjÔjˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐeiÐjÑjÔjˆŒÝ”i Ô 2°FÔ4NÐQUÔQ^Ñ4^ÐeiÐjÑjÔjˆŒÝ”Y˜vÔ9¸D¼MÑIÈ6ÔK]ÐdhÐiÑiÔiˆŒ
ØˆKÝ ¤°Ô0FÐG^Ô0_Ñ _Ñ`Ô`ˆÔØ"Ô/ˆÔØÔð 	Ý!œ|ØÔ" fÔ&@Ñ@ÀfÔF[Ðptð ñ  ô  ˆDÔõ  "œ|ØÔ" fÔ&@Ñ@ÀfÔF[Ðptð ñ  ô  ˆDÔÐÐð		ð 	r;   NÚhidden_statesÚposition_embeddingsÚattention_maskÚpast_key_valuesr$   c                 ól  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
| j        r*|                      |¦  «        }|  	                    |	¦  «        }	|\  }}|dd | j
        …f         |d| j
        d …f         }}|	dd | j
        …f         |	d| j
        d …f         }}t          ||||¦  «        \  }}t          j        ||fd¬¦  «        }t          j        ||fd¬¦  «        }	|�|                     |	|
| j        ¦  «        \  }	}
t!          j        | j        j        t(          ¦  «        } || ||	|
|f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Néÿÿÿÿr   r   .)r6   g        )ÚdropoutÚscaling)Úshaper(   rN   ÚviewÚ	transposerP   rQ   rU   rX   rY   rT   r   r0   ÚcatÚupdaterD   r   Úget_interfacer!   Ú_attn_implementationr   ÚtrainingÚattention_dropoutrd   ÚreshapeÚ
contiguousrR   )r[   r]   r^   r_   r`   ÚkwargsÚinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinÚ	query_rotÚ
query_passÚkey_rotÚkey_passÚattention_interfaceÚattn_outputÚattn_weightss                       r9   ÚforwardzPhiAttention.forward[   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ˆàÔð 	6Ø×+Ò+¨LÑ9Ô9ˆLØ×)Ò)¨*Ñ5Ô5ˆJà&‰ˆˆSð ˜Ð1 Ô 1Ð1Ð1Ô2Ø˜˜dÔ/Ð1Ð1Ð1Ô2ð ˆ	ð
 �sÐ/˜dÔ/Ð/Ð/Ô0Ø�s˜DÔ-Ð/Ð/Ð/Ô0ð ˆõ
 2°)¸WÀcÈ3ÑOÔOÑˆ	�7õ ”y )¨ZÐ!8¸bÐAÑAÔAˆÝ”Y ¨Ð2¸Ð;Ñ;Ô;ˆ
àÐ&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—j’j Ñ-Ô-ˆØ˜LÐ(Ð(r;   )N)r<   r=   r>   r   r/   rK   r0   ÚTensorr@   r   r   Ú__classcell__©r\   s   @r9   rC   rC   I   sÇ   ø€ € € € € ð˜yð °Sð ð ð ð ð ð ð, )-ð8)ð 8)à”|ð8)ð # 5¤<°´Ð#=Ô>ð8)ð œ tÑ+ð	8)ð
  ™ð8)ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð8)ð 8)ð 8)ð 8)ð 8)ð 8)ð 8)ð 8)r;   rC   c                   ó   — e Zd ZdS )ÚPhiMLPN©r<   r=   r>   rA   r;   r9   r„   r„   –   ó   € € € € € Ø€Dr;   r„   c                   óÒ   ‡ — e Zd Zdedefˆ fd„Z	 	 	 	 	 ddej        dej        dz  dej        dz  d	e	dz  d
e
dz  deej        ej        f         dz  dee         dej        fd„Zˆ xZS )ÚPhiDecoderLayerr!   rD   c                 ó"  •— t          ¦   «                              ¦   «          t          ||¬¦  «        | _        t	          |¦  «        | _        t          j        |j        |j	        ¬¦  «        | _
        t          j        |j        ¦  «        | _        d S )N)rD   ©rH   )rJ   rK   rC   Ú	self_attnr„   ÚmlprL   rV   r-   rW   Úinput_layernormÚDropoutÚresid_pdropÚresid_dropoutrZ   s      €r9   rK   zPhiDecoderLayer.__init__›   sr   ø€ Ý‰Œ×ÒÑÔÐÝ% f¸	ÐBÑBÔBˆŒÝ˜&‘>”>ˆŒÝ!œ|¨FÔ,>ÀFÔDYÐZÑZÔZˆÔÝœZ¨Ô(:Ñ;Ô;ˆÔÐÐr;   NFr]   r_   Úposition_idsr`   Ú	use_cacher^   rp   r$   c           
      óì   — |}|                       |¦  «        } | j        d||||||dœ|¤Ž\  }	}
|                      |	¦  «        }	|                      |                      |¦  «        ¦  «        }|	|z   |z   }|S )N)r]   r_   r‘   r`   r’   r^   rA   )r�   r‹   r�   rŒ   )r[   r]   r_   r‘   r`   r’   r^   rp   ÚresidualÚattn_outputsÚ_Úfeed_forward_hidden_statess               r9   r   zPhiDecoderLayer.forward¢   s¤   € ð !ˆà×,Ò,¨]Ñ;Ô;ˆà(˜$œ.ð 
Ø'Ø)Ø%Ø+ØØ 3ð
ð 
ð ð
ð 
‰ˆ�að ×)Ò)¨,Ñ7Ô7ˆà%)×%7Ò%7¸¿ºÀÑ8OÔ8OÑ%PÔ%PÐ"Ø$Ð'AÑAÀHÑLˆàÐr;   )NNNFN)r<   r=   r>   r   r/   rK   r0   r€   Ú
LongTensorr   Úboolr@   r   r   r   r�   r‚   s   @r9   rˆ   rˆ   š   s÷   ø€ € € € € ð<˜yð <°Sð <ð <ð <ð <ð <ð <ð /3Ø04Ø(,Ø!&ØHLðð à”|ðð œ tÑ+ðð Ô&¨Ñ-ð	ð
  ™ðð ˜$‘;ðð # 5¤<°´Ð#=Ô>ÀÑEðð Ð+Ô,ðð 
Œðð ð ð ð ð ð ð r;   rˆ   c                   ó   — e Zd ZeedœZdS )ÚPhiPreTrainedModel)r]   Ú
attentionsN)r<   r=   r>   rˆ   rC   Ú_can_record_outputsrA   r;   r9   r›   r›   Á   s#   € € € € € à(Ø"ðð ÐÐÐr;   r›   c                   óâ   ‡ — e Zd Zdefˆ f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ˆ xZS )ÚPhiModelr!   c                 óD  •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        ‰j        ¦  «        | _	        t          j
        ‰j        ‰j        ¬¦  «        | _        | `d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rA   )rˆ   )Ú.0rD   r!   s     €r9   ú
<listcomp>z%PhiModel.__init__.<locals>.<listcomp>Ì   s#   ø€ ÐaÐaÐa°I�_˜V YÑ/Ô/ÐaÐaÐar;   rŠ   )rJ   rK   rL   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersrŽ   Ú
embd_pdropÚembed_dropoutrV   r-   rW   Úfinal_layernormÚnorm©r[   r!   r\   s    `€r9   rK   zPhiModel.__init__É   sŽ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”mØaÐaÐaÐaÅÀvÔG_ÑA`ÔA`ÐaÑaÔañ
ô 
ˆŒõ  œZ¨Ô(9Ñ:Ô:ˆÔÝ!œ|¨FÔ,>ÀFÔDYÐZÑZÔZˆÔØˆIˆIˆIr;   NÚ	input_idsr_   r‘   r`   Úinputs_embedsr’   rp   r$   c           
      ór  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|r|€t          | j        ¬¦  «        }|€V|�|                     ¦   «         nd}t          j        |j        d         |j        ¬¦  «        |z   }| 	                    d¦  «        }t          | j        ||||¬¦  «        }	|                      |¦  «        }|}
|                      |
|¬¦  «        }| j        d | j        j        …         D ]} ||
f|	||||dœ|¤Ž}
Œ|                      |
¦  «        }
t!          |
|¬	¦  «        S )
Nz:You must specify exactly one of input_ids or inputs_embeds)r!   r   r   )r"   )r!   r®   r_   r`   r‘   )r‘   )r_   r‘   r`   r’   r^   )Úlast_hidden_stater`   )Ú
ValueErrorÚembed_tokensr   r!   Úget_seq_lengthr0   r1   re   r"   Ú	unsqueezer   r©   Ú
rotary_embr§   r¦   rª   r
   )r[   r­   r_   r‘   r`   r®   r’   rp   Úpast_seen_tokensÚcausal_maskr]   r^   Údecoder_layers                r9   r   zPhiModel.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å(Ø”;Ø'Ø)Ø+Ø%ð
ñ 
ô 
ˆð ×*Ò*¨=Ñ9Ô9ˆØ%ˆØ"Ÿošo¨mÈ,˜oÑWÔWÐà!œ[Ð)H¨4¬;Ô+HÐ)HÔIð 		ð 		ˆMØ)˜MØðà*Ø)Ø /Ø#Ø$7ðð ð ðð ˆMˆMð ×,Ò,¨]Ñ;Ô;ˆå&Ø+Ø+ð
ñ 
ô 
ð 	
r;   )NNNNNN)r<   r=   r>   r   rK   r   r   r   r0   r˜   r€   r   ÚFloatTensorr™   r   r   r
   r   r�   r‚   s   @r9   rŸ   rŸ   È   s  ø€ € € € € ð˜yð ð ð ð ð ð ð  ØØð .2Ø.2Ø04Ø(,Ø26Ø!%ð4
ð 4
àÔ# dÑ*ð4
ð œ tÑ+ð4
ð Ô&¨Ñ-ð	4
ð
  ™ð4
ð Ô(¨4Ñ/ð4
ð ˜$‘;ð4
ð Ð+Ô,ð4
ð 
!ð4
ð 4
ð 4
ñ „^ñ „_ñ  Ôð4
ð 4
ð 4
ð 4
ð 4
r;   rŸ   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚPhiForCausalLMc                 ó–   •— t          ¦   «                              |¦  «         t          j        |j        |j        d¬¦  «        | _        d S )NTrF   )rJ   rK   rL   rM   r-   Ú
vocab_sizeÚlm_headr¬   s     €r9   rK   zPhiForCausalLM.__init__  s=   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”y Ô!3°VÔ5FÈTÐRÑRÔRˆŒˆˆr;   )r<   r=   r>   rK   r�   r‚   s   @r9   r»   r»     sA   ø€ € € € € ðSð Sð Sð Sð Sð Sð Sð Sð Sr;   r»   c                   ó   — e Zd ZdS )ÚPhiForSequenceClassificationNr…   rA   r;   r9   rÀ   rÀ     r†   r;   rÀ   c                   ó   — e Zd ZdS )ÚPhiForTokenClassificationNr…   rA   r;   r9   rÂ   rÂ     r†   r;   rÂ   )r›   rŸ   r»   rÀ   rÂ   )9Úcollections.abcr   Útypingr   r0   Útorch.nnrL   Úcache_utilsr   r   Úmasking_utilsr   Úmodeling_layersr	   Úmodeling_outputsr
   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úclip.modeling_clipr   Úllama.modeling_llamar   r   r   r   r   r   r   r   r   Úconfiguration_phir   Ú
get_loggerr<   ÚloggerÚ_CHECKPOINT_FOR_DOCÚ_CONFIG_FOR_DOCr    rC   r„   rˆ   r›   rŸ   r»   rÀ   rÂ   Ú__all__rA   r;   r9   ú<module>r×      sj  ðØ $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð 6Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø (Ð (Ð (Ð (Ð (Ð (ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð )Ð (Ð (Ð (Ð (Ð (ð 
ˆÔ	˜HÑ	%Ô	%€à'Ð Ø€ð*ð *ð *ð *ð *Ð-ñ *ô *ð *ðDJ)ð J)ð J)ð J)ð J)�>ñ J)ô J)ð J)ðZ	ð 	ð 	ð 	ð 	ˆWñ 	ô 	ð 	ð$ð $ð $ð $ð $Ð0ñ $ô $ð $ðNð ð ð ð Ð-ñ ô ð ðA
ð A
ð A
ð A
ð A
ˆzñ A
ô A
ð A
ðHSð Sð Sð Sð SÐ%ñ Sô Sð Sð	ð 	ð 	ð 	ð 	Ð#Añ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð ;ñ 	ô 	ð 	ðð ð €€€r;   