
     Ng                     t    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)Fusion)NumpyHelper)helper)	OnnxModelc                   *     e Zd Zdef fdZd Z xZS )FusionBiasGelumodelc                     |r&t                                          |ddd           d S t                                          |dd           d S )NFastGeluzadd biasBiasGeluGelu)super__init__)selfr
   is_fastgelu	__class__s      d/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/transformers/fusion_biasgelu.pyr   zFusionBiasGelu.__init__   sQ     	8GGUJ
JGGGGGGGUJ77777    c           
      *   |j         }|dk    rdnd}t          |j                  dk    rd S | j                            |ddgdd g          }|d S |\  }}d }	d}
t          |j                  D ]8\  }}| j                            |          }|"|}
t          j        |          }	 |	d S t          |	j	                  dk    rd S ||g}| j        
                    ||j        d         g||          sd S | j                            |           t          j        ||j        d         |j        |
         g|j        | j                            ||d	z             
          }d|_        | j                            |           | j        | j        |j        <   d S )Nr   r   r      AddMatMulr   	_AddBias_)inputsoutputsnamezcom.microsoft)op_typeleninputr
   match_parent_path	enumerateget_initializerr   to_arrayshapeis_safe_to_fuse_nodesoutputnodes_to_removeextendr   	make_nodecreate_node_namedomainnodes_to_addappendthis_graph_namenode_name_to_graph_namer   )r   nodeinput_name_to_nodesoutput_name_to_nodegelu_op_typefuse_op_typenodesaddmatmulbias_weight
bias_indexir!   initializersubgraph_nodes
fused_nodes                   r   fusezFusionBiasGelu.fuse   s   |%1V%;%;zztz??aF
,,TE83Dq$iPP=Ff
!#),, 	 	HAu*44U;;K"J%.{;;KF{ !!Q&&Fz//T[^,.ACV
 
 	 F##N333%M!$ci
&;<K,,\<+;UVV	
 
 

 ,
  ,,,8<8L$Z_555r   )__name__
__module____qualname__r   r   r@   __classcell__)r   s   @r   r	   r	      sZ        8i 8 8 8 8 8 8+M +M +M +M +M +M +Mr   r	   N)loggingr   fusion_baser   fusion_utilsr   onnxr   
onnx_modelr   rA   loggerr	    r   r   <module>rL      s                $ $ $ $ $ $                  	8		2M 2M 2M 2M 2MV 2M 2M 2M 2M 2Mr   