§
    kŠtjë
  ã                   ón   — d dl Z d dlmZ d dlmZ d dlmZ  e j        e¦  «        Z	 G d„ de¦  «        Z
dS )é    N)ÚFusion)Úhelper)Ú	OnnxModelc                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚFusionQuickGeluÚmodelc                 óP   •— t          ¦   «                              |ddg¦  «         d S )NÚ	QuickGeluÚMul)ÚsuperÚ__init__)Úselfr   Ú	__class__s     €úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/fusion_quickgelu.pyr   zFusionQuickGelu.__init__   s'   ø€ Ý‰Œ×Ò˜ ¨e¨WÑ5Ô5Ð5Ð5Ð5ó    c                 óR  — |j         dk    rt                               d¦  «         d S |}|j        d         }| j                             |dgdg¦  «        }|€t                               d¦  «         d S |d         }| j                             |dgdg¦  «        }|€t                               d¦  «         d S |d         }| j                             |j        d         ¦  «                             ¦   «         }t          |dz
  ¦  «        d	k    rt                               d
¦  «         d S |j        d         |k    rt                               d¦  «         d S t          j
        d|g|j        d         g| j                             d¦  «        ¬¦  «        }	d|	_        |	j                             t          j        d|¦  «        g¦  «         | j                             |||g¦  «         | j                             |	¦  «         | j        | j        |	j        <   |                      d¦  «         d S )Nr   z/fuse_quickgelu: failed to match second Mul noder   ÚSigmoidé   z,fuse_quickgelu: failed to match Sigmoid nodez.fuse_quickgelu: failed to match first Mul nodeg     <û?gü©ñÒMbP?z3fuse_quickgelu: failed to match approximation valuezFfuse_quickgelu: failed to match root input with first Mul node's inputr
   )ÚinputsÚoutputsÚnamezcom.microsoftÚalpha)Úop_typeÚloggerÚdebugÚinputr   Úmatch_parent_pathÚget_constant_valueÚitemÚabsr   Ú	make_nodeÚoutputÚcreate_node_nameÚdomainÚ	attributeÚextendÚmake_attributeÚnodes_to_removeÚnodes_to_addÚappendÚthis_graph_nameÚnode_name_to_graph_namer   Úincrease_counter)
r   ÚnodeÚinput_name_to_nodesÚoutput_name_to_nodeÚsecond_mul_nodeÚ
root_inputÚsigmoid_nodeÚfirst_mul_nodeÚapproximation_valueÚnew_nodes
             r   ÚfusezFusionQuickGelu.fuse   s  € ð Œ<˜5Ò Ð Ý�LŠLÐJÑKÔKÐKØˆFàˆØ$Ô*¨1Ô-ˆ
à”z×3Ò3°OÀiÀ[ÐSTÐRUÑVÔVˆØÐÝ�LŠLÐGÑHÔHÐHØˆFØ# A”ˆàœ×5Ò5°lÀUÀGÈaÈSÑQÔQˆØÐ!Ý�LŠLÐIÑJÔJÐJØˆFØ'¨Ô*ˆà"œj×;Ò;¸NÔ<PÐQRÔ<SÑTÔT×YÒYÑ[Ô[ÐÝÐ" \Ñ1Ñ2Ô2°dÒ:Ð:Ý�LŠLÐNÑOÔOÐOØˆFàÔ Ô" jÒ0Ð0Ý�LŠLÐaÑbÔbÐbØˆFåÔ#ØØ�<Ø$Ô+¨AÔ.Ð/Ø”×,Ò,¨[Ñ9Ô9ð	
ñ 
ô 
ˆð *ˆŒØÔ×!Ò!¥6Ô#8¸ÐBUÑ#VÔ#VÐ"WÑXÔXÐXàÔ×#Ò# ^°\À?Ð$SÑTÔTÐTØÔ× Ò  Ñ*Ô*Ð*Ø6:Ô6JˆÔ$ X¤]Ñ3Ø×Ò˜kÑ*Ô*Ð*Ð*Ð*r   )Ú__name__Ú
__module__Ú__qualname__r   r   r7   Ú__classcell__)r   s   @r   r   r      sS   ø€ € € € € ð6˜ið 6ð 6ð 6ð 6ð 6ð 6ð7+ð 7+ð 7+ð 7+ð 7+ð 7+ð 7+r   r   )ÚloggingÚfusion_baser   Úonnxr   Ú
onnx_modelr   Ú	getLoggerr8   r   r   © r   r   ú<module>rB      sŒ   ðð €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à	ˆÔ	˜8Ñ	$Ô	$€ð;+ð ;+ð ;+ð ;+ð ;+�fñ ;+ô ;+ð ;+ð ;+ð ;+r   