
    9i@              #       V   % S SK r S SKJrJrJr  S SKJr  S SKrS SKJ	r	  \" S5      r
\" S5      r0 r\\R                  R                  \4   \S'   \" 1 Sk5      rS	\S
\S\\\
\4   /\\
\4   4   4S jr\" SS5       S4SS S S.S\R,                  S\R,                  S\R,                  S\\R,                     S\S\S\S\R,                  4S jjj5       rS\\   S\S\4S jrS\R,                  S\S\S\R,                  4S jrS\R,                  S \R,                  S!\S"\S\\   S#\S\R,                  4S$ jrS!\S"\SS4S% jrS\R,                  S \R,                  S!\S"\S\\   S\R,                  4S& jr\" S'S5         S5SS S S SS(SS).S\R,                  S \R,                  S*\R,                  S+\\R,                     S,\\R,                     S-\\R,                     S.\S/\S0\S#\S\\   S1\S2\\   S\\R,                  \R,                  \R,                  \R,                  4   4S3 jjj5       r g)6    N)CallableOptionalTypeVar)	ParamSpec)_dtype_mappings_P_RONNX_ATEN_DECOMP_TABLE>      
         op_typeopset_versionreturnc                 h   ^ ^ S[         [        [        4   S[         [        [        4   4U U4S jjnU$ )zDDecorator to register an ONNX operator with a custom implementation.funcr   c                    > ST 3n[         R                  R                  ST SU 3SS9" U 5      nU [        [	        [	        [         R
                  R                  T5      U5      '   UR                  U 5        U$ )Nopsetzonnx::. )mutates_args)torchlibrary	custom_opr
   getattropsonnxregister_fake)r   overloadtorch_opr   r   s      T/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/onnx/ops/_impl.py	decorator_onnx_op.<locals>.decorator   s|    =/*==**WIQxj) + 

  	wwuyy~~w'GRS
 	t$    )r   r   r	   )r   r   r#   s   `` r"   _onnx_opr&      s5    
R( Xb"f-=   r%   RotaryEmbedding   F)interleaved	num_headsrotary_embedding_dimx	cos_cache	sin_cacheposition_idsr)   r*   r+   c                  ^^^^^^^^^ U R                   m[        T5      nTS   mTS   mTb  [        R                  " TR	                  5       S:H  U4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TR	                  5       S:H  =(       a    TR	                  5       S:H  UU4S	 j5        OG[        R                  " TR	                  5       S
:H  =(       a    TR	                  5       S
:H  UU4S j5        US:X  a  [        R
                  " U S5      n OHUS
:X  aB  [        R                  " US:g  U4S j5        TS   nX-  n	TTXY/n
[        R                  " X
5      n [        R                  " [        U R                   5      S:H  S 5        U R                   S
   n	US:X  a  U	nU SS2SS2SS2SU24   nU SS2SS2SS2US24   nUS-  mTb  TT   mTT   mOTmTm[        R                  " TR                   S   T:H  =(       a    TR                   S   T:H  UUU4S j5        [        R                  " TR                   S   T:H  =(       a    TR                   S   T:H  UUU4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TR                   S   T:H  UU4S j5        [        R                  " TS5      m[        R                  " TS5      mU(       a%  USS2SS2SS2SSS24   nUSS2SS2SS2SSS24   nO[        R                  " USSS9u  pTU-  TU-  -
  nTU-  TU-  -   nU(       ag  [        R                  " US5      n[        R                  " US5      n[        R                  " UU4SS9n[        R                  " UUR                   5      nO[        R                  " UU4SS9n[        R                  " X4SS9nUS
:X  a  [        R                  " UT5      $ [        R
                  " US5      $ )z_RotaryEmbedding-23 https://onnx.ai/onnx/operators/onnx__RotaryEmbedding.html#rotaryembedding-23r   N   c                  "   > ST R                    3$ )Nz6position_ids must be 2D when provided. Received shape shape)r/   s   r"   <lambda>%rotary_embedding_23.<locals>.<lambda>F   s    L\M_M_L`ar%   c                  .   > ST  STR                   S    3$ )Nz6position_ids first dim (batch) must match x.shape[0] (). Received r   r4   )
batch_sizer/   s   r"   r6   r7   J   s"    LZLXdeqewewxyezd{|r%   r   c                  .   > ST ST R                   S    3$ )Nz;position_ids second dim (sequence) must match x.shape[-2] (r9   r   r4   )r/   sequence_lengths   r"   r6   r7   N   s;    QRaQbbno{  pB  pB  CD  pE  oF  Gr%   c                  <   > ST R                    STR                    3$ )NzWcos_cache/sin_cache must be 2D when position_ids is provided. Received cos_cache shape , sin_cache shape r4   r-   r.   s   r"   r6   r7   R   $     ((1'88J9??J[]r%      c                  <   > ST R                    STR                    3$ )Nz[cos_cache/sin_cache must be 3D when position_ids is not provided. Received cos_cache shape r>   r4   r?   s   r"   r6   r7   X   r@   r%      )r   r2   r   rA   c                     > ST  3$ )NzKnum_heads must be provided for 3D inputs. Received input tensor with shape r   )input_shapes   r"   r6   r7   e   s    abmanor%   c                      g)Nzx should be a 4D tensor by nowr   r   r%   r"   r6   r7   l   s    ,Lr%   c                  0   > STR                    ST  ST S3$ )Nzcos has shape  but expected (batch=, seq=, ...)r4   )r:   cosr<   s   r"   r6   r7      "    .+@FSbRccijr%   c                  0   > STR                    ST  ST S3$ )Nzsin has shape rH   rI   rJ   r4   )r:   r<   sins   r"   r6   r7      rL   r%   c                  0   > ST R                   S    ST S3$ )NzLast dimension of cos cache (rO   ') should match rotary_embedding_dim/2 ().r4   )rK   rotary_embedding_dim_halfs   r"   r6   r7      ,    /		">ef  fA  AC  Dr%   c                  0   > STR                   S    ST  S3$ )NzLast dimension of sin cache (rO   rQ   rR   r4   )rS   rN   s   r"   r6   r7      rT   r%   dim)
r5   lenr   _checkrW   permutereshape	unsqueezechunkcat)r,   r-   r.   r/   r)   r*   r+   
input_rankhidden_size	head_size	new_shapex_rotatex_not_rotatex1x2realimagx_rotate_concatoutputr:   rK   rE   rS   r<   rN   s    ```               @@@@@@r"   rotary_embedding_23rk   /   s    ''K[!JQJ!"oO !#a	
 	q!Z/|	
 	q!_4 G	
 	MMOq 9Y]]_%9]	
 	MMOq 9Y]]_%9]	
 Q MM!\*	qNo	
 "!n,	)G	MM!'	LLQWW"$LM
I q (Aq////0HQ12334L 4 9 
 
 	LL		!
"Fsyy|'Fj 
LL		!
"Fsyy|'Fj 
LL		"22 	D 
LL		"22 	D //QC //QC
 aAqt!tm$aAqt!tm$Xqb1 8cBhD8cBhD  tR(tR())T4Lb9==(..A99dD\r2YY/R8FQ}}V[11 ==..r%   scalera   c                 >    U b  U $ S[         R                  " U5      -  $ )z/Get the scale factor for attention computation.g      ?)mathsqrt)rl   ra   s     r"   _get_scale_factorrp      s     %5GC$))I2F,FGr%   tensorr:   c                     U R                   S   U R                   S   pCXB-  nU R                  XX%5      R                  SS5      R                  5       $ )z1Reshape 3D tensor to 4D for multi-head attention.r   r2   )r5   view	transpose
contiguous)rq   r:   r*   r<   r`   ra   s         r"   _reshape_3d_to_4drv      sH     $*<<?FLLO[(IJF	1a	r%   QKcurrent_q_num_headscurrent_kv_num_headsqk_matmul_output_modec           	          US:X  a  [        XX#U5      $ [        R                  " [        R                  " XR	                  SS5      5      5      $ )z1Get QK output tensor based on the specified mode.r   r1   rO   )_compute_qk_output_for_mode_0r   
zeros_likematmulrt   )rw   rx   ry   rz   rl   r{   s         r"   _get_qk_output_for_aten_spdar      sH     !,%U
 	

 QB0C DEEr%   c                 L   ^ ^ [         R                  " T T-  S:H  UU 4S j5        g)z-Validate Group Query Attention configuration.r   c                     > ST ST  S3$ )Nzq_num_heads (z%) must be divisible by kv_num_heads (z	) for GQAr   )rz   ry   s   r"   r6   -_validate_gqa_configuration.<locals>.<lambda>   s    - 344YZnYooxyr%   N)r   rY   )ry   rz   s   ``r"   _validate_gqa_configurationr      s"     
LL22a7yr%   c                     UnX#:w  a  X#-  nUR                  USS9n[        X@R                  S   5      n[        R                  " U5      nX-  n	XX-  n
[
        R                  " XR                  SS5      5      $ )zDHelper function to compute QK output for qk_matmul_output_mode == 0.r   rV   rA   r1   rO   )repeat_interleaverp   r5   rn   ro   r   r   rt   )rw   rx   ry   rz   rl   K_for_qkrepeat_factorscale_factor
sqrt_scaleQ_scaledK_scaleds              r"   r}   r}      sw     H2+C&&}!&<$UGGAJ7L<(J~H$H<<"4"4R"<==r%   	Attention        )	is_causalkv_num_headsq_num_headsr{   rl   softcapsoftmax_precisionV	attn_maskpast_key
past_valuer   r   r   r   r   c                H
   Su  pn[        U R                  5      nU R                  S   n[        U R                  5      S:X  a]  [        R                  " US:g  =(       a    US:g  S 5        U R                  S   n[	        U UU5      n [	        UUU5      n[	        UUU5      n[        R                  " [        U R                  5      S:H  =(       a7    [        UR                  5      S:H  =(       a    [        UR                  5      S:H  S 5        U R                  U   n[        U
U5      n
Ub  [        R                  " XA/US	9OUR                  5       nUb  [        R                  " XR/US	9OUR                  5       nUUp!U R                  U   nUR                  U   nU R                  U   nUR                  U   nUS
:H  =(       a?    U	S:H  =(       a3    USL =(       a(    USL =(       d    UR                  [        R                  :H  n[        UU5        U(       at  SnUb#  UR                  [        R                  :X  a  U) OUn[        R                  R                  R                  U UUUS
UU
[        UU:g  5      S9n[        U UUUU
U	5      nGO]UU:w  a%  UU-  nUR                  UUS	9nUR                  UUS	9n[        R                   " UUU R                  U R"                  S9nU(       ay  [        R                  " USL S 5        [        R$                  " [        R&                  " UU[        R                  U R"                  S95      nUR)                  U) [+        S5      5      nUb@  UR                  [        R                  :X  a  UR)                  U) [+        S5      5      nOUU-   n[        XR                  S   5      n [,        R.                  " U 5      n!U U!-  n"UU!-  n#[        R0                  " U"U#R3                  SS5      5      n$U$nU$U-   n%U	S:X  a  U%nUS
:  a  U[        R4                  " U%U-  5      -  n%U	S:X  a  U%nUbu  U[6        ;   aU  U%R                  n&U%R9                  [:        R<                  U   5      n%[        R>                  " U%SS	9n'U'R9                  U&5      n'O+[        R>                  " U%SS	9n'O[        R>                  " U%SS	9n'U	S:X  a  U'n[        R0                  " U'U5      nUS:X  a1  UR3                  SS5      RA                  5       RC                  UUS5      nUUUU4$ )zMAttention-23 https://onnx.ai/onnx/operators/onnx__Attention.html#attention-23)r   r2   rA   r   rA   c                      g)Nz;q_num_heads and kv_num_heads must be provided for 3D inputsr   r   r%   r"   r6   attention_23.<locals>.<lambda>  s    Qr%   r   rC   c                      g)Nz'Q, K, and V should be 4D tensors by nowr   r   r%   r"   r6   r   !  s    9r%   NrV   r   )r   	dropout_pr   rl   
enable_gqa)dtypedevicec                      g)Nz'Cannot use both is_causal and attn_maskr   r   r%   r"   r6   r   v  s    +Tr%   z-infr1   rO   r2   )"rX   r5   r   rY   rv   rp   r^   cloner   boolr   nn
functionalscaled_dot_product_attentionr   r   zerosr   trilonesmasked_fillfloatrn   ro   r   rt   tanh-_ATTENTION_23_ALLOWED_INTERMEDIATE_PRECISIONStor   ONNX_DTYPE_TO_TORCH_DTYPEsoftmaxru   rs   )(rw   rx   r   r   r   r   r   r   r   r{   rl   r   r   num_head_dimsequence_dimhead_diminput_shape_lenr:   q_sequence_lengthq_head_sizepresent_keypresent_valuery   rz   kv_sequence_lengthcan_use_sdpasdpa_attn_maskrj   	qk_outputr   	attn_biascausal_maskr   r   r   r   qk_matmul_outputqk_with_biasoriginal_dtype
qk_softmaxs(                                           r"   attention_23r      s   & ,3(L !''lOJ 177|q12!2Q	
 GGAJa[9a\:a\:	LLAGGEc!''la/ECLA4E9 ''(#Ke[1E
  			8-\2WWY  ! 			:/|4WWY  q '',/77<0-. 	3 	A!Q&	A%	A $?)//UZZ"?	    35IJ  +4??ejj+HiZiN$$AA$#';; B 
 1 !
	 "66/3GGM##M|#DA##M|#DA KK1
	
 LLT!#T  **

%&**88	K "--{lE&MJI  %**,%119*eFmL	 &	1	 )
; YY|,
z>z> !<<(2D2DR2LM %	 ()3 A%$I S="UZZw0F%GGL A%$I ( $QQ!-!3!3+#==>OP  #]]<R@
']]>:
"]]<R@
|<J A%"I j!, ! Q"--/44ZARTVW 	 ;y88r%   )N)NNN)!rn   typingr   r   r   typing_extensionsr   r   torch.onnx.opsr   r   r	   r
   dict_ops
OpOverload__annotations__	frozensetr   strintr&   Tensorr   rk   r   rp   rv   r   r   r}   tupler   r   r%   r"   <module>r      s|    . . '  * t_T] AC UZZ22H<= B091 -!$xB (2r6"223* 

R 
 ,0	D/  !D/||D/||D/ ||D/ 5<<(	D/ D/ D/ D/ \\D/ !D/NHXe_ H H H

LL
&)
69

\\
F||F||F F 	F
 E?F F \\F$47	>||>||> > 	>
 E?> \\>, 
+r
 )-'+)-F9 !"!'+F9||F9||F9 ||F9 %	F9
 u||$F9 &F9 F9 F9 F9 F9 E?F9 F9  }F9 5<<u||U\\ABF9 F9r%   