
     Ng                         d dl mZ d dlm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d	S )
    )	getLogger)Optional)FusionAttentionVae)FusionOptions)
ModelProto)UnetOnnxModelc                   N     e Zd Zd
dededef fdZddee         fdZd	 Z	 xZ
S )VaeOnnxModelr   model	num_headshidden_sizec                     |dk    r|dk    s|dk    r	||z  dk    sJ t                                          |||           d S )Nr   )r   r   )super__init__)selfr   r   r   	__class__s       c/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/transformers/onnx_model_vae.pyr   zVaeOnnxModel.__init__   sZ    Q;!#3#3Q;YbKbfgKgKgKgKg)MMMMM    Noptionsc                 d    t          | | j        | j                  }|                                 d S N)r   r   r   apply)r   r   self_attention_fusions      r   fuse_multi_head_attentionz&VaeOnnxModel.fuse_multi_head_attention   s1     249I4> Z Z##%%%%%r   c                     i }g d}|D ])}|                      |          }t          |          ||<   *t                              d|            |S )z8
        Returns node count of fused operators.
        )	Attention	GroupNormSkipGroupNormNhwcConvzOptimized operators:)get_nodes_by_op_typelenloggerinfo)r   op_countopsopnodess        r   get_fused_operator_statisticsz*VaeOnnxModel.get_fused_operator_statistics   so     
 
 
  	& 	&B--b11Eu::HRLL5855666r   )r   r   r   )__name__
__module____qualname__r   intr   r   r   r   r(   __classcell__)r   s   @r   r
   r
      s        N Nj NS N3 N N N N N N& &-1H & & & &
      r   r
   N)loggingr   typingr   fusion_attention_vaer   fusion_optionsr   onnxr   onnx_model_unetr   r)   r"   r
    r   r   <module>r5      s                3 3 3 3 3 3 ( ( ( ( ( (       ) ) ) ) ) )	8		    =     r   