Ë
    cQêjò  ã                   óŒ   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ  e j                  e
«      Z G d„ de«      Z G d„ d	e«      Zy)
é    N)ÚFusion)ÚFusionSkipLayerNormalization)Úhelper)Ú	OnnxModelc                   ó4   ‡ — e Zd Zdefˆ fd„Zdedefd„Zˆ xZS )Ú"FusionSimplifiedLayerNormalizationÚmodelc                 ó(   •— t         ‰| �  |dd«       y )NÚSimplifiedLayerNormalizationÚMul©ÚsuperÚ__init__©Úselfr	   Ú	__class__s     €úy/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/transformers/fusion_simplified_layernorm.pyr   z+FusionSimplifiedLayerNormalization.__init__   s   ø€ Ü‰Ñ˜Ð >ÀÕFó    Úinput_name_to_nodesÚoutput_name_to_nodec           	      ój  — |j                   dk7  ry d }g }| j                  j                  |g d¢g d¢||¬«      }|r(|\  }}}}	}
| j                  j                  |d«      sy |}nfg }| j                  j                  |g d¢g d¢||¬«      }|�|\  }}}}	}
|}n3g }| j                  j                  |g d¢g d	¢||¬«      }|�
|\  }}}	}
|}ny | j                  j	                  |
d
|«      }|�|j                   dvry |j                   dk(  r | j                  j                  |d«      dk7  ry |j                   dk(  sJ ‚|d
   |d   k7  ry |j                  d
   }||j                  vry | j                  j                  |	«      \  }}|�
|d
k  s|dkD  rt        j                  d|› �«       y | j                  j                  |
d«      }|sy | j                  j                  |
d«      }|s@t        |
j                  «      dkD  r(| j                  j                  |
j                  d   «      }|rt        |«      dk7  ry | j                  j                  |«       | j                  j                  |«       | j                  j                  |«       t!        j"                  d||j                  d|d
   z
     g|j$                  d
   g| j                  j'                  dd¬«      ¬«      }|j(                  j                  t!        j*                  dt-        |«      «      g«       |j(                  j                  t!        j*                  d|d
   «      g«       |j(                  j                  t!        j*                  dd«      g«       | j.                  j                  |«       | j0                  | j2                  |j4                  <   y )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   Úfusez'FusionSimplifiedLayerNormalization.fuse   s³  € Ø�<‰<˜5Ò Øàˆð, ˆØ—z‘z×3Ñ3ØÚ7Ú!Ø 3Ø'ð 4ó 
ˆñ ØIUÑFˆH�h 
¨HÐ6FØ—:‘:×0Ñ0°¸3Ô?ØØ"‰Kð  ˆMØŸ:™:×7Ñ7ØÚBÚ%Ø$7Ø+ð 8ó ˆLð Ð'ØUaÑR�Ð*¨J¸ÐBRØ&‘ð !#�Ø#Ÿz™z×;Ñ;ØÚ8Ú&Ø(;Ø"/ð  <ó  �ð  Ð+ØGSÑD�H˜j¨(Ð4DØ"*‘Kàà!ŸZ™Z×2Ñ2Ð3CÀQÐH[Ó\ÐØÐ%Ð);×)CÑ)CÈ>Ñ)YØà×%Ñ%¨Ò.Ø�z‰z×-Ñ-Ð.@À#ÓFÈ!ÒKØà%×-Ñ-°Ò6Ð6Ð6Ø! !Ñ$Ð(:¸1Ñ(=Ò=Øà'×-Ñ-¨aÑ0ˆ
Ø˜[×.Ñ.Ñ.Øà—j‘j×3Ñ3°HÓ=‰ˆˆGØˆ?˜g¨šl¨g¸Ò.>Ü�N‰NÐ<¸W¸IÐFÔGØð —:‘:×0Ñ0Ð1AÀ:ÓNˆÙØð �z‰z×,Ñ,Ð-=¸vÓFˆÙœ#Ð.×4Ñ4Ó5¸Ò9Ø—:‘:×0Ñ0Ð1A×1GÑ1GÈÑ1JÓKˆDá”s˜4“y A’~Øà×Ñ×#Ñ# LÔ1Ø×Ñ×#Ñ#Ð$6Ô7Ø×Ñ×#Ñ# DÔ)ä×)Ñ)Ø*Ø §
¡
¨1¨}¸QÑ/?Ñ+?Ñ @ÐAØ—[‘[ ‘^Ð$Ø—‘×,Ñ,Ð-KÐYbÐ,Ócô	
ˆð 	× Ñ ×'Ñ'¬×)>Ñ)>¸yÌ%ÐPWË.Ó)YÐ(ZÔ[Ø× Ñ ×'Ñ'¬×)>Ñ)>¸vÀtÈAÁwÓ)OÐ(PÔQØ× Ñ ×'Ñ'¬×)>Ñ)>¸|ÈQÓ)OÐ(PÔQØ×Ñ× Ñ  Ô0Ø<@×<PÑ<Pˆ×$Ñ$ ^×%8Ñ%8Ò9r   )Ú__name__Ú
__module__Ú__qualname__r   r   ÚdictrO   Ú__classcell__©r   s   @r   r   r      s*   ø„ ðG˜iõ GðNQ¨dð NQÈ÷ NQr   r   c                   ó.   ‡ — e Zd Zdefˆ fd„Zˆ fd„Zˆ xZS )Ú&FusionSkipSimplifiedLayerNormalizationr	   c                 ó(   •— t         ‰| �  |dd«       y )NÚ SkipSimplifiedLayerNormalizationr   r   r   s     €r   r   z/FusionSkipSimplifiedLayerNormalization.__init__¡   s   ø€ Ü‰Ñ˜Ð BÐDbÕcr   c                 ó(   •— t         ‰| �  |||«       y )N)r   rO   )r   rB   r   r   r   s       €r   rO   z+FusionSkipSimplifiedLayerNormalization.fuse¤   s   ø€ Ü‰‰�TÐ.Ð0CÕDr   )rP   rQ   rR   r   r   rO   rT   rU   s   @r   rW   rW       s   ø„ ðd˜iõ d÷Eð Er   rW   )ÚloggingÚfusion_baser   Úfusion_skiplayernormr   Úonnxr   Ú
onnx_modelr   Ú	getLoggerrP   r1   r   rW   © r   r   ú<module>rb      sF   ðÛ å Ý =Ý Ý  à	ˆ×	Ñ	˜8Ó	$€ôRQ¨ô RQôjEÐ-Iõ Er   