§
    ‚ŠtjóÁ  ã                   óÄ  — d dl mZ d dlmZ d dlmZ d dlZd dlmZ ddlm	Z
 ddlmZ dd	lmZmZ dd
lmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZm Z  ddl!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7  ed¦  «         G d„ dej8        ¦  «        ¦   «         Z9 G d„ dej8        ¦  «        Z: G d„ d ej8        ¦  «        Z; G d!„ d"ej8        ¦  «        Z< G d#„ d$ej8        ¦  «        Z=d%„ Z> G d&„ d'ej8        ¦  «        Z? G d(„ d)ej8        ¦  «        Z@ G d*„ d+ej8        ¦  «        ZAd,„ ZB ed-¦  «        dYd.„¦   «         ZCd/ejD        d0eEd1ejD        fd2„ZF	 dZd4ej8        d5ejD        d6ejD        d7ejD        d8ejD        dz  d9eGd:eGd;e(e*         fd<„ZH eeC¦  «         G d=„ d>ej8        ¦  «        ¦   «         ZI G d?„ d@e¦  «        ZJe+ G dA„ dBe&¦  «        ¦   «         ZKe+ G dC„ dDe&¦  «        ¦   «         ZL G dE„ dFej8        ¦  «        ZMe+ G dG„ dHeK¦  «        ¦   «         ZNe+ G dI„ dJeKe¦  «        ¦   «         ZO e+dK¬L¦  «        e G dM„ dNe ¦  «        ¦   «         ¦   «         ZP e+dO¬L¦  «        e G dP„ dQe¦  «        ¦   «         ¦   «         ZQ e+dR¬L¦  «         G dS„ dTeL¦  «        ¦   «         ZR e+dU¬L¦  «         G dV„ dWeLe¦  «        ¦   «         ZSg dX¢ZTdS )[é    )ÚCallable)Ú	dataclass)ÚOptionalN)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_kernel_forward_from_hubÚuse_kernel_func_from_hubÚuse_kernelized_func)Úcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚBaseModelOutputWithPoolingÚCausalLMOutputWithPastÚModelOutput)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚtorch_compilable_check)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputsé   )Ú	AutoModelé   )Ú
AriaConfigÚAriaTextConfigÚRMSNormc                   óT   ‡ — e Zd Zd	deddfˆ fd„Zdej        dej        fd„Zd„ Zˆ xZ	S )
ÚAriaTextRMSNormç�íµ ÷Æ°>ÚepsÚreturnNc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )z>
        AriaTextRMSNorm is equivalent to T5LayerNorm
        N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer,   Ú	__class__s      €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/aria/modeling_aria.pyr0   zAriaTextRMSNorm.__init__6   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐó    Úhidden_statesc                 ó  — |j         }|                     t          j        ¦  «        }|                     d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        |                     |¦  «        z  S )Nr#   éÿÿÿÿT)Úkeepdim)	ÚdtypeÚtor2   Úfloat32ÚpowÚmeanÚrsqrtr5   r4   )r6   r;   Úinput_dtypeÚvariances       r9   ÚforwardzAriaTextRMSNorm.forward>   s|   € Ø#Ô)ˆØ%×(Ò(­¬Ñ7Ô7ˆØ ×$Ò$ QÑ'Ô'×,Ò,¨R¸Ð,Ñ>Ô>ˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆØŒ{˜]×-Ò-¨kÑ:Ô:Ñ:Ð:r:   c                 óH   — t          | j        j        ¦  «        › d| j        › �S )Nz, eps=)Útupler4   Úshaper5   ©r6   s    r9   Ú
extra_reprzAriaTextRMSNorm.extra_reprE   s&   € Ý˜œÔ)Ñ*Ô*ÐIÐI°$Ô2GÐIÐIÐIr:   )r+   )
Ú__name__Ú
__module__Ú__qualname__Úfloatr0   r2   ÚTensorrG   rL   Ú__classcell__©r8   s   @r9   r*   r*   4   sŒ   ø€ € € € € ð$ð $¨ð $¸$ð $ð $ð $ð $ð $ð $ð; U¤\ð ;°e´lð ;ð ;ð ;ð ;ðJð Jð Jð Jð Jð Jð Jr:   r*   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚAriaProjectorMLPa!  
    Feed-Forward Network module for the Aria Projector.

    Args:
        in_features (`int`):
            Input embedding dimension.
        hidden_features (`int`):
            Hidden dimension of the feed-forward network.
        output_dim (`int`):
            Output dimension.
    c                 óÜ   •— t          ¦   «                              ¦   «          t          j        ||d¬¦  «        | _        t          j        ||d¬¦  «        | _        t          d         | _        d S )NF©ÚbiasÚgelu_new)r/   r0   r   ÚLinearÚ	linear_inÚ
linear_outr	   Úact)r6   Úin_featuresÚhidden_featuresÚ
output_dimr8   s       €r9   r0   zAriaProjectorMLP.__init__V   sY   ø€ Ý‰Œ×ÒÑÔÐÝœ ;°ÀeÐLÑLÔLˆŒÝœ) O°ZÀeÐLÑLÔLˆŒÝ˜*Ô%ˆŒˆˆr:   c                 ó€   — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }|S ©N)r]   r[   r\   )r6   r;   s     r9   rG   zAriaProjectorMLP.forward\   s6   € ØŸš §¢°Ñ!>Ô!>Ñ?Ô?ˆØŸš¨Ñ6Ô6ˆØÐr:   ©rM   rN   rO   Ú__doc__r0   rG   rR   rS   s   @r9   rU   rU   I   sQ   ø€ € € € € ð
ð 
ð&ð &ð &ð &ð &ðð ð ð ð ð ð r:   rU   c                   ó6   ‡ — e Zd ZdZddedefˆ fd„Zd	d„Zˆ xZS )
ÚAriaCrossAttentionzv
    Aria Cross-Attention module.

    Args:
        config (`AriaConfig`):
            The configuration to use.
    r   ÚconfigÚdropout_ratec                 ó0  •— t          ¦   «                              ¦   «          |j        j        }|j        j        }|| _        t          j        ||d¬¦  «        | _        t          j        ||d¬¦  «        | _	        t          j        ||d¬¦  «        | _
        t          j        ||d¬¦  «        | _        t          j        ||¦  «        | _        t          j        |¦  «        | _        t          j        |¦  «        | _        t          j        |¦  «        | _        d S )NFrW   T)Úbatch_first)r/   r0   Úvision_configr7   Únum_attention_headsÚ	num_headsr   rZ   Úq_projÚk_projÚv_projÚMultiheadAttentionÚmultihead_attnÚlinearÚDropoutÚdropoutÚ	LayerNormÚ
layer_normÚlayer_norm_kv)r6   rg   rh   r7   rm   r8   s        €r9   r0   zAriaCrossAttention.__init__k   sè   ø€ Ý‰Œ×ÒÑÔÐØÔ*Ô6ˆØÔ(Ô<ˆ	Ø"ˆŒÝ”i ¨[¸uÐEÑEÔEˆŒÝ”i ¨[¸uÐEÑEÔEˆŒÝ”i ¨[¸uÐEÑEÔEˆŒõ !Ô3°KÀÐX\Ð]Ñ]Ô]ˆÔÝ”i ¨[Ñ9Ô9ˆŒÝ”z ,Ñ/Ô/ˆŒåœ, {Ñ3Ô3ˆŒÝœ\¨+Ñ6Ô6ˆÔÐÐr:   Nc                 ó\  — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      ||||¬¦  «        \  }}|                      |                      |¦  «        ¦  «        }|S )aÉ  
        Forward pass of the AriaCrossAttention module.

        Args:
            key_value_states (`torch.Tensor`):
                Input tensor for key and value.
            hidden_states (`torch.Tensor`):
                Input tensor for query.
            attn_mask (`torch.Tensor`, *optional*, defaults to None):
                Attention mask.

        Returns:
            torch.Tensor:
                Output tensor after cross-attention.
        ©Ú	attn_mask)rn   rw   rx   ro   rp   rr   ru   rs   )	r6   Úkey_value_statesr;   r{   ÚqueryÚkeyÚvalueÚattn_outputÚ_s	            r9   rG   zAriaCrossAttention.forward|   s�   € ð  —’˜DŸOšO¨MÑ:Ô:Ñ;Ô;ˆà×-Ò-Ð.>Ñ?Ô?ÐØ�kŠkÐ*Ñ+Ô+ˆØ—’Ð,Ñ-Ô-ˆà×,Ò,¨U°C¸È)Ð,ÑTÔT‰ˆ�Qà—l’l 4§;¢;¨{Ñ#;Ô#;Ñ<Ô<ˆàÐr:   )r   rb   )	rM   rN   rO   rd   r&   rP   r0   rG   rR   rS   s   @r9   rf   rf   b   sn   ø€ € € € € ðð ð7ð 7˜zð 7¸ð 7ð 7ð 7ð 7ð 7ð 7ð"ð ð ð ð ð ð ð r:   rf   c                   óT   ‡ — e Zd ZdZdefˆ fd„Zddej        dej        dz  fd„Zˆ xZ	S )	ÚAriaProjectora  
    Aria Projector module.

    This module projects vision features into the language model's embedding space, enabling interaction between vision and language components.

    Args:
        config (`AriaConfig`):
            Configuration object for the model.
    rg   c                 ó$  •— t          ¦   «                              ¦   «          |j        | _        |j        j        | _        |j        j        | _        |j        j        | _	        |j
        j        | _        |j
        j        | _        t          j        t          j        |j        | j        ¦  «        ¦  «        | _        t'          |¦  «        | _        t          j        | j        ¦  «        | _        t/          | j        | j        | j        ¦  «        | _        d S rb   )r/   r0   Úprojector_patch_to_query_dictÚpatch_to_query_dictrk   r7   r^   rl   rm   Úkv_dimÚtext_configr_   r`   r   r1   r2   ÚzerosÚ'max_value_projector_patch_to_query_dictr}   rf   Ú
cross_attnrv   rw   rU   Úfeed_forward©r6   rg   r8   s     €r9   r0   zAriaProjector.__init__¤   sÔ   ø€ õ 	‰Œ×ÒÑÔÐà#)Ô#GˆÔ Ø!Ô/Ô;ˆÔØÔ-ÔAˆŒØÔ*Ô6ˆŒØ%Ô1Ô=ˆÔØ Ô,Ô8ˆŒå”\¥%¤+¨fÔ.\Ð^bÔ^nÑ"oÔ"oÑpÔpˆŒ
å,¨VÑ4Ô4ˆŒåœ, tÔ'7Ñ8Ô8ˆŒÝ,¨TÔ-=¸tÔ?SÐUYÔUdÑeÔeˆÔÐÐr:   Nr|   r{   c                 ób  — |j         d         |j         d         }}|| j        vr-t          d|› d| j                             ¦   «         › d�¦  «        ‚| j        |         }| j        d|…                              d¦  «                             |dd¦  «        }|�X|                     | j        d¦  «        }|                     d¦  «         	                    d| 
                    d¦  «        d¦  «        }|                      |||¬¦  «        }|                      |                      |¦  «        ¦  «        }|S )	a�  
        Forward pass of the Projector module.

        Args:
            key_value_states (`torch.Tensor`):
                Input tensor of shape (batch_size, num_patches, kv_dim).
            attn_mask (`torch.Tensor`, *optional*, default is None):
                Attention mask.

        Returns:
            `torch.Tensor`: Output tensor of shape (batch_size, query_number, output_dim).
        r   r%   zNumber of patches z: not found in patch_to_query_dict amongst possible values ú.Nr=   rz   )rJ   r†   ÚKeyErrorÚkeysr}   Ú	unsqueezeÚrepeatÚrepeat_interleaverm   ÚexpandÚsizer‹   rŒ   rw   )	r6   r|   r{   Ú
batch_sizeÚnum_patchesÚ	query_numÚqueriesÚattention_outÚouts	            r9   rG   zAriaProjector.forward¸   sR  € ð #3Ô"8¸Ô";Ð=MÔ=SÐTUÔ=V�Kˆ
à˜dÔ6Ð6Ð6Ýð O [ð  Oð  OÐlpô  mE÷  mJò  mJñ  mLô  mLð  Oð  Oð  Oñô ð ð Ô,¨[Ô9ˆ	à”*˜Z˜i˜ZÔ(×2Ò2°1Ñ5Ô5×<Ò<¸ZÈÈAÑNÔNˆàÐ Ø!×3Ò3°D´NÀAÑFÔFˆIØ!×+Ò+¨AÑ.Ô.×5Ò5°b¸'¿,º,Àq¹/¼/È2ÑNÔNˆIàŸšÐ(8¸'ÈY˜ÑWÔWˆà×Ò §¢°Ñ >Ô >Ñ?Ô?ˆàˆ
r:   rb   )
rM   rN   rO   rd   r&   r0   r2   rQ   rG   rR   rS   s   @r9   rƒ   rƒ   ™   s‡   ø€ € € € € ðð ðfàðfð fð fð fð fð fð(ð ¨¬ð ÀÄÐPTÑATð ð ð ð ð ð ð ð r:   rƒ   c                   ó.   ‡ — e Zd ZdZdefˆ fd„Zd„ Zˆ xZS )ÚAriaSharedExpertsMLPa/  
    Shared Expert MLP for shared experts.

    Unlike routed experts, shared experts process all tokens without routing.
    This class reconfigures the intermediate size in comparison to the LlamaMLP.

    Args:
        config (`AriaTextConfig`): Configuration object for the Aria language model.
    rg   c                 óÆ  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        |j        z  | _        t          j        | j        | j        |j        ¬¦  «        | _	        t          j        | j        | j        |j        ¬¦  «        | _
        t          j        | j        | j        |j        ¬¦  «        | _        t          |j                 | _        d S )NrW   )r/   r0   rg   r7   Úintermediate_sizeÚmoe_num_shared_expertsr   rZ   Úmlp_biasÚ	gate_projÚup_projÚ	down_projr	   Ú
hidden_actÚact_fnr�   s     €r9   r0   zAriaSharedExpertsMLP.__init__å   s·   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ!Ô-ˆÔØ!'Ô!9¸FÔ<YÑ!YˆÔÝœ 4Ô#3°TÔ5KÐRXÔRaÐbÑbÔbˆŒÝ”y Ô!1°4Ô3IÐPVÔP_Ð`Ñ`Ô`ˆŒÝœ 4Ô#9¸4Ô;KÐRXÔRaÐbÑbÔbˆŒÝ˜VÔ.Ô/ˆŒˆˆr:   c                 ó¨   — |                       |                      |                      |¦  «        ¦  «        |                      |¦  «        z  ¦  «        }|S rb   )r¥   r§   r£   r¤   )r6   Úxr¥   s      r9   rG   zAriaSharedExpertsMLP.forwardï   sA   € Ø—N’N 4§;¢;¨t¯~ª~¸aÑ/@Ô/@Ñ#AÔ#AÀDÇLÂLÐQRÁOÄOÑ#SÑTÔTˆ	ØÐr:   )rM   rN   rO   rd   r'   r0   rG   rR   rS   s   @r9   rž   rž   Ú   s]   ø€ € € € € ðð ð0˜~ð 0ð 0ð 0ð 0ð 0ð 0ðð ð ð ð ð ð r:   rž   c                 óÚ  — | j         d         }|j         d         }t          j        ||| j        | j        ¬¦  «        }t          j        |d¬¦  «        }t          j        dt          j        |j        ¬¦  «        }t          j        ||f¦  «        }t          |j         d         ¦  «        D ]A}||         }	||dz            }
| |	|
…         }t          j	        |||         ¦  «        }|||	|
…<   ŒB|S )a*  
    Compute the matrix multiplication (GEMM) for each expert sequentially. This approach is computationally inefficient, especially when dealing with a large number of experts.

    Args:
        token_states (torch.Tensor): Input tensor of shape (num_tokens, in_features).
        expert_weights (torch.Tensor): Weight tensor of shape (num_experts, in_features, out_features).
        tokens_per_expert (torch.Tensor): Number of tokens assigned to each expert.

    Returns:
        torch.Tensor: Output tensor of shape (num_tokens, out_features).
    r   r=   ©r?   Údevice©Údimr%   )
rJ   r2   r‰   r?   r¬   ÚcumsumÚlongÚcatÚrangeÚmatmul)Útoken_statesÚexpert_weightsÚtokens_per_expertÚ
num_tokensÚout_featuresÚoutputÚcumsum_num_tokensÚzero_tensorÚ
expert_numÚstartÚendÚtokensrœ   s                r9   Úsequential_experts_gemmrÀ   ô   sö   € ð Ô# AÔ&€JØ!Ô'¨Ô+€LÝŒ[˜ \¸Ô9KÐT`ÔTgÐhÑhÔh€FåœÐ%6¸AÐ>Ñ>Ô>Ðå”+˜a¥u¤zÐ:KÔ:RÐSÑSÔS€KÝœ	 ;Ð0AÐ"BÑCÔCÐå˜NÔ0°Ô3Ñ4Ô4ð  ð  ˆ
Ø! *Ô-ˆØ 
¨Q¡Ô/ˆØ˜e C˜iÔ(ˆåŒl˜6 >°*Ô#=Ñ>Ô>ˆØˆˆu�SˆyÑÐØ€Mr:   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚAriaGroupedExpertsGemmaP  
    Grouped GEMM (General Matrix Multiplication) module for efficient expert computation.
    This module utilizes the grouped_gemm library (https://github.com/fanshiqing/grouped_gemm)
    for optimized performance. If the grouped_gemm library is not installed, it gracefully
    falls back to a sequential GEMM implementation, which may be slower but ensures
    functionality.

    Args:
        in_features (`int`):
            Number of input features.
        out_features (`int`):
            Number of output features.
        groups (`int`):
            Number of expert groups.
    c                 óÌ   •— t          ¦   «                              ¦   «          || _        || _        || _        t          j        t          j        |||¦  «        ¦  «        | _	        d S rb   )
r/   r0   r^   r¸   Úgroupsr   r1   r2   Úemptyr4   )r6   r^   r¸   rÄ   r8   s       €r9   r0   zAriaGroupedExpertsGemm.__init__$  sS   ø€ Ý‰Œ×ÒÑÔÐØ&ˆÔØ(ˆÔØˆŒÝ”l¥5¤;¨v°{ÀLÑ#QÔ#QÑRÔRˆŒˆˆr:   c                 óR   — t          || j        |                     ¦   «         ¦  «        S )au  
        Perform grouped matrix multiplication.

        Args:
            input (`torch.Tensor`):
                Input tensor of shape (num_tokens, in_features).
            tokens_per_expert (`torch.Tensor`):
                Number of tokens assigned to each expert.

        Returns:
            torch.Tensor: Output tensor of shape (num_tokens, out_features).
        )rÀ   r4   Úcpu)r6   Úinputr¶   s      r9   rG   zAriaGroupedExpertsGemm.forward+  s-   € õ 'ØØŒKØ×!Ò!Ñ#Ô#ñ
ô 
ð 	
r:   rc   rS   s   @r9   rÂ   rÂ     sV   ø€ € € € € ðð ð Sð Sð Sð Sð Sð
ð 
ð 
ð 
ð 
ð 
ð 
r:   rÂ   c                   óD   ‡ — e Zd Zdeddfˆ fd„Zd„ Zdej        fd„Zˆ xZ	S )ÚAriaExpertsrg   r-   Nc                 óð   •— t          ¦   «                              ¦   «          || _        t          |j        |j        dz  |j        ¦  «        | _        t          |j        |j        |j        ¦  «        | _        d S )Nr#   )	r/   r0   rg   rÂ   r7   r    Úmoe_num_expertsÚfc1Úfc2r�   s     €r9   r0   zAriaExperts.__init__@  sd   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ)¨&Ô*<¸fÔ>VÐYZÑ>ZÐ\bÔ\rÑsÔsˆŒÝ)¨&Ô*BÀFÔDVÐX^ÔXnÑoÔoˆŒˆˆr:   c                 ó”   — t          j        || j        j        d¬¦  «        \  }}t          j                             |d¬¦  «        }||fS )Nr%   )Úkr®   r=   r­   )r2   Útopkrg   Úmoe_topkr   Ú
functionalÚsoftmax)r6   Úrouter_logitsÚ
top_logitsÚtop_indicesÚscoress        r9   Úroute_tokens_to_expertsz#AriaExperts.route_tokens_to_expertsF  sH   € Ý"'¤*¨]¸d¼kÔ>RÐXYÐ"ZÑ"ZÔ"ZÑˆ
�KÝ”×&Ò& z°rÐ&Ñ:Ô:ˆØ˜FÐ"Ð"r:   c                 ó  — |                       |¦  «        \  }}|j        }t          j        |                     ¦   «                              t          j        ¦  «        | j        j        d| j        j        dz
  ¬¦  «                             |¦  «        }|}| 	                    d¦  «        }t          j
        |¦  «        }	|                     d|	| j        j        z  ¦  «        }
|                      |
|¦  «        }t          j        |dd¬¦  «        \  }}t          j                             |¦  «        |z  }|                      ||¦  «        }t          j        |j        d         | j        j        z  |                     d¦  «        f|j        |j        ¬¦  «        }|                     d|	|¦  «         | 	                    d| j        j        |                     d¦  «        ¦  «        }||                     d¦  «        z                       d¬¦  «        }|S )Nr   r%   )ÚbinsÚminÚmaxr=   r#   r­   r«   )rÙ   r?   r2   ÚhistcÚflattenr@   rA   rg   rÌ   ÚviewÚargsortÚindex_selectrÒ   rÍ   Úchunkr   rÓ   ÚsilurÎ   r‰   rJ   r–   r¬   Úindex_copy_r’   Úsum)r6   r;   rÕ   Útop_k_indexÚtop_k_weightsÚoriginal_dtyper¶   ÚindicesÚflatten_indicesÚsorted_indicesÚpermuted_tokensÚ
fc1_outputÚ
projectionÚgateÚexpert_outputÚunpermuted_tokensr¹   s                    r9   rG   zAriaExperts.forwardK  sã  € Ø%)×%AÒ%AÀ-Ñ%PÔ%PÑ"ˆ�]Ø$Ô*ˆÝ!œKØ×ÒÑ!Ô!×$Ò$¥U¤]Ñ3Ô3Ø”Ô,ØØ”Ô+¨aÑ/ð	
ñ 
ô 
÷
 Š"ˆ^Ñ
Ô
ð 	ð ˆà!Ÿ,š, rÑ*Ô*ˆÝœ Ñ7Ô7ˆØ'×4Ò4°Q¸È$Ì+ÔJ^Ñ8^Ñ_Ô_ˆà—X’X˜oÐ/@ÑAÔAˆ
Ý œ; z°1¸"Ð=Ñ=Ô=Ñˆ
�DÝ”]×'Ò'¨
Ñ3Ô3°dÑ:ˆ
ØŸš Ð->Ñ?Ô?ˆå!œKØÔ  Ô# d¤kÔ&:Ñ:¸M×<NÒ<NÈqÑ<QÔ<QÐRØÔ%Ø Ô'ð
ñ 
ô 
Ðð
 	×%Ò% a¨¸ÑGÔGÐGØ-×2Ò2°2°t´{Ô7KÈ]×M_ÒM_Ð`aÑMbÔMbÑcÔcÐà# m×&=Ò&=¸bÑ&AÔ&AÑA×FÒFÈ1ÐFÑMÔMˆØˆr:   )
rM   rN   rO   r'   r0   rÙ   r2   rQ   rG   rR   rS   s   @r9   rÊ   rÊ   ?  s   ø€ € € € € ðp˜~ð p°$ð pð pð pð pð pð pð#ð #ð #ð
°u´|ð ð ð ð ð ð ð ð r:   rÊ   c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚAriaTextMoELayerrg   c                 óò   •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          |¦  «        | _        t          |¦  «        | _
        || _        d S ©NFrW   )r/   r0   r   rZ   r7   rÌ   ÚrouterrÊ   Úexpertsrž   Úshared_expertsrg   r�   s     €r9   r0   zAriaTextMoELayer.__init__l  sb   ø€ Ý‰Œ×ÒÑÔÐÝ”i Ô 2°FÔ4JÐQVÐWÑWÔWˆŒÝ" 6Ñ*Ô*ˆŒÝ2°6Ñ:Ô:ˆÔØˆŒˆˆr:   r;   r-   c                 ó8  — |j         }|                     d|                     d¦  «        ¦  «        }|                      |¦  «        }|                      ||¦  «                             |¦  «        }|                      |                     |¦  «        ¦  «        }||z   S ©Nr=   )rJ   rà   r–   r÷   rø   rù   )r6   r;   Úoriginal_shaperÕ   rñ   Úshared_expert_outputs         r9   rG   zAriaTextMoELayer.forwards  s�   € Ø&Ô,ˆØ%×*Ò*¨2¨}×/AÒ/AÀ"Ñ/EÔ/EÑFÔFˆØŸš MÑ2Ô2ˆØŸš ]°MÑBÔB×GÒGÈÑWÔWˆØ#×2Ò2°=×3EÒ3EÀnÑ3UÔ3UÑVÔVÐØÐ3Ñ3Ð3r:   )	rM   rN   rO   r'   r0   r2   rQ   rG   rR   rS   s   @r9   rô   rô   k  sj   ø€ € € € € ð˜~ð ð ð ð ð ð ð4 U¤\ð 4°e´lð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r:   rô   c                 óœ   — | dd| j         d         dz  …f         }| d| j         d         dz  d…f         }t          j        | |fd¬¦  «        S )z*Rotates half the hidden dims of the input..Nr=   r#   r­   )rJ   r2   r±   )r©   Úx1Úx2s      r9   Úrotate_halfr  |  s]   € à	
ˆ3Ð"�!”'˜"”+ Ñ"Ð"Ð"Ô	#€BØ	
ˆ3�”˜”˜qÑ Ð"Ð"Ð"Ô	#€BÝŒ9�r�c˜2�Y BÐ'Ñ'Ô'Ð'r:   Úrotary_pos_embc                 ó¾   — |                      |¦  «        }|                      |¦  «        }| |z  t          | ¦  «        |z  z   }||z  t          |¦  «        |z  z   }||fS )a…  Applies Rotary Position Embedding to the query and key tensors.

    Args:
        q (`torch.Tensor`): The query tensor.
        k (`torch.Tensor`): The key tensor.
        cos (`torch.Tensor`): The cosine part of the rotary embedding.
        sin (`torch.Tensor`): The sine part of the rotary embedding.
        unsqueeze_dim (`int`, *optional*, defaults to 1):
            The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
            sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
            that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
            k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
            cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
            the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
    Returns:
        `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
    )r’   r  )ÚqrÐ   ÚcosÚsinÚunsqueeze_dimÚq_embedÚk_embeds          r9   Úapply_rotary_pos_embr
  ƒ  sc   € ð& �-Š-˜Ñ
&Ô
&€CØ
�-Š-˜Ñ
&Ô
&€CØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�GÐÐr:   r;   Ún_repr-   c                 ó¸   — | j         \  }}}}|dk    r| S | dd…dd…ddd…dd…f                              |||||¦  «        } |                      |||z  ||¦  «        S )zÔ
    This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
    num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
    r%   N)rJ   r•   Úreshape)r;   r  ÚbatchÚnum_key_value_headsÚslenÚhead_dims         r9   Ú	repeat_kvr  �  s„   € ð
 2?Ô1DÑ.€EÐ  hØ�‚z€zØÐØ! ! ! ! Q Q Q¨¨a¨a¨a°°°Ð"2Ô3×:Ò:¸5ÐBUÐW\Ð^bÐdlÑmÔm€MØ× Ò  Ð(;¸eÑ(CÀTÈ8ÑTÔTÐTr:   ç        Úmoduler}   r~   r   Úattention_maskÚscalingru   Úkwargsc                 ó  — t          || j        ¦  «        }t          || j        ¦  «        }	t          j        ||                     dd¦  «        ¦  «        |z  }
|�|
|z   }
t
          j                             |
dt          j        ¬¦  «         	                    |j
        ¦  «        }
t
          j                             |
|| j        ¬¦  «        }
t          j        |
|	¦  «        }|                     dd¦  «                             ¦   «         }||
fS )Nr#   r   r=   )r®   r?   )ÚpÚtrainingr%   )r  Únum_key_value_groupsr2   r³   Ú	transposer   rÓ   rÔ   rA   r@   r?   ru   r  Ú
contiguous)r  r}   r~   r   r  r  ru   r  Ú
key_statesÚvalue_statesÚattn_weightsr€   s               r9   Úeager_attention_forwardr!  ©  sé   € õ ˜3 Ô ;Ñ<Ô<€JÝ˜U FÔ$?Ñ@Ô@€Lå”<  z×';Ò';¸A¸qÑ'AÔ'AÑBÔBÀWÑL€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€LÝ”,˜|¨\Ñ:Ô:€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r:   c                   óÎ   ‡ — e Zd ZdZdedefˆ fd„Z	 	 	 ddej        de	ej        ej        f         dz  dej        dz  d	e
dz  d
ee         de	ej        ej        f         fd„Zˆ xZS )ÚAriaTextAttentionz=Multi-headed attention from 'Attention Is All You Need' paperrg   Ú	layer_idxc                 ó®  •— t          ¦   «                              ¦   «          || _        || _        t	          |d|j        |j        z  ¦  «        | _        |j        |j        z  | _	        | j        dz  | _
        |j        | _        d| _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        | j        z  |j        |j        ¬¦  «        | _        d S )Nr  g      à¿TrW   )r/   r0   rg   r$  Úgetattrr7   rl   r  r  r  r  Úattention_dropoutÚ	is_causalr   rZ   Úattention_biasrn   ro   rp   Úo_proj©r6   rg   r$  r8   s      €r9   r0   zAriaTextAttention.__init__Æ  sB  ø€ Ý‰Œ×ÒÑÔÐØˆŒØ"ˆŒÝ ¨
°FÔ4FÈ&ÔJdÑ4dÑeÔeˆŒØ$*Ô$>À&ÔB\Ñ$\ˆÔ!Ø”} dÑ*ˆŒØ!'Ô!9ˆÔØˆŒå”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ&¨¬Ñ6¸Ô8JÐQWÔQfð
ñ 
ô 
ˆŒˆˆr:   Nr;   Úposition_embeddingsr  Úpast_key_valuesr  r-   c                 ó"  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
|\  }}t          ||	||¦  «        \  }}	|�|                     |	|
| j	        ¦  «        \  }	}
t          j        | j        j        t          ¦  «        } || ||	|
|f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Nr=   r%   r#   r  )ru   r  )rJ   r  rn   rà   r  ro   rp   r
  Úupdater$  r   Úget_interfacerg   Ú_attn_implementationr!  r  r'  r  r  r  r*  )r6   r;   r,  r  r-  r  Úinput_shapeÚhidden_shapeÚquery_statesr  r  r  r  Úattention_interfacer€   r   s                   r9   rG   zAriaTextAttention.forwardÝ  sÀ  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆà&‰ˆˆSÝ#7¸ÀjÐRUÐWZÑ#[Ô#[Ñ ˆ�jàÐ&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(r:   ©NNN)rM   rN   rO   rd   r'   Úintr0   r2   rQ   rI   r
   r   r   rG   rR   rS   s   @r9   r#  r#  Â  så   ø€ € € € € àGÐGð
˜~ð 
¸#ð 
ð 
ð 
ð 
ð 
ð 
ð4 IMØ.2Ø(,ð&)ð &)à”|ð&)ð # 5¤<°´Ð#=Ô>ÀÑEð&)ð œ tÑ+ð	&)ð
  ™ð&)ð Ð+Ô,ð&)ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð&)ð &)ð &)ð &)ð &)ð &)ð &)ð &)r:   r#  c                   óÖ   ‡ — e Zd ZdZdedefˆ fd„Z	 	 	 	 	 ddej        dej        dz  d	ej	        dz  d
e
dz  dedz  deej        ej        f         dz  dee         dej        fd„Zˆ xZS )ÚAriaTextDecoderLayerag  
    Aria Text Decoder Layer.

    This class defines a single decoder layer in the language model, incorporating self-attention and Mixture of Experts (MoE) feed-forward network.

    Args:
        config (`AriaTextConfig`):
            Configuration object for the text component of the model.
        layer_idx (`int`):
            Index of the layer.
    rg   r$  c                 ó4  •— t          ¦   «                              ¦   «          |j        | _        t          ||¬¦  «        | _        t          |¦  «        | _        t          |j        |j        ¬¦  «        | _	        t          |j        |j        ¬¦  «        | _
        d S )N)rg   r$  ©r,   )r/   r0   r7   r#  Ú	self_attnrô   Úmlpr*   Úrms_norm_epsÚinput_layernormÚpost_attention_layernormr+  s      €r9   r0   zAriaTextDecoderLayer.__init__  s„   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔå*°&ÀIÐNÑNÔNˆŒÝ# FÑ+Ô+ˆŒÝ.¨vÔ/AÀvÔGZÐ[Ñ[Ô[ˆÔÝ(7¸Ô8JÐPVÔPcÐ(dÑ(dÔ(dˆÔ%Ð%Ð%r:   NFr;   r  Úposition_idsr-  Ú	use_cacher,  r  r-   c           
      óÎ   — |}|                       |¦  «        } | j        d||||||dœ|¤Ž\  }}	||z   }|}|                      |¦  «        }|                      |¦  «        }||z   }|S )N)r;   r  rA  r-  rB  r,  © )r?  r<  r@  r=  )
r6   r;   r  rA  r-  rB  r,  r  Úresidualr�   s
             r9   rG   zAriaTextDecoderLayer.forward  s¡   € ð !ˆØ×,Ò,¨]Ñ;Ô;ˆà)˜4œ>ð 
Ø'Ø)Ø%Ø+ØØ 3ð
ð 
ð ð
ð 
Ñˆ�qð ! =Ñ0ˆð !ˆØ×5Ò5°mÑDÔDˆØŸš Ñ/Ô/ˆØ  =Ñ0ˆØÐr:   )NNNFN)rM   rN   rO   rd   r'   r7  r0   r2   rQ   Ú
LongTensorr
   ÚboolrI   r   r   rG   rR   rS   s   @r9   r9  r9    s	  ø€ € € € € ð
ð 
ðe˜~ð e¸#ð eð eð eð eð eð eð /3Ø04Ø(,Ø!&ØHLðð à”|ðð œ tÑ+ðð Ô&¨Ñ-ð	ð
  ™ðð ˜$‘;ðð # 5¤<°´Ð#=Ô>ÀÑEðð Ð+Ô,ðð 
Œðð ð ð ð ð ð ð r:   r9  c                   ó„   ‡ — e Zd ZU eed<   dZdZddgZdZdgZ	dZ
dZdZeedœZ ej        ¦   «         ˆ fd	„¦   «         Zˆ xZS )
ÚAriaTextPreTrainedModelrg   Úmodel)ÚimageÚtextr9  rÂ   Tr-  ©r;   Ú
attentionsc                 óÄ   •— t          ¦   «                              |¦  «         t          |t          ¦  «        r(t	          j        |j        d| j        j        ¬¦  «         d S d S )Nr  )rC   Ústd)	r/   Ú_init_weightsÚ
isinstancerÂ   ÚinitÚnormal_r4   rg   Úinitializer_range©r6   r  r8   s     €r9   rQ  z%AriaTextPreTrainedModel._init_weightsM  s_   ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ4Ñ5Ô5ð 	UÝŒL˜œ¨S°d´kÔ6SÐTÑTÔTÐTÐTÐTð	Uð 	Ur:   )rM   rN   rO   r'   Ú__annotations__Úbase_model_prefixÚinput_modalitiesÚ_no_split_modulesÚsupports_gradient_checkpointingÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_attention_backendr9  r#  Ú_can_record_outputsr2   Úno_gradrQ  rR   rS   s   @r9   rI  rI  <  s®   ø€ € € € € € àÐÐÑØÐØ(ÐØ/Ð1IÐJÐØ&*Ð#Ø#4Ð"5ÐØÐØ€Nà"&Ðà-Ø'ðð Ðð
 €U„]�_„_ðUð Uð Uð Uñ „_ðUð Uð Uð Uð Ur:   rI  c                   ó†   ‡ — e Zd ZU eed<   dZdZdgZdgZdZ	dZ
dZdZdZeedœZ ej        ¦   «         ˆ fd„¦   «         Zˆ xZS )	ÚAriaPreTrainedModelrg   rJ  TÚAriaDecoderLayerr-  FrM  c                 óÂ   •— t          ¦   «                              |¦  «         t          |t          ¦  «        r't	          j        |j        | j        j        ¬¦  «         d S d S )N)rP  )	r/   rQ  rR  rƒ   rS  Útrunc_normal_r}   rg   rU  rV  s     €r9   rQ  z!AriaPreTrainedModel._init_weightse  s]   ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�mÑ,Ô,ð 	PÝÔ˜vœ|°´Ô1NÐOÑOÔOÐOÐOÐOð	Pð 	Pr:   )rM   rN   rO   r&   rW  rX  r[  rZ  r\  r]  r^  Ú_supports_flex_attnÚ_can_compile_fullgraphr_  r9  r#  r`  r2   ra  rQ  rR   rS   s   @r9   rc  rc  T  s±   ø€ € € € € € àÐÐÑØÐØ&*Ð#Ø+Ð,ÐØ#4Ð"5ÐØÐØ€NØÐØ"ÐØ"&Ðà-Ø'ðð Ðð
 €U„]�_„_ðPð Pð Pð Pñ „_ðPð Pð Pð Pð Pr:   rc  c                   óÔ   ‡ — e Zd ZU ej        ed<   ddefˆ fd„Ze	 	 	 ddedz  de	d         de
dz  ded	ef         fd
„¦   «         Z ej        ¦   «         ed„ ¦   «         ¦   «         Zˆ xZS )ÚAriaTextRotaryEmbeddingÚinv_freqNrg   c                 ó²  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        || _        | j        j        d         | _        | j        }| j        dk    rt          | j                 } || j        |¦  «        \  }| _
        |                      d|d¬¦  «         |                      d|                     ¦   «         d¬¦  «         d S )NÚ	rope_typeÚdefaultrk  F)Ú
persistentÚoriginal_inv_freq)r/   r0   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrg   Úrope_parametersrm  Úcompute_default_rope_parametersr   Úattention_scalingÚregister_bufferÚclone)r6   rg   r¬   Úrope_init_fnrk  r8   s        €r9   r0   z AriaTextRotaryEmbedding.__init__o  sÊ   ø€ Ý‰Œ×ÒÑÔÐØ"(Ô"@ˆÔØ$*Ô$BˆÔ!àˆŒàœÔ4°[ÔAˆŒØ!%Ô!EˆØŒ>˜YÒ&Ð&Ý.¨t¬~Ô>ˆLØ+7¨<¸¼ÀVÑ+LÔ+LÑ(ˆ�$Ô(à×Ò˜Z¨¸eÐÑDÔDÐDØ×ÒÐ0°(·.².Ñ2BÔ2BÈuÐÑUÔUÐUÐUÐUr:   r¬   ztorch.deviceÚseq_lenr-   ztorch.Tensorc                 óü   — | j         d         }t          | dd¦  «        p| j        | j        z  }d}d|t	          j        d|dt          j        ¬¦  «                             |t          j        ¬¦  «        |z  z  z  }||fS )	a¨  
        Computes the inverse frequencies according to the original RoPE implementation
        Args:
            config ([`~transformers.PreTrainedConfig`]):
                The model configuration.
            device (`torch.device`):
                The device to use for initialization of the inverse frequencies.
            seq_len (`int`, *optional*):
                The current sequence length. Unused for this type of RoPE.
        Returns:
            Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
            post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
        Ú
rope_thetar  Ng      ð?r   r#   ©r?   )r¬   r?   )	rt  r&  r7   rl   r2   ÚarangeÚint64r@   rP   )rg   r¬   rz  Úbaser®   Úattention_factorrk  s          r9   ru  z7AriaTextRotaryEmbedding.compute_default_rope_parameters  sŒ   € ð& Ô% lÔ3ˆÝ�f˜j¨$Ñ/Ô/Ðc°6Ô3EÈÔIcÑ3cˆàÐð Ø•U”\ ! S¨!µ5´;Ð?Ñ?Ô?×BÒBÈ&ÕX]ÔXcÐBÑdÔdÐgjÑjÑkñ
ˆð Ð)Ð)Ð)r:   c                 óN  — | j         d d d …d f                              ¦   «                              |j        d         dd¦  «                             |j        ¦  «        }|d d …d d d …f                              ¦   «         }t          |j        j        t          ¦  «        r|j        j        dk    r|j        j        nd}t          |d¬¦  «        5  |                     ¦   «         |                     ¦   «         z   
                    dd¦  «        }t          j        ||fd¬	¦  «        }|                     ¦   «         | j        z  }|                     ¦   «         | j        z  }	d d d ¦  «         n# 1 swxY w Y   |                     |j        ¬
¦  «        |	                     |j        ¬
¦  «        fS )Nr   r=   r%   ÚmpsrÇ   F)Údevice_typeÚenabledr#   r­   r}  )rk  rP   r•   rJ   r@   r¬   rR  ÚtypeÚstrr    r  r2   r±   r  rv  r  r?   )
r6   r©   rA  Úinv_freq_expandedÚposition_ids_expandedr„  ÚfreqsÚembr  r  s
             r9   rG   zAriaTextRotaryEmbedding.forward�  s·  € ð !œM¨$°°°°4¨-Ô8×>Ò>Ñ@Ô@×GÒGÈÔHZÐ[\ÔH]Ð_aÐcdÑeÔe×hÒhÐijÔiqÑrÔrÐØ ,¨Q¨Q¨Q°°a°a°a¨ZÔ 8× >Ò >Ñ @Ô @Ðå'1°!´(´-ÅÑ'EÔ'EÐkÈ!Ì(Ì-Ð[`ÒJ`ÐJ`�a”h”m�mÐfkˆÝ¨¸UÐCÑCÔCð 	5ð 	5Ø&×,Ò,Ñ.Ô.Ð1F×1LÒ1LÑ1NÔ1NÑN×YÒYÐZ[Ð]^Ñ_Ô_ˆEÝ”)˜U E˜N°Ð3Ñ3Ô3ˆCØ—'’'‘)”)˜dÔ4Ñ4ˆCØ—'’'‘)”)˜dÔ4Ñ4ˆCð		5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð �vŠv˜AœGˆvÑ$Ô$ c§f¢f°1´7 fÑ&;Ô&;Ð;Ð;s   ÃBE&Å&E*Å-E*rb   r6  )rM   rN   rO   r2   rQ   rW  r'   r0   Ústaticmethodr   r7  rI   rP   ru  ra  r   rG   rR   rS   s   @r9   rj  rj  l  sù   ø€ € € € € € ØŒlÐÐÑðVð V˜~ð Vð Vð Vð Vð Vð Vð  à(,Ø+/Ø"ð*ð *Ø Ñ%ð*à˜Ô(ð*ð �t‘ð*ð 
ˆ~˜uÐ$Ô	%ð	*ð *ð *ñ „\ð*ð: €U„]�_„_Øð<ð <ñ Ôñ „_ð<ð <ð <ð <ð <r:   rj  c                   óâ   ‡ — e Zd Zdefˆ fd„Zeee	 	 	 	 	 	 ddej	        dz  dej
        dz  dej	        dz  dedz  dej        dz  d	edz  d
ee         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚAriaTextModelrg   c                 óÞ  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        t          j        ‰j        ‰j        | j        ¦  «        | _        t          j	        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j        ¬¦  «        | _        t!          ‰¬¦  «        | _        d| _        |                      ¦   «          d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rD  )r9  )Ú.0r$  rg   s     €r9   ú
<listcomp>z*AriaTextModel.__init__.<locals>.<listcomp>¶  s$   ø€ ÐfÐfÐf¸Õ! &¨)Ñ4Ô4ÐfÐfÐfr:   r;  ©rg   F)r/   r0   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr7   Úembed_tokensÚ
ModuleListr²   Únum_hidden_layersÚlayersr*   r>  Únormrj  Ú
rotary_embÚgradient_checkpointingÚ	post_initr�   s    `€r9   r0   zAriaTextModel.__init__¯  sÔ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!Ô.ˆÔØ Ô+ˆŒåœL¨Ô):¸FÔ<NÐPTÔP`ÑaÔaˆÔÝ”mØfÐfÐfÐfÅeÈFÔLdÑFeÔFeÐfÑfÔfñ
ô 
ˆŒõ $ FÔ$6¸FÔ<OÐPÑPÔPˆŒ	Ý1¸Ð@Ñ@Ô@ˆŒØ&+ˆÔ#ð 	�ŠÑÔÐÐÐr:   NÚ	input_idsr  rA  r-  Úinputs_embedsrB  r  r-   c           
      óH  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|r|€t          | j        ¬¦  «        }|€V|�|                     ¦   «         nd}t          j        |j        d         |j        ¬¦  «        |z   }| 	                    d¦  «        }t          | j        ||||¬¦  «        }	|}
|                      |
|¬¦  «        }| j        d | j        j        …         D ]} ||
f|	||||dœ|¤Ž}
Œ|                      |
¦  «        }
t          |
|¬	¦  «        S )
Nz:You must specify exactly one of input_ids or inputs_embedsr“  r   r%   )r¬   )rg   r¡  r  r-  rA  )rA  )r  r,  rA  r-  rB  )Úlast_hidden_stater-  )Ú
ValueErrorr˜  r   rg   Úget_seq_lengthr2   r~  rJ   r¬   r’   r   r�  r›  rš  rœ  r   )r6   r   r  rA  r-  r¡  rB  r  Úpast_seen_tokensÚcausal_maskr;   r,  Údecoder_layers                r9   rG   zAriaTextModel.forward¿  sŠ  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø*.×*;Ò*;¸IÑ*FÔ*FˆMàð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOàÐØCRÐC^˜×=Ò=Ñ?Ô?Ð?ÐdeÐÝ œ<¨Ô(;¸AÔ(>À}ÔG[Ð\Ñ\Ô\Ð_oÑoˆLØ'×1Ò1°!Ñ4Ô4ˆLå(Ø”;Ø'Ø)Ø+Ø%ð
ñ 
ô 
ˆð &ˆØ"Ÿošo¨mÈ,˜oÑWÔWÐà!œ[Ð)H¨4¬;Ô+HÐ)HÔIð 		ð 		ˆMØ)˜MØðà*Ø$7Ø)Ø /Ø#ðð ð ðð ˆMˆMð Ÿ	š	 -Ñ0Ô0ˆÝ&Ø+Ø+ð
ñ 
ô 
ð 	
r:   )NNNNNN)rM   rN   rO   r'   r0   r!   r"   r   r2   rF  rQ   r
   ÚFloatTensorrG  r   r   r   rG   rR   rS   s   @r9   rŽ  rŽ  ­  s  ø€ € € € € ð˜~ð ð ð ð ð ð ð   ØØð .2Ø.2Ø04Ø(,Ø26Ø!%ð2
ð 2
àÔ# dÑ*ð2
ð œ tÑ+ð2
ð Ô&¨Ñ-ð	2
ð
  ™ð2
ð Ô(¨4Ñ/ð2
ð ˜$‘;ð2
ð Ð+Ô,ð2
ð 
!ð2
ð 2
ð 2
ñ „^ñ „_ñ  Ôð2
ð 2
ð 2
ð 2
ð 2
r:   rŽ  c                   ó  ‡ — e Zd ZddiZddiZddgdgfiZdefˆ fd„Ze	 	 	 	 	 	 	 	 dde	j
        d	z  de	j        d	z  de	j
        d	z  ded	z  de	j        d	z  de	j
        d	z  ded	z  dee	j        z  dee         defd„¦   «         Zˆ xZS )ÚAriaTextForCausalLMúlm_head.weightzmodel.embed_tokens.weightÚlm_headÚcolwise_gather_outputr;   Úlogitsrg   c                 óþ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |j        | _        t          j        |j        |j        d¬¦  «        | _        |  	                    ¦   «          d S rö   )
r/   r0   rŽ  rJ  r–  r   rZ   r7   r­  rŸ  r�   s     €r9   r0   zAriaTextForCausalLM.__init__ý  sj   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý" 6Ñ*Ô*ˆŒ
Ø Ô+ˆŒÝ”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒð 	�ŠÑÔÐÐÐr:   Nr   r   r  rA  r-  r¡  ÚlabelsrB  Úlogits_to_keepr  r-   c	           
      óP  —  | j         d||||||dœ|	¤Ž}
|
j        }t          |t          ¦  «        rt	          | d¦  «        n|}|                      |dd…|dd…f         ¦  «        }d}|� | j        d||| j        j        dœ|	¤Ž}t          |||
j
        |
j        |
j        ¬¦  «        S )aã  
        Example:

        ```python
        >>> from transformers import AutoTokenizer, AriaTextForCausalLM

        >>> model = AriaTextForCausalLM.from_pretrained("meta-aria_text/AriaText-2-7b-hf")
        >>> tokenizer = AutoTokenizer.from_pretrained("meta-aria_text/AriaText-2-7b-hf")

        >>> prompt = "Hey, are you conscious? Can you talk to me?"
        >>> inputs = tokenizer(prompt, return_tensors="pt")

        >>> # Generate
        >>> generate_ids = model.generate(inputs.input_ids, max_length=30)
        >>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
        "Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
        ```)r   r  rA  r-  r¡  rB  N©r¯  r±  r–  ©Úlossr¯  r-  r;   rN  rD  )rJ  r£  rR  r7  Úslicer­  Úloss_functionrg   r–  r   r-  r;   rN  )r6   r   r  rA  r-  r¡  r±  rB  r²  r  Úoutputsr;   Úslice_indicesr¯  r¶  s                  r9   rG   zAriaTextForCausalLM.forward  sô   € ð< ,6¨4¬:ð ,
ØØ)Ø%Ø+Ø'Øð,
ð ,
ð ð,
ð ,
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ%�4Ô%Ðp¨V¸FÈtÌ{ÔOeÐpÐpÐioÐpÐpˆDå%ØØØ#Ô3Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r:   )NNNNNNNr   )rM   rN   rO   Ú_tied_weights_keysÚ_tp_planÚ_pp_planr'   r0   r   r2   rF  rQ   r
   r©  rG  r7  r   r   r   rG   rR   rS   s   @r9   r«  r«  ÷  sL  ø€ € € € € à*Ð,GÐHÐØÐ2Ð3€HØ˜_Ð-°¨zÐ:Ð;€Hð˜~ð ð ð ð ð ð ð ð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ð6
ð 6
àÔ# dÑ*ð6
ð œ tÑ+ð6
ð Ô&¨Ñ-ð	6
ð
  ™ð6
ð Ô(¨4Ñ/ð6
ð Ô  4Ñ'ð6
ð ˜$‘;ð6
ð ˜eœlÑ*ð6
ð Ð+Ô,ð6
ð 
 ð6
ð 6
ð 6
ñ „^ð6
ð 6
ð 6
ð 6
ð 6
r:   r«  zP
    Base class for Aria causal language model (or autoregressive) outputs.
    ©Úcustom_introc                   óÖ   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
dz  ed<   dZeej                 dz  ed<   dZeej                 dz  ed<   dZej        dz  ed<   dS )	ÚAriaCausalLMOutputWithPasta4  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
        Language modeling loss (for next-token prediction).
    logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
        Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    Nr¶  r¯  r-  r;   rN  Úimage_hidden_states)rM   rN   rO   rd   r¶  r2   r©  rW  r¯  r-  r
   r;   rI   rN  rÂ  rD  r:   r9   rÁ  rÁ  @  sµ   € € € € € € ðð ð &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø'+€FˆEÔ Ñ$Ð+Ð+Ñ+Ø$(€O�U˜T‘\Ð(Ð(Ñ(Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ø48Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r:   rÁ  zI
    Base class for Aria outputs, with hidden states and attentions.
    c                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )ÚAriaModelOutputWithPastaÏ  
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    NrÂ  )rM   rN   rO   rd   rÂ  r2   r©  rW  rD  r:   r9   rÄ  rÄ  ^  s7   € € € € € € ð	ð 	ð 59Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r:   rÄ  zt
    The Aria model which consists of a vision backbone and a language model, without a language modeling head.
    c                   óì  ‡ — e Zd Zdefˆ fd„Zee ed¬¦  «        	 	 	 ddej	        dej	        dz  d	e
ee
         z  d
edz  dee         deez  fd„¦   «         ¦   «         ¦   «         Zdej        dej	        dej	        fd„Zee	 	 	 	 	 	 	 	 ddej        dz  dej	        dz  dej        dz  dej        dz  dej        dz  dedz  dej	        dz  dedz  dee         deez  fd„¦   «         ¦   «         Zd„ Zˆ xZS )Ú	AriaModelrg   c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        ¦  «        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _	        |  
                    ¦   «          d S rb   )r/   r0   r$   Úfrom_configrk   Úvision_towerrƒ   Úmulti_modal_projectorrˆ   Úlanguage_modelrŸ  r�   s     €r9   r0   zAriaModel.__init__y  sm   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý%Ô1°&Ô2FÑGÔGˆÔÝ%2°6Ñ%:Ô%:ˆÔ"Ý'Ô3°FÔ4FÑGÔGˆÔØ�ŠÑÔÐÐÐr:   zWObtains image last hidden states from the vision tower and apply multimodal projection.r¾  Nr=   Úpixel_valuesÚ
pixel_maskÚvision_feature_layerÚoutput_hidden_statesr  r-   c                 ó   — |                       |¦  «        } | j        |f|dddœ|¤Ž}d }|�)|                     d¦  «        }	t          j        |	¦  «        }|j        |         }
|                      |
|¬¦  «        |_        |S )NT)Úpatch_attention_maskrÏ  Úreturn_dictr%   rz   )Ú_create_patch_attention_maskrÉ  rß   r2   Úlogical_notr;   rÊ  Úpooler_output)r6   rÌ  rÍ  rÎ  rÏ  r  rÑ  Úimage_outputsÚimage_attn_maskÚflattened_maskÚselected_image_features              r9   Úget_image_featureszAriaModel.get_image_features€  s®   € ð  $×@Ò@ÀÑLÔLÐØ)˜Ô)Øð
à!5Ø!%Øð	
ð 
ð
 ð
ð 
ˆð ˆØÐ+Ø1×9Ò9¸!Ñ<Ô<ˆNÝ#Ô/°Ñ?Ô?ˆOà!.Ô!<Ð=QÔ!RÐØ&*×&@Ò&@ÐAWÐcrÐ&@Ñ&sÔ&sˆÔ#àÐr:   r   r¡  Úimage_featuresc                 ó   — |€e| |                       ¦   «         t          j        | j        j        t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }n|| j        j        k    }|                     ¦   «         }|j	        d         |j	        d         z  }| 
                    d¦  «                             |j        ¦  «        }t          ||j	        d         z  |                     ¦   «         k    d|› d|› �¦  «         |S )zï
        Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
        equal to the length of multimodal features. If the lengths are different, an error is raised.
        Nr«   r=   r   r%   z6Image features and image tokens do not match, tokens: z, features: )Úget_input_embeddingsr2   Útensorrg   Úimage_token_idr°   r¬   Úallræ   rJ   r’   r@   r   Únumel)r6   r   r¡  rÛ  Úspecial_image_maskÚn_image_tokensÚn_image_featuress          r9   Úget_placeholder_maskzAriaModel.get_placeholder_maskŸ  s  € ð ÐØ!.Ð2M°$×2KÒ2KÑ2MÔ2MÝ”˜Tœ[Ô7½u¼zÐR_ÔRfÐgÑgÔgñ3ô 3ò "Ðð "4×!7Ò!7¸Ñ!;Ô!;ÐÐà!*¨d¬kÔ.HÒ!HÐà+×/Ò/Ñ1Ô1ˆØ)Ô/°Ô2°^Ô5IÈ!Ô5LÑLÐØ/×9Ò9¸"Ñ=Ô=×@Ò@ÀÔAUÑVÔVÐÝØ˜]Ô0°Ô4Ñ4¸×8LÒ8LÑ8NÔ8NÒNØsÀ^ÐsÐsÐaqÐsÐsñ	
ô 	
ð 	
ð "Ð!r:   r  rA  r-  rB  c	           	      óØ  — |€ |                       ¦   «         |¦  «        }|�‡|j        d         dk    rv|                      ||| j        j        d¬¦  «        j        }
|
                     |j        |j        ¦  «        }
|  	                    |||
¬¦  «        }| 
                    ||
¦  «        } | j        d|||||dœ|	¤Ž}t          |j        |r|j        nd |j        |j        |�|
nd ¬¦  «        S )Nr%   T)rÌ  rÍ  rÎ  rÒ  )r¡  rÛ  )r  rA  r-  r¡  rB  )r£  r-  r;   rN  rÂ  rD  )rÝ  rJ   rÚ  rg   rÎ  rÕ  r@   r¬   r?   rå  Úmasked_scatterrË  rÄ  r£  r-  r;   rN  )r6   r   rÌ  rÍ  r  rA  r-  r¡  rB  r  rÛ  râ  r¹  s                r9   rG   zAriaModel.forward·  sH  € ð Ð Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMð Ð#¨Ô(;¸AÔ(>À!Ò(CÐ(CØ!×4Ò4Ø)Ø%Ø%)¤[Ô%EØ ð	 5ñ ô ô
 ð ð ,×.Ò.¨}Ô/CÀ]ÔEXÑYÔYˆNØ!%×!:Ò!:Ø¨À~ð ";ñ "ô "Ðð *×8Ò8Ð9KÈ^Ñ\Ô\ˆMà%�$Ô%ð 
Ø)Ø%Ø+Ø'Øð
ð 
ð ð
ð 
ˆõ 'Ø%Ô7Ø7@ÐJ˜GÔ3Ð3ÀdØ!Ô/ØÔ)Ø2>Ð2J  ÐPTð
ñ 
ô 
ð 	
r:   c                 ó:  — |€d S |                      d| j        j        j        | j        j        j        ¬¦  «        }|                      d| j        j        j        | j        j        j        ¬¦  «        }|                     d¬¦  «        dk                         ¦   «         S )Nr%   )Ú	dimensionr–   Ústepr#   )r=   éþÿÿÿr­   r   )ÚunfoldrÉ  rg   Ú
patch_sizeræ   rG  )r6   rÍ  Úpatches_subgrids      r9   rÓ  z&AriaModel._create_patch_attention_maskç  s£   € ØÐØ�4à$×+Ò+ØØÔ"Ô)Ô4ØÔ"Ô)Ô4ð ,ñ 
ô 
ˆð
 *×0Ò0ØØÔ"Ô)Ô4ØÔ"Ô)Ô4ð 1ñ 
ô 
ˆð
  ×#Ò#¨Ð#Ñ1Ô1°AÒ5×;Ò;Ñ=Ô=Ð=r:   )Nr=   N)NNNNNNNN)rM   rN   rO   r&   r0   r!   r   r   r2   r©  r7  ÚlistrG  r   r   rI   r   rÚ  rF  rå  rQ   r
   r   rÄ  rG   rÓ  rR   rS   s   @r9   rÆ  rÆ  s  s2  ø€ € € € € ð˜zð ð ð ð ð ð ð  ØØ€^Ønðñ ô ð 04Ø02Ø,0ðð àÔ'ðð Ô%¨Ñ,ðð " D¨¤I™oð	ð
 # T™kðð Ð+Ô,ðð 
Ð+Ñ	+ðð ð ñô ñ Ôñ  Ôð
ð4"ØÔ)ð"Ø:?Ô:Kð"Ø]bÔ]nð"ð "ð "ð "ð0 Øð .2Ø15Ø.2Ø.2Ø04Ø(,Ø26Ø!%ð,
ð ,
àÔ# dÑ*ð,
ð Ô'¨$Ñ.ð,
ð Ô$ tÑ+ð	,
ð
 œ tÑ+ð,
ð Ô&¨Ñ-ð,
ð  ™ð,
ð Ô(¨4Ñ/ð,
ð ˜$‘;ð,
ð Ð-Ô.ð,
ð 
Ð(Ñ	(ð,
ð ,
ð ,
ñ „^ñ Ôð,
ð\>ð >ð >ð >ð >ð >ð >r:   rÆ  zË
    Aria model for conditional generation tasks.

    This model combines a vision tower, a multi-modal projector, and a language model
    to perform tasks that involve both image and text inputs.
    c                   óØ  ‡ — e Zd ZddiZdefˆ fd„Zdej        fd„Ze		 	 dd	e
j        d
e
j        dz  deee         z  dee         deez  f
d„¦   «         Zee		 	 	 	 	 	 	 	 	 	 dde
j        dz  d	e
j        dz  d
e
j        dz  de
j        dz  de
j        dz  dedz  de
j        dz  de
j        dz  dedz  dee
j        z  dee         deez  fd„¦   «         ¦   «         Z	 	 	 	 	 	 	 dˆ fd„	Zˆ xZS )ÚAriaForConditionalGenerationr¬  z(model.language_model.embed_tokens.weightrg   c                 óú   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        j        |j        j        d¬¦  «        | _	        |  
                    ¦   «          d S rö   )r/   r0   rÆ  rJ  r   rZ   rˆ   r7   r–  r­  rŸ  r�   s     €r9   r0   z%AriaForConditionalGeneration.__init__  se   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý˜vÑ&Ô&ˆŒ
Ý”y Ô!3Ô!?ÀÔASÔA^ÐejÐkÑkÔkˆŒØ�ŠÑÔÐÐÐr:   r-   c                 ó   — | j         S rb   )r­  rK   s    r9   Úget_output_embeddingsz2AriaForConditionalGeneration.get_output_embeddings	  s
   € ØŒ|Ðr:   Nr=   rÌ  rÍ  rÎ  r  c                 ó.   —  | j         j        d|||dœ|¤ŽS )N)rÌ  rÍ  rÎ  rD  )rJ  rÚ  )r6   rÌ  rÍ  rÎ  r  s        r9   rÚ  z/AriaForConditionalGeneration.get_image_features  s:   € ð -ˆtŒzÔ,ð 
Ø%Ø!Ø!5ð
ð 
ð ð	
ð 
ð 	
r:   r   r   r  rA  r-  r¡  r±  rB  r²  c                 ó`  —  | j         d||||||||	dœ|¤Ž}|d         }t          |
t          ¦  «        rt          |
 d¦  «        n|
}|                      |dd…|dd…f         ¦  «        }d}|�  | j        d||| j        j        j        dœ|¤Ž}t          |||j
        |j        |j        ¬¦  «        S )a{  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or `model.image_token_id` (where `model` is your instance of `AriaForConditionalGeneration`).
            Tokens with indices set to `model.image_token_id` are ignored (masked), the loss is only
            computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

        ```python
        >>> import httpx
        >>> from io import BytesIO
        >>> import torch
        >>> from PIL import Image
        >>> from io import BytesIO

        >>> from transformers import AutoProcessor, AutoModel
        >>> from transformers.image_utils import load_image

        >>> # Note that passing the image urls (instead of the actual pil images) to the processor is also possible
        >>> image1 = load_image("https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg")
        >>> image2 = load_image("https://cdn.britannica.com/59/94459-050-DBA42467/Skyline-Chicago.jpg")
        >>> image3 = load_image("https://cdn.britannica.com/68/170868-050-8DDE8263/Golden-Gate-Bridge-San-Francisco.jpg")

        >>> processor = AutoProcessor.from_pretrained("Rhymes-AI/Aria")
        >>> model = AutoModel.from_pretrained("Rhymes-AI/Aria", dtype=torch.bfloat16, device_map="auto")

        >>> # Create inputs
        >>> messages = [
        ...     {
        ...         "role": "user",
        ...         "content": [
        ...             {"type": "image"},
        ...             {"type": "text", "text": "In this image, we can see the city of New York, and more specifically the Statue of Liberty."},
        ...             {"type": "image"},
        ...             {"type": "text", "text": "What can we see in this image?"},
        ...         ]
        ...     },
        ...     {
        ...         "role": "user",
        ...         "content": [
        ...             {"type": "image"},
        ...             {"type": "text", "text": "In which city is that bridge located?"},
        ...         ]
        ...     }
        ... ]

        >>> prompts = [processor.apply_chat_template([message], add_generation_prompt=True) for message in messages]
        >>> images = [[image1, image2], [image3]]
        >>> inputs = processor(text=prompts, images=images, padding=True, return_tensors="pt").to(model.device)

        >>> # Generate
        >>> generated_ids = model.generate(**inputs, max_new_tokens=256)
        >>> generated_texts = processor.batch_decode(generated_ids, skip_special_tokens=True)

        >>> print(generated_texts[0])
        Assistant: There are buildings, trees, lights, and water visible in this image.

        >>> print(generated_texts[1])
        Assistant: The bridge is in San Francisco.
        ```)r   rÌ  rÍ  r  rA  r-  r¡  rB  r   Nr´  rµ  rD  )rJ  rR  r7  r·  r­  r¸  rg   rˆ   r–  rÁ  r-  r;   rN  )r6   r   rÌ  rÍ  r  rA  r-  r¡  r±  rB  r²  r  r¹  r;   rº  r¯  r¶  s                    r9   rG   z$AriaForConditionalGeneration.forward  s  € ðZ �$”*ð 

ØØ%Ø!Ø)Ø%Ø+Ø'Øð

ð 

ð ð

ð 

ˆð   œ
ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ%�4Ô%ð Ø f¸¼Ô9PÔ9[ðð Ø_eðð ˆDõ *ØØØ#Ô3Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r:   Fc	           	      óŒ   •—  t          ¦   «         j        |f|||||dœ|	¤Ž}
|s|	                     dd¦  «        s
||
d<   ||
d<   |
S )N)r-  r¡  r  r²  Úis_first_iterationrB  TrÌ  rÍ  )r/   Úprepare_inputs_for_generationÚget)r6   r   r-  r¡  rÌ  rÍ  r  r²  rø  r  Úmodel_inputsr8   s              €r9   rù  z:AriaForConditionalGeneration.prepare_inputs_for_generation‡  s~   ø€ ð =•u‘w”wÔ<Øð
à+Ø'Ø)Ø)Ø1ð
ð 
ð ð
ð 
ˆð ð 	4 V§Z¢Z°¸TÑ%BÔ%Bð 	4ð
 ,8ˆL˜Ñ(Ø)3ˆL˜Ñ&àÐr:   rû   )
NNNNNNNNNr   )NNNNNNF)rM   rN   rO   r»  r&   r0   r   ÚModulerô  r   r2   r©  r7  rï  r   r   rI   r   rÚ  r   rF  rQ   r
   rG  rÁ  rG   rù  rR   rS   s   @r9   rñ  rñ  ø  sJ  ø€ € € € € ð +Ð,VÐWÐð˜zð ð ð ð ð ð ð r¤yð ð ð ð ð ð 04Ø02ð	
ð 
àÔ'ð
ð Ô%¨Ñ,ð
ð " D¨¤I™oð	
ð
 Ð+Ô,ð
ð 
Ð+Ñ	+ð
ð 
ð 
ñ „^ð
ð Øð .2Ø15Ø.2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ðh
ð h
àÔ# dÑ*ðh
ð Ô'¨$Ñ.ðh
ð Ô$ tÑ+ð	h
ð
 œ tÑ+ðh
ð Ô&¨Ñ-ðh
ð  ™ðh
ð Ô(¨4Ñ/ðh
ð Ô  4Ñ'ðh
ð ˜$‘;ðh
ð ˜eœlÑ*ðh
ð Ð+Ô,ðh
ð 
Ð+Ñ	+ðh
ð h
ð h
ñ „^ñ Ôðh
ðZ ØØØØØØ ðð ð ð ð ð ð ð ð ð r:   rñ  )rñ  rc  rI  rŽ  rÆ  r«  )r%   )r  )UÚcollections.abcr   Údataclassesr   Útypingr   r2   r   Ú r   rS  Úactivationsr	   Úcache_utilsr
   r   Ú
generationr   Úintegrationsr   r   r   Úmasking_utilsr   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr    r!   Úutils.output_capturingr"   Úautor$   Úconfiguration_ariar&   r'   rü  r*   rU   rf   rƒ   rž   rÀ   rÂ   rÊ   rô   r  r
  rQ   r7  r  rP   r!  r#  r9  rI  rc  rj  rŽ  r«  rÁ  rÄ  rÆ  rñ  Ú__all__rD  r:   r9   ú<module>r     sš  ðð* %Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ /Ð /Ð /Ð /Ð /Ð /Ø BÐ BÐ BÐ BÐ BÐ BØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð LÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ð Ð˜YÑ'Ô'ðJð Jð Jð Jð J�b”iñ Jô Jñ (Ô'ðJð(ð ð ð ð �r”yñ ô ð ð24ð 4ð 4ð 4ð 4˜œñ 4ô 4ð 4ðn>ð >ð >ð >ð >�B”Iñ >ô >ð >ðBð ð ð ð ˜2œ9ñ ô ð ð4ð ð ð>)
ð )
ð )
ð )
ð )
˜RœYñ )
ô )
ð )
ðX)ð )ð )ð )ð )�"”)ñ )ô )ð )ðX4ð 4ð 4ð 4ð 4�r”yñ 4ô 4ð 4ð"(ð (ð (ð ÐÐ*Ñ+Ô+ðð ð ñ ,Ô+ðð2	U˜Uœ\ð 	U°#ð 	U¸%¼,ð 	Uð 	Uð 	Uð 	Uð& ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð2 ÐÐ)Ñ*Ô*ð@)ð @)ð @)ð @)ð @)˜œ	ñ @)ô @)ñ +Ô*ð@)ðF3ð 3ð 3ð 3ð 3Ð5ñ 3ô 3ð 3ðl ðUð Uð Uð Uð U˜oñ Uô Uñ „ðUð. ðPð Pð Pð Pð P˜/ñ Pô Pñ „ðPð.><ð ><ð ><ð ><ð ><˜bœiñ ><ô ><ð ><ðB ðF
ð F
ð F
ð F
ð F
Ð+ñ F
ô F
ñ „ðF
ðR ðE
ð E
ð E
ð E
ð E
Ð1°?ñ E
ô E
ñ „ðE
ðP €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9 ñ 9ô 9ñ „ñô ð9ð0 €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9Ð5ñ 9ô 9ñ „ñô ð9ð €ððñ ô ð
}>ð }>ð }>ð }>ð }>Ð#ñ }>ô }>ñô ð
}>ð@ €ððñ ô ðeð eð eð eð eÐ#6¸ñ eô eñô ðeðPð ð €€€r:   