Ë
    ÛÓ^jN  ã                   óX  — 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jp                  «      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jp                  «      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;¢ZCy)<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y)Ú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© ó    úr/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/aimv2/modular_aimv2.pyr"   r"   )   s±   … ñð* €K�ÓØ!Ð�sÓ!ØÐ�sÓØ Ð˜Ó Ø46€J��d˜3‘i‘ %¨¨S¨¡/Ñ1Ó6Ø€L�%ÓØ%(Ð�u˜s‘{Ó(Ø€HˆdÓØ€HˆdÓØ€J�ÓØ#Ð�uÓ#Ø€HˆdÓØ€IˆtÓá#Ó%�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y)ÚAimv2TextConfigi Á  Ú
vocab_sizei   r#   i   r$   é   r&   é   r(   éM   Úmax_position_embeddingsr1   r2   r+   r,   Fr/   r0   r3   r4   c                 ó.   — t        j                  di |¤Ž y )NrD   )r   Ú__post_init__)ÚselfÚkwargss     rF   rO   zAimv2TextConfig.__post_init__e   s   € Ü×&Ñ&Ñ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Ù$Ó&€Oó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<   y)	Ú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   s(   … ñð8 €N�CÓØ$*Ð˜EÓ*Ø"€O�UÔ"rE   rV   c                   ó   — e Zd Zy)ÚAimv2OutputN©r7   r8   r9   rD   rE   rF   r[   r[   �   ó   „ ØrE   r[   c                   ó   — e Zd Zy)ÚAimv2RMSNormNr\   rD   rE   rF   r_   r_   ‘   r]   rE   r_   c                   ó   — e Zd Zy)ÚAimv2MLPNr\   rD   rE   rF   ra   ra   •   r]   rE   ra   c                   ó\   ‡ — e Zd Zdefˆ fd„Zdej                  dej                  fd„Zˆ xZS )ÚAimv2VisionEmbeddingsÚconfigc                 óB  •— t         ‰| �  «        || _        |j                  | _        t	        j
                  |j                  |j                  |j                  |j                  ¬«      | _        t        |j                  |j                  «      | _        |j                  |j                  z  dz  }| j                  j                  s%t	        j                  ||j                  «      | _        | j!                  dt#        j$                  |«      j'                  d«      d¬«       y )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™9Ø×Ñ ×!3Ñ!3À×ARÑARÐ[a×[lÑ[lô
ˆÔô % V×%7Ñ%7¸×9LÑ9LÓMˆŒà×(Ñ(¨F×,=Ñ,=Ñ=À!ÑCˆØ�{‰{×$Ò$Ü&(§l¡l°;À×@RÑ@RÓ&SˆDÔ#Ø×Ñ˜^¬U¯\©\¸+Ó-F×-MÑ-MÈgÓ-VÐchÐÕirE   Úpixel_valuesÚreturnc                 óX  — |j                  «       \  }}}}| j                  |«      j                  d«      j                  dd«      }| j	                  |«      }| 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¬«      }|j                  d«      }n| j!                  | 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ˆf�eØ×(Ñ(¨Ó6×>Ñ>¸qÓA×KÑKÈAÈqÓQˆØŸ™ mÓ4ˆà�;‰;× Ò Ü>Ø §¡Ñ0Ø˜tŸ™Ñ.ØŸ+™+×1Ñ1Ø$×+Ñ+Ø#×)Ñ)ôˆIð —?‘? 2Ñ&¨!Ñ+ˆDÜŸ	™	 9¨S°$±%¨ZÑ#8¸)ÀCÈÈ$ÈÀJÑ:OÐ"PÐVXÔYˆIØ!×+Ñ+¨AÓ.‰Ià×/Ñ/°×0AÑ0AÓBˆIà%¨	Ñ1ˆØÐrE   ©	r7   r8   r9   r"   rn   rw   ÚTensorr�   Ú__classcell__©r{   s   @rF   rc   rc   ™   s-   ø„ ðjÐ0õ jð E§L¡Lð °U·\±\÷ rE   rc   c                   ó   — e Zd Zy)Ú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
                  ¬«      | _	        y )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‘i §¡°·±ÀVÇ_Á_ÔUˆŒÜ—i‘i §¡°·±ÀVÇ_Á_ÔUˆŒÜ—i‘i §¡°·±ÀVÇ_Á_ÔUˆŒÜŸ	™	 $§.¡.°$·.±.ÀvÇÁÔWˆ�rE   )r7   r8   r9   rn   r“   r”   s   @rF   r˜   r˜   Å   s   ø„ ÷Xð XrE   r˜   c            	       óˆ   ‡ — 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                  «      | _
        y ©N)rm   rn   r˜   Ú	attentionra   Úffnr_   r#   r,   Ú	rms_norm1Ú	rms_norm2r¡   s     €rF   rn   zAimv2EncoderLayer.__init__Ï   sZ   ø€ Ü‰ÑÔÜ'¨Ó/ˆŒÜ˜FÓ#ˆŒÜ% f×&8Ñ&8¸&×:MÑ:MÓNˆŒÜ% f×&8Ñ&8¸&×:MÑ:MÓNˆ�rE   Nr�   Úattention_maskrQ   r}   c                 ó°   — | j                  |«      } | j                  d||dœ|¤Ž\  }}||z   }| j                  |«      }| j                  |«      }||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Ö   sl   € ð "Ÿ^™^¨MÓ:ÐØ'˜Ÿ™ÐrÐ6HÐYgÑrÐkqÑr‰ˆ�Qà%¨Ñ3ˆØ!Ÿ^™^¨MÓ:ÐØ—X‘XÐ0Ó1ˆ
à%¨
Ñ2ˆØÐrE   r¥   )r7   r8   r9   r"   rn   rw   r’   r   r   r�   r“   r”   s   @rF   r£   r£   Î   sY   ø„ ðOÐ0õ Oð /3ñà—|‘|ðð Ÿ™ tÑ+ðð Ð+Ñ,ð	ð
 
�‰÷rE   r£   c                   ó   — e Zd Zy)ÚAimv2EncoderNr\   rD   rE   rF   r°   r°   ç   r]   rE   r°   c                   ó\   ‡ — 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¬«      | _        y )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Ñ3ˆŒä—i‘i × 0Ñ 0°$×2BÑ2BÈÏÉÔYˆŒÜ—i‘i × 0Ñ 0°$×2BÑ2BÈÏÉÔYˆŒäŸ™¤e§k¡k°!°Q¸×8HÑ8HÓ&IÓJˆŒÜŸ9™9 T×%5Ñ%5°t×7GÑ7GÈdÔSˆÕrE   r�   r}   c                 óÐ  — |j                   \  }}}| j                  j                  |dd«      }| j                  |«      j	                  ||| j
                  || j
                  z  «      }| j                  |«      j	                  ||| j
                  || j
                  z  «      }|j	                  |d| j
                  || j
                  z  «      }|j                  dddd«      }|j                  dddd«      }|j                  dddd«      }t        j                  |||«      }	|	j                  dd«      j	                  |d|«      }	|	j                  d¬«      }	| j                  |	«      }
|
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÷   sH  € Ø*7×*=Ñ*=Ñ'ˆ
�G˜Zà—N‘N×)Ñ)¨*°b¸"Ó=ˆ	à�k‰k˜-Ó(×0Ñ0°¸WÀdÇnÁnÐV`Ðdh×drÑdrÑVrÓsˆØ—‘˜MÓ*×2Ñ2°:¸wÈÏÉÐXbÐfj×ftÑftÑXtÓuˆØ×!Ñ! *¨a°·±ÀÈtÏ~É~ÑA]Ó^ˆà�k‰k˜!˜Q  1Ó%ˆØ—‘˜a  A qÓ)ˆØ—‘˜a  A qÓ)ˆä×4Ñ4°U¸CÀÓGˆà!×+Ñ+¨A¨qÓ1×9Ñ9¸*ÀaÈÓTˆØ!×&Ñ&¨1Ð&Ó-ˆà×!Ñ! +Ó.ˆØˆrE   r‘   r”   s   @rF   r²   r²   ë   s-   ø„ ð	TÐ0õ 	Tð U§\¡\ð °e·l±l÷ rE   r²   c                   óv   ‡ — 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«      rYt        |j                  t
        j                  «      r4t        j                  |j                  t        j                  d«      «       y y t        |t        «      r7t        j                  |j                  d| j                  j                  ¬«       y t        |t         «      rZt        j"                  |j$                  t'        j(                  |j$                  j*                  d   «      j-                  d«      «       y t        |t.        «      rZt        j"                  |j$                  t'        j(                  |j$                  j*                  d   «      j-                  d«      «       y y )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"  s  ø€ ä‰Ñ˜fÔ%Ü�6˜=Ô)Ü˜&×,Ñ,¬b¯l©lÔ;Ü—‘˜v×1Ñ1´4·8±8¸HÓ3EÕFð <ä˜Ô 9Ô:Ü�L‰L˜×)Ñ)°¸¿¹×9VÑ9VÖWÜ˜Ô 5Ô6Ü�J‰J�v×*Ñ*¬E¯L©L¸×9LÑ9L×9RÑ9RÐSUÑ9VÓ,W×,^Ñ,^Ð_fÓ,gÕhÜ˜Ô 3Ô4Ü�J‰J�v×*Ñ*¬E¯L©L¸×9LÑ9L×9RÑ9RÐSUÑ9VÓ,W×,^Ñ,^Ð_fÓ,gÕhð 5rE   )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Ç     sY   ø… ñð
 ÓØÐØ!ÐØ&*Ð#òÐð €NØÐØÐà€U‡]�]ƒ_ó
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                 ó6  •— t         ‰| �  |«       || _        t        |«      | _        t        |«      | _        t        |j                  |j                  «      | _
        |j                  | _        | j                  rt        |«      | _        | j                  «        y r¥   )rm   rn   rd   rc   Ú
embeddingsr°   Úencoderr_   r#   r,   rr   r5   r²   ÚheadÚ	post_initr¡   s     €rF   rn   zAimv2VisionModel.__init__=  sq   ø€ Ü‰Ñ˜Ô ØˆŒÜ/°Ó7ˆŒÜ# FÓ+ˆŒä$ V×%7Ñ%7¸×9LÑ9LÓMˆŒàŸ™ˆŒØ�=Š=Ü1°&Ó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                  |«      } | j                  dd|i|¤Ž}|j                  }| j                  |«      }| j                  r| j                  |«      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  sz   € ð< Ÿ™¨Ó5ˆà+7¨4¯<©<ñ ,
Ø'ð,
àñ,
ˆð
 ,×=Ñ=ÐØ ŸM™MÐ*;Ó<Ðà8<¿º˜Ÿ	™	Ð"3Ô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¡ió +ð  Ù¨EÔ2Øð*
ð Ð+Ñ,ð*
ð 
$ò	*
ó ó 3ó  ô*
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                  | _        | j                  «        y r¥   )rm   rn   rd   r–   rå   r°   ræ   r_   r#   r,   rr   Úeos_token_idrè   r¡   s     €rF   rn   zAimv2TextModel.__init__‹  sa   ø€ Ü‰Ñ˜Ô ØˆŒÜ-¨fÓ5ˆŒÜ# FÓ+ˆŒÜ$ V×%7Ñ%7¸×9LÑ9LÓMˆŒà"×/Ñ/ˆÔà�‰ÕrE   r}   c                 ó.   — | j                   j                  S r¥   ©rå   Útoken_embeddingrê   s    rF   rë   z#Aimv2TextModel.get_input_embeddings–  s   € Ø�‰×.Ñ.Ð.rE   c                 ó&   — || j                   _        y r¥   rý   )rP   rÃ   s     rF   Úset_input_embeddingsz#Aimv2TextModel.set_input_embeddings™  s   € Ø*/ˆ�‰Õ'rE   Frì   Nrª   rQ   c                 óª  — | j                  |«      }|j                  \  }}}t        j                  |t        j                  |j
                  ¬«      }|j                  d«      j                  |d«      }|�t        | j                  |||d ¬«      } | j                  d	||dœ|¤Ž}	|	j                  }
| j                  |
«      }
|
t        j                  |
j                  d   |
j
                  ¬«      |j                  t        j                  |
j
                  ¬«      | j                  k(  j                  «       j!                  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œ  sK  € ð Ÿ™¨	Ó2ˆØ!.×!4Ñ!4Ñˆ
�G˜Qä—|‘| G´5·:±:Àm×FZÑFZÔ[ˆØ#×-Ñ-¨aÓ0×7Ñ7¸
ÀBÓGˆØÐ%Ü/Ø—{‘{Ø+Ø)Ø-Ø $ôˆNð '˜$Ÿ,™,ð 
Ø'Ø)ñ
ð ñ
ˆð ,×=Ñ=ÐØ ŸM™MÐ*;Ó<Ðð *Ü�L‰LÐ*×0Ñ0°Ñ3Ð<M×<TÑ<TÔUØ�\‰\¤§	¡	Ð2C×2JÑ2Jˆ\ÓKÈt×O`ÑO`Ñ`×eÑeÓg×nÑnÐsuÐnÓ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¡ió /ò0ð  Ù¨EÔ2Øð /3ñ&
ð Ÿ™ tÑ+ð&
ð Ð+Ñ,ð	&
ð
 
$ò&
ó ó 3ó  ô&
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y)Ú
Aimv2ModelTrd   c                 óü  — t        j                  | |«       |j                  | _        |j                  j                  | _        |j                  j                  | _        t        j                  |j                  «      | _
        t        j                  |j                  «      | _        t        j                  | j
                  | j                  d¬«      | _        t        j                  | j                  | j                  d¬«      | _        t        j"                  t%        j&                  | j(                  j*                  «      «      | _        t/        j0                  |j2                  «      | _        | j7                  «        y )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Ñ3ˆÔØ &× 4Ñ 4× @Ñ @ˆÔØ$×0Ñ0×<Ñ<ˆÔä,×9Ñ9¸&×:NÑ:NÓOˆÔÜ(×5Ñ5°f×6HÑ6HÓIˆŒä!#§¡¨4×+@Ñ+@À$×BUÑBUÐ\aÔ!bˆÔÜ!Ÿy™y¨×)<Ñ)<¸d×>QÑ>QÐX]Ô^ˆÔäŸ<™<¬¯©°T·[±[×5WÑ5WÓ(XÓYˆÔÜ#'§8¡8¨F×,BÑ,BÓ#CˆÔ à�‰ÕrE   Nrù   r|   rª   rQ   r}   c                 ó  —  | j                   dd|i|¤Ž} | j                  d||dœ|¤Ž}|j                  }| j                  |«      }|j                  }| j	                  |«      }|t        |«      z  }|t        |«      z  }| j                  j                  d| j                  «      j                  «       j                  |j                  «      }	|	|z  |j                  «       z  }
|
j                  «       }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Þ  s'  € ðB 6G°T×5FÑ5Fñ 6
Ø%ð6
àñ6
ˆð
 4C°4·?±?ð 4
ØØ)ñ4
ð ñ4
ˆð &×3Ñ3ˆØ×-Ñ-¨lÓ;ˆà"×0Ñ0ˆØ×*Ñ*¨;Ó7ˆð $Ô&6°|Ó&DÑDˆØ!Ô$4°[Ó$AÑAˆà×&Ñ&×,Ñ,¨S°$×2JÑ2JÓK×OÑOÓQ×TÑTÐU`×UgÑUgÓhˆØ&¨Ñ4¸¿¹Ó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     sê  ðñ ,ã ã ß Ð Ý .Ý å &Ý 3Ý /Ý 9ß KÝ -Ý &ß IÑ IÝ 7Ý 5ß PÑ Pß 9ß \Ñ \ß QÑ QÝ Mñ Ð>Ô?Øô$&Ð*ó $&ó ó @ð$&ñN Ð>Ô?Øô1Ð&ó 1ó ó @ð1ñ* Ð>Ô?Øô#�,ó #ó ó @ð#ôD	�,ô 	ô	�<ô 	ô	ˆxô 	ô%˜BŸI™Iô %ôP	Ð,ô 	ôX�_ô XôÐ2ô ô2	�=ô 	ô §	¡	ô ðD ôi˜?ó ió ðiñD ðôô
F
Ð+ó F
óð
F
ñR ðôô
B
Ð)ó B
óð
B
ðJ ôV
�ó V
ó ðV
òr�rE   