§
    kŠtjº  ã                   ó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      €úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/fusion_biasgelu.pyr   zFusionBiasGelu.__init__   sQ   ø€ Øð 	8Ý‰GŒG×Ò˜U J°
¸JÑGÔGÐGÐGÐGå‰GŒG×Ò˜U J°Ñ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É  € Ø”|ˆØ%1°VÒ%;Ð%;�z�zÀˆåˆtŒz‰?Œ?˜aÒÐØˆFà”
×,Ò,¨T°E¸8Ð3DÀqÈ$ÀiÑPÔPˆØˆ=ØˆFØ‰ˆˆfàˆàˆ
Ý! #¤)Ñ,Ô,ð 	ð 	‰HˆAˆuØœ*×4Ò4°UÑ;Ô;ˆKØÐ"ØØˆJÝ%Ô.¨{Ñ;Ô;ˆKØØÐØˆFÝˆ{Ô Ñ!Ô! QÒ&Ð&ØˆFà ˜ˆØŒz×/Ò/Ø˜Tœ[¨œ^Ð,Ð.AÐCVñ
ô 
ð 	ð ˆFàÔ×#Ò# NÑ3Ô3Ð3åÔ%ØØ”M !Ô$ c¤i°
Ô&;Ð<Ø”KØ”×,Ò,¨\¸<È+Ñ;UÑVÔVð	
ñ 
ô 
ˆ
ð ,ˆ
ÔØÔ× Ò  Ñ,Ô,Ð,Ø8<Ô8LˆÔ$ Z¤_Ñ5Ð5Ð5r   )Ú__name__Ú
__module__Ú__qualname__r   r   r@   Ú__classcell__)r   s   @r   r	   r	      sZ   ø€ € € € € ð8˜ið 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   