§
    Ý˜ºh¹  ã                   óð   — d dl mZ d dlZdej        dedej        fd„Z	 	 	 ddej        j        d	ej        d
ej        dej        deej                 dedee         dee	         de
ej        df         fd„ZdS )é    )ÚOptionalNÚhidden_statesÚn_repÚreturnc                 ó¸   — | j         \  }}}}|dk    r| S | dd…dd…ddd…dd…f                              |||||¦  «        } |                      |||z  ||¦  «        S )zÔ
    This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
    num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
    é   N)ÚshapeÚexpandÚreshape)r   r   ÚbatchÚnum_key_value_headsÚslenÚhead_dims         úl/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/transformers/integrations/sdpa_paged.pyÚ	repeat_kvr      s„   € ð
 2?Ô1DÑ.€EÐ  hØ�‚z€zØÐØ! ! ! ! Q Q Q¨¨a¨a¨a°°°Ð"2Ô3×:Ò:¸5ÐBUÐW\Ð^bÐdlÑmÔm€MØ× Ò  Ð(;¸eÑ(CÀTÈ8ÑTÔTÐTó    ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚdropoutÚscalingÚ	is_causalc           	      ó   — |                      dd ¦  «        }	|	� |	j        ||| j        fi |¤Ž\  }}t          | d¦  «        r*t	          || j        ¦  «        }t	          || j        ¦  «        }|}
|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }t          j        j	         
                    ||||
||d¬¦  «        }|                     dd¦  «                             ¦   «         }|d fS )NÚcacheÚnum_key_value_groupsF)Ú	attn_maskÚ	dropout_pÚscaler   r   é   )ÚpopÚupdateÚ	layer_idxÚhasattrr   r   Ú
contiguousÚtorchÚnnÚ
functionalÚscaled_dot_product_attentionÚ	transpose)r   r   r   r   r   r   r   r   Úkwargsr   Úcausal_maskÚattn_outputs               r   Úsdpa_attention_paged_forwardr0      s  € ð �JŠJ�w Ñ%Ô%€EØÐØ!�U”\ # u¨fÔ.>ÐIÐIÀ&ÐIÐI‰
ˆˆUÝˆvÐ-Ñ.Ô.ð >Ý˜˜VÔ8Ñ9Ô9ˆÝ˜% Ô!<Ñ=Ô=ˆà €KØ×ÒÑÔ€EØ
�.Š.Ñ
Ô
€CØ×ÒÑÔ€EÝ”(Ô%×BÒBØØØØØØØð Cñ ô €Kð ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜ÐÐr   )r   NN)Útypingr   r(   ÚTensorÚintr   r)   ÚModuleÚfloatÚboolÚtupler0   © r   r   ú<module>r9      sý   ðØ Ð Ð Ð Ð Ð à €€€ð	U˜Uœ\ð 	U°#ð 	U¸%¼,ð 	Uð 	Uð 	Uð 	Uð$ Ø#Ø $ð!ð !ØŒHŒOð!àŒ<ð!ð 
Œð!ð Œ<ð	!ð
 ˜Uœ\Ô*ð!ð ð!ð �eŒ_ð!ð ˜Œ~ð!ð ˆ5Œ<˜ÐÔð!ð !ð !ð !ð !ð !r   