
     Ng                     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       d/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/transformers/onnx_model_clip.pyr   zClipOnnxModel.__init__   sC    )MMM%8t?OQUQ_%`%`"""    c                     i }g d}|D ])}|                      |          }t          |          ||<   *t                              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   so     
 
 
  	& 	&B--b11Eu::HRLL58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>r0      s          5 5 5 5 5 5       ) ) ) ) ) )	8		+ + + + +M + + + + +r   