
    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)NumpyHelper)helper)	OnnxModelc                   6   ^  \ rS rSrS\4U 4S jjrS rSrU =r$ )FusionBiasGelu   modelc                 \   > U(       a  [         TU ]  USSS5        g [         TU ]  USS5        g )NFastGeluzadd biasBiasGeluGelu)super__init__)selfr   is_fastgelu	__class__s      b/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/transformers/fusion_biasgelu.pyr   FusionBiasGelu.__init__   s*    GUJ
JGGUJ7    c           
      ~   UR                   nUS:X  a  SOSn[        UR                  5      S:w  a  g U R                  R	                  USS/SS /5      nUc  g Uu  pxS n	Sn
[        UR                  5       H=  u  pU R                  R                  U5      nUc  M%  Un
[        R                  " U5      n	  O   U	c  g [        U	R                  5      S:w  a  g X/nU R                  R                  XR                  S   /X#5      (       d  g U R                  R                  U5        [        R                  " UUR                  S   UR                  U
   /UR                  U R                  R!                  XTS	-   5      S
9nSUl        U R$                  R'                  U5        U R(                  U R*                  UR,                  '   g )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   fuseFusionBiasGelu.fuse   s   ||%1V%;ztzz?a

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

 ,
  ,8<8L8L$$Z__5r    )	__name__
__module____qualname____firstlineno__r   r   rB   __static_attributes____classcell__)r   s   @r   r	   r	      s    8i 8+M +Mr   r	   N)loggingr   fusion_baser   fusion_utilsr   onnxr   
onnx_modelr   rE   loggerr	   rD   r   r   <module>rQ      s.      $   	8	2MV 2Mr   