§
    kŠtjH  ã                   óh   — 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)ÚFusionAttentionClip)Ú
ModelProto)ÚBertOnnxModelc                   ó:   ‡ — e Zd Zddededefˆ fd„Zd„ Zd„ Zˆ xZS )	ÚClipOnnxModelr   ÚmodelÚ	num_headsÚhidden_sizec                 ó�   •— t          ¦   «                              |||¬¦  «         t          | | j        | j        ¦  «        | _        d S )N)r
   r   )ÚsuperÚ__init__r   r   r
   Úclip_attention_fusion)Úselfr	   r
   r   Ú	__class__s       €úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/onnx_model_clip.pyr   zClipOnnxModel.__init__   sC   ø€ Ý‰Œ×Ò˜¨)ÀÐÑMÔMÐMÝ%8¸¸tÔ?OÐQUÔQ_Ñ%`Ô%`ˆÔ"Ð"Ð"ó    c                 ó¤   — i }g d¢}|D ])}|                       |¦  «        }t          |¦  «        ||<   Œ*t                               d|› �¦  «         |S )z8
        Returns node count of fused operators.
        )Ú	AttentionÚFastGeluÚGeluÚLayerNormalizationÚ	QuickGeluÚBiasGeluÚSkipLayerNormalizationzOptimized operators:)Úget_nodes_by_op_typeÚlenÚloggerÚinfo)r   Úop_countÚopsÚopÚnodess        r   Úget_fused_operator_statisticsz+ClipOnnxModel.get_fused_operator_statistics   so   € ð ˆð
ð 
ð 
ˆð ð 	&ð 	&ˆBØ×-Ò-¨bÑ1Ô1ˆEÝ˜u™:œ:ˆH�R‰LˆLå�ŠÐ5¨8Ð5Ð5Ñ6Ô6Ð6Øˆr   c                 ó8   — | j                              ¦   «          d S )N)r   Úapply)r   s    r   Úfuse_attentionzClipOnnxModel.fuse_attention)   s   € ØÔ"×(Ò(Ñ*Ô*Ð*Ð*Ð*r   )r   r   )	Ú__name__Ú
__module__Ú__qualname__r   Úintr   r$   r'   Ú__classcell__)r   s   @r   r   r      s   ø€ € € € € ðað a˜jð a°Sð aÈ3ð að að að að að aðð ð ð*+ð +ð +ð +ð +ð +ð +r   r   N)Úloggingr   Úfusion_attention_clipr   Úonnxr   Úonnx_model_bertr   r(   r   r   © r   r   ú<module>r2      s’   ðð Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )à	ˆ�8Ñ	Ô	€ð+ð +ð +ð +ð +�Mñ +ô +ð +ð +ð +r   