
    g                     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)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 )ClipOnnxModelmodel	num_headshidden_sizec                 v    t         |   |||       t        | | j                  | j                        | _        y )N)r
   r   )super__init__r   r   r
   clip_attention_fusion)selfr	   r
   r   	__class__s       ]/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/transformers/onnx_model_clip.pyr   zClipOnnxModel.__init__   s5    )M%8t?O?OQUQ_Q_%`"    c                     i }g d}|D ]!  }| j                  |      }t        |      ||<   # t        j                  d|        |S )z8
        Returns node count of fused operators.
        )	AttentionGeluLayerNormalization	QuickGelu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   sT     
 B--b1Eu:HRL  	*8*56r   c                 8    | j                   j                          y )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j aS a3 a&+r   r   N)loggingr   fusion_attention_clipr   onnxr   onnx_model_bertr   r&   r   r    r   r   <module>r0      s)     5  )	8	+M +r   