Ë
    ÝÍ:jº  ã                   ó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      €ú}/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/onnxruntime/transformers/fusion_biasgelu.pyr   zFusionBiasGelu.__init__   s*   ø€ ÙÜ‰GÑ˜U J°
¸JÕGä‰GÑ˜U J°Õ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©  € Ø—|‘|ˆØ%1°VÒ%;‘zÀˆäˆt�z‰z‹?˜aÒØà—
‘
×,Ñ,¨T°E¸8Ð3DÀqÈ$ÀiÓPˆØˆ=ØØ‰ˆˆfàˆàˆ
Ü! #§)¡)Ó,ò 	‰HˆAˆuØŸ*™*×4Ñ4°UÓ;ˆKØÐ"ØØˆJÜ%×.Ñ.¨{Ó;ˆKÙð	ð ÐØÜˆ{× Ñ Ó! QÒ&Øà ˜ˆØ�z‰z×/Ñ/Ø˜TŸ[™[¨™^Ð,Ð.AÐCVô
ð à×Ñ×#Ñ# NÔ3ä×%Ñ%ØØ—M‘M !Ñ$ c§i¡i°
Ñ&;Ð<Ø—K‘KØ—‘×,Ñ,¨\¸<È+Ñ;UÓVô	
ˆ
ð ,ˆ
ÔØ×Ñ× Ñ  Ô,Ø8<×8LÑ8Lˆ×$Ñ$ Z§_¡_Ò5r   )Ú__name__Ú
__module__Ú__qualname__r   r   r@   Ú__classcell__)r   s   @r   r	   r	      s   ø„ ð8˜iõ 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   