
    g                     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)NumpyHelper)helper)	OnnxModelc                   *     e Zd Zdef fdZd Z xZS )FusionBiasGelumodelc                 R    |rt         |   |ddd       y t         |   |dd       y )NFastGeluzadd biasBiasGeluGelu)super__init__)selfr
   is_fastgelu	__class__s      ]/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/transformers/fusion_biasgelu.pyr   zFusionBiasGelu.__init__   s*    GUJ
JGGUJ7    c           
      r   |j                   }|dk(  rdnd}t        |j                        dk7  ry | j                  j	                  |ddgdd g      }|y |\  }}d }	d}
t        |j                        D ];  \  }}| j                  j                  |      }|$|}
t        j                  |      }	 n |	y t        |	j                        dk7  ry ||g}| j                  j                  ||j                  d   g||      sy | j                  j                  |       t        j                  ||j                  d   |j                  |
   g|j                  | j                  j!                  ||d	z         
      }d|_        | j$                  j'                  |       | j(                  | j*                  |j,                  <   y )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%;ztzz?a

,,TE83Dq$iP=f
!#)),HAu**44U;K"J%..{;K - {  !Q&zz//T[[^,.ACV
 ##N3%%MM!$cii
&;<KK,,\<+;UV	

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