§
    kŠtjb0  ã                   ón   — d dl mZ d dlmZ  G d„ d¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Zd	S )
é    )ÚArgumentParser)ÚEnumc                   ó   — e Zd ZdZdZdZdZdS )ÚAttentionMaskFormatr   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚMaskIndexEndÚMaskIndexEndAndStartÚAttentionMaskÚNoMask© ó    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/fusion_options.pyr   r   	   s)   € € € € € à€Lð Ðð €Mð €F€F€Fr   r   c                   ó0   — e Zd ZdZdZdZdZd„ Zd„ Zd„ Z	dS )	ÚAttentionOpTypeÚ	AttentionÚMultiHeadAttentionÚGroupQueryAttentionÚPagedAttentionc                 ó   — | j         S ©N©Úvalue©Úselfs    r   Ú__str__zAttentionOpType.__str__   s
   € ØŒzÐr   c                 ó*   — t          | j        ¦  «        S r   )Úhashr   r   s    r   Ú__hash__zAttentionOpType.__hash__!   s   € Ý�D”JÑÔÐr   c                 ó"   — |j         | j         k    S r   r   )r   Úothers     r   Ú__eq__zAttentionOpType.__eq__$   s   € ØŒ{˜dœjÒ(Ð(r   N)
r
   r   r   r   r   r   r   r    r#   r&   r   r   r   r   r      sW   € € € € € Ø€IØ-ÐØ/ÐØ%€Nðð ð ð ð  ð  ð)ð )ð )ð )ð )r   r   c                   ód   — e Zd ZdZd„ Zdd„Zd„ Zdefd„Ze	d„ ¦   «         Z
e	d	efd
„¦   «         ZdS )ÚFusionOptionsz'Options of fusion in graph optimizationc                 óæ  — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        |dv rd| _        t          j        | _        |dk    rt          j        | _        n|dv rt          j        | _        d | _        |dv r3d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S d S )NTF)ÚclipÚqwen3Úbert)Úvitr+   ©ÚunetÚvaer*   )Úenable_geluÚenable_layer_normÚenable_attentionÚenable_rotary_embeddingsÚuse_multi_head_attentionÚ!disable_multi_head_attention_biasÚenable_skip_layer_normÚenable_embed_layer_normÚenable_bias_skip_layer_normÚenable_bias_geluÚenable_gelu_approximationÚenable_qordered_matmulÚenable_shape_inferenceÚenable_gemm_fast_geluÚgroup_norm_channels_lastr   r   Úattention_mask_formatr   r   Úattention_op_typeÚenable_nhwc_convÚenable_group_normÚenable_skip_group_normÚenable_bias_splitgeluÚenable_packed_qkvÚenable_packed_kvÚenable_bias_add)r   Ú
model_types     r   Ú__init__zFusionOptions.__init__+   s)  € ØˆÔØ!%ˆÔØ $ˆÔØ(,ˆÔ%ð ).ˆÔ%Ø16ˆÔ.à&*ˆÔ#Ø'+ˆÔ$Ø+/ˆÔ(Ø $ˆÔØ).ˆÔ&Ø&*ˆÔ#à&*ˆÔ#Ø%*ˆÔ"Ø(,ˆÔ%àÐ*Ð*Ð*Ø+0ˆDÔ(õ &9Ô%FˆÔ"Ø˜ÒÐÝ)<Ô)IˆDÔ&Ð&ØÐ+Ð+Ð+Ý)<Ô)CˆDÔ&à!%ˆÔð Ð0Ð0Ð0Ø$(ˆDÔ!Ø%)ˆDÔ"Ø*.ˆDÔ'Ø)-ˆDÔ&Ø%)ˆDÔ"Ø$(ˆDÔ!Ø#'ˆDÔ Ð Ð ð 1Ð0r   Tc                 óR   — |rt           j        | _        d S t           j        | _        d S r   )r   r   r@   r   )r   Úuse_raw_masks     r   Úuse_raw_attention_maskz$FusionOptions.use_raw_attention_maskZ   s-   € Øð 	JÝ)<Ô)JˆDÔ&Ð&Ð&å)<Ô)IˆDÔ&Ð&Ð&r   c                 ó(   — t           j        | _        d S r   )r   r   r@   r   s    r   Údisable_attention_maskz$FusionOptions.disable_attention_mask`   s   € Ý%8Ô%?ˆÔ"Ð"Ð"r   Úattn_op_typec                 ó   — || _         d S r   )rA   )r   rP   s     r   Úset_attention_op_typez#FusionOptions.set_attention_op_typec   s   € Ø!-ˆÔÐÐr   c                 ó  — t          | j        ¦  «        }| j        rd|_        | j        rd|_        | j        rd|_        | j        rd|_	        | j
        rd|_
        | j        rd|_        | j        rd|_        | j        rd|_        | j        rd|_        | j        rd|_        | j        rd|_        | j        rd|_        | j        r|                     d¦  «         | j        r|                     d¦  «         | j        r|                     ¦   «          | j        dv rp| j        rd|_        | j        rd|_        | j        rd|_         | j!        rd|_"        | j#        rd|_$        | j%        rd|_&        | j'        rd|_(        | j)        rd|_*        |S )NFTr.   )+r(   rI   Údisable_gelur1   Údisable_layer_normr2   Údisable_rotary_embeddingsr4   Údisable_attentionr3   r5   Údisable_skip_layer_normr7   Údisable_embed_layer_normr8   Údisable_bias_skip_layer_normr9   Údisable_bias_gelur:   r;   Údisable_shape_inferencer=   r>   Úuse_mask_indexrM   Úno_attention_maskrO   Úuse_group_norm_channels_firstr?   Údisable_nhwc_convrB   Údisable_group_normrC   Údisable_skip_group_normrD   Údisable_bias_splitgelurE   Údisable_packed_qkvrF   Údisable_packed_kvrG   Údisable_bias_addrH   )ÚargsÚoptionss     r   ÚparsezFusionOptions.parsef   sû  € å ¤Ñ0Ô0ˆØÔð 	(Ø"'ˆGÔØÔ"ð 	.Ø(-ˆGÔ%ØÔ)ð 	5Ø/4ˆGÔ,ØÔ!ð 	-Ø',ˆGÔ$ØÔ(ð 	4Ø/3ˆGÔ,ØÔ'ð 	3Ø-2ˆGÔ*ØÔ(ð 	4Ø.3ˆGÔ+ØÔ,ð 	8Ø27ˆGÔ/ØÔ!ð 	-Ø',ˆGÔ$ØÔ)ð 	5Ø04ˆGÔ-ØÔ'ð 	3Ø-2ˆGÔ*ØÔ%ð 	1Ø,0ˆGÔ)ØÔð 	2Ø×*Ò*¨5Ñ1Ô1Ð1ØÔ&ð 	1Ø×*Ò*¨4Ñ0Ô0Ð0ØÔ!ð 	-Ø×*Ò*Ñ,Ô,Ð,àŒ?Ð5Ð5Ð5ØÔ1ð 9Ø38�Ô0ØÔ%ð 1Ø+0�Ô(ØÔ&ð 2Ø,1�Ô)ØÔ+ð 7Ø16�Ô.ØÔ*ð 6Ø05�Ô-ØÔ&ð 2Ø,1�Ô)ØÔ%ð 1Ø+0�Ô(ØÔ$ð 0Ø*/�Ô'àˆr   Úparserc                 óL  — |                       dddd¬¦  «         |                      d¬¦  «         |                       dddd¬¦  «         |                      d¬	¦  «         |                       d
ddd¬¦  «         |                      d¬¦  «         |                       dddd¬¦  «         |                      d¬¦  «         |                       dddd¬¦  «         |                      d¬¦  «         |                       dddd¬¦  «         |                      d¬¦  «         |                       dddd¬¦  «         |                      d¬¦  «         |                       dddd¬¦  «         |                      d¬¦  «         |                       dddd¬¦  «         |                      d¬¦  «         |                       dddd ¬¦  «         |                      d¬!¦  «         |                       d"ddd#¬¦  «         |                      d¬$¦  «         |                       d%ddd&¬¦  «         |                      d¬'¦  «         |                       d(ddd)¬¦  «         |                      d¬*¦  «         |                       d+ddd,¬¦  «         |                      d¬-¦  «         |                       d.ddd/¬¦  «         |                      d¬0¦  «         |                       d1ddd2¬¦  «         |                      d¬3¦  «         |                       d4ddd5¬¦  «         |                      d¬6¦  «         |                       d7ddd8¬¦  «         |                      d¬9¦  «         |                       d:ddd;¬¦  «         |                      d¬<¦  «         |                       d=ddd>¬¦  «         |                      d¬?¦  «         |                       d@dddA¬¦  «         |                      d¬B¦  «         |                       dCdddD¬¦  «         |                      d¬E¦  «         |                       dFdddG¬¦  «         d S )HNz--disable_attentionFÚ
store_truezdisable Attention fusion)ÚrequiredÚactionÚhelp)rW   z--disable_skip_layer_normz%disable SkipLayerNormalization fusion)rX   z--disable_embed_layer_normz&disable EmbedLayerNormalization fusion)rY   z--disable_bias_skip_layer_normz2disable Add Bias and SkipLayerNormalization fusion)rZ   z--disable_bias_geluz)disable Add Bias and Gelu/FastGelu fusion)r[   z--disable_layer_normz!disable LayerNormalization fusion)rU   z--disable_geluzdisable Gelu fusion)rT   z--enable_gelu_approximationz+enable Gelu/BiasGelu to FastGelu conversion)r;   z--disable_shape_inferencez disable symbolic shape inference)r\   z--enable_gemm_fast_geluzenable GemmfastGelu fusion)r>   z--use_mask_indexzWuse mask index to activate fused attention to speed up. It requires right-side padding!)r]   z--use_raw_attention_maskz‘use raw attention mask. Use this option if your input is not right-side padding. This might deactivate fused attention and get worse performance.)rM   z--no_attention_maskz1no attention mask. Only works for model_type=bert)r^   z--use_multi_head_attentionzŸUse MultiHeadAttention instead of Attention operator for testing purpose. Note that MultiHeadAttention might be slower than Attention when qkv are not packed. )r5   z--disable_group_normz9not fuse GroupNorm. Only works for model_type=unet or vae)ra   z--disable_skip_group_normzPnot fuse Add + GroupNorm to SkipGroupNorm. Only works for model_type=unet or vae)rb   z--disable_packed_kvz[not use packed kv for cross attention in MultiHeadAttention. Only works for model_type=unet)re   z--disable_packed_qkvz[not use packed qkv for self attention in MultiHeadAttention. Only works for model_type=unet)rd   z--disable_bias_addz0not fuse BiasAdd. Only works for model_type=unet)rf   z--disable_bias_splitgeluz6not fuse BiasSplitGelu. Only works for model_type=unet)rc   z--disable_nhwc_convz:Do not use NhwcConv. Only works for model_type=unet or vae)r`   z--use_group_norm_channels_firstznUse channels_first (NCHW) instead of channels_last (NHWC) for GroupNorm. Only works for model_type=unet or vae)r_   z--disable_rotary_embeddingsz5Do not fuse rotary embeddings into RotaryEmbedding op)Úadd_argumentÚset_defaults)rj   s    r   Úadd_argumentszFusionOptions.add_argumentsœ   sê  € à×ÒØ!ØØØ+ð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨eÐÑ4Ô4Ð4à×ÒØ'ØØØ8ð	 	ñ 	
ô 	
ð 	
ð 	×Ò°EÐÑ:Ô:Ð:à×ÒØ(ØØØ9ð	 	ñ 	
ô 	
ð 	
ð 	×Ò°UÐÑ;Ô;Ð;à×ÒØ,ØØØEð	 	ñ 	
ô 	
ð 	
ð 	×Ò¸ÐÑ?Ô?Ð?à×ÒØ!ØØØ<ð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨eÐÑ4Ô4Ð4à×ÒØ"ØØØ4ð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨uÐÑ5Ô5Ð5à×ÒØØØØ&ð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨ÐÑ/Ô/Ð/à×ÒØ)ØØØ>ð	 	ñ 	
ô 	
ð 	
ð 	×Ò°eÐÑ<Ô<Ð<à×ÒØ'ØØØ3ð	 	ñ 	
ô 	
ð 	
ð 	×Ò°EÐÑ:Ô:Ð:à×ÒØ%ØØØ-ð	 	ñ 	
ô 	
ð 	
ð 	×Ò°%ÐÑ8Ô8Ð8à×ÒØØØØjð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨5ÐÑ1Ô1Ð1à×ÒØ&ØØð eð	 	ñ 	
ô 	
ð 	
ð 	×Ò°5ÐÑ9Ô9Ð9à×ÒØ!ØØØDð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨eÐÑ4Ô4Ð4à×ÒØ(ØØðdð	 	ñ 	
ô 	
ð 	
ð 	×Ò°UÐÑ;Ô;Ð;à×ÒØ"ØØØLð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨uÐÑ5Ô5Ð5à×ÒØ'ØØØcð	 	ñ 	
ô 	
ð 	
ð 	×Ò°EÐÑ:Ô:Ð:à×ÒØ!ØØØnð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨eÐÑ4Ô4Ð4à×ÒØ"ØØØnð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨uÐÑ5Ô5Ð5à×ÒØ ØØØCð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨UÐÑ3Ô3Ð3à×ÒØ&ØØØIð	 	ñ 	
ô 	
ð 	
ð 	×Ò°5ÐÑ9Ô9Ð9à×ÒØ!ØØØMð	 	ñ 	
ô 	
ð 	
ð 	×Ò¨eÐÑ4Ô4Ð4à×ÒØ-ØØð Bð	 	ñ 	
ô 	
ð 	
ð 	×Ò¸%ÐÑ@Ô@Ð@à×ÒØ)ØØØHð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   N)T)r
   r   r   Ú__doc__rJ   rM   rO   r   rR   Ústaticmethodri   r   rr   r   r   r   r(   r(   (   s¹   € € € € € Ø1Ð1ð-(ð -(ð -(ð^Jð Jð Jð Jð@ð @ð @ð.°/ð .ð .ð .ð .ð ð3ð 3ñ „\ð3ðj ðw
˜nð w
ð w
ð w
ñ „\ðw
ð w
ð w
r   r(   N)Úargparser   Úenumr   r   r   r(   r   r   r   ú<module>rw      s¹   ðð
 $Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðð ð ð ð ñ ô ð ð)ð )ð )ð )ð )�dñ )ô )ð )ð"l
ð l
ð l
ð l
ð l
ñ l
ô l
ð l
ð l
ð l
r   