Ë
    Gêñiy  ã                   óÒ  — 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                 óR  — | j                   t        j                  k(  rŠt        j                  d«      rt        j                  d«      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.ÚcudaÚ_is_quantizedc              3   ój   K  — | ]+  }t        |t        j                  j                  «      sŒ(|–— Œ- y ­w)N)Ú
isinstanceÚtorchÚnnÚLinear)Ú.0Úlayers     úk/var/www/pod-logistic/pod-ai/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Úis_autocast_enabledÚget_autocast_dtypeÚhasattrÚconfigÚnextÚmodulesÚweight)r   r   s     r   Úget_target_dtyper      sv   € à‡{�{”e—m‘mÒ#Ü×$Ñ$ VÔ,Ü×+Ñ+¨FÓ3Ð3ä�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>0   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_implementationr0   r)   )ÚgetÚloggerÚwarning_onceÚshapeÚanyÚ
ValueErrorÚ	transposer   r(   r   Ú_use_top_left_maskr   Ú_attn_implementationr   r0   Útor   )r   r   r!   r"   r#   r$   r%   r&   r'   r(   r)   ÚkwargsÚseq_lenr4   Úattn_outputs                  r   Úflash_attention_forwardrC      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__r7   r=   ÚTensorr   ÚModuler   r   ÚfloatÚintÚboolÚtuplerC   r-   r    r   ú<module>rN      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    