
    fPi                     t    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)FusionAttentionVae)FusionOptions)
ModelProto)UnetOnnxModelc                   H     e Zd Zd
dededef fdZddedz  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       {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/onnxruntime/transformers/onnx_model_vae.pyr   zVaeOnnxModel.__init__   sZ    Q;!#3#3Q;YbKbfgKgKgKgh)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'   __classcell__)r   s   @r   r	   r	      s        N Nj NS N3 N N N N N N& &1E & & & &
      r   r	   N)loggingr   fusion_attention_vaer   fusion_optionsr   onnxr   onnx_model_unetr   r(   r!   r	    r   r   <module>r3      s          3 3 3 3 3 3 ( ( ( ( ( (       ) ) ) ) ) )	8		    =     r   