§
    ‚Štj5v  ã                   óN  — d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlm	c 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 ddl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% ddl&m'Z' ddl(m)Z)m*Z*m+Z+ e"e G d„ de ¦  «        ¦   «         ¦   «         Z, ed¦  «         G d„ de	j-        ¦  «        ¦   «         Z. G d„ de	j-        ¦  «        Z/ddddej0        fde1de1d e1d!e2d"e3d#ej4        dz  d$ej5        d%ej6        fd&„Z7 G d'„ d(e	j-        ¦  «        Z8 G d)„ d*e	j-        ¦  «        Z9	 dJd,e	j-        d-ej6        d.ej6        d/ej6        d0ej6        dz  d1e2d2e2fd3„Z: G d4„ d5e	j-        ¦  «        Z; G d6„ d7e¦  «        Z< G d8„ d9e	j-        ¦  «        Z= G d:„ d;e	j-        ¦  «        Z>e" G d<„ d=e¦  «        ¦   «         Z? e"d>¬?¦  «         G d@„ dAe?¦  «        ¦   «         Z@ e"dB¬?¦  «         G dC„ dDe?¦  «        ¦   «         ZAdEej6        d%ej6        fdF„ZBe" G dG„ dHe?¦  «        ¦   «         ZCg dI¢ZDdS )Ké    N)ÚCallable)Ú	dataclass)ÚAny)Únné   )Úinitialization)ÚACT2FN)Úuse_kernel_forward_from_hub)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚAimv2ConfigÚAimv2TextConfigÚAimv2VisionConfigc                   óÞ   — 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j        dz  ed<   dZ
ej        dz  ed<   dZej        dz  ed<   dZeed<   dZeed	<   d
ee         fd„ZdS )ÚAimv2Outputa­  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
        Contrastive loss for image-text similarity.
    logits_per_image (`torch.FloatTensor` of shape `(image_batch_size, text_batch_size)`):
        The scaled dot product scores between `image_embeds` and `text_embeds`. This represents the image-text
        similarity scores.
    logits_per_text (`torch.FloatTensor` of shape `(text_batch_size, image_batch_size)`):
        The scaled dot product scores between `text_embeds` and `image_embeds`. This represents the text-image
        similarity scores.
    text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
        The text embeddings obtained by applying the projection layer to the pooled output of [`Aimv2TextModel`].
    image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
        The image embeddings obtained by applying the projection layer to the pooled output of [`Aimv2VisionModel`].
    text_model_output (`BaseModelOutputWithPooling`):
        The output of the [`Aimv2TextModel`].
    vision_model_output (`BaseModelOutputWithPooling`):
        The output of the [`Aimv2VisionModel`].
    NÚlossÚlogits_per_imageÚlogits_per_textÚtext_embedsÚimage_embedsÚtext_model_outputÚvision_model_outputÚreturnc                 óX   — t          d„ |                      ¦   «         D ¦   «         ¦  «        S )Nc              3   ól   K  — | ]/}t          |t          ¦  «        r|                     ¦   «         n|V — Œ0d S ©N)Ú
isinstancer   Úto_tuple)Ú.0Úvs     úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/aimv2/modeling_aimv2.pyú	<genexpr>z'Aimv2Output.to_tuple.<locals>.<genexpr>L   s=   è è € Ð^Ð^È1¥Z°µ;Ñ%?Ô%?ÐF�Q—Z’Z‘\”\�\ÀQÐ^Ð^Ð^Ð^Ð^Ð^ó    )ÚtupleÚvalues©Úselfs    r-   r*   zAimv2Output.to_tupleK   s,   € ÝÐ^Ð^ÐPT×P[ÒP[ÑP]ÔP]Ð^Ñ^Ô^Ñ^Ô^Ð^r/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚFloatTensorÚ__annotations__r   r    r!   r"   r#   r   r$   r0   r   r*   © r/   r-   r   r   -   så   € € € € € € ðð ð& &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø15Ð�eÔ'¨$Ñ.Ð5Ð5Ñ5Ø04€O�UÔ&¨Ñ-Ð4Ð4Ñ4Ø,0€K�Ô" TÑ)Ð0Ð0Ñ0Ø-1€L�%Ô# dÑ*Ð1Ð1Ñ1Ø48ÐÐ1Ð8Ð8Ñ8Ø6:ÐÐ3Ð:Ð:Ñ:ð_˜% œ*ð _ð _ð _ð _ð _ð _r/   r   Ú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 )
ÚAimv2RMSNormç�íµ ÷Æ°>Úepsr%   Nc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )z;
        Aimv2RMSNorm is equivalent to T5LayerNorm
        N)ÚsuperÚ__init__r   Ú	Parameterr8   ÚonesÚweightÚvariance_epsilon)r3   Úhidden_sizer@   Ú	__class__s      €r-   rC   zAimv2RMSNorm.__init__Q   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐr/   Úhidden_statesc                 ó  — |j         }|                     t          j        ¦  «        }|                     d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        |                     |¦  «        z  S )Né   éÿÿÿÿT)Úkeepdim)	ÚdtypeÚtor8   Úfloat32ÚpowÚmeanÚrsqrtrG   rF   )r3   rJ   Úinput_dtypeÚvariances       r-   ÚforwardzAimv2RMSNorm.forwardY   s|   € Ø#Ô)ˆØ%×(Ò(­¬Ñ7Ô7ˆØ ×$Ò$ QÑ'Ô'×,Ò,¨R¸Ð,Ñ>Ô>ˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆØŒ{˜]×-Ò-¨kÑ:Ô:Ñ:Ð:r/   c                 óH   — t          | j        j        ¦  «        › d| j        › �S )Nz, eps=)r0   rF   ÚshaperG   r2   s    r-   Ú
extra_reprzAimv2RMSNorm.extra_repr`   s&   € Ý˜œÔ)Ñ*Ô*ÐIÐI°$Ô2GÐIÐIÐIr/   )r?   )
r4   r5   r6   ÚfloatrC   r8   ÚTensorrW   rZ   Ú__classcell__©rI   s   @r-   r>   r>   O   sŒ   ø€ € € € € ð$ð $¨ð $¸$ð $ð $ð $ð $ð $ð $ð; U¤\ð ;°e´lð ;ð ;ð ;ð ;ðJð Jð Jð Jð Jð Jð Jr/   r>   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚAimv2MLPc                 ó¶  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _	        t          j        | j        | j        |j        ¬¦  «        | _
        t          |j                 | _        d S )N©Úbias)rB   rC   ÚconfigrH   Úintermediate_sizer   ÚLinearÚmlp_biasÚ	gate_projÚup_projÚ	down_projr	   Ú
hidden_actÚact_fn©r3   rd   rI   s     €r-   rC   zAimv2MLP.__init__e   s¯   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ!Ô-ˆÔØ!'Ô!9ˆÔÝœ 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 r(   )rj   rl   rh   ri   )r3   Úxrj   s      r-   rW   zAimv2MLP.forwardo   sA   € Ø—N’N 4§;¢;¨t¯~ª~¸aÑ/@Ô/@Ñ#AÔ#AÀDÇLÂLÐQRÁOÄOÑ#SÑTÔTˆ	ØÐr/   )r4   r5   r6   rC   rW   r]   r^   s   @r-   r`   r`   d   sG   ø€ € € € € ð0ð 0ð 0ð 0ð 0ðð ð ð ð ð ð r/   r`   é   g     ˆÃ@FÚheightÚwidthÚ	embed_dimÚtemperatureÚ	cls_tokenÚdevicerO   r%   c                 óP  — |dz  dk    rt          d|› �¦  «        ‚|dz  }t          j        |t          j        |¬¦  «        |z  }d||z  z  }t          j        | t          j        |¬¦  «        }	t          j        |t          j        |¬¦  «        }
t          j        |	|
d¬¦  «        \  }	}
|	                     ¦   «                              |¦  «        }|
                     ¦   «                              |¦  «        }t          j        |                     ¦   «         | 	                    ¦   «         |                     ¦   «         | 	                    ¦   «         gd¬	¦  «        }|r8t          j        t          j
        d|t          j        |¬¦  «        |gd¬	¦  «        }|                     |¦  «        S )
a»  2D sinusoidal position embeddings for an image patch grid.

    Each (h, w) position gets an ``embed_dim``-dimensional vector laid out as
    ``[sin_h | cos_h | sin_w | cos_w]``, with row-major (H-outer) patch ordering.

    Args:
        height: Grid height in patches.
        width: Grid width in patches.
        embed_dim: Total embedding dimension; must be divisible by 4.
        temperature: Base for the frequency decay.
        cls_token: If `True`, prepend a zero row for a CLS token.
        device: Target device; defaults to CPU.
        dtype: Output dtype; frequency arithmetic uses float64 internally.

    Returns:
        Tensor of shape ``(height * width [+1], embed_dim)``.
    é   r   z(`embed_dim` must be divisible by 4, got ©rO   rv   g      ð?Úij)Úindexingr   ©Údim)Ú
ValueErrorr8   ÚarangeÚfloat64ÚmeshgridÚflattenÚouterÚcatÚsinÚcosÚzerosrP   )rq   rr   rs   rt   ru   rv   rO   Úpos_dimÚomegaÚgrid_hÚgrid_wÚemb_hÚemb_wÚ	pos_embeds                 r-   Ú&build_2d_sinusoidal_position_embeddingr�   t   sm  € ð4 �1�}˜ÒÐÝÐOÀIÐOÐOÑPÔPÐPà˜1‰n€GÝŒL˜­¬¸fÐEÑEÔEÈÑO€EØ�+˜uÑ$Ñ$€EåŒ\˜&­¬¸fÐEÑEÔE€FÝŒ\˜%¥u¤}¸VÐDÑDÔD€FÝ”^ F¨F¸TÐBÑBÔB�N€FˆFà�NŠNÑÔ×"Ò" 5Ñ)Ô)€EØ�NŠNÑÔ×"Ò" 5Ñ)Ô)€Eå”	˜5Ÿ9š9™;œ;¨¯	ª	©¬°U·Y²Y±[´[À%Ç)Â)Á+Ä+ÐNÐTUÐVÑVÔV€Iàð qÝ”I�uœ{¨1¨i½u¼}ÐU[Ð\Ñ\Ô\Ð^gÐhÐnoÐpÑpÔpˆ	à�<Š<˜ÑÔÐ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 )ÚAimv2VisionEmbeddingsrd   c                 ó  •— t          ¦   «                              ¦   «          || _        |j        | _        t	          j        |j        |j        |j        |j        ¬¦  «        | _        t          |j        |j
        ¦  «        | _        |j        |j        z  dz  }| j        j        st	          j        ||j        ¦  «        | _        |                      dt#          j        |¦  «                             d¦  «        d¬¦  «         d S )N)Úkernel_sizeÚstriderL   Úposition_ids©r   rM   F©Ú
persistent)rB   rC   rd   Ú
patch_sizer   ÚConv2dÚnum_channelsrH   Úpatch_embedr>   Úrms_norm_epsÚrms_normÚ
image_sizeÚ	is_nativeÚ	EmbeddingÚposition_embeddingÚregister_bufferr8   r   Úexpand)r3   rd   Únum_patchesrI   s      €r-   rC   zAimv2VisionEmbeddings.__init__¥   sæ   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ Ô+ˆŒÝœ9ØÔ Ô!3ÀÔARÐ[aÔ[lð
ñ 
ô 
ˆÔõ % VÔ%7¸Ô9LÑMÔMˆŒàÔ(¨FÔ,=Ñ=À!ÑCˆØŒ{Ô$ð 	TÝ&(¤l°;ÀÔ@RÑ&SÔ&SˆDÔ#Ø×Ò˜^­U¬\¸+Ñ-FÔ-F×-MÒ-MÈgÑ-VÔ-VÐchÐÑiÔiÐiÐiÐir/   Úpixel_valuesr%   c                 óD  — |                      ¦   «         \  }}}}|                      |¦  «                             d¦  «                             dd¦  «        }|                      |¦  «        }| j        j        rŠt          || j        z  || j        z  | j        j	        |j
        |j        ¬¦  «        }|j        d         dz  }t          j        |d|d …f         |dd |…f         gd¬¦  «        }|                     d¦  «        }n|                      | j        ¦  «        }||z   }|S )NrL   r   )rq   rr   rs   rv   rO   rM   .r|   r   )Úsizerœ   r‚   Ú	transposerž   rd   r    r�   r™   rH   rv   rO   rY   r8   r„   Ú	unsqueezer¢   r•   )r3   r¦   Ú_rq   rr   rJ   rŽ   Úhalfs           r-   rW   zAimv2VisionEmbeddings.forward³   s*  € Ø*×/Ò/Ñ1Ô1Ñˆˆ1ˆf�eØ×(Ò(¨Ñ6Ô6×>Ò>¸qÑAÔA×KÒKÈAÈqÑQÔQˆØŸš mÑ4Ô4ˆàŒ;Ô ð 	CÝ>Ø ¤Ñ0Ø˜tœÑ.Øœ+Ô1Ø$Ô+Ø#Ô)ðñ ô ˆIð ”? 2Ô&¨!Ñ+ˆDÝœ	 9¨S°$°%°%¨ZÔ#8¸)ÀCÈÈ$ÈÀJÔ:OÐ"PÐVXÐYÑYÔYˆIØ!×+Ò+¨AÑ.Ô.ˆIˆIà×/Ò/°Ô0AÑBÔBˆIà%¨	Ñ1ˆØÐr/   ©	r4   r5   r6   r   rC   r8   r\   rW   r]   r^   s   @r-   r‘   r‘   ¤   sr   ø€ € € € € ðjÐ0ð jð jð jð jð jð jð E¤Lð °U´\ð ð ð ð ð ð ð ð r/   r‘   c            	       ó~   ‡ — e Zd Zdefˆ fd„Z	 	 	 d	dej        dz  dej        dz  dej        dz  dej        fd„Z	ˆ xZ
S )
ÚAimv2TextEmbeddingsrd   c                 óV  •— t          ¦   «                              ¦   «          |j        }t          j        |j        |¦  «        | _        t          j        |j        |¦  «        | _        |  	                    dt          j        |j        ¦  «                             d¦  «        d¬¦  «         d S )Nr•   r–   Fr—   )rB   rC   rH   r   r¡   Ú
vocab_sizeÚtoken_embeddingÚmax_position_embeddingsr¢   r£   r8   r   r¤   )r3   rd   rs   rI   s      €r-   rC   zAimv2TextEmbeddings.__init__Í   sœ   ø€ Ý‰Œ×ÒÑÔÐØÔ&ˆ	å!œ|¨FÔ,=¸yÑIÔIˆÔÝ"$¤,¨vÔ/MÈyÑ"YÔ"YˆÔð 	×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐejð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r/   NÚ	input_idsr•   Úinputs_embedsr%   c                 ó.  — |�|j         d         n|j         d         }| j        j        j         d         }||k    rt          d|› d|› �¦  «        ‚|€| j        d d …d |…f         }|€|                      |¦  «        }|                      |¦  «        }||z   }|S )NrM   éþÿÿÿr   zRSequence length must be less than max_position_embeddings (got `sequence length`: z and max_position_embeddings: )rY   r¢   rF   r~   r•   r²   )r3   r´   r•   rµ   Ú
seq_lengthÚmax_position_embeddingÚposition_embeddingsÚ
embeddingss           r-   rW   zAimv2TextEmbeddings.forwardÙ   sØ   € ð -6Ð,A�Y”_ RÔ(Ð(À}ÔGZÐ[]ÔG^ˆ
Ø!%Ô!8Ô!?Ô!EÀaÔ!HÐàÐ.Ò.Ð.ÝðVØðVð VØ=SðVð Vñô ð ð
 ÐØÔ,¨Q¨Q¨Q°°°¨^Ô<ˆLàÐ Ø ×0Ò0°Ñ;Ô;ˆMà"×5Ò5°lÑCÔCÐØ"Ð%8Ñ8ˆ
àÐr/   ©NNN)r4   r5   r6   r   rC   r8   Ú
LongTensorr9   r\   rW   r]   r^   s   @r-   r¯   r¯   Ì   s¨   ø€ € € € € ð

˜ð 

ð 

ð 

ð 

ð 

ð 

ð .2Ø04Ø26ð	ð àÔ# dÑ*ðð Ô&¨Ñ-ðð Ô(¨4Ñ/ð	ð
 
Œðð ð ð ð ð ð ð r/   r¯   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutc                 óÀ  — t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |dt           j        ¬¦  «                             |j        ¦  «        }t          j         	                    ||| j
        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «                             ¦   «         }	|	|fS )NrM   r·   )r}   rO   )ÚpÚtrainingr   rL   )r8   Úmatmulr©   r   Ú
functionalÚsoftmaxrQ   rP   rO   rÅ   rÈ   Ú
contiguous)
r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   ÚkwargsÚattn_weightsÚattn_outputs
             r-   Úeager_attention_forwardrÐ   ô   sÃ   € õ ”<  s§}¢}°R¸Ñ'<Ô'<Ñ=Ô=ÀÑG€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r/   c            
       ó~   ‡ — e Zd ZdZˆ fd„Z	 ddej        dej        dz  deej        ej        dz  f         fd„Zˆ xZ	S )	ÚAimv2Attentionz=Multi-headed attention from 'Attention Is All You Need' paperc                 óº  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        | j        | j        z  | _        | j        | j        z  | j        k    r t          d| j        › d| j        › d�¦  «        ‚| j        dz  | _	        |j
        | _        d| _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).g      à¿Frb   )rB   rC   rd   rH   rs   Únum_attention_headsÚ	num_headsÚhead_dimr~   ÚscaleÚattention_dropoutrÅ   Ú	is_causalr   rf   Úqkv_biasÚk_projÚv_projÚq_projÚout_projrm   s     €r-   rC   zAimv2Attention.__init__  s0  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØÔ3ˆŒØœ¨$¬.Ñ8ˆŒØŒ=˜4œ>Ñ)¨T¬^Ò;Ð;Ýð'ÈdÌnð 'ð 'Ø”Nð'ð 'ð 'ñô ð ð ”] DÑ(ˆŒ
ØÔ/ˆŒØˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝœ	 $¤.°$´.ÀvÄÐWÑWÔWˆŒˆˆr/   NrJ   rÃ   r%   c           
      ó¼  — |j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }	 |	| ||||| j        | j        | j        sdn| j        ¬¦  «        \  }
} |
j        g |¢d‘R Ž                      ¦   «         }
|                      |
¦  «        }
|
|fS )z#Input shape: Batch x Time x ChannelNrM   r   rL   r¾   )rÙ   rÄ   rÅ   )rY   rÖ   rÝ   Úviewr©   rÛ   rÜ   r   Úget_interfacerd   Ú_attn_implementationrÐ   rÙ   r×   rÈ   rÅ   ÚreshaperÌ   rÞ   )r3   rJ   rÃ   rÍ   Úinput_shapeÚhidden_shapeÚqueriesÚkeysr1   Úattention_interfacerÏ   rÎ   s               r-   rW   zAimv2Attention.forward!  sg  € ð $Ô)¨#¨2¨#Ô.ˆà8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆØ—+’+˜mÑ,Ô,×1Ò1°,Ñ?Ô?×IÒIÈ!ÈQÑOÔOˆØ�{Š{˜=Ñ)Ô)×.Ò.¨|Ñ<Ô<×FÒFÀqÈ!ÑLÔLˆØ—’˜]Ñ+Ô+×0Ò0°Ñ>Ô>×HÒHÈÈAÑNÔNˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØØ”nØ”JØ#œ}Ð>�C�C°$´,ð	%
ñ 	%
ô 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆà˜LÐ(Ð(r/   r(   )
r4   r5   r6   r7   rC   r8   r\   r0   rW   r]   r^   s   @r-   rÒ   rÒ     s™   ø€ € € € € ØGÐGðXð Xð Xð Xð Xð, /3ð!)ð !)à”|ð!)ð œ tÑ+ð!)ð
 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð!)ð !)ð !)ð !)ð !)ð !)ð !)ð !)r/   rÒ   c            	       óp   ‡ — e Zd Zdefˆ fd„Z	 d	dej        dej        dz  dee         dej        fd„Z	ˆ xZ
S )
ÚAimv2EncoderLayerrd   c                 ó  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        t          |j        |j        ¦  «        | _	        t          |j        |j        ¦  «        | _
        d S r(   )rB   rC   rÒ   Ú	attentionr`   Úffnr>   rH   r�   Ú	rms_norm1Ú	rms_norm2rm   s     €r-   rC   zAimv2EncoderLayer.__init__F  si   ø€ Ý‰Œ×ÒÑÔÐÝ'¨Ñ/Ô/ˆŒÝ˜FÑ#Ô#ˆŒÝ% fÔ&8¸&Ô:MÑNÔNˆŒÝ% fÔ&8¸&Ô:MÑNÔNˆŒˆˆr/   NrJ   rÃ   rÍ   r%   c                 ó¾   — |                       |¦  «        } | j        d||dœ|¤Ž\  }}||z   }|                      |¦  «        }|                      |¦  «        }||z   }|S )N)rJ   rÃ   r;   )rî   rì   rï   rí   )r3   rJ   rÃ   rÍ   Únorm_hidden_statesrÏ   r«   Ú
mlp_outputs           r-   rW   zAimv2EncoderLayer.forwardM  sy   € ð "Ÿ^š^¨MÑ:Ô:ÐØ'˜œÐrÐ6HÐYgÐrÐrÐkqÐrÐr‰ˆ�Qà%¨Ñ3ˆØ!Ÿ^š^¨MÑ:Ô:ÐØ—X’XÐ0Ñ1Ô1ˆ
à%¨
Ñ2ˆØÐr/   r(   )r4   r5   r6   r   rC   r8   r\   r   r   rW   r]   r^   s   @r-   rê   rê   E  s¡   ø€ € € € € ðOÐ0ð Oð Oð Oð Oð Oð Oð /3ðð à”|ðð œ tÑ+ðð Ð+Ô,ð	ð
 
Œðð ð ð ð ð ð ð r/   rê   c                   ól   ‡ — e Zd ZdZdefˆ fd„Ze	 d	dej        dz  de	e
         defd„¦   «         Zˆ xZS )
ÚAimv2Encoderz¯
    Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
    [`Aimv2EncoderLayer`].

    Args:
        config: Aimv2Config
    rd   c                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r;   )rê   )r+   r«   rd   s     €r-   ú
<listcomp>z)Aimv2Encoder.__init__.<locals>.<listcomp>j  s"   ø€ Ð$hÐ$hÐ$hÀ1Õ%6°vÑ%>Ô%>Ð$hÐ$hÐ$hr/   F)	rB   rC   rd   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersÚgradient_checkpointingrm   s    `€r-   rC   zAimv2Encoder.__init__g  s`   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”mÐ$hÐ$hÐ$hÐ$hÍÈfÔNfÑHgÔHgÐ$hÑ$hÔ$hÑiÔiˆŒØ&+ˆÔ#Ð#Ð#r/   NrÃ   rÍ   r%   c                 óN   — |}| j         D ]} |||fi |¤Ž}Œt          |¬¦  «        S )N)Úlast_hidden_state)rû   r   )r3   rµ   rÃ   rÍ   rJ   Úencoder_layers         r-   rW   zAimv2Encoder.forwardn  sU   € ð &ˆØ!œ[ð 	ð 	ˆMØ)˜MØØðð ð ðð ˆMˆMõ °Ð?Ñ?Ô?Ð?r/   r(   )r4   r5   r6   r7   r   rC   r   r8   r\   r   r   r   rW   r]   r^   s   @r-   rô   rô   ^  s¯   ø€ € € € € ðð ð,˜{ð ,ð ,ð ,ð ,ð ,ð ,ð ð /3ð@ð @ð œ tÑ+ð@ð Ð+Ô,ð	@ð
 
ð@ð @ð @ñ „^ð@ð @ð @ð @ð @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 )ÚAimv2AttentionPoolingHeadrd   c                 óÔ  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _	        t          j
        t          j        dd| j        ¦  «        ¦  «        | _        t          j        | j        | j        d¬¦  «        | _        d S )Nrb   r   T)rB   rC   rH   rÔ   rÕ   r   rf   rÚ   rÛ   rÜ   rD   r8   r‡   ru   Úoutput_projrm   s     €r-   rC   z"Aimv2AttentionPoolingHead.__init__�  sµ   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔØÔ3ˆŒå”i Ô 0°$Ô2BÈÌÐYÑYÔYˆŒÝ”i Ô 0°$Ô2BÈÌÐYÑYÔYˆŒåœ¥e¤k°!°Q¸Ô8HÑ&IÔ&IÑJÔJˆŒÝœ9 TÔ%5°tÔ7GÈdÐSÑSÔSˆÔÐÐr/   rJ   r%   c                 óæ  — |j         \  }}}| j                             |dd¦  «        }|                      |¦  «                             ||| j        || j        z  ¦  «        }|                      |¦  «                             ||| j        || j        z  ¦  «        }|                     |d| j        || j        z  ¦  «        }|                     dddd¦  «        }|                     dddd¦  «        }|                     dddd¦  «        }t          j	        |||¦  «        }	|	 
                    dd¦  «                             |d|¦  «        }	|	                     d¬¦  «        }	|                      |	¦  «        }
|
S )NrM   r   r   rL   r   r|   )rY   ru   r¤   rÛ   rã   rÕ   rÜ   ÚpermuteÚFÚscaled_dot_product_attentionr©   rS   r  )r3   rJ   Ú
batch_sizeÚseq_lenÚ
hidden_dimru   rÁ   rÂ   rÀ   rÏ   Úoutputs              r-   rW   z!Aimv2AttentionPoolingHead.forwardŒ  s\  € Ø*7Ô*=Ñ'ˆ
�G˜Zà”N×)Ò)¨*°b¸"Ñ=Ô=ˆ	à�kŠk˜-Ñ(Ô(×0Ò0°¸WÀdÄnÐV`ÐdhÔdrÑVrÑsÔsˆØ—’˜MÑ*Ô*×2Ò2°:¸wÈÌÐXbÐfjÔftÑXtÑuÔuˆØ×!Ò! *¨a°´ÀÈtÌ~ÑA]Ñ^Ô^ˆà�kŠk˜!˜Q  1Ñ%Ô%ˆØ—’˜a  A qÑ)Ô)ˆØ—’˜a  A qÑ)Ô)ˆåÔ4°U¸CÀÑGÔGˆà!×+Ò+¨A¨qÑ1Ô1×9Ò9¸*ÀaÈÑTÔTˆØ!×&Ò&¨1Ð&Ñ-Ô-ˆà×!Ò! +Ñ.Ô.ˆØˆr/   r­   r^   s   @r-   r  r  €  sr   ø€ € € € € ð	TÐ0ð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð U¤\ð °e´lð ð ð ð ð ð ð ð r/   r  c                   óx   ‡ — e Zd ZU dZeed<   dZdZdZg d¢Z	dZ
dZdZ ej        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚAimv2PreTrainedModelzÏ
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models. The model is only intended for inference and doesn't support finetuning.
    rd   Úaimv2)ÚimageT)rê   r  r‘   r¯   c                 ó  •— t          ¦   «                              |¦  «         t          |d¦  «        rOt          |j        t
          j        ¦  «        r.t          j        |j        t          j
        d¦  «        ¦  «         d S d S t          |t          ¦  «        r(t          j        |j        d| j        j        ¬¦  «         d S t          |t           ¦  «        rQt          j        |j        t'          j        |j        j        d         ¦  «                             d¦  «        ¦  «         d S t          |t.          ¦  «        rQt          j        |j        t'          j        |j        j        d         ¦  «                             d¦  «        ¦  «         d S d S )NÚlogit_scaleg$I’$I’,@r¾   )rS   ÚstdrM   r–   )rB   Ú_init_weightsÚhasattrr)   r  r   rD   ÚinitÚ	constant_ÚmathÚlogr  Únormal_ru   rd   Úinitializer_ranger‘   Úcopy_r•   r8   r   rY   r¤   r¯   )r3   r¿   rI   s     €r-   r  z"Aimv2PreTrainedModel._init_weights·  sd  ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�6˜=Ñ)Ô)ð 	iÝ˜&Ô,­b¬lÑ;Ô;ð GÝ”˜vÔ1µ4´8¸HÑ3EÔ3EÑFÔFÐFÐFÐFðGð Gå˜Õ 9Ñ:Ô:ð 	iÝŒL˜Ô)°¸¼Ô9VÐWÑWÔWÐWÐWÐWÝ˜Õ 5Ñ6Ô6ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhÝ˜Õ 3Ñ4Ô4ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhð	ið 	ir/   )r4   r5   r6   r7   r   r:   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnr8   Úno_gradr  r]   r^   s   @r-   r  r  ¢  s¤   ø€ € € € € € ðð ð
 ÐÐÑØÐØ!ÐØ&*Ð#ðð ð Ðð €NØÐØÐà€U„]�_„_ð
ið 
ið 
ið 
iñ „_ð
ið 
ið 
ið 
ið 
ir/   r  zL
    The Vision model from AIMv2 without any head or projection on top.
    )Úcustom_introc                   ó´   ‡ — e Zd ZU eed<   dZeedœZdefˆ fd„Z	de
j        fd„Ze ed¬¦  «        ed	ee         defd
„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚAimv2VisionModelrd   r¦   ©rJ   Ú
attentionsc                 ó\  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |j        |j	        ¦  «        | _
        |j        | _        | j        rt          |¦  «        | _        |                      ¦   «          d S r(   )rB   rC   rd   r‘   r»   rô   Úencoderr>   rH   r�   rž   Úuse_headr  ÚheadÚ	post_initrm   s     €r-   rC   zAimv2VisionModel.__init__Ò  s�   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ/°Ñ7Ô7ˆŒÝ# FÑ+Ô+ˆŒå$ VÔ%7¸Ô9LÑMÔMˆŒàœˆŒØŒ=ð 	:Ý1°&Ñ9Ô9ˆDŒIà�ŠÑÔÐÐÐr/   r%   c                 ó   — | j         j        S r(   )r»   rœ   r2   s    r-   Úget_input_embeddingsz%Aimv2VisionModel.get_input_embeddingsà  s   € ØŒÔ*Ð*r/   F©Útie_last_hidden_statesrÍ   c                 óà   — |                       |¦  «        } | j        dd|i|¤Ž}|j        }|                      |¦  «        }| j        r|                      |¦  «        nd}t          ||¬¦  «        S )a3  
        Examples:

        ```python
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO
        >>> from transformers import AutoProcessor, Siglip2VisionModel

        >>> model = Aimv2VisionModel.from_pretrained("apple/aimv2-large-patch14-native")
        >>> processor = AutoProcessor.from_pretrained("apple/aimv2-large-patch14-native")

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> inputs = processor(images=image, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        >>> pooled_output = outputs.pooler_output  # pooled features
        ```rµ   N©rþ   Úpooler_outputr;   )r»   r*  rþ   rž   r+  r,  r   )r3   r¦   rÍ   rJ   Úencoder_outputsrþ   r4  s          r-   rW   zAimv2VisionModel.forwardã  s–   € ð< Ÿš¨Ñ5Ô5ˆà+7¨4¬<ð ,
ð ,
Ø'ð,
àð,
ð ,
ˆð
 ,Ô=ÐØ ŸMšMÐ*;Ñ<Ô<Ðà8<¼ÐO˜Ÿ	š	Ð"3Ñ4Ô4Ð4È4ˆå)Ø/Ø'ð
ñ 
ô 
ð 	
r/   )r4   r5   r6   r   r:   Úmain_input_namerê   rÒ   Ú_can_record_outputsrC   r   ÚModuler/  r   r   r   r   r   r   rW   r]   r^   s   @r-   r&  r&  Å  sç   ø€ € € € € € ð ÐÐÑØ$€Oà*Ø$ðð Ðð
Ð0ð ð ð ð ð ð ð+ b¤ið +ð +ð +ð +ð  Ø€_¨EÐ2Ñ2Ô2Øð*
ð Ð+Ô,ð*
ð 
$ð	*
ð *
ð *
ñ „^ñ 3Ô2ñ  Ôð*
ð *
ð *
ð *
ð *
r/   r&  zJ
    The text model from AIMv2 without any head or projection on top.
    c            
       óÆ   ‡ — e Zd ZdZeedœZdefˆ fd„Zde	j
        fd„Zd„ Ze ed¬	¦  «        e	 ddej        d
z  dee         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚAimv2TextModelr´   r'  rd   c                 ó&  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |j        |j	        ¦  «        | _
        |j        | _        |                      ¦   «          d S r(   )rB   rC   rd   r¯   r»   rô   r*  r>   rH   r�   rž   Úeos_token_idr-  rm   s     €r-   rC   zAimv2TextModel.__init__   sx   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ-¨fÑ5Ô5ˆŒÝ# FÑ+Ô+ˆŒÝ$ VÔ%7¸Ô9LÑMÔMˆŒà"Ô/ˆÔà�ŠÑÔÐÐÐr/   r%   c                 ó   — | j         j        S r(   ©r»   r²   r2   s    r-   r/  z#Aimv2TextModel.get_input_embeddings+  s   € ØŒÔ.Ð.r/   c                 ó   — || j         _        d S r(   r>  )r3   rÂ   s     r-   Úset_input_embeddingsz#Aimv2TextModel.set_input_embeddings.  s   € Ø*/ˆŒÔ'Ð'Ð'r/   Fr0  NrÃ   rÍ   c                 ó’  — |                       |¦  «        }|j        \  }}}t          j        |t          j        |j        ¬¦  «        }|                     d¦  «                             |d¦  «        }|�t          | j	        |||d ¬¦  «        } | j
        d	||dœ|¤Ž}	|	j        }
|                      |
¦  «        }
|
t          j        |
j        d         |
j        ¬¦  «        |                     t          j        |
j        ¬¦  «        | j        k                         ¦   «                              d¬¦  «        f         }t#          |
|¬¦  «        S )
Nry   r   rM   )rd   rµ   r•   rÃ   Úpast_key_values)rµ   rÃ   )rv   r|   r3  r;   )r»   rY   r8   r   Úlongrv   rª   r¤   r   rd   r*  rþ   rž   rP   Úintr<  Úargmaxr   )r3   r´   rÃ   rÍ   rJ   r  r	  r«   r•   r5  rþ   Úpooled_outputs               r-   rW   zAimv2TextModel.forward1  si  € ð Ÿš¨	Ñ2Ô2ˆØ!.Ô!4Ñˆ
�G˜Qå”| Gµ5´:ÀmÔFZÐ[Ñ[Ô[ˆØ#×-Ò-¨aÑ0Ô0×7Ò7¸
ÀBÑGÔGˆØÐ%Ý/Ø”{Ø+Ø)Ø-Ø $ðñ ô ˆNð '˜$œ,ð 
Ø'Ø)ð
ð 
ð ð
ð 
ˆð ,Ô=ÐØ ŸMšMÐ*;Ñ<Ô<Ðð *ÝŒLÐ*Ô0°Ô3Ð<MÔ<TÐUÑUÔUØ�\Š\¥¤	Ð2CÔ2Jˆ\ÑKÔKÈtÔO`Ò`×eÒeÑgÔg×nÒnÐsuÐnÑvÔvðxô
ˆõ
 *Ø/Ø'ð
ñ 
ô 
ð 	
r/   r(   )r4   r5   r6   r6  rê   rÒ   r7  r   rC   r   r8  r/  r@  r   r   r   r8   r\   r   r   r   rW   r]   r^   s   @r-   r:  r:    s  ø€ € € € € ð "€Oð +Ø$ðð Ðð
	˜ð 	ð 	ð 	ð 	ð 	ð 	ð/ b¤ið /ð /ð /ð /ð0ð 0ð 0ð  Ø€_¨EÐ2Ñ2Ô2Øð /3ð&
ð &
ð œ tÑ+ð&
ð Ð+Ô,ð	&
ð
 
$ð&
ð &
ð &
ñ „^ñ 3Ô2ñ  Ôð&
ð &
ð &
ð &
ð &
r/   r:  Útensorc                 óˆ   — t          j        | d¦  «        }t          j        |dd¬¦  «        }t          j        |d¦  «        }|S )z½
    This method is equivalent to tensor.norm(p=2, dim=-1, keepdim=True) and used to make
    model `executorch` exportable. See issue https://github.com/pytorch/executorch/issues/3566
    rL   rM   T)r}   rN   g      à?)r8   rR   Úsum)rG  Úsquare_tensorÚ
sum_tensorÚnormed_tensors       r-   Ú_get_vector_normrM  ]  sB   € õ
 ”I˜f aÑ(Ô(€MÝ”˜=¨b¸$Ð?Ñ?Ô?€JÝ”I˜j¨#Ñ.Ô.€MØÐr/   c                   ó~  ‡ — e Zd ZdZdefˆ fd„Zee	 	 ddej	        dej	        dz  dej	        dz  de
e         d	eez  f
d
„¦   «         ¦   «         Zee	 ddej        de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
e         d	ef
d„¦   «         ¦   «         Zˆ xZS )Ú
Aimv2ModelTrd   c                 óœ  •— t          ¦   «                              |¦  «         |j        | _        |j        j        | _        |j        j        | _        t           	                    |j        ¦  «        | _
        t           	                    |j        ¦  «        | _        t          j        | j        | j        d¬¦  «        | _        t          j        | j        | j        d¬¦  «        | _        t          j        t%          j        | j        j        ¦  «        ¦  «        | _        t/          j        |j        ¦  «        | _        |                      ¦   «          d S )NFrb   )rB   rC   Úprojection_dimÚvision_configrH   Úvision_embed_dimÚtext_configÚtext_embed_dimr&  Ú_from_configÚvision_modelr:  Ú
text_modelr   rf   Úvisual_projectionÚtext_projectionrD   r8   rG  rd   Úlogit_scale_init_valuer  r  r  Úmax_logit_scaleÚmax_log_logit_scaler-  rm   s     €r-   rC   zAimv2Model.__init__l  sÿ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à$Ô3ˆÔØ &Ô 4Ô @ˆÔØ$Ô0Ô<ˆÔå,×9Ò9¸&Ô:NÑOÔOˆÔÝ(×5Ò5°fÔ6HÑIÔIˆŒå!#¤¨4Ô+@À$ÔBUÐ\aÐ!bÑ!bÔ!bˆÔÝ!œy¨Ô)<¸dÔ>QÐX]Ð^Ñ^Ô^ˆÔåœ<­¬°T´[Ô5WÑ(XÔ(XÑYÔYˆÔÝ#'¤8¨FÔ,BÑ#CÔ#CˆÔ à�ŠÑÔÐÐÐr/   Nr´   rÃ   r•   rÍ   r%   c                 ól   —  | j         d|||ddœ|¤Ž}|j        }|                      |¦  «        |_        |S )a
  
        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoTokenizer, Aimv2Model

        >>> model = Aimv2Model.from_pretrained("openai/aimv2-vit-base-patch32")
        >>> tokenizer = AutoTokenizer.from_pretrained("openai/aimv2-vit-base-patch32")

        >>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

        >>> with torch.inference_mode():
        ...     text_features = model.get_text_features(**inputs)
        ```T)r´   rÃ   r•   Úreturn_dictr;   )rX  r4  rZ  )r3   r´   rÃ   r•   rÍ   Útext_outputsrF  s          r-   Úget_text_featureszAimv2Model.get_text_features~  s^   € ð0 4C°4´?ð 4
ØØ)Ø%Øð	4
ð 4
ð
 ð4
ð 4
ˆð %Ô2ˆØ%)×%9Ò%9¸-Ñ%HÔ%HˆÔ"àÐr/   Fr¦   Úinterpolate_pos_encodingc                 ój   —  | j         d||ddœ|¤Ž}|j        }|                      |¦  «        |_        |S )aŽ  
        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoProcessor, Aimv2Model
        >>> from transformers.image_utils import load_image

        >>> model = Aimv2Model.from_pretrained("openai/aimv2-vit-base-patch32")
        >>> processor = AutoProcessor.from_pretrained("openai/aimv2-vit-base-patch32")

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> image = load_image(url)

        >>> inputs = processor(images=image, return_tensors="pt")

        >>> with torch.inference_mode():
        ...     image_features = model.get_image_features(**inputs)
        ```T)r¦   rb  r_  r;   )rW  r4  rY  )r3   r¦   rb  rÍ   Úvision_outputsrF  s         r-   Úget_image_featureszAimv2Model.get_image_features¢  s\   € ð6 6G°TÔ5Fð 6
Ø%Ø%=Øð6
ð 6
ð ð	6
ð 6
ˆð 'Ô4ˆØ'+×'=Ò'=¸mÑ'LÔ'LˆÔ$àÐr/   c                 ó  —  | j         dd|i|¤Ž} | j        d||dœ|¤Ž}|j        }|                      |¦  «        }|j        }|                      |¦  «        }|t          |¦  «        z  }|t          |¦  «        z  }| j                             d| j        ¦  «         	                    ¦   «          
                    |j        ¦  «        }	|	|z  |                     ¦   «         z  }
|
                     ¦   «         }t          ||
||||¬¦  «        S )aÔ  
        Examples:

        ```python
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO
        >>> from transformers import AutoProcessor, Aimv2Model

        >>> model = Aimv2Model.from_pretrained("apple/aimv2-large-patch14-224-lit")
        >>> processor = AutoProcessor.from_pretrained("apple/aimv2-large-patch14-224-lit")

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> inputs = processor(
        ...     text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True
        ... )

        >>> outputs = model(**inputs)
        >>> logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
        >>> probs = logits_per_image.softmax(dim=1)  # we can take the softmax to get the label probabilities
        ```r¦   )r´   rÃ   r¾   )r   r    r!   r"   r#   r$   r;   )rW  rX  r4  rY  rZ  rM  r  Úclampr]  ÚexprP   rv   Útr   )r3   r´   r¦   rÃ   rÍ   rd  r`  r"   r!   r  r    r   s               r-   rW   zAimv2Model.forwardÈ  sL  € ðB 6G°TÔ5Fð 6
ð 6
Ø%ð6
àð6
ð 6
ˆð
 4C°4´?ð 4
ØØ)ð4
ð 4
ð ð4
ð 4
ˆð &Ô3ˆØ×-Ò-¨lÑ;Ô;ˆà"Ô0ˆØ×*Ò*¨;Ñ7Ô7ˆð $Õ&6°|Ñ&DÔ&DÑDˆØ!Õ$4°[Ñ$AÔ$AÑAˆàÔ&×,Ò,¨S°$Ô2JÑKÔK×OÒOÑQÔQ×TÒTÐU`ÔUgÑhÔhˆØ&¨Ñ4¸¿ºÑ8HÔ8HÑHˆØ*×,Ò,Ñ.Ô.ÐåØ-Ø+Ø#Ø%Ø*Ø .ð
ñ 
ô 
ð 	
r/   )NN)Fr¼   )r4   r5   r6   r!  r   rC   r   r   r8   r\   r   r   r0   r   ra  r9   Úboolre  r½   r   rW   r]   r^   s   @r-   rO  rO  h  sÂ  ø€ € € € € àÐð˜{ð ð ð ð ð ð ð$ Øð /3Ø,0ð	 ð  à”<ð ð œ tÑ+ð ð ”l TÑ)ð	 ð
 Ð+Ô,ð ð 
Ð+Ñ	+ð ð  ð  ñ „^ñ Ôð ðD Øð */ð"ð "àÔ'ð"ð #'ð"ð Ð+Ô,ð	"ð
 
Ð+Ñ	+ð"ð "ð "ñ „^ñ Ôð"ðH Øð .2Ø15Ø.2ð	?
ð ?
àÔ# dÑ*ð?
ð Ô'¨$Ñ.ð?
ð œ tÑ+ð	?
ð
 Ð+Ô,ð?
ð 
ð?
ð ?
ð ?
ñ Ôñ „^ð?
ð ?
ð ?
ð ?
ð ?
r/   rO  )r&  rO  r  r:  )r¾   )Er  Úcollections.abcr   Údataclassesr   Útypingr   r8   Útorch.nn.functionalr   rÊ   r  Ú r   r  Úactivationsr	   Úintegrationsr
   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_aimv2r   r   r   r   r8  r>   r`   rQ   rD  r[   rj  rv   rO   r\   r�   r‘   r¯   rÐ   rÒ   rê   rô   r  r  r&  r:  rM  rO  Ú__all__r;   r/   r-   ú<module>r|     s¯  ðð, €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø /Ð /Ð /Ð /Ð /Ð /Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ Pð Ø
ð_ð _ð _ð _ð _�+ñ _ô _ñ „ñ „ð_ð@ Ð˜YÑ'Ô'ðJð Jð Jð Jð J�2”9ñ Jô Jñ (Ô'ðJð(ð ð ð ð ˆrŒyñ ô ð ð& Ø ØØ"&Øœð-ð -Øð-àð-ð ð-ð ð	-ð
 ð-ð ŒL˜4Ñð-ð Œ;ð-ð „\ð-ð -ð -ð -ð`%ð %ð %ð %ð %˜BœIñ %ô %ð %ðP%ð %ð %ð %ð %˜"œ)ñ %ô %ð %ð^ ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð %ð %ð %ð.7)ð 7)ð 7)ð 7)ð 7)�R”Yñ 7)ô 7)ð 7)ðtð ð ð ð Ð2ñ ô ð ð2@ð @ð @ð @ð @�2”9ñ @ô @ð @ðDð ð ð ð  ¤	ñ ô ð ðD ðið ið ið ið i˜?ñ iô iñ „ðiðD €ððñ ô ð
F
ð F
ð F
ð F
ð F
Ð+ñ F
ô F
ñô ð
F
ðR €ððñ ô ð
B
ð B
ð B
ð B
ð B
Ð)ñ B
ô B
ñô ð
B
ðJ˜Uœ\ð ¨e¬lð ð ð ð ð ð`
ð `
ð `
ð `
ð `
Ð%ñ `
ô `
ñ „ð`
ðF WÐ
VÐ
V€€€r/   