
    Bvh                     f    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	  ee
      Z G d de      Zy)	    )	getLogger)Fusion)ndarray)helper)	OnnxModelc                   4     e Zd Zdef fdZdedefdZ xZS )FusionBiasAddmodelc                 (    t         |   |dd       y )NBiasAddAdd)super__init__)selfr
   	__class__s     R/RAG/venv/lib/python3.12/site-packages/onnxruntime/transformers/fusion_bias_add.pyr   zFusionBiasAdd.__init__   s    	51    input_name_to_nodesoutput_name_to_nodec                    | j                   j                  |g dg d|      }|y|d   }|d   }|j                  d   |j                  vry| j                   j	                  |      \  }}t        |t              r|t        |t              sy|j                  dk7  ry| j                  j                  ||g       | j                   j                  d      }	t        j                  d|j                  d|z
     |j                  |   |j                  d   g|j                  d   g|	      }
d	|
_        | j                  j!                  |
       | j"                  | j$                  |	<   y)
zD
        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   fusezFusionBiasAdd.fuse   sT   
 

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

 ,
  ,262F2F$$Y/r   )__name__
__module____qualname__r   r   dictr7   __classcell__)r   s   @r   r	   r	      s%    2i 2&G$ &GT &Gr   r	   N)loggingr   fusion_baser   numpyr   onnxr   
onnx_modelr   r8   loggerr	    r   r   <module>rD      s.   
      	8	*GF *Gr   