Ë
    ÛÓ^j«  ã                   óÒ  — d dl Z ddlmZmZ ddlmZ  ej                  e«      Z e«       Z	de j                  de j                  j                  de j                  fd„Z	 	 	 	 	 	 dde j                  j                  de j                  d	e j                  d
e j                  de j                  dz  dededz  dedz  dedz  dedz  de j                  dz  dee j                  df   fd„Zy)é    Né   )Ú_flash_attention_forwardÚ!flash_attn_supports_top_left_mask)ÚloggingÚqueryÚmoduleÚreturnc                 ó~  — | j                   t        j                  k(  r | j                  j                  }t        j
                  |«      rt        j                  |«      S t        |j                  d«      r|j                  j                   S t        d„ |j                  «       D «       «      j                  j                   S y)ziIf the query is in float32, return a target dtype compatible with flash attention. Return None otherwise.Ú_is_quantizedc              3   ój   K  — | ]+  }t        |t        j                  j                  «      sŒ(|–— Œ- y ­w)N)Ú
isinstanceÚtorchÚnnÚLinear)Ú.0Úlayers     út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/integrations/flash_attention.pyú	<genexpr>z#get_target_dtype.<locals>.<genexpr>   s&   è ø€ Òb %¼zÈ%ÔQV×QYÑQY×Q`ÑQ`Õ?aœÑbùs   ‚)3¬3N)Údtyper   Úfloat32ÚdeviceÚtypeÚis_autocast_enabledÚget_autocast_dtypeÚhasattrÚconfigÚnextÚmodulesÚweight)r   r   Údevice_types      r   Úget_target_dtyper!      s…   € à‡{�{”e—m‘mÒ#Ø—l‘l×'Ñ'ˆÜ×$Ñ$ [Ô1Ü×+Ñ+¨KÓ8Ð8ä�V—]‘] OÔ4Ø—=‘=×&Ñ&Ð&äÑb¨6¯>©>Ó+;ÔbÓb×iÑi×oÑoÐoØó    ÚkeyÚvalueÚattention_maskÚdropoutÚscalingÚsliding_windowÚsoftcapÚ	is_causalÚs_auxc                 ó8  — |j                  dd«      rt        j                  d«       |j                  d   }t	        d„ |j                  D «       «      rt        d«      ‚|j                  dd«      }|j                  dd«      }|j                  dd«      }t        || «      }|	�|	n| j                  }	t        ||||f||	||||t        || j                  j                  t        | d«      r| j                  nd |
�|
j                  |j                   «      nd d	œ|¤Ž}|d fS )
NÚoutput_attentionsFz‚Flash Attention does not support `output_attentions=True`. Please set your attention to `eager` if you want any of these features.r   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­w)r   N© )r   Údims     r   r   z*flash_attention_forward.<locals>.<genexpr>1   s   è ø€ Ò
+˜ˆ3�!�8Ñ
+ùs   ‚z•Tensor query has shape  with a zero dimension.
FlashAttention does not support inputs with dim=0.
Please check your input shapes or use SDPA instead.é   Ú	layer_idx)Úquery_lengthr*   r&   Úsoftmax_scaler(   r)   Úuse_top_left_maskÚtarget_dtypeÚattn_implementationr2   r+   )ÚgetÚloggerÚwarning_onceÚshapeÚanyÚ
ValueErrorÚ	transposer!   r*   r   Ú_use_top_left_maskr   Ú_attn_implementationr   r2   Útor   )r   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   ÚkwargsÚseq_lenr6   Úattn_outputs                  r   Úflash_attention_forwardrE      s9  € ð ‡z�zÐ% uÔ-Ü×ÑðWô	
ð �k‰k˜!‰n€Gä
Ñ
+˜uŸ{™{Ô
+Ô+ÜðBó
ð 	
ð �O‰O˜A˜qÓ!€EØ
�-‰-˜˜1Ó
€CØ�O‰O˜A˜qÓ!€Eô $ E¨6Ó2€Lð 'Ð2‘	¸×8HÑ8H€Iä*ØØØØð	ð
 ØØØØ%ØÜ,Ø!Ø"ŸM™M×>Ñ>Ü&-¨f°kÔ&B�&×"Ò"Èð Ð ð �H‰H�U—[‘[Ô!àñ%ð( ñ)€Kð. ˜ÐÐr"   )g        NNNNN)r   Úmodeling_flash_attention_utilsr   r   Úutilsr   Ú
get_loggerÚ__name__r9   r?   ÚTensorr   ÚModuler   r!   ÚfloatÚintÚboolÚtuplerE   r/   r"   r   ú<module>rP      s3  ðÛ ç hÝ ð 
ˆ×	Ñ	˜HÓ	%€á6Ó8Ð ð˜EŸL™Lð °%·(±(·/±/ð ÀeÇkÁkó ð( Ø Ø!%Ø Ø!Ø!%ñCØ�H‰H�O‰OðCà�<‰<ðCð 
�‰ðCð �<‰<ð	Cð
 —L‘L 4Ñ'ðCð ðCð �T‰\ðCð ˜$‘JðCð �T‰\ðCð �d‰{ðCð �<‰<˜$ÑðCð ˆ5�<‰<˜ÐÑôCr"   