
    JTh%                       S r SSKJr  SSKrSSKrSSKJrJrJr  SSK	J
r
  SSKJrJr  / SQr\R                  " \R                   SS	9r\" S
5      \R$                  " S5      SS j5       5       r\" S5      S SS jj5       r\" S5      S SS jj5       r\" S5      \R,                  " S5      \R$                  " SS5      SS j5       5       5       r\" S5      \R$                  " SSSSSSSSS5	        SS j5       5       r\" S5      SS j5       r\" S5      \R$                  " SSSSSSSS5           S!                 S"S jj5       5       r      S#S jr        S$S jrg)%a&  This file exports ONNX ops for opset 14.

Note [ONNX operators that are added/updated in opset 14]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New operators:
    HardSwish, Trilu

Updated operators:
    Reshape
    Add, Sub, Mul, Div
    GRU, LSTM, RNN
    BatchNorm, Cumsum, Relu
    )annotationsN)
_constants_type_utilssymbolic_helper)GLOBALS)	jit_utilsregistration)	hardswishtriltriureshape
batch_normquantized_hardswishscaled_dot_product_attention   )opsetzaten::hardswishvc                &    U R                  SU5      $ )N	HardSwishop)gselfs     S/var/www/auris/envauris/lib/python3.13/site-packages/torch/onnx/symbolic_opset14.pyr
   r
   *   s     44T""    z
aten::trilc                $    U R                  SXSS9$ )NTrilur   upper_ir   r   r   diagonalouts       r   r   r   0       44433r   z
aten::triuc                $    U R                  SXSS9$ )Nr      r   r   r    s       r   r   r   5   r#   r   zaten::reshapeTc                .    [         R                  " XUSS9$ )Nr   )	allowzero)r   _reshape_helper)r   r   shapes      r   r   r   :   s     **1EQGGr   zaten::batch_normifc
                (   [         R                  " 5       (       aL  [        R                  " XX4U/5      (       d.  [        R
                  S:  a  [        R                  " SSSSU5      $ [        R                  " US5        [        R                  " XX#XE5      u  p#pEU R                  SUUUUUUSU-
  U(       d  SOSU(       d  SOSS	9
n
U(       d  U
$ U
u  pnUR                  UR                  5       5        UR                  UR                  5       5        U$ )
N   BatchNormalizationr   zaAll input tensors must have the same `dtype`. Turn off Autocast or export using opset version 15.r   r%   r      )	epsilon_f
momentum_ftraining_mode_ioutputs)torchis_autocast_enabledr   args_have_same_dtyper   export_onnx_opset_version _onnx_opset_unsupported_detailedcheck_training_mode_batchnorm_helperr   setTypetype)r   inputweightbiasrunning_meanrunning_vartrainingmomentumepscudnn_enabledr"   resnew_running_meannew_running_vars                 r   r   r   C   s    	!!##44D<
 
 --2?? C
 	
 '',?.=.O.O	&/+F, $$x<!)q!q  C 
14.  !2!2!45 0 0 23
r   zquantized::hardswishc                |    [         R                  " X5      u  n    n[        X5      n[         R                  " XX#5      $ N)r   dequantize_helperr
   quantize_helper)r   xop_scaleop_zero_point_outputs         r   r   r   z   s6     2218JAq!Qq_F**1hNNr   z"aten::scaled_dot_product_attentionbc	                   U(       a)  U(       a  [         R                  " U5      (       d   S5       eU(       a   S5       e[         R                  " U5      (       a  [        X5      nU(       a  [        XU5      n[         R                  " U5      n	[        [        U	5      5      n
U
S   U
S   sU
S'   U
S'   U R                  SX*S9nU R                  SXR                  SU5      5      nU R                  SXR                  SU5      5      nU R                  S	X5      n[         R                  " U5      (       a  UnGOb[        R                  R                  U5      [        R                  R                  :X  a{  U R                  S
[        R                  " S/5      S9nU R                  S
[        R                  " [        S5      * /5      S9nU R                  SUUU5      nU R                  SX5      nO[        R                  R                  U5      [        R                  R                  [        R                  R                   [        R                  R"                  4;   a  U R                  SX5      nO+[%        S[        R                  R                  U5       35      eU R                  SUSS9nUS:w  aB  U R                  SUU R                  S
[        R                  " U[        R                  S9S95      nU R                  S	UU5      $ )Nz6is_causal and attn_mask cannot be set at the same timezPconversion of scaled_dot_product_attention not implemented if enable_gqa is True	Transpose)perm_iMulSqrtMatMulConstant        value_tinfWhereAddz Unsupported type for attn_mask: Softmaxaxis_ir   Dropoutdtype)r   _is_none_attention_scale_causal_attention_mask_get_tensor_ranklistranger   r   JitScalarType
from_valueBOOLr4   tensorfloatFLOATHALFBFLOAT16
ValueError)r   querykeyvalue	attn_mask	dropout_p	is_causalscale
enable_gqakey_shape_builtinkey_transposed_axeskey_transposedquery_scaledkey_transposed_scaledmul_qk
mul_qk_add
const_zeroconst_neg_infattn_weights                      r   r   r      s    y_-E-Ei-P-P @Q  Z> && **1S9	
 (88=u%678BB 504 TT+sTGN 44udd65&9:LDDVU8KLTT(L@F	**
!!,,Y7$$))	* TT*ellC5.ATB
Ze}o1NODD)ZG	TT%3
		"	"	-	-i	8!!''!!&&!!**= 

 TT%3
.{/H/H/S/ST]/^._`
 	
 $$y*R$8KA~ddDDU\\)5;;%ODP
 44+u--r   c                   U R                  SU5      nU R                  SUU R                  S[        R                  " S/[        R                  S9S9U R                  S[        R                  " [        R
                  /[        R                  S9S95      nU R                  SU[        R                  R                  U5      R                  5       S9nU R                  S[        R                  " S	/[        R                  S9S9nU R                  S
XPR                  SU5      5      nU R                  SU[        R                  R                  U5      R                  5       S9nU$ )zCalculate the scale factor for the attention result.

Args:
    query: Tensor of shape [..., L, E]

Returns:
    Scalar scale factor := 1 / math.sqrt(query.size(-1))
ShapeSlicer[   rU   rf   r]   Cast)to_i      ?DivrY   )r   r4   rq   int64r   	INT64_MAXr   rn   ro   	onnx_typerr   )r   rw   query_shapequery_shape_lastembedding_size	const_oner}   s          r   ri   ri      s-    $$w&Ktt	Zrd%++!FG	j.B.B-C5;; W 	 	
	 TT&&11%8BBD  N
 Zse5;;)OPIDD	44#?@EDD&&11%8BBD  E
 Lr   c                   U R                  SU5      nU R                  SU5      nU R                  S[        R                  " S/[        R                  S9S9nU R                  S[        R                  " S/[        R                  S9S9nU R                  SX6U5      nU R                  SXFU5      nU R                  SXxS	S
9n	U R                  S[        R                  " S/5      S9n
U R                  SX5      nU R                  SUS	S9nU R                  S[        R                  " S/5      S9nU R                  S[        R                  " [	        S5      * /5      S9nU R                  SU R                  SX5      X5      nU$ )av  Create a causal mask for the given query and key tensors.

Equivalent to::
    mask = torch.ones(L, S, dtype=torch.bool).tril(diagonal=0)
    attn_mask = torch.zeros(L, S, dtype=torch.float)
    attn_mask = attn_mask.masked_fill(not mask, -float("inf"))

Args:
    query: Tensor of shape [..., L, E]
    key: Tensor of shape [..., S, E]

Returns:
    Tensor of shape [L, S]
r   r[   rU   rf   r]   rT   r   Concatr   rc   r   Expandr   r   r\   r_   r`   Equal)r   r4   rq   r   rr   )r   rw   rx   r   	key_shapelast_idxsecond_last_idxtarget_lengthsource_lengthsizer   rz   r   r   s                 r   rj   rj      sK   $ $$w&KWc"IttJbT(MtNHdd:u||RD/TdUODD+IMDD)hGM44-q4ADZse)<=IXy/IWi3Ij%,,u*=>JDDU\\E%L=/-JDKMgy5}I r   )r   jit_utils.GraphContextrJ   )Nr\   FNF)r   r   rw   torch._C.Valuerx   r   ry   r   rz   torch._C.Value | Noner{   rr   r|   boolr}   r   r~   r   )r   r   rw   r   returnr   )r   r   rw   r   rx   r   r   r   )__doc__
__future__r   	functoolsr4   
torch.onnxr   r   r   torch.onnx._globalsr   torch.onnx._internalr   r	   __all__partialonnx_symbolic_onnx_symbolic
parse_argsr
   r   r   quantized_argsr   r   r   r   ri   rj    r   r   <module>r      s9    #   ? ? ' 8 ""<#=#=RH !"C # ! ## 4 4 4 4  %C%H & & !H "#Cc3S#sCH22 I $2j &'O (O 45Cc3S#sC (,#'H.H.H. 
H. 	H.
 %H. H. H. !H. H. D 6H.V!!&4!!H%%&4%;I%%r   