
    hH                     Z    S SK Jr  S SKJr  S SKJr  S SKJr  \" \5      r	 " S S\5      r
g)    )	getLogger)FusionAttentionClip)
ModelProto)BertOnnxModelc                   H   ^  \ rS rSrS	S\S\S\4U 4S jjjrS rS rSr	U =r
$ )
ClipOnnxModel   model	num_headshidden_sizec                 l   > [         TU ]  XUS9  [        X R                  U R                  5      U l        g )N)r   r   )super__init__r   r   r   clip_attention_fusion)selfr
   r   r   	__class__s       b/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/transformers/onnx_model_clip.pyr   ClipOnnxModel.__init__   s1    M%8?O?OQUQ_Q_%`"    c                     0 n/ SQnU H!  nU R                  U5      n[        U5      X'   M#     [        R                  SU 35        U$ )z(
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_statistics+ClipOnnxModel.get_fused_operator_statistics   sR     
 B--b1Eu:HL  	*8*56r   c                 8    U R                   R                  5         g )N)r   apply)r   s    r   fuse_attentionClipOnnxModel.fuse_attention)   s    ""((*r   )r   )r   r   )__name__
__module____qualname____firstlineno__r   intr   r&   r*   __static_attributes____classcell__)r   s   @r   r   r      s6    aj aS a3 a a*+ +r   r   N)loggingr   fusion_attention_clipr   onnxr   onnx_model_bertr   r,   r    r    r   r   <module>r8      s)     5  )	8	+M +r   