
    h                     f    S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  \" \
5      r " S S\5      rg)	    )	getLogger)Fusion)ndarray)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	$ )FusionBiasAdd   modelc                 (   > [         TU ]  USS5        g )NBiasAddAdd)super__init__)selfr   	__class__s     b/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/transformers/fusion_bias_add.pyr   FusionBiasAdd.__init__   s    	51    input_name_to_nodesoutput_name_to_nodec                    U R                   R                  U/ SQ/ SQU5      nUc  gUS   nUS   nUR                  S   UR                  ;  a  gU R                   R	                  U5      u  px[        U[        5      (       a  Ub  [        U[        5      (       d  gUR                  S:w  a  gU R                  R                  X/5        U R                   R                  S5      n	[        R                  " SUR                  SU-
     UR                  U   UR                  S   /UR                  S   /U	S9n
S	U
l        U R                  R!                  U
5        U R"                  U R$                  U	'   g)
z4
Fuse Add bias and Add skip connection into BiasAdd
)r   MatMulBiasSplitGelur   SkipLayerNormalization)r   Nr   r   r   Nr      r   )inputsoutputsnamezcom.microsoft)r   match_parent_pathinputoutputget_constant_input
isinstanceintr   ndimnodes_to_removeextendcreate_node_namer   	make_nodedomainnodes_to_addappendthis_graph_namenode_name_to_graph_name)r   add_noder   r   nodes	bias_nodeskip_layer_norm
bias_index
bias_value	node_name
fused_nodes              r   fuseFusionBiasAdd.fuse   sV   
 

,,R	
 =!H	) >>!O$:$::!%!>!>y!I
:s++1GZXbdkMlMl??a##X$9:JJ//	:	%%OOA
N3Y__Z5PRZR`R`abRcd__Q'(	

 ,
  ,262F2F$$Y/r    )
__name__
__module____qualname____firstlineno__r   r   dictr9   __static_attributes____classcell__)r   s   @r   r	   r	      s+    2i 2&G$ &GT &G &Gr   r	   N)loggingr   fusion_baser   numpyr   onnxr   
onnx_modelr   r<   loggerr	   r;   r   r   <module>rI      s.   
      	8	*GF *Gr   