§
    ‚Štj«  ã                   ód  — 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dS )é    Né   )Ú_flash_attention_forwardÚ!flash_attn_supports_top_left_mask)ÚloggingÚqueryÚmoduleÚreturnc                 óD  — | j         t          j        k    rŠ| j        j        }t          j        |¦  «        rt          j        |¦  «        S t          |j        d¦  «        r|j        j         S t          d„ | 
                    ¦   «         D ¦   «         ¦  «        j        j         S dS )ziIf the query is in float32, return a target dtype compatible with flash attention. Return None otherwise.Ú_is_quantizedc              3   óX   K  — | ]%}t          |t          j        j        ¦  «        ¯!|V — Œ&d S )N)Ú
isinstanceÚtorchÚnnÚLinear)Ú.0Úlayers     úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/integrations/flash_attention.pyú	<genexpr>z#get_target_dtype.<locals>.<genexpr>   s8   è è € ÐbÐb %½zÈ%ÕQVÔQYÔQ`Ñ?aÔ?aÐb˜ÐbÐbÐbÐbÐbÐbó    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Ò#Ð#Ø”lÔ'ˆÝÔ$ [Ñ1Ô1ð 	pÝÔ+¨KÑ8Ô8Ð8å�V”] OÑ4Ô4ð 	pØ”=Ô&Ð&åÐbÐb¨6¯>ª>Ñ+;Ô+;ÐbÑbÔbÑbÔbÔiÔoÐoØˆ4r   ç        ÚkeyÚvalueÚattention_maskÚdropoutÚscalingÚsliding_windowÚsoftcapÚ	is_causalÚs_auxc                 óT  — |                      dd¦  «        rt                               d¦  «         |j        d         }t	          d„ |j        D ¦   «         ¦  «        rt          d¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }t          || ¦  «        }|	�|	n| j        }	t          ||||f||	||||t          || j        j        t          | d¦  «        r| j        nd |
�|
                     |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    V — ŒdS )r   N© )r   Údims     r   r   z*flash_attention_forward.<locals>.<genexpr>1   s&   è è € Ð
+Ð
+˜ˆ3�!Š8Ð
+Ð
+Ð
+Ð
+Ð
+Ð
+r   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_implementationr3   r,   )ÚgetÚloggerÚwarning_onceÚshapeÚanyÚ
ValueErrorÚ	transposer"   r+   r   Ú_use_top_left_maskr   Ú_attn_implementationr   r3   Útor   )r   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   ÚkwargsÚseq_lenr7   Úattn_outputs                  r   Úflash_attention_forwardrF      sw  € ð ‡z‚zÐ% uÑ-Ô-ð 
Ý×ÒðWñ	
ô 	
ð 	
ð Œk˜!Œn€Gå
Ð
+Ð
+˜uœ{Ð
+Ñ
+Ô
+Ñ+Ô+ð 
ÝðBñ
ô 
ð 	
ð �OŠO˜A˜qÑ!Ô!€EØ
�-Š-˜˜1Ñ
Ô
€CØ�OŠO˜A˜qÑ!Ô!€Eõ $ E¨6Ñ2Ô2€Lð 'Ð2�	�	¸Ô8H€Iå*ØØØØð	ð
 ØØØØ%ØÝ,Ø!Ø"œMÔ>Ý&-¨f°kÑ&BÔ&BÐL�&Ô"Ð"Èð Ð ð �HŠH�U”[Ñ!Ô!Ð!àð%ð ð( ð)ð €Kð. ˜ÐÐr   )r#   NNNNN)r   Úmodeling_flash_attention_utilsr   r   Úutilsr   Ú
get_loggerÚ__name__r:   r@   ÚTensorr   ÚModuler   r"   ÚfloatÚintÚboolÚtuplerF   r0   r   r   ú<module>rQ      s~  ðØ €€€à hÐ hÐ hÐ hÐ hÐ hÐ hÐ hØ Ð Ð Ð Ð Ð ð 
ˆÔ	˜HÑ	%Ô	%€à6Ð6Ñ8Ô8Ð ð˜EœLð °%´(´/ð ÀeÄkð ð ð ð ð( Ø Ø!%Ø Ø!Ø!%ðCð CØŒHŒOðCàŒ<ðCð 
ŒðCð Œ<ð	Cð
 ”L 4Ñ'ðCð ðCð �T‰\ðCð ˜$‘JðCð �T‰\ðCð �d‰{ðCð Œ<˜$ÑðCð ˆ5Œ<˜ÐÔðCð Cð Cð Cð Cð Cr   