§
    ‚Štj)  ã                   ó�   — d Z ddlmZ ddlmZ ddlmZ ddlmZ  ed¬¦  «        e G d	„ d
e¦  «        ¦   «         ¦   «         Z	d
gZ
dS )zPhi-3 model configurationé    )Ústricté   )ÚPreTrainedConfig)ÚRopeParameters)Úauto_docstringz microsoft/Phi-3-mini-4k-instruct)Ú
checkpointc                   ó   ‡ — e Zd ZU dZdZdgZdddddœZdgdgfd	d
gd	gfd	gd	gfdœZdZe	e
d<   dZe	e
d<   dZe	e
d<   dZe	e
d<   dZe	e
d<   dZe	dz  e
d<   dZee	z  e
d<   dZee	z  e
d<   dZee	z  e
d<   dZee
d<   dZe	e
d<   dZe	e
d<   d Zee
d!<   d"Zee
d#<   d$Zee
d%<   d&Zee
d'<   dZeez  dz  e
d(<   d)Z e	dz  e
d*<   d+Z!e	e"e	         z  dz  e
d,<   d+Z#e	dz  e
d-<   dZ$e	dz  e
d.<   ˆ fd/„Z%	 d5d1e	ez  d2e&dz  fd3„Z'ˆ fd4„Z(ˆ xZ)S )6Ú
Phi3Configa�  
    original_max_position_embeddings (`int`, *optional*, defaults to 4096):
        The maximum sequence length that this model was trained with. This is used to determine the size of the
        original RoPE embeddings when using long scaling.

    Example:

    ```python
    >>> from transformers import Phi3Model, Phi3Config

    >>> # Initializing a Phi-3 style configuration
    >>> configuration = Phi3Config.from_pretrained("microsoft/Phi-3-mini-4k-instruct")

    >>> # Initializing a model from the configuration
    >>> model = Phi3Model(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```Úphi3Úpast_key_valuesÚcolwise_gather_outputÚrowwise_split_input)zlayers.*.self_attn.qkv_projzlayers.*.self_attn.o_projzlayers.*.mlp.gate_up_projzlayers.*.mlp.down_projÚ	input_idsÚinputs_embedsÚhidden_statesÚattention_mask)Úembed_tokensÚlayersÚnormi@}  Ú
vocab_sizei   Úhidden_sizei    Úintermediate_sizeé    Únum_hidden_layersÚnum_attention_headsNÚnum_key_value_headsg        Úresid_pdropÚ
embd_pdropÚattention_dropoutÚsiluÚ
hidden_acti   Úmax_position_embeddingsÚ original_max_position_embeddingsg{®Gáz”?Úinitializer_rangegñhãˆµøä>Úrms_norm_epsTÚ	use_cacheFÚtie_word_embeddingsÚrope_parametersé   Úbos_token_idi }  Úeos_token_idÚpad_token_idÚsliding_windowc                 ó`   •— | j         €| j        | _          t          ¦   «         j        di |¤Ž d S )N© )r   r   ÚsuperÚ__post_init__)ÚselfÚkwargsÚ	__class__s     €úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/phi3/configuration_phi3.pyr1   zPhi3Config.__post_init__S   s:   ø€ ØÔ#Ð+Ø'+Ô'?ˆDÔ$à�‰ŒÔÐ'Ð' Ð'Ð'Ð'Ð'Ð'ó    ç     ˆÃ@Údefault_thetaÚignore_keysc                 ó²  — |                      dd ¦  «        }|p| j        | _        | j        �| j        ni | _        | j                             d|                      d|¦  «        ¦  «         | j                             d|                     dd¦  «        ¦  «         |                      ¦   «          | j                             dd ¦  «        }|�|dv r
d| j        d<   |S )NÚrope_scalingÚ
rope_thetaÚpartial_rotary_factorg      ð?Ú	rope_type)ÚsuÚyarnÚlongrope)Úpopr(   Ú
setdefaultÚgetÚstandardize_rope_params)r2   r8   r9   r3   r;   Úrope_parameters_types         r5   Úconvert_rope_params_to_dictz&Phi3Config.convert_rope_params_to_dictY   sã   € ð —z’z .°$Ñ7Ô7ˆØ+ÐC¨tÔ/CˆÔØ7;Ô7KÐ7W˜tÔ3Ð3Ð]_ˆÔð 	Ô×'Ò'¨°f·j²jÀÈ}Ñ6]Ô6]Ñ^Ô^Ð^ØÔ×'Ò'Ð(?ÀÇÂÐLcÐehÑAiÔAiÑjÔjÐjØ×$Ò$Ñ&Ô&Ð&ð  $Ô3×7Ò7¸ÀTÑJÔJÐØÐ+Ð0DÈÐ0VÐ0VØ0:ˆDÔ  Ñ-Øˆr6   c                 óÄ  •— t          ¦   «                              ¦   «          t          | j        t          ¦  «        st          d| j        › �¦  «        ‚| j                             dd¦  «        }| j                             dd¦  «        }| j                             dd¦  «        }t          | j        | j	        z  | j        d         z  ¦  «        }|dvrt          d|› �¦  «        ‚|�{t          |t          ¦  «        rt          d	„ |D ¦   «         ¦  «        st          d
|› �¦  «        ‚t          |¦  «        |dz  k    s%t          d|dz  › dt          |¦  «        › �¦  «        ‚|�{t          |t          ¦  «        rt          d„ |D ¦   «         ¦  «        st          d|› �¦  «        ‚t          |¦  «        |dz  k    s't          d|dz  › dt          |¦  «        › �¦  «        ‚dS dS )z?
        Validate the `rope_parameters` configuration.
        z/`rope_parameters` must be a dictionary but got r>   NÚshort_factorÚlong_factorr=   )ÚdefaultrA   z@`rope_parameters`'s type field must be one of ['longrope'], got c              3   óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S ©N©Ú
isinstanceÚintÚfloat©Ú.0Úxs     r5   ú	<genexpr>z+Phi3Config.validate_rope.<locals>.<genexpr>€   s0   è è € ÐZÐZ¸�
 1¥s­E lÑ3Ô3ÐZÐZÐZÐZÐZÐZr6   zF`rope_parameters`'s short_factor field must be a list of numbers, got é   z8`rope_parameters`'s short_factor field must have length z, got c              3   óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S rM   rN   rR   s     r5   rU   z+Phi3Config.validate_rope.<locals>.<genexpr>�   s0   è è € ÐYÐY¸�
 1¥s­E lÑ3Ô3ÐYÐYÐYÐYÐYÐYr6   zE`rope_parameters`'s long_factor field must be a list of numbers, got z7`rope_parameters`'s long_factor field must have length )r0   Úvalidate_roperO   r(   ÚdictÚ
ValueErrorrD   rP   r   r   ÚlistÚallÚlen)r2   rF   Úrope_parameters_short_factorÚrope_parameters_long_factorÚrotary_ndimsr4   s        €r5   rX   zPhi3Config.validate_ropek   s…  ø€ õ 	‰Œ×ÒÑÔÐõ ˜$Ô.µÑ5Ô5ð 	gÝÐeÈtÔOcÐeÐeÑfÔfÐfØ#Ô3×7Ò7¸ÀTÑJÔJÐØ'+Ô';×'?Ò'?ÀÐPTÑ'UÔ'UÐ$Ø&*Ô&:×&>Ò&>¸}ÈdÑ&SÔ&SÐ#ÝØÔ Ô 8Ñ8¸4Ô;OÐPgÔ;hÑhñ
ô 
ˆð  Ð'>Ð>Ð>ÝÐvÐ`tÐvÐvÑwÔwÐwà'Ð3åÐ7½Ñ>Ô>ðåÐZÐZÐ=YÐZÑZÔZÑZÔZðõ !Ø{Ð]yÐ{Ð{ñô ð õ Ð3Ñ4Ô4¸ÈÑ8IÒIÐIÝ ð LÈ|Ð_`ÑO`ð  Lð  LÕhkð  mIñ  iJô  iJð  Lð  Lñô ð ð 'Ð2åÐ6½Ñ=Ô=ðåÐYÐYÐ=XÐYÑYÔYÑYÔYðõ !ØyÐ\wÐyÐyñô ð õ Ð2Ñ3Ô3°|ÀqÑ7HÒHÐHÝ ð JÈlÐ^_ÑN_ð  Jð  JÕgjð  lGñ  hHô  hHð  Jð  Jñô ð ð 3Ð2ð IÐHr6   )r7   N)*Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚkeys_to_ignore_at_inferenceÚbase_model_tp_planÚbase_model_pp_planr   rP   Ú__annotations__r   r   r   r   r   r   rQ   r   r   r!   Ústrr"   r#   r$   r%   r&   Úboolr'   r(   r   rY   r*   r+   r[   r,   r-   r1   ÚsetrG   rX   Ú__classcell__)r4   s   @r5   r
   r
      s‡  ø€ € € € € € ðð ð( €JØ#4Ð"5Ðà'>Ø%:Ø%<Ø"7ð	ð Ðð &˜¨Ð(9Ð:Ø#Ð%5Ð6¸Ð8IÐJØ!Ð" _Ð$5Ð6ðð Ðð €J�ÐÐÑØ€K�ÐÐÑØ!Ð�sÐ!Ð!Ñ!ØÐ�sÐÐÑØ!Ð˜Ð!Ð!Ñ!Ø&*Ð˜˜t™Ð*Ð*Ñ*Ø"€K�˜‘Ð"Ð"Ñ"Ø!€J�˜‘Ð!Ð!Ñ!Ø%(Ð�u˜s‘{Ð(Ð(Ñ(Ø€J�ÐÐÑØ#'Ð˜SÐ'Ð'Ñ'Ø,0Ð$ cÐ0Ð0Ñ0Ø#Ð�uÐ#Ð#Ñ#Ø€L�%ÐÐÑØ€IˆtÐÐÑØ %Ð˜Ð%Ð%Ñ%Ø48€O�^ dÑ*¨TÑ1Ð8Ð8Ñ8Ø €L�#˜‘*Ð Ð Ñ Ø+0€L�#˜˜Sœ	‘/ DÑ(Ð0Ð0Ñ0Ø$€L�#˜‘*Ð$Ð$Ñ$Ø!%€N�C˜$‘JÐ%Ð%Ñ%ð(ð (ð (ð (ð (ð PTðð Ø  5™[ðØBEÈÁ*ðð ð ð ð$*ð *ð *ð *ð *ð *ð *ð *ð *r6   r
   N)rd   Úhuggingface_hub.dataclassesr   Úconfiguration_utilsr   Úmodeling_rope_utilsr   Úutilsr   r
   Ú__all__r/   r6   r5   ú<module>rs      s»   ðð  Ð à .Ð .Ð .Ð .Ð .Ð .à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø #Ð #Ð #Ð #Ð #Ð #ð €Ð=Ð>Ñ>Ô>Øð{ð {ð {ð {ð {Ð!ñ {ô {ñ „ñ ?Ô>ð{ð| ˆ.€€€r6   