
    rh                     0   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y)    )OptionalNhidden_statesn_repreturnc                     | j                   \  }}}}|dk(  r| S | dddddddddf   j                  |||||      } | j                  |||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         w/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/transformers/integrations/sdpa_paged.py	repeat_kvr      so    
 2?1D1D.Ehz!!Qa"23::5BUW\^bdlmM  (;e(CT8TT    modulequerykeyvalueattention_maskdropoutscaling	is_causalc           	         |j                  dd       }	|	" |	j                  ||| j                  fi |\  }}t        | d      r,t	        || j
                        }t	        || j
                        }|}
|j                         }|j                         }|j                         }t        j                  j                  j                  ||||
||d      }|j                  dd      j                         }|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_forwardr/      s     JJw%E!U\\#uf.>.>I&I
Uv-.V889%!<!<= KE
..
CE((%%BB C K ''1-88:Kr   )g        NN)typingr   r'   Tensorintr   r(   Modulefloatbooltupler/    r   r   <module>r8      s     	UU\\ 	U# 	U%,, 	U$ # $!HHOO!<<! 
! <<	!
 U\\*! ! e_! ~! 5<<!r   