
     Ng                         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	 d dl
mZ  ee          Z G d de          Zd	S )
    )	getLogger)Dict)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                 N    t                                          |dd           d S )NBiasAddAdd)super__init__)selfr   	__class__s     d/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/transformers/fusion_bias_add.pyr   zFusionBiasAdd.__init__   s%    	511111    input_name_to_nodesoutput_name_to_nodec                    | j                             |g dg d|          }|dS |d         }|d         }|j        d         |j        vrdS | j                             |          \  }}t          |t                    r|t          |t                    sdS |j        dk    rdS | j	        
                    ||g           | j                             d          }	t          j        d|j        d|z
           |j        |         |j        d         g|j        d         g|	          }
d	|
_        | j                            |
           | j        | j        |	<   dS )
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   s~   
 
,,RRR	
 
 =F!H	) >!O$:::F!%!>!>y!I!I
J:s++ 	1GZXbdkMlMl1GF?aF##Xy$9:::J//	::	%OA
N3Y_Z5PRZR`abRcd_Q'(	
 
 

 ,
  ,,,262F$Y///r   )__name__
__module____qualname__r   r   r   r8   __classcell__)r   s   @r   r
   r
      sp        2i 2 2 2 2 2 2&G$ &GT &G &G &G &G &G &G &G &Gr   r
   N)loggingr   typingr   fusion_baser   numpyr   onnxr   
onnx_modelr   r9   loggerr
    r   r   <module>rE      s   
                                          	8		*G *G *G *G *GF *G *G *G *G *Gr   