§
    ‚ŠtjN  ã                   ó   — d Z ddl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 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"m#Z#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1  ed¬¦  «        e G d„ de+¦  «        ¦   «         ¦   «         Z2 ed¬¦  «        e G d„ de*¦  «        ¦   «         ¦   «         Z3 ed¬¦  «        e G d„ de)¦  «        ¦   «         ¦   «         Z4 G d„ de/¦  «        Z5 G d „ d!e'¦  «        Z6 G d"„ d#e&¦  «        Z7 G d$„ d%ej8        ¦  «        Z9 G d&„ d'e#¦  «        Z: G d(„ d)e-¦  «        Z; G d*„ d+e¦  «        Z< G d,„ d-e.¦  «        Z= G d.„ d/ej8        ¦  «        Z>e G d0„ d1e¦  «        ¦   «         Z? ed2¬3¦  «         G d4„ d5e?¦  «        ¦   «         Z@ ed6¬3¦  «         G d7„ d8e?¦  «        ¦   «         ZAe G d9„ d:e"¦  «        ¦   «         ZBg d;¢ZCdS )<z%Pytorch implementation of AIMv2 Modelé    N)Ústrict)Únné   )Úinitialization)ÚPreTrainedConfig)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputsé   )Ú	CLIPModelÚCLIPTextEmbeddingsÚ_get_vector_norm)ÚLlamaMLPÚLlamaRMSNorm)ÚSiglipConfigÚSiglipTextConfigÚSiglipVisionConfig)ÚSiglipAttentionÚSiglipEncoderÚSiglipOutput)Ú&build_2d_sinusoidal_position_embeddingz!apple/aimv2-large-patch14-224-lit)Ú
checkpointc                   ó  — e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	eed	<   d
Z
eee         z  eeef         z  ed<   dZeed<   dZeez  ed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<    e¦   «         ZdS )ÚAimv2VisionConfigaå  
    use_head (`str`, *optional*, defaults to `True`):
        Whether to use Attention Pooling Head or Not.
    is_native (`str`, *optional*, defaults to `False`):
        Whether to use ckpt trained for image native resolution or not.

    Example:

    ```python
    >>> from transformers import SiglipVisionConfig, SiglipVisionModel

    >>> # Initializing a Aimv2VisionConfig with apple/aimv2-large-patch14-224 style configuration
    >>> configuration = Aimv2VisionConfig()

    >>> # Initializing a Aimv2VisionModel (with random weights) from the apple/aimv2-large-patch14-224 style configuration
    >>> model = Aimv2VisionModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```i   Úhidden_sizei   Úintermediate_sizeé   Únum_hidden_layersé   Únum_attention_headsé   Ú
patch_sizeçñhãˆµøä>Úrms_norm_epsç        Úattention_dropoutFÚqkv_biasÚmlp_biasÚsiluÚ
hidden_actç{®Gáz”?Úinitializer_rangeTÚuse_headÚ	is_nativeN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   ÚintÚ__annotations__r$   r&   r(   r*   ÚlistÚtupler,   Úfloatr.   r/   Úboolr0   r2   Ústrr4   r5   r6   ÚAttributeErrorÚlayer_norm_eps© ó    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/aimv2/modular_aimv2.pyr"   r"   )   s  € € € € € € ðð ð* €K�ÐÐÑØ!Ð�sÐ!Ð!Ñ!ØÐ�sÐÐÑØ Ð˜Ð Ð Ñ Ø46€J��d˜3”i‘ %¨¨S¨¤/Ñ1Ð6Ð6Ñ6Ø€L�%ÐÐÑØ%(Ð�u˜s‘{Ð(Ð(Ñ(Ø€HˆdÐÐÑØ€HˆdÐÐÑØ€J�ÐÐÑØ#Ð�uÐ#Ð#Ñ#Ø€HˆdÐÐÑØ€IˆtÐÐÑà#�^Ñ%Ô%€N€N€NrE   r"   c                   ó   — e Zd ZU dZeed<   dZeed<   dZeed<   dZeed<   d	Z	eed
<   dZ
eed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<    e¦   «         Z e¦   «         Z e¦   «         Z e¦   «         Zd„ ZdS )ÚAimv2TextConfigi Á  Ú
vocab_sizei   r#   i   r$   é   r&   é   r(   éM   Úmax_position_embeddingsr1   r2   r+   r,   Fr/   r0   r3   r4   c                 ó(   — t          j        di |¤Ž d S )NrD   )r   Ú__post_init__)ÚselfÚkwargss     rF   rO   zAimv2TextConfig.__post_init__e   s   € ÝÔ&Ð0Ð0¨Ð0Ð0Ð0Ð0Ð0rE   N)r7   r8   r9   rI   r;   r<   r#   r$   r&   r(   rM   r2   rA   r,   r?   r/   r@   r0   r4   rB   Úbos_token_idÚpad_token_idrC   Úprojection_sizerO   rD   rE   rF   rH   rH   R   s  € € € € € € ð €J�ÐÐÑØ€K�ÐÐÑØ!Ð�sÐ!Ð!Ñ!ØÐ�sÐÐÑØ Ð˜Ð Ð Ñ Ø#%Ð˜SÐ%Ð%Ñ%Ø€J�ÐÐÑØ€L�%ÐÐÑØ€HˆdÐÐÑØ€HˆdÐÐÑØ#Ð�uÐ#Ð#Ñ#Ø!�>Ñ#Ô#€LØ!�>Ñ#Ô#€LØ#�^Ñ%Ô%€NØ$�nÑ&Ô&€Oð1ð 1ð 1ð 1ð 1rE   rH   c                   ó>   — e Zd ZU dZdZeed<   dZeed<   dZ	eed<   dS )	ÚAimv2ConfigaÏ  
    max_logit_scale (`float`, *optional*, defaults to `100.0`):
        The maximum logit scale to use

    Example:

    ```python
    >>> from transformers import Aimv2Config, Aimv2Model

    >>> # Initializing a Aimv2Config with apple/aimv2-large-patch14-224-lit style configuration
    >>> configuration = Aimv2Config()

    >>> # Initializing a Aimv2Model (with random weights) from the apple/aimv2-large-patch14-224-lit style configuration
    >>> model = Aimv2Model(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config

    >>> # We can also initialize a Aimv2Config from a Aimv2TextConfig and a Aimv2VisionConfig
    >>> from transformers import Aimv2TextConfig, Aimv2VisionConfig

    >>> # Initializing a AIMv2Text and AIMv2Vision configuration
    >>> config_text = Aimv2TextConfig()
    >>> config_vision = Aimv2VisionConfig()

    >>> config = Aimv2Config(text_config=config_text, vision_config=config_vision)
    ```i   Úprojection_dimgƒ/L¦
F@Úlogit_scale_init_valueg      Y@Úmax_logit_scaleN)
r7   r8   r9   r:   rW   r;   r<   rX   r?   rY   rD   rE   rF   rV   rV   i   sO   € € € € € € ðð ð8 €N�CÐÐÑØ$*Ð˜EÐ*Ð*Ñ*Ø"€O�UÐ"Ð"Ñ"Ð"Ð"rE   rV   c                   ó   — e Zd ZdS )ÚAimv2OutputN©r7   r8   r9   rD   rE   rF   r[   r[   �   ó   € € € € € Ø€DrE   r[   c                   ó   — e Zd ZdS )ÚAimv2RMSNormNr\   rD   rE   rF   r_   r_   ‘   r]   rE   r_   c                   ó   — e Zd ZdS )ÚAimv2MLPNr\   rD   rE   rF   ra   ra   •   r]   rE   ra   c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚAimv2VisionEmbeddingsÚconfigc                 ó  •— 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Ústrider   Úposition_ids©é   éÿÿÿÿF)Ú
persistent)ÚsuperÚ__init__rd   r*   r   ÚConv2dÚnum_channelsr#   Úpatch_embedr_   r,   Úrms_normÚ
image_sizer6   Ú	EmbeddingÚposition_embeddingÚregister_bufferÚtorchÚarangeÚexpand)rP   rd   Únum_patchesÚ	__class__s      €rF   rn   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ÐirE   Úpixel_valuesÚreturnc                 ó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 )Nr   rj   )ÚheightÚwidthÚ	embed_dimÚdeviceÚdtyperk   .©Údimr   )Úsizerq   ÚflattenÚ	transposerr   rd   r6   r   r*   r#   r‚   rƒ   Úshaperw   ÚcatÚ	unsqueezeru   rh   )rP   r|   Ú_r   r€   Úhidden_statesÚ	pos_embedÚhalfs           rF   Úforwardz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ˆØÐrE   ©	r7   r8   r9   r"   rn   rw   ÚTensorr�   Ú__classcell__©r{   s   @rF   rc   rc   ™   sr   ø€ € € € € ðjÐ0ð jð jð jð jð jð jð E¤Lð °U´\ð ð ð ð ð ð ð ð rE   rc   c                   ó   — e Zd ZdS )ÚAimv2TextEmbeddingsNr\   rD   rE   rF   r–   r–   Á   r]   rE   r–   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAimv2Attentionc                 ó¢  •— t          ¦   «                              |¦  «         t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _	        d S )N©Úbias)
rm   rn   r   ÚLinearr�   r/   Úk_projÚv_projÚq_projÚout_proj©rP   rd   r{   s     €rF   rn   zAimv2Attention.__init__Æ   s—   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝœ	 $¤.°$´.ÀvÄÐWÑWÔWˆŒˆˆrE   )r7   r8   r9   rn   r“   r”   s   @rF   r˜   r˜   Å   sA   ø€ € € € € ðXð Xð Xð Xð Xð Xð Xð Xð XrE   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 ©N)rm   rn   r˜   Ú	attentionra   Úffnr_   r#   r,   Ú	rms_norm1Ú	rms_norm2r¡   s     €rF   rn   zAimv2EncoderLayer.__init__Ï   si   ø€ Ý‰Œ×ÒÑÔÐÝ'¨Ñ/Ô/ˆŒÝ˜FÑ#Ô#ˆŒÝ% fÔ&8¸&Ô:MÑNÔNˆŒÝ% fÔ&8¸&Ô:MÑNÔNˆŒˆˆrE   Nr�   Úattention_maskrQ   r}   c                 ó¾   — |                       |¦  «        } | j        d||dœ|¤Ž\  }}||z   }|                      |¦  «        }|                      |¦  «        }||z   }|S )N)r�   rª   rD   )r¨   r¦   r©   r§   )rP   r�   rª   rQ   Únorm_hidden_statesÚattn_outputrŒ   Ú
mlp_outputs           rF   r�   zAimv2EncoderLayer.forwardÖ   sy   € ð "Ÿ^š^¨MÑ:Ô:ÐØ'˜œÐrÐ6HÐYgÐrÐrÐkqÐrÐr‰ˆ�Qà%¨Ñ3ˆØ!Ÿ^š^¨MÑ:Ô:ÐØ—X’XÐ0Ñ1Ô1ˆ
à%¨
Ñ2ˆØÐrE   r¥   )r7   r8   r9   r"   rn   rw   r’   r   r   r�   r“   r”   s   @rF   r£   r£   Î   s¡   ø€ € € € € ðOÐ0ð Oð Oð Oð Oð Oð Oð /3ðð à”|ðð œ tÑ+ðð Ð+Ô,ð	ð
 
Œðð ð ð ð ð ð ð rE   r£   c                   ó   — e Zd ZdS )ÚAimv2EncoderNr\   rD   rE   rF   r°   r°   ç   r]   rE   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 )Nrš   rj   T)rm   rn   r#   r(   Ú	num_headsr   rœ   r/   r�   rž   Ú	Parameterrw   ÚzerosÚ	cls_tokenÚoutput_projr¡   s     €rF   rn   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ˆÔÐÐrE   r�   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 )Nrk   rj   r   r   r   r„   )r‰   r·   ry   r�   Úreshaper´   rž   ÚpermuteÚFÚscaled_dot_product_attentionrˆ   Úmeanr¸   )rP   r�   Ú
batch_sizeÚseq_lenÚ
hidden_dimr·   ÚkeyÚvalueÚqueryr­   Úoutputs              rF   r�   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Ð&Ñ-Ô-ˆà×!Ò! +Ñ.Ô.ˆØˆrE   r‘   r”   s   @rF   r²   r²   ë   sr   ø€ € € € € ð	TÐ0ð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð U¤\ð °e´lð ð ð ð ð ð ð ð rE   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²   rc   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-   )r¾   Ústdrk   ri   )rm   Ú_init_weightsÚhasattrÚ
isinstancerË   r   rµ   ÚinitÚ	constant_ÚmathÚlogr²   Únormal_r·   rd   r4   rc   Úcopy_rh   rw   rx   r‰   ry   r–   )rP   Úmoduler{   s     €rF   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rE   )r7   r8   r9   r:   rV   r<   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnrw   Úno_gradrÍ   r“   r”   s   @rF   rÇ   rÇ     s¤   ø€ € € € € € ðð ð
 ÐÐÑØÐØ!ÐØ&*Ð#ðð ð Ðð €NØÐØÐà€U„]�_„_ð
ið 
ið 
ið 
iñ „_ð
ið 
ið 
ið 
ið 
irE   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|   ©r�   Ú
attentionsc                 ó\  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |j        |j	        ¦  «        | _
        |j        | _        | j        rt          |¦  «        | _        |                      ¦   «          d S r¥   )rm   rn   rd   rc   Ú
embeddingsr°   Úencoderr_   r#   r,   rr   r5   r²   ÚheadÚ	post_initr¡   s     €rF   rn   zAimv2VisionModel.__init__=  s�   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ/°Ñ7Ô7ˆŒÝ# FÑ+Ô+ˆŒå$ VÔ%7¸Ô9LÑMÔMˆŒàœˆŒØŒ=ð 	:Ý1°&Ñ9Ô9ˆDŒIà�ŠÑÔÐÐÐrE   r}   c                 ó   — | j         j        S r¥   )rå   rq   ©rP   s    rF   Úget_input_embeddingsz%Aimv2VisionModel.get_input_embeddingsK  s   € ØŒÔ*Ð*rE   F©Útie_last_hidden_statesrQ   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
        ```Úinputs_embedsN©Úlast_hidden_stateÚpooler_outputrD   )rå   ræ   rñ   rr   r5   rç   r   )rP   r|   rQ   r�   Úencoder_outputsrñ   rò   s          rF   r�   zAimv2VisionModel.forwardN  s–   € ð< Ÿš¨Ñ5Ô5ˆà+7¨4¬<ð ,
ð ,
Ø'ð,
àð,
ð ,
ˆð
 ,Ô=ÐØ ŸMšMÐ*;Ñ<Ô<Ðà8<¼ÐO˜Ÿ	š	Ð"3Ñ4Ô4Ð4È4ˆå)Ø/Ø'ð
ñ 
ô 
ð 	
rE   )r7   r8   r9   r"   r<   Úmain_input_namer£   r˜   Ú_can_record_outputsrn   r   ÚModulerë   r   r   r   r   r   r   r�   r“   r”   s   @rF   rá   rá   0  sç   ø€ € € € € € ð ÐÐÑØ$€Oà*Ø$ðð Ðð
Ð0ð ð ð ð ð ð ð+ b¤ið +ð +ð +ð +ð  Ø€_¨EÐ2Ñ2Ô2Øð*
ð Ð+Ô,ð*
ð 
$ð	*
ð *
ð *
ñ „^ñ 3Ô2ñ  Ôð*
ð *
ð *
ð *
ð *
rE   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 )ÚAimv2TextModelÚ	input_idsrâ   rd   c                 ó&  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |j        |j	        ¦  «        | _
        |j        | _        |                      ¦   «          d S r¥   )rm   rn   rd   r–   rå   r°   ræ   r_   r#   r,   rr   Úeos_token_idrè   r¡   s     €rF   rn   zAimv2TextModel.__init__‹  sx   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ-¨fÑ5Ô5ˆŒÝ# FÑ+Ô+ˆŒÝ$ VÔ%7¸Ô9LÑMÔMˆŒà"Ô/ˆÔà�ŠÑÔÐÐÐrE   r}   c                 ó   — | j         j        S r¥   ©rå   Útoken_embeddingrê   s    rF   rë   z#Aimv2TextModel.get_input_embeddings–  s   € ØŒÔ.Ð.rE   c                 ó   — || j         _        d S r¥   rý   )rP   rÃ   s     rF   Úset_input_embeddingsz#Aimv2TextModel.set_input_embeddings™  s   € Ø*/ˆŒÔ'Ð'Ð'rE   Frì   Nrª   rQ   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 )
N)rƒ   r‚   r   rk   )rd   rï   rh   rª   Úpast_key_values)rï   rª   )r‚   r„   rð   rD   )rå   r‰   rw   rx   Úlongr‚   r‹   ry   r   rd   ræ   rñ   rr   Útor;   rû   Úargmaxr   )rP   rù   rª   rQ   r�   r¿   rÀ   rŒ   rh   ró   rñ   Úpooled_outputs               rF   r�   zAimv2TextModel.forwardœ  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ô
ˆõ
 *Ø/Ø'ð
ñ 
ô 
ð 	
rE   r¥   )r7   r8   r9   rô   r£   r˜   rõ   rH   rn   r   rö   rë   r   r   r   r   rw   r’   r   r   r   r�   r“   r”   s   @rF   rø   rø   ~  s  ø€ € € € € ð "€Oð +Ø$ðð Ðð
	˜ð 	ð 	ð 	ð 	ð 	ð 	ð/ b¤ið /ð /ð /ð /ð0ð 0ð 0ð  Ø€_¨EÐ2Ñ2Ô2Øð /3ð&
ð &
ð œ tÑ+ð&
ð Ð+Ô,ð	&
ð
 
$ð&
ð &
ð &
ñ „^ñ 3Ô2ñ  Ôð&
ð &
ð &
ð &
ð &
rE   rø   c                   óž   — e Zd ZdZde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dS )Ú
Aimv2ModelTrd   c                 ó‚  — t          j        | |¦  «         |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 )NFrš   )r   rn   rW   Úvision_configr#   Úvision_embed_dimÚtext_configÚtext_embed_dimrá   Ú_from_configÚvision_modelrø   Ú
text_modelr   rœ   Úvisual_projectionÚtext_projectionrµ   rw   Útensorrd   rX   rË   rÒ   rÓ   rY   Úmax_log_logit_scalerè   )rP   rd   s     rF   rn   zAimv2Model.__init__Ì  sù   € ÝÔ   vÑ.Ô.Ð.à$Ô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ˆÔ à�ŠÑÔÐÐÐrE   Nrù   r|   rª   rQ   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-   )Úlogits_per_imageÚlogits_per_textÚtext_embedsÚimage_embedsÚtext_model_outputÚvision_model_outputrD   )r  r  rò   r  r  r   rË   Úclampr  Úexpr  r‚   Útr[   )rP   rù   r|   rª   rQ   Úvision_outputsÚtext_outputsr  r  rË   r  r  s               rF   r�   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ˆØ*×,Ò,Ñ.Ô.ÐåØ-Ø+Ø#Ø%Ø*Ø .ð
ñ 
ô 
ð 	
rE   )NNN)r7   r8   r9   rÜ   rV   rn   r   r   rw   Ú
LongTensorÚFloatTensorr’   r   r   r[   r�   rD   rE   rF   r  r  È  s½   € € € € € àÐð˜{ð ð ð ð ð$ Øð .2Ø15Ø.2ð	?
ð ?
àÔ# dÑ*ð?
ð Ô'¨$Ñ.ð?
ð œ tÑ+ð	?
ð
 Ð+Ô,ð?
ð 
ð?
ð ?
ð ?
ñ Ôñ „^ð?
ð ?
ð ?
rE   r  )rV   r"   rH   rá   r  rÇ   rø   )Dr:   rÒ   rw   Útorch.nn.functionalr   Ú
functionalr¼   Úhuggingface_hub.dataclassesr   Ú r   rÐ   Úconfiguration_utilsr   Úmasking_utilsr   Úmodeling_layersr	   Úmodeling_outputsr
   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úclip.modeling_clipr   r   r   Úllama.modeling_llamar   r   Úsiglip.configuration_siglipr   r   r   Úsiglip.modeling_siglipr   r   r   Úvit_mae.modeling_vit_maer   r"   rH   rV   r[   r_   ra   rö   rc   r–   r˜   r£   r°   r²   rÇ   rá   rø   r  Ú__all__rD   rE   rF   ú<module>r6     sk  ðð ,Ð +à €€€à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø /Ð /Ð /Ð /Ð /Ð /Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ MÐ MÐ MÐ MÐ MÐ Mð €Ð>Ð?Ñ?Ô?Øð$&ð $&ð $&ð $&ð $&Ð*ñ $&ô $&ñ „ñ @Ô?ð$&ðN €Ð>Ð?Ñ?Ô?Øð1ð 1ð 1ð 1ð 1Ð&ñ 1ô 1ñ „ñ @Ô?ð1ð* €Ð>Ð?Ñ?Ô?Øð#ð #ð #ð #ð #�,ñ #ô #ñ „ñ @Ô?ð#ðD	ð 	ð 	ð 	ð 	�,ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�<ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	ˆxñ 	ô 	ð 	ð%ð %ð %ð %ð %˜BœIñ %ô %ð %ðP	ð 	ð 	ð 	ð 	Ð,ñ 	ô 	ð 	ðXð Xð Xð Xð X�_ñ Xô Xð Xðð ð ð ð Ð2ñ ô ð ð2	ð 	ð 	ð 	ð 	�=ñ 	ô 	ð 	ðð ð ð ð  ¤	ñ ô ð ð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 ðV
ð V
ð V
ð V
ð V
�ñ V
ô V
ñ „ðV
ðrð ð €€€rE   