
    h                         S SK r S SKJr  S SKJr  S SKJr  S SKJr  \ R                  " \
5      r " S S\5      r " S S	\5      rg)
    N)Fusion)FusionSkipLayerNormalization)helper)	OnnxModelc                   B   ^  \ rS rSrS\4U 4S jjrS\S\4S jrSrU =r	$ )"FusionSimplifiedLayerNormalization   modelc                 (   > [         TU ]  USS5        g )NSimplifiedLayerNormalizationMulsuper__init__selfr
   	__class__s     n/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/transformers/fusion_simplified_layernorm.pyr   +FusionSimplifiedLayerNormalization.__init__   s     >F    input_name_to_nodesoutput_name_to_nodec           
         UR                   S:w  a  g S n/ nU R                  R                  U/ SQ/ SQUUS9nU(       a+  Uu  pgpn
U R                  R                  US5      (       d  g UnO^/ nU R                  R                  U/ SQ/ SQUUS9nUb	  Uu  plpn
UnO// nU R                  R                  U/ SQ/ S	QUUS9nUb  Uu  pxpUnOg U R                  R	                  U
S
U5      nUb  UR                   S;  a  g UR                   S:X  a"  U R                  R                  US5      S:w  a  g OUR                   S:X  d   eUS
   US   :w  a  g UR                  S
   nXR                  ;  a  g U R                  R                  U	5      u  nnUb  US
::  d  US:  a  [        R                  SU 35        g U R                  R                  U
S5      nU(       d  g U R                  R                  U
S5      nU(       dA  [        U
R                  5      S:  a(  U R                  R                  U
R                  S   5      nU(       a  [        U5      S:w  a  g U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        [         R"                  " SXR                  SUS
   -
     /UR$                  S
   /U R                  R'                  SSS9S9nUR(                  R                  [         R*                  " S[-        U5      5      /5        UR(                  R                  [         R*                  " SUS
   5      /5        UR(                  R                  [         R*                  " SS5      /5        U R.                  R                  U5        U R0                  U R2                  UR4                  '   g )Nr   )r   DivSqrtAdd
ReduceMean)N   r   r   N)r   return_indiceg      ?)r   
Reciprocalr   r   r   )Nr   r   r   N)r   r   r   r   )Nr   r   Nr   )Powr   r!   g       @r   g-C6?zepsilon value is not expected: keepdimsaxesr   RMSNorm)name_prefix)inputsoutputsnameepsilonaxis
stash_type)op_typer
   match_parent_pathhas_constant_input
get_parentfind_constant_inputinputget_constant_inputloggerwarningget_node_attributelenget_constant_valuenodes_to_removeextendappendr   	make_nodeoutputcreate_node_name	attributemake_attributefloatnodes_to_addthis_graph_namenode_name_to_graph_namer(   )r   noder   r   sim_ln_nodesr   mul_nodediv_node
_sqrt_nodeadd_nodereduce_mean_nodenode_parent_reciprocal_nodereduce_mean_parent
root_input_ir)   r"   r#   normalize_nodes                       r   fuse'FusionSimplifiedLayerNormalization.fuse   s   <<5 , zz337! 3' 4 
 IUFH
6F::003??"K  M::77B%$7+ 8 L 'UaRJBR& !##zz;;8&(;"/  <    +GSDH("*K!ZZ223CQH[\%);)C)C>)Y%%.zz--.@#F!K L &--666!!$(:1(=='--a0
...jj33H=G?glg.>NN<WIFG ::001A:N zz,,-=vF#.4459::001A1G1G1JKDs4yA~##L1##$67##D)))*

1}Q/?+? @A[[^$,,-KYb,c	
 	  '')>)>y%PW.)Y(Z[  '')>)>vtAw)O(PQ  '')>)>|Q)O(PQ  0<@<P<P$$^%8%89r    )
__name__
__module____qualname____firstlineno__r   r   dictrQ   __static_attributes____classcell__r   s   @r   r   r      s1    Gi GNQd NQ NQ NQr   r   c                   <   ^  \ rS rSrS\4U 4S jjrU 4S jrSrU =r$ )&FusionSkipSimplifiedLayerNormalization   r
   c                 (   > [         TU ]  USS5        g )N SkipSimplifiedLayerNormalizationr   r   r   s     r   r   /FusionSkipSimplifiedLayerNormalization.__init__   s     BDbcr   c                 &   > [         TU ]  XU5        g )N)r   rQ   )r   rD   r   r   r   s       r   rQ   +FusionSkipSimplifiedLayerNormalization.fuse   s    T0CDr   rS   )	rT   rU   rV   rW   r   r   rQ   rY   rZ   r[   s   @r   r]   r]      s    di dE Er   r]   )loggingfusion_baser   fusion_skiplayernormr   onnxr   
onnx_modelr   	getLoggerrT   r3   r   r]   rS   r   r   <module>rj      sD      =   			8	$RQ RQjE-I Er   