Ë
    S^(hsR  ã                   óü  — d dl Z d dlmZmZ d dl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mZmZmZmZmZmZmZ ddlmZ ddlmZ  ej<                  e«      Z dZ!dZ" G d„ de«      Z#d„ Z$ G d„ dejJ                  «      Z& G d„ de&«      Z' G d„ de&«      Z(e&e'e(dœ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«      Z. G d$„ d%e«      Z/ G d&„ d'e«      Z0g d(¢Z1y))é    N)ÚOptionalÚTuple)Únné   )ÚCacheÚStaticCache)Ú_flash_attention_forwardÚ!flash_attn_supports_top_left_mask)Úloggingé   )ÚGemmaForCausalLM)ÚLlamaDecoderLayerÚLlamaForQuestionAnsweringÚLlamaForSequenceClassificationÚLlamaForTokenClassificationÚ
LlamaModelÚLlamaPreTrainedModelÚapply_rotary_pos_embÚ	repeat_kv)Ú
MistralMLPé   )ÚDiffLlamaConfigzkajuma/DiffLlama-0.3B-handcutr   c                   ó   — e Zd Zy)ÚDiffLlamaMLPN©Ú__name__Ú
__module__Ú__qualname__© ó    úm/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/diffllama/modular_diffllama.pyr   r   1   ó   „ Ør    r   c                 ó>   — ddt        j                  d| z  «      z  z
  S )Ngš™™™™™é?g333333ã?g333333Ó¿)ÚmathÚexp)Ú	layer_idxs    r!   Úlambda_init_fnr'   5   s    € Ø�”t—x‘x  yÑ 0Ó1Ñ1Ñ1Ð1r    c                   ób  ‡ — e Zd ZdZddedee   fˆ fd„Z	 	 	 	 	 	 ddej                  de
ej                  ej                  f   deej                     deej                     d	ee   d
ededeej                     de
ej                  eej                     ee
ej                        f   fd„Zˆ xZS )ÚDiffLlamaAttentionz=Multi-headed attention from 'Attention Is All You Need' paperÚconfigr&   c                 óô  •— t         ‰| �  «        || _        || _        |€-t        j                  d| j                  j                  › d�«       |j                  | _        |j                  | _	        |j                  | _        t        |d| j                  | j                  z  «      | _        |j                  | _        | j                  | j                  z  | _        |j                   | _        |j"                  | _        d| _        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*                  ¬«      | _        t5        |«      | _        t'        j8                  t;        j<                  d|j>                  | j                  f¬«      «      | _         t'        j8                  t;        j<                  d|j>                  | j                  f¬«      «      | _!        t'        j8                  t;        j<                  d|j>                  | j                  f¬«      «      | _"        t'        j8                  t;        j<                  d|j>                  | j                  f¬«      «      | _#        t'        jH                  d| j                  z  |jJ                  d	¬
«      | _&        y )NzInstantiating z¹ without passing a `layer_idx` is not recommended and will lead to errors during the forward call if caching is used. Please make sure to provide a `layer_idx` when creating this class.Úhead_dimT)Úbiasr   )Úsizer   F)ÚepsÚelementwise_affine)'ÚsuperÚ__init__r*   r&   ÚloggerÚwarning_onceÚ	__class__r   Úattention_dropoutÚhidden_sizeÚnum_attention_headsÚ	num_headsÚgetattrr,   Únum_key_value_headsÚnum_key_value_groupsÚmax_position_embeddingsÚ
rope_thetaÚ	is_causalr   ÚLinearÚattention_biasÚq_projÚk_projÚv_projÚo_projr'   Úlambda_initÚ	ParameterÚtorchÚnormalÚlambda_std_devÚ	lambda_q1Ú	lambda_k1Ú	lambda_q2Ú	lambda_k2ÚRMSNormÚrms_norm_epsÚ	groupnorm©Úselfr*   r&   r5   s      €r!   r2   zDiffLlamaAttention.__init__<   s~  ø€ Ü‰ÑÔØˆŒØ"ˆŒØÐÜ×ÑØ  §¡×!8Ñ!8Ð 9ð :,ð ,ôð "(×!9Ñ!9ˆÔØ!×-Ñ-ˆÔØ×3Ñ3ˆŒÜ ¨
°D×4DÑ4DÈÏÉÑ4VÓWˆŒØ#)×#=Ñ#=ˆÔ Ø$(§N¡N°d×6NÑ6NÑ$NˆÔ!à'-×'EÑ'EˆÔ$Ø ×+Ñ+ˆŒØˆŒä—i‘i × 0Ñ 0°$·.±.À4Ç=Á=Ñ2PÐW]×WlÑWlÔmˆŒÜ—i‘i × 0Ñ 0°$×2JÑ2JÈTÏ]É]Ñ2ZÐag×avÑavÔwˆŒÜ—i‘i × 0Ñ 0°$×2JÑ2JÈTÏ]É]Ñ2ZÐag×avÑavÔwˆŒÜ—i‘i §¡°·±Ñ >À×@PÑ@PÐW]×WlÑWlÔmˆŒä)¨)Ó4ˆÔÜŸ™¤e§l¡l°1°f×6KÑ6KÐSW×S`ÑS`ÐRbÔ&cÓdˆŒÜŸ™¤e§l¡l°1°f×6KÑ6KÐSW×S`ÑS`ÐRbÔ&cÓdˆŒÜŸ™¤e§l¡l°1°f×6KÑ6KÐSW×S`ÑS`ÐRbÔ&cÓdˆŒÜŸ™¤e§l¡l°1°f×6KÑ6KÐSW×S`ÑS`ÐRbÔ&cÓdˆŒÜŸ™ A¨¯©Ñ$5¸6×;NÑ;NÐchÔiˆ�r    Úhidden_statesÚposition_embeddingsÚattention_maskÚposition_idsÚpast_key_valueÚoutput_attentionsÚ	use_cacheÚcache_positionÚreturnc	                 ó$  — |j                  «       \  }
}}|}| j                  |«      }| j                  |«      }| j                  |«      }|j	                  |
|| j
                  | j                  «      j                  dd«      }|j	                  |
|| j                  | j                  «      j                  dd«      }|j	                  |
|| j                  | j                  «      j                  dd«      }|\  }}t        ||||«      \  }}|�'|||dœ}|j                  ||| j                  |«      \  }}t        || j                  «      }t        || j                  «      }t        j                  t        j                   |dd¬«      d¬«      }|j#                  dddd«      }t        j$                  ||j                  dd«      «      t'        j(                  | j                  «      z  }|�#|d d …d d …d d …d |j*                  d   …f   }||z   }t,        j.                  j1                  |dt        j2                  ¬«      j5                  |j6                  «      }t,        j.                  j9                  || j:                  | j<                  ¬	«      }t        j>                  t        j@                  | jB                  | jD                  z  dt        j2                  ¬«      «      j5                  |j6                  «      }t        j>                  t        j@                  | jF                  | jH                  z  dt        j2                  ¬«      «      j5                  |j6                  «      }||z
  | jJ                  z   }t        j$                  ||«      }t        j                   |dd¬«      \  }}|||z  z
  }d| jJ                  z
  | jM                  |«      z  }|j                  dd«      jO                  «       }|jQ                  |
|d«      }| jS                  |«      }|sd }||fS )
Nr   r   ©ÚsinÚcosr[   ©Údiméÿÿÿÿr   éþÿÿÿ©rb   Údtype)ÚpÚtraining)*r.   rB   rC   rD   Úviewr9   r,   Ú	transposer;   r   Úupdater&   r   r<   rH   ÚcatÚchunkÚrepeatÚmatmulr$   ÚsqrtÚshaper   Ú
functionalÚsoftmaxÚfloat32Útorf   Údropoutr6   rh   r%   ÚsumrK   rL   rM   rN   rF   rQ   Ú
contiguousÚreshaperE   )rS   rT   rU   rV   rW   rX   rY   rZ   r[   ÚkwargsÚbszÚ
target_lenÚ_Úq_lenÚquery_statesÚ
key_statesÚvalue_statesr`   r_   Úcache_kwargsÚattn_weightsÚcausal_maskÚlambda_1Úlambda_2Úlambda_fullÚattn_outputÚattn_output1Úattn_output2s                               r!   ÚforwardzDiffLlamaAttention.forward^   s„  € ð +×/Ñ/Ó1ÑˆˆZ˜Øˆà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà#×(Ñ(¨¨e°T·^±^ÀTÇ]Á]ÓS×]Ñ]Ð^_ÐabÓcˆØ—_‘_ S¨%°×1IÑ1IÈ4Ï=É=ÓY×cÑcÐdeÐghÓiˆ
Ø#×(Ñ(¨¨e°T×5MÑ5MÈtÏ}É}Ó]×gÑgÐhiÐklÓmˆà&‰ˆˆSÜ#7¸ÀjÐRUÐWZÓ#[Ñ ˆ�jàÐ%à#&¨sÀnÑUˆLØ'5×'<Ñ'<¸ZÈÐW[×WeÑWeÐgsÓ'tÑ$ˆJ˜ä˜z¨4×+DÑ+DÓEˆ
Ü  ¨t×/HÑ/HÓIˆÜ—y‘y¤§¡¨\¸1À!Ô!DÈ"ÔMˆØ#×*Ñ*¨1¨a°°AÓ6ˆä—|‘| L°*×2FÑ2FÀqÈ!Ó2LÓMÔPT×PYÑPYÐZ^×ZgÑZgÓPhÑhˆàÐ%Ø(ªªAªqÐ2H°J×4DÑ4DÀRÑ4HÐ2HÐ)HÑIˆKØ'¨+Ñ5ˆLô —}‘}×,Ñ,¨\¸rÌÏÉÐ,ÓW×ZÑZÐ[g×[mÑ[mÓnˆÜ—}‘}×,Ñ,¨\¸T×=SÑ=SÐ^b×^kÑ^kÐ,ÓlˆÜ—9‘9œUŸY™Y t§~¡~¸¿¹Ñ'FÈBÔV[×VcÑVcÔdÓe×hÑhØ×Ñó
ˆô —9‘9œUŸY™Y t§~¡~¸¿¹Ñ'FÈBÔV[×VcÑVcÔdÓe×hÑhØ×Ñó
ˆð  Ñ)¨D×,<Ñ,<Ñ<ˆä—l‘l <°Ó>ˆÜ%*§[¡[°¸aÀQÔ%GÑ"ˆ�là" [°<Ñ%?Ñ?ˆØ˜4×+Ñ+Ñ+¨t¯~©~¸kÓ/JÑJˆØ!×+Ñ+¨A¨qÓ1×<Ñ<Ó>ˆØ!×)Ñ)¨#¨u°bÓ9ˆà—k‘k +Ó.ˆá ØˆLà˜LÐ(Ð(r    ©N©NNNFFN)r   r   r   Ú__doc__r   r   Úintr2   rH   ÚTensorr   Ú
LongTensorr   Úboolr‹   Ú__classcell__©r5   s   @r!   r)   r)   9   sü   ø„ ÙGñ j˜ð  j¸8ÀC¹=õ  jðL 26Ø37Ø*.Ø"'ØØ59ñB)à—|‘|ðB)ð # 5§<¡<°·±Ð#=Ñ>ðB)ð ! §¡Ñ.ð	B)ð
 ˜u×/Ñ/Ñ0ðB)ð ! ™ðB)ð  ðB)ð ðB)ð ! ×!1Ñ!1Ñ2ðB)ð 
ˆu�|‰|˜X e§l¡lÑ3°X¸eÀEÇLÁLÑ>QÑ5RÐRÑ	S÷B)r    r)   c                   óP  ‡ — e Zd ZdZˆ fd„Z	 	 	 	 	 	 ddej                  deej                  ej                  f   deej                     deej                     dee
   ded	ed
eej                     deej                  eej                     eeej                        f   fd„Zˆ xZS )ÚDiffLlamaFlashAttention2aN  
    DiffLlama flash attention module. This module inherits from `DiffLlamaAttention` as the weights of the module stays
    untouched. The only required change would be on the forward pass where it needs to correctly call the public API of
    flash attention and deal with padding tokens in case the input contains any of them.
    c                 óB   •— t        ‰| �  |i |¤Ž t        «       | _        y rŒ   )r1   r2   r
   Ú_flash_attn_uses_top_left_mask)rS   Úargsrz   r5   s      €r!   r2   z!DiffLlamaFlashAttention2.__init__ª   s#   ø€ Ü‰Ñ˜$Ð) &Ò)ô
 /PÓ.QˆÕ+r    rT   rU   rV   rW   rX   rY   rZ   r[   r\   c	                 ó 	  — t        |t        «      rt        d«      ‚d}|j                  «       \  }	}
}| j	                  |«      }| j                  |«      }| j                  |«      }|j                  |	|
| j                  | j                  «      j                  dd«      }|j                  |	|
| j                  | j                  «      j                  dd«      }|j                  |	|
| j                  | j                  «      j                  dd«      }|€+t        j                  d«       | j                  ||«      \  }}n|\  }}t        ||||«      \  }}|�'|||dœ}|j!                  ||| j"                  |«      \  }}|j                  dd«      }|j                  dd«      }|j                  dd«      }| j$                  r| j&                  nd}|j(                  }|t*        j,                  k(  rÂt+        j.                  «       rt+        j0                  «       }nMt3        | j4                  d«      r| j4                  j6                  }n | j                  j8                  j(                  }t        j                  d	|› d
�«       |j;                  |«      }|j;                  |«      }|j;                  |«      }t+        j<                  |dd¬«      \  }}|j?                  dddd«      }|j?                  dddd«      }tA        |||||
||tC        | dd «      | jD                  | jF                  ¬«
      }tA        |||||
||tC        | dd «      | jD                  | jF                  ¬«
      }t+        jH                  ||gd¬«      }t+        j<                  |dd¬«      \  }}t+        jJ                  t+        jL                  | jN                  | jP                  z  dt*        j,                  ¬«      «      j;                  |j(                  «      }t+        jJ                  t+        jL                  | jR                  | jT                  z  dt*        j,                  ¬«      «      j;                  |j(                  «      }||z
  | jV                  z   }|||z  z
  }d| jV                  z
  | jY                  |«      z  }|j[                  |	|
d«      j]                  «       }| j_                  |«      }|sd }|fS )NzÈ`static` cache implementation is not compatible with `attn_implementation==flash_attention_2` make sure to use `sdpa` in the mean time, and open an issue at https://github.com/huggingface/transformersFr   r   aY  The attention layers in this model are transitioning from computing the RoPE embeddings internally through `position_ids` (2D tensor with the indexes of the tokens), to using externally computed `position_embeddings` (Tuple of tensors, containing cos and sin). In v4.46 `position_ids` will be removed and `position_embeddings` will be mandatory.r^   ç        Ú_pre_quantization_dtypez¾The input hidden states seems to be silently casted in float32, this might be related to the fact you have upcasted embedding or layer norm layers in float32. We will cast back the input in ú.ra   Úsliding_window)rW   rv   rž   Úuse_top_left_maskr?   rc   re   )0Ú
isinstancer   Ú
ValueErrorr.   rB   rC   rD   ri   r9   r,   rj   r;   r3   r4   Ú
rotary_embr   rk   r&   rh   r6   rf   rH   rt   Úis_autocast_enabledÚget_autocast_gpu_dtypeÚhasattrr*   rœ   Úweightru   rm   rn   r	   r:   r˜   r?   rl   r%   rw   rK   rL   rM   rN   rF   rQ   ry   rx   rE   )rS   rT   rU   rV   rW   rX   rY   rZ   r[   r{   r~   r}   r   r€   r�   r`   r_   r‚   Údropout_rateÚinput_dtypeÚtarget_dtypeÚvalue_states1Úvalue_states2r‰   rŠ   rˆ   r…   r†   r‡   rƒ   s                                 r!   r‹   z DiffLlamaFlashAttention2.forward²   sh  € ô �n¤kÔ2Üð}óð ð
 "Ðà%×*Ñ*Ó,‰ˆˆU�Aà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆð
 $×(Ñ(¨¨e°T·^±^ÀTÇ]Á]ÓS×]Ñ]Ð^_ÐabÓcˆØ—_‘_ S¨%°×1IÑ1IÈ4Ï=É=ÓY×cÑcÐdeÐghÓiˆ
Ø#×(Ñ(¨¨e°T×5MÑ5MÈtÏ}É}Ó]×gÑgÐhiÐklÓmˆàÐ&Ü×ÑðGôð —‘ |°\ÓB‰HˆC‘à*‰HˆC�Ü#7¸ÀjÐRUÐWZÓ#[Ñ ˆ�jàÐ%à#&¨sÀnÑUˆLØ'5×'<Ñ'<¸ZÈÐW[×WeÑWeÐgsÓ'tÑ$ˆJ˜ð $×-Ñ-¨a°Ó3ˆØ×)Ñ)¨!¨QÓ/ˆ
Ø#×-Ñ-¨a°Ó3ˆà15·²�t×-Ò-ÀCˆð #×(Ñ(ˆØœ%Ÿ-™-Ò'Ü×(Ñ(Ô*Ü$×;Ñ;Ó=‘ä˜Ÿ™Ð&?Ô@Ø#Ÿ{™{×BÑB‘à#Ÿ{™{×1Ñ1×7Ñ7�ä×Ñðà �> ð$ôð (Ÿ?™?¨<Ó8ˆLØ#Ÿ™ |Ó4ˆJØ'Ÿ?™?¨<Ó8ˆLä',§{¡{°<ÀÈÔ'JÑ$ˆ�}Ø%×,Ñ,¨Q°°1°aÓ8ˆØ%×,Ñ,¨Q°°1°aÓ8ˆä/ØØØØØØ%Ø Ü" 4Ð)9¸4Ó@Ø"×AÑAØ—n‘nô
ˆô 0ØØØØØØ%Ø Ü" 4Ð)9¸4Ó@Ø"×AÑAØ—n‘nô
ˆô —i‘i ¨|Ð <À"ÔEˆÜ%*§[¡[°¸aÀQÔ%GÑ"ˆ�lä—9‘9œUŸY™Y t§~¡~¸¿¹Ñ'FÈBÔV[×VcÑVcÔdÓe×hÑhØ×Ñó
ˆô —9‘9œUŸY™Y t§~¡~¸¿¹Ñ'FÈBÔV[×VcÑVcÔdÓe×hÑhØ×Ñó
ˆð  Ñ)¨D×,<Ñ,<Ñ<ˆà" [°<Ñ%?Ñ?ˆØ˜4×+Ñ+Ñ+¨t¯~©~¸kÓ/JÑJˆØ!×)Ñ)¨#¨u°bÓ9×DÑDÓFˆØ—k‘k +Ó.ˆá ØˆLà˜LÐ(Ð(r    r�   )r   r   r   rŽ   r2   rH   r�   r   r   r‘   r   r’   r‹   r“   r”   s   @r!   r–   r–   £   së   ø„ ñôRð 6:Ø37Ø*.Ø"'ØØ59ñD)à—|‘|ðD)ð # 5§<¡<°·±Ð#=Ñ>ðD)ð ! ×!1Ñ!1Ñ2ð	D)ð
 ˜u×/Ñ/Ñ0ðD)ð ! ™ðD)ð  ðD)ð ðD)ð ! ×!1Ñ!1Ñ2ðD)ð 
ˆu�|‰|˜X e§l¡lÑ3°X¸eÀEÇLÁLÑ>QÑ5RÐRÑ	S÷D)r    r–   c                   óJ  ‡ — e Zd ZdZ	 	 	 	 	 	 ddej
                  deej
                  ej
                  f   deej
                     deej                     dee	   de
de
d	eej                     d
eej
                  eej
                     eeej
                        f   fˆ fd„Zˆ xZS )ÚDiffLlamaSdpaAttentiona   
    DiffLlama attention module using torch.nn.functional.scaled_dot_product_attention. This module inherits from
    `DiffLlamaAttention` as the weights of the module stays untouched. The only changes are on the forward pass to adapt to
    SDPA API.
    rT   rU   rV   rW   rX   rY   rZ   r[   r\   c	           
      óô  •— |r,t         j                  d«       t        ‰| �  ||||||||¬«      S |j	                  «       \  }
}}| j                  |«      }| j                  |«      }| j                  |«      }|j                  |
|| j                  | j                  «      j                  dd«      }|j                  |
|| j                  | j                  «      j                  dd«      }|j                  |
|| j                  | j                  «      j                  dd«      }|\  }}t        ||||«      \  }}|�'|||dœ}|j                  ||| j                  |«      \  }}t!        || j"                  «      }t!        || j"                  «      }t%        j&                  t%        j(                  |dd¬«      d¬«      }|j+                  dddd«      }|}|�|d d …d d …d d …d |j,                  d   …f   }|j.                  j0                  d	k(  r2|�0|j3                  «       }|j3                  «       }|j3                  «       }|€|dkD  rd
nd}t$        j4                  j6                  j9                  ||||| j:                  r| j<                  nd|¬«      }t%        j(                  |dd¬«      \  }}t%        j>                  t%        j@                  | jB                  | jD                  z  dt$        jF                  ¬«      «      jI                  |jJ                  «      }t%        j>                  t%        j@                  | jL                  | jN                  z  dt$        jF                  ¬«      «      jI                  |jJ                  «      }||z
  | jP                  z   }|||z  z
  }d| jP                  z
  | jS                  |«      z  }|j                  dd«      j3                  «       }|j                  |
|d«      }| jU                  |«      }|d fS )Na�  DiffLlamaModel is using DiffLlamaSdpaAttention, but `torch.nn.functional.scaled_dot_product_attention` does not support `output_attentions=True`. Falling back to the manual attention implementation, but specifying the manual implementation will be required from Transformers version v5.0.0 onwards. This warning can be removed using the argument `attn_implementation="eager"` when loading the model.)rT   rV   rW   rX   rY   rZ   r[   rU   r   r   r^   ra   rc   rd   ÚcudaTFr›   )Ú	attn_maskÚ	dropout_pr?   re   )+r3   r4   r1   r‹   r.   rB   rC   rD   ri   r9   r,   rj   r;   r   rk   r&   r   r<   rH   rl   rm   rn   rq   ÚdeviceÚtyperx   r   rr   Úscaled_dot_product_attentionrh   r6   r%   rw   rK   rL   rt   ru   rf   rM   rN   rF   rQ   rE   )rS   rT   rU   rV   rW   rX   rY   rZ   r[   rz   r{   r~   r}   r   r€   r�   r`   r_   r‚   r„   r?   rˆ   r‰   rŠ   r…   r†   r‡   r5   s                              €r!   r‹   zDiffLlamaSdpaAttention.forwardA  s¶  ø€ ñ ä×Ñð[ôô ‘7‘?Ø+Ø-Ø)Ø-Ø"3Ø#Ø-Ø$7ð #ó 	ð 	ð &×*Ñ*Ó,‰ˆˆU�Aà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà#×(Ñ(¨¨e°T·^±^ÀTÇ]Á]ÓS×]Ñ]Ð^_ÐabÓcˆØ—_‘_ S¨%°×1IÑ1IÈ4Ï=É=ÓY×cÑcÐdeÐghÓiˆ
Ø#×(Ñ(¨¨e°T×5MÑ5MÈtÏ}É}Ó]×gÑgÐhiÐklÓmˆà&‰ˆˆSÜ#7¸ÀjÐRUÐWZÓ#[Ñ ˆ�jàÐ%à#&¨sÀnÑUˆLØ'5×'<Ñ'<¸ZÈÐW[×WeÑWeÐgsÓ'tÑ$ˆJ˜ä˜z¨4×+DÑ+DÓEˆ
Ü  ¨t×/HÑ/HÓIˆÜ—y‘y¤§¡¨\¸1À!Ô!DÈ"ÔMˆØ#×*Ñ*¨1¨a°°AÓ6ˆà$ˆØÐ%Ø%¢aªªAÐ/E°×1AÑ1AÀ"Ñ1EÐ/EÐ&EÑFˆKð ×Ñ×#Ñ# vÒ-°+Ð2IØ'×2Ñ2Ó4ˆLØ#×.Ñ.Ó0ˆJØ'×2Ñ2Ó4ˆLð (Ð/°E¸A²I‘DÀ5ˆ	ä—h‘h×)Ñ)×FÑFØØØØ!Ø04·²�d×,Ò,À3Øð Gó 
ˆô &+§[¡[°¸aÀQÔ%GÑ"ˆ�lä—9‘9œUŸY™Y t§~¡~¸¿¹Ñ'FÈBÔV[×VcÑVcÔdÓe×hÑhØ×Ñó
ˆô —9‘9œUŸY™Y t§~¡~¸¿¹Ñ'FÈBÔV[×VcÑVcÔdÓe×hÑhØ×Ñó
ˆð  Ñ)¨D×,<Ñ,<Ñ<ˆà" [°<Ñ%?Ñ?ˆØ˜4×+Ñ+Ñ+¨t¯~©~¸kÓ/JÑJˆØ!×+Ñ+¨A¨qÓ1×<Ñ<Ó>ˆØ!×&Ñ& s¨E°2Ó6ˆØ—k‘k +Ó.ˆà˜DÐ Ð r    r�   )r   r   r   rŽ   rH   r�   r   r   r‘   r   r’   r‹   r“   r”   s   @r!   r­   r­   9  sé   ø„ ñð 26Ø37Ø*.Ø"'ØØ59ñ\!à—|‘|ð\!ð # 5§<¡<°·±Ð#=Ñ>ð\!ð ! §¡Ñ.ð	\!ð
 ˜u×/Ñ/Ñ0ð\!ð ! ™ð\!ð  ð\!ð ð\!ð ! ×!1Ñ!1Ñ2ð\!ð 
ˆu�|‰|˜X e§l¡lÑ3°X¸eÀEÇLÁLÑ>QÑ5RÐRÑ	S÷\!ñ \!r    r­   )ÚeagerÚflash_attention_2Úsdpac                   ó(   ‡ — e Zd Zdedefˆ fd„Zˆ xZS )ÚDiffLlamaDecoderLayerr*   r&   c                 ód   •— t         ‰| �  ||«       t        |j                     ||¬«      | _        y )N)r*   r&   )r1   r2   ÚDIFFLLAMA_ATTENTION_CLASSESÚ_attn_implementationÚ	self_attnrR   s      €r!   r2   zDiffLlamaDecoderLayer.__init__¨  s-   ø€ Ü‰Ñ˜ Ô+ä4°V×5PÑ5PÑQÐY_ÐktÔuˆ�r    )r   r   r   r   r�   r2   r“   r”   s   @r!   r¹   r¹   §  s   ø„ ðv˜ð v¸3÷ vñ vr    r¹   c                   ó   — e Zd ZdZdZy)ÚDiffLlamaPreTrainedModelFN)r   r   r   Ú_supports_flex_attnÚ_supports_attention_backendr   r    r!   r¿   r¿   ®  s   „ ØÐØ"'Ñr    r¿   c                   ó   — e Zd Zy)ÚDiffLlamaModelNr   r   r    r!   rÃ   rÃ   ³  r"   r    rÃ   c                   ó   — e Zd Zy)ÚDiffLlamaForCausalLMNr   r   r    r!   rÅ   rÅ   ·  r"   r    rÅ   c                   ó   — e Zd Zy)Ú"DiffLlamaForSequenceClassificationNr   r   r    r!   rÇ   rÇ   »  r"   r    rÇ   c                   ó   — e Zd Zy)ÚDiffLlamaForQuestionAnsweringNr   r   r    r!   rÉ   rÉ   ¿  r"   r    rÉ   c                   ó   — e Zd Zy)ÚDiffLlamaForTokenClassificationNr   r   r    r!   rË   rË   Ã  r"   r    rË   )r¿   rÃ   rÅ   rÇ   rÉ   rË   )2r$   Útypingr   r   rH   Útorch.utils.checkpointr   Úcache_utilsr   r   Úmodeling_flash_attention_utilsr	   r
   Úutilsr   Úgemma.modeling_gemmar   Úllama.modeling_llamar   r   r   r   r   r   r   r   Úmistral.modeling_mistralr   Úconfiguration_diffllamar   Ú
get_loggerr   r3   Ú_CHECKPOINT_FOR_DOCÚ_CONFIG_FOR_DOCr   r'   ÚModuler)   r–   r­   r»   r¹   r¿   rÃ   rÅ   rÇ   rÉ   rË   Ú__all__r   r    r!   ú<module>rÚ      s  ðó$ ß "ã Û Ý ç -ß iÝ Ý 3÷	÷ 	ó 	õ 2Ý 4ð 
ˆ×	Ñ	˜HÓ	%€à5Ð Ø#€ô	�:ô 	ò2ôg)˜Ÿ™ô g)ôTS)Ð1ô S)ôld!Ð/ô d!ðP  Ø1Ø"ñÐ ôvÐ-ô vô(Ð3ô (ô
	�Zô 	ô	Ð+ô 	ô	Ð)Gô 	ô	Ð$=ô 	ô	Ð&Aô 	ò�r    