§
    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)Úndarray)Úhelper)Ú	OnnxModelc                   ó4   ‡ — e Zd Zdefˆ fd„Zdedefd„Zˆ xZS )ÚFusionBiasAddÚmodelc                 óN   •— t          ¦   «                              |dd¦  «         d S )NÚBiasAddÚAdd)ÚsuperÚ__init__)Úselfr
   Ú	__class__s     €úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/fusion_bias_add.pyr   zFusionBiasAdd.__init__   s%   ø€ Ý‰Œ×Ò˜ 	¨5Ñ1Ô1Ð1Ð1Ð1ó    Úinput_name_to_nodesÚoutput_name_to_nodec                 ó®  — | j                              |g d¢g d¢|¦  «        }|€dS |d         }|d         }|j        d         |j        vrdS | j                              |¦  «        \  }}t          |t          ¦  «        r|�t          |t          ¦  «        sdS |j        dk    rdS | j	         
                    ||g¦  «         | j                              d¦  «        }	t          j        d|j        d|z
           |j        |         |j        d         g|j        d         g|	¬¦  «        }
d	|
_        | j                             |
¦  «         | j        | j        |	<   dS )
zD
        Fuse Add bias and Add skip connection into BiasAdd
        )r   ÚMatMulÚBiasSplitGelur   ÚSkipLayerNormalization)r   Nr   r   r   Nr   éÿÿÿÿé   r   )ÚinputsÚoutputsÚnamezcom.microsoft)r
   Úmatch_parent_pathÚinputÚoutputÚget_constant_inputÚ
isinstanceÚintr   ÚndimÚnodes_to_removeÚextendÚcreate_node_namer   Ú	make_nodeÚdomainÚnodes_to_addÚappendÚthis_graph_nameÚnode_name_to_graph_name)r   Úadd_noder   r   ÚnodesÚ	bias_nodeÚskip_layer_normÚ
bias_indexÚ
bias_valueÚ	node_nameÚ
fused_nodes              r   ÚfusezFusionBiasAdd.fuse   s~  € ð
 ”
×,Ò,ØØRÐRÐRØÐÐØñ	
ô 
ˆð ˆ=ØˆFà˜!”Hˆ	Ø œ)ˆð Œ>˜!Ô OÔ$:Ð:Ð:ØˆFà!%¤×!>Ò!>¸yÑ!IÔ!IÑˆ
�JÝ˜:¥sÑ+Ô+ð 	°Ð1GÍZÐXbÕdkÑMlÔMlÐ1GØˆFØŒ?˜aÒÐØˆFàÔ×#Ò# X¨yÐ$9Ñ:Ô:Ð:Ø”J×/Ò/°	Ñ:Ô:ˆ	ÝÔ%ØØ”O A¨
¡NÔ3°Y´_ÀZÔ5PÐRZÔR`ÐabÔRcÐdØ”_ QÔ'Ð(Øð	
ñ 
ô 
ˆ
ð ,ˆ
ÔØÔ× Ò  Ñ,Ô,Ð,Ø26Ô2FˆÔ$ YÑ/Ð/Ð/r   )Ú__name__Ú
__module__Ú__qualname__r   r   Údictr7   Ú__classcell__)r   s   @r   r	   r	      sp   ø€ € € € € ð2˜ið 2ð 2ð 2ð 2ð 2ð 2ð&G°$ð &GÈTð &Gð &Gð &Gð &Gð &Gð &Gð &Gð &Gr   r	   N)Úloggingr   Úfusion_baser   Únumpyr   Úonnxr   Ú
onnx_modelr   r8   Úloggerr	   © r   r   ú<module>rD      s®   ðð
 Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à	ˆ�8Ñ	Ô	€ð*Gð *Gð *Gð *Gð *G�Fñ *Gô *Gð *Gð *Gð *Gr   