§
    Ë²Åj
&  ã                  óÎ  — d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZmZ g d¢Z ej        ej        d¬	¦  «        Z ed
¦  «         ej        d¦  «        d0d„¦   «         ¦   «         Z ed¦  «        d1d0d„¦   «         Z ed¦  «        d1d0d„¦   «         Z ed¦  «         ej        d¦  «         ej        dd¦  «        d0d„¦   «         ¦   «         ¦   «         Z ed¦  «         ej        ddddddddd¦	  «	        d0d„¦   «         ¦   «         Z ed¦  «        d0d„¦   «         Z ed¦  «         ej        dddddddd¦  «        	 	 	 	 	 d2d3d,„¦   «         ¦   «         Zd4d.„Zd5d/„ZdS )6a&  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ÚvÚgújit_utils.GraphContextc                ó.   — |                       d|¦  «        S )NÚ	HardSwish©Úop)r   Úselfs     úLC:\Projects\Historical\venv\Lib\site-packages\torch/onnx/symbolic_opset14.pyr
   r
   *   s   € ð �4Š4�˜TÑ"Ô"Ð"ó    z
aten::trilc                ó4   — |                       d||d¬¦  «        S )NÚTrilur   ©Úupper_ir   ©r   r   ÚdiagonalÚouts       r   r   r   0   ó   € à�4Š4�˜˜x°ˆ4Ñ3Ô3Ð3r   z
aten::triuc                ó4   — |                       d||d¬¦  «        S )Nr   é   r   r   r!   s       r   r   r   5   r$   r   zaten::reshapeTc                ó2   — t          j        | ||d¬¦  «        S )Nr   )Ú	allowzero)r   Ú_reshape_helper)r   r   Úshapes      r   r   r   :   s   € õ Ô*¨1¨d°EÀQÐGÑGÔGÐGr   zaten::batch_normÚiÚfc
                ó  — t          j        ¦   «         rAt          j        |||||g¦  «        s(t          j        dk     rt          j        dddd|¦  «        S t          j        |d¦  «         t          j        | |||||¦  «        \  }}}}|  	                    d||||||d|z
  |sdnd|sdnd¬	¦
  «
        }
|s|
S |
\  }}}| 
                    |                     ¦   «         ¦  «         | 
                    |                     ¦   «         ¦  «         |S )
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Ø�F˜D ,°Ð<ñ
ô 
ð
õ
 Ô-°Ò2Ð2åÔ?Ø ØØðCàñ
ô 
ð 	
õ Ô'¨°,Ñ?Ô?Ð?Ý.=Ô.OØ	ˆ5�&˜$ ¨kñ/ô /Ñ+€FˆD�, ð �$Š$ØØØØØØØØ�x‘<Ø!)Ð0˜˜¨qØ!Ð(�� qð ñ ô €Cð ð Øˆ
à14Ñ.ˆÐ˜Ø× Ò  ×!2Ò!2Ñ!4Ô!4Ñ5Ô5Ð5Ø×Ò × 0Ò 0Ñ 2Ô 2Ñ3Ô3Ð3Øˆ
r   zquantized::hardswishc                ó„   — t          j        | |¦  «        \  }}}}t          | |¦  «        }t          j        | |||¦  «        S ©N)r   Údequantize_helperr
   Úquantize_helper)r   ÚxÚop_scaleÚop_zero_pointÚ_Úoutputs         r   r   r   z   s@   € å Ô2°1°aÑ8Ô8�J€A€qˆ!ˆQå�q˜!‰_Œ_€FåÔ*¨1¨f°hÀÑNÔNÐNr   z"aten::scaled_dot_product_attentionÚbç        FÚqueryútorch._C.ValueÚkeyÚvalueÚ	attn_maskútorch._C.Value | NoneÚ	dropout_pÚfloatÚ	is_causalÚboolÚscaleÚ
enable_gqac	                óJ  — |r |rt          j        |¦  «        s
J d¦   «         ‚|r
J d¦   «         ‚t          j        |¦  «        rt          | |¦  «        }|rt          | ||¦  «        }t          j        |¦  «        }	t          t          |	¦  «        ¦  «        }
|
d         |
d         c|
d<   |
d<   |                      d||
¬¦  «        }|                      d||                      d|¦  «        ¦  «        }|                      d||                      d|¦  «        ¦  «        }|                      d	||¦  «        }t          j        |¦  «        r|}�n\t          j	         
                    |¦  «        t          j	        j        k    r’|                      d
t          j        dg¦  «        ¬¦  «        }|                      d
t          j        t          d¦  «         g¦  «        ¬¦  «        }|                      d|||¦  «        }|                      d||¦  «        }n˜t          j	         
                    |¦  «        t          j	        j        t          j	        j        t          j	        j        fv r|                      d||¦  «        }n/t%          dt          j	         
                    |¦  «        › �¦  «        ‚|                      d|d¬¦  «        }|dk    rJ|                      d||                      d
t          j        |t          j        ¬¦  «        ¬¦  «        ¦  «        }|                      d	||¦  «        S )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ÚConstantrT   ©Ú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ÚBOOLr5   Útensorr\   ÚFLOATÚHALFÚBFLOAT16Ú
ValueError)r   rU   rW   rX   rY   r[   r]   r_   r`   Ú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Ñ9Ô9ð@ð @à?ñ@ô @ð ð ÐmÐmÐmÑmÔmˆ>åÔ Ñ&Ô&ð +Ý   EÑ*Ô*ˆàð :Ý*¨1¨e°SÑ9Ô9ˆ	õ
 (Ô8¸Ñ=Ô=ÐÝ�uÐ%6Ñ7Ô7Ñ8Ô8Ðà˜BÔØ˜BÔð 5Ð˜ÑÐ0°Ñ4ð —T’T˜+ sÐ3F�TÑGÔG€Nð —4’4˜˜u a§d¢d¨6°5Ñ&9Ô&9Ñ:Ô:€LØŸDšD ¨¸¿º¸VÀUÑ8KÔ8KÑLÔLÐØ�TŠT�(˜LÐ*?Ñ@Ô@€FåÔ 	Ñ*Ô*ð 
Øˆ
‰
åÔ!×,Ò,¨YÑ7Ô7ÝÔ$Ô)ò	*ð 	*ð —T’T˜*­e¬l¸C¸5Ñ.AÔ.A�TÑBÔBˆ
ØŸš˜Zµ´ÅÀeÁÄ¸}¸oÑ1NÔ1N˜ÑOÔOˆØ—D’D˜ )¨Z¸ÑGÔGˆ	Ø—T’T˜% ¨Ñ3Ô3ˆ
ˆ
Ý	Ô	"×	-Ò	-¨iÑ	8Ô	8ÝÔ!Ô'ÝÔ!Ô&ÝÔ!Ô*ð=ð 
ð 
ð
 —T’T˜% ¨Ñ3Ô3ˆ
ˆ
åØ`­{Ô/H×/SÒ/SÐT]Ñ/^Ô/^Ð`Ð`ñ
ô 
ð 	
ð —$’$�y *°R�$Ñ8Ô8€Kà�A‚~€~Ø—d’dØØØ�DŠD�¥U¤\°)Å5Ä;Ð%OÑ%OÔ%OˆDÑPÔPñ
ô 
ˆð �4Š4�˜+ uÑ-Ô-Ð-r   Úreturnc                ó$  — |                       d|¦  «        }|                       d||                       dt          j        dgt          j        ¬¦  «        ¬¦  «        |                       dt          j        t          j        gt          j        ¬¦  «        ¬¦  «        ¦  «        }|                       d|t          j                             |¦  «         	                    ¦   «         ¬¦  «        }|                       dt          j        d	gt          j
        ¬¦  «        ¬¦  «        }|                       d
||                       d|¦  «        ¦  «        }|                       d|t          j                             |¦  «         	                    ¦   «         ¬¦  «        }|S )zºCalculate 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ÚSliceri   rc   rs   rj   ÚCast)Úto_iç      ð?ÚDivrg   )r   r5   r~   Úint64r   Ú	INT64_MAXr   r{   r|   Ú	onnx_typer\   )r   rU   Úquery_shapeÚquery_shape_lastÚembedding_sizeÚ	const_oner_   s          r   rv   rv   Ò   s[  € ð —$’$�w Ñ&Ô&€KØ—t’tØØØ	�ŠˆZ¥¤¨r¨d½%¼+Ð!FÑ!FÔ!FˆÑGÔGØ	�ŠØ¥¤­jÔ.BÐ-CÍ5Ì;Ð WÑ WÔ Wð 	ñ 	
ô 	
ñ	ô Ðð —T’TØØÝÔ&×1Ò1°%Ñ8Ô8×BÒBÑDÔDð ñ ô €Nð
 —’�Z­¬°s°eÅ5Ä;Ð)OÑ)OÔ)O�ÑPÔP€IØ�DŠD�˜	 1§4¢4¨°Ñ#?Ô#?Ñ@Ô@€Eà�DŠDØØÝÔ&×1Ò1°%Ñ8Ô8×BÒBÑDÔDð ñ ô €Eð
 €Lr   c                ó˜  — |                       d|¦  «        }|                       d|¦  «        }|                       dt          j        dgt          j        ¬¦  «        ¬¦  «        }|                       dt          j        dgt          j        ¬¦  «        ¬¦  «        }|                       d|||¦  «        }|                       d|||¦  «        }|                       d||d	¬
¦  «        }	|                       dt          j        dg¦  «        ¬¦  «        }
|                       d|
|	¦  «        }|                       d|d	¬¦  «        }|                       dt          j        dg¦  «        ¬¦  «        }|                       dt          j        t	          d¦  «         g¦  «        ¬¦  «        }|                       d|                       d||¦  «        ||¦  «        }|S )až  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�   ri   rc   rs   rj   rb   r�   ÚConcatr   rp   r“   ÚExpandr   r   rT   rl   rm   ÚEqual)r   r5   r~   r•   r\   )r   rU   rW   r˜   Ú	key_shapeÚlast_idxÚsecond_last_idxÚtarget_lengthÚsource_lengthÚsizer›   rY   rŠ   r‹   s                 r   rw   rw   ö   sŒ  € ð$ —$’$�w Ñ&Ô&€KØ—’�W˜cÑ"Ô"€Ià�tŠt�J­¬°b°TÅÄÐ(MÑ(MÔ(MˆtÑNÔN€HØ—d’d˜:­u¬|¸R¸DÍÌÐ/TÑ/TÔ/T�dÑUÔU€OØ—D’D˜ +¨ÀÑIÔI€MØ—D’D˜ )¨_¸hÑGÔG€Mà�4Š4�˜-¨¸qˆ4ÑAÔA€DØ—’�Z­¬°s°eÑ)<Ô)<�Ñ=Ô=€IØ—’�X˜y¨$Ñ/Ô/€Ià—’�W˜i°�Ñ3Ô3€Ià—’�j­%¬,¸°uÑ*=Ô*=�Ñ>Ô>€JØ—D’D˜­U¬\½EÀ%¹L¼L¸=¸/Ñ-JÔ-J�DÑKÔK€MØ—’Ø�—’�g˜y¨*Ñ5Ô5°}Àjñô €Ið Ðr   )r   r   rK   )NrT   FNF)r   r   rU   rV   rW   rV   rX   rV   rY   rZ   r[   r\   r]   r^   r_   rZ   r`   r^   )r   r   rU   rV   r�   rV   )r   r   rU   rV   rW   rV   r�   rV   )Ú__doc__Ú
__future__r   Ú	functoolsr5   Ú
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   rv   rw   © r   r   ú<module>r³      sÚ  ððð ð  #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à €€€Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð €ð #�Ô" <Ô#=ÀRÐHÑHÔH€ð €Ð!Ñ"Ô"Ø€Ô˜CÑ Ô ð#ð #ð #ñ !Ô ñ #Ô"ð#ð €�ÑÔð4ð 4ð 4ð 4ñ Ôð4ð €�ÑÔð4ð 4ð 4ð 4ñ Ôð4ð €�Ñ Ô Ø€Ô Ñ%Ô%Ø€Ô˜C Ñ%Ô%ðHð Hð Hñ &Ô%ñ &Ô%ñ !Ô ðHð €Ð"Ñ#Ô#Ø€Ô˜C  c¨3°°S¸#¸sÀCÑHÔHð2ð 2ð 2ñ IÔHñ $Ô#ð2ðj €Ð&Ñ'Ô'ðOð Oð Oñ (Ô'ðOð €Ð4Ñ5Ô5Ø€Ô˜C  c¨3°°S¸#¸sÑCÔCð (,ØØØ#'ØðF.ð F.ð F.ð F.ñ DÔCñ 6Ô5ðF.ðR!ð !ð !ð !ðH%ð %ð %ð %ð %ð %r   