Ë
    ÛÓ^jDN  ã                   óŽ  — d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 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mZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3  ed¬«      e G d„ de!«      «       «       Z4 ed¬«      e G d„ de"«      «       «       Z5 ed¬«      e G d„ de «      «       «       Z6 G d„ de(«      Z7 G d„ de/«      Z8 G d„ de«      Z9 G d „ d!e3«      Z: G d"„ d#e«      Z; G d$„ d%e0«      Z< G d&„ d'e1«      Z= G d(„ d)e«      Z> G d*„ d+e&«      Z? G d,„ d-e2«      Z@ G d.„ d/e%«      ZA G d0„ d1e$«      ZB G d2„ d3e'«      ZC G d4„ d5e&«      ZD G d6„ d7e*«      ZE G d8„ d9e)«      ZF G d:„ d;e+«      ZG ed<¬=«       G d>„ d?eF«      «       ZH G d@„ dAeF«      ZI G dB„ dCeeF«      ZJg dD¢ZKy)EzPyTorch AltCLIP model.é    N)Ústricté   )Úinitialization)Úcreate_bidirectional_mask)ÚBaseModelOutputWithPoolingÚ'BaseModelOutputWithPoolingAndProjection)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚChineseCLIPModelÚChineseCLIPTextAttentionÚChineseCLIPTextLayerÚChineseCLIPTextSelfAttention)Ú
CLIPConfigÚCLIPTextConfigÚCLIPVisionConfig)
ÚCLIPMLPÚCLIPAttentionÚCLIPEncoderÚCLIPEncoderLayerÚ
CLIPOutputÚCLIPPreTrainedModelÚCLIPVisionEmbeddingsÚCLIPVisionModelÚ_get_vector_normÚimage_text_contrastive_loss)ÚRobertaEmbeddingsÚRobertaIntermediateÚRobertaOutputÚRobertaPoolerÚRobertaSelfOutputzBAAI/AltCLIP)Ú
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d<   dZeed<   dZeez  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dz  ed<   dZedz  ed<   dZedz  ed<   dZeed<    e«       Z e«       Zy)ÚAltCLIPTextConfigaR  
    project_dim (`int`, *optional*, defaults to 768):
        The dimensions of the teacher model before the mapping layer.

    Examples:

    ```python
    >>> from transformers import AltCLIPTextModel, AltCLIPTextConfig

    >>> # Initializing a AltCLIPTextConfig with BAAI/AltCLIP style configuration
    >>> configuration = AltCLIPTextConfig()

    >>> # Initializing a AltCLIPTextModel (with random weights) from the BAAI/AltCLIP style configuration
    >>> model = AltCLIPTextModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```i’Ð Ú
vocab_sizei   Úhidden_sizeé   Únum_hidden_layersé   Únum_attention_headsi   Úintermediate_sizeÚgeluÚ
hidden_actgš™™™™™¹?Úhidden_dropout_probr   Úattention_probs_dropout_probi  Úmax_position_embeddingsé   Útype_vocab_sizeg{®Gáz”?Úinitializer_factorNÚpad_token_idÚbos_token_idr   Úeos_token_idé   Úproject_dim)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   ÚintÚ__annotations__r+   r-   r/   r0   r2   Ústrr3   Úfloatr4   r5   r7   r8   r9   r:   r;   r=   ÚAttributeErrorÚprojection_dimÚattention_dropout© ó    úv/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/altclip/modular_altclip.pyr)   r)   :   sË   … ñð& €J�ÓØ€K�ÓØÐ�sÓØ!Ð˜Ó!Ø!Ð�sÓ!Ø€J�ÓØ'*Ð˜˜u™Ó*Ø01Ð  #¨¡+Ó1Ø#&Ð˜SÓ&Ø€O�SÓØ $Ð˜Ó$Ø €L�#˜‘*Ó Ø €L�#˜‘*Ó Ø €L�#˜‘*Ó Ø€K�ÓÙ#Ó%€NÙ&Ó(ÑrJ   r)   c                   ó   — e Zd ZdZy)ÚAltCLIPVisionConfigaà  
    Example:

    ```python
    >>> from transformers import AltCLIPVisionConfig, AltCLIPVisionModel

    >>> # Initializing a AltCLIPVisionConfig with BAAI/AltCLIP style configuration
    >>> configuration = AltCLIPVisionConfig()

    >>> # Initializing a AltCLIPVisionModel (with random weights) from the BAAI/AltCLIP style configuration
    >>> model = AltCLIPVisionModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```N)r>   r?   r@   rA   rI   rJ   rK   rM   rM   c   s   „ òrJ   rM   c                   ó    — e Zd ZU dZdZeed<   y)ÚAltCLIPConfiga  
    Example:

    ```python
    >>> from transformers import AltCLIPConfig, AltCLIPModel

    >>> # Initializing a AltCLIPConfig with BAAI/AltCLIP style configuration
    >>> configuration = AltCLIPConfig()

    >>> # Initializing a AltCLIPModel (with random weights) from the BAAI/AltCLIP style configuration
    >>> model = AltCLIPModel(configuration)

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

    >>> # We can also initialize a AltCLIPConfig from a AltCLIPTextConfig and a AltCLIPVisionConfig

    >>> # Initializing a AltCLIPText and AltCLIPVision configuration
    >>> config_text = AltCLIPTextConfig()
    >>> config_vision = AltCLIPVisionConfig()

    >>> config = AltCLIPConfig(text_config=config_text, vision_config=config_vision)
    ```r<   rG   N)r>   r?   r@   rA   rG   rB   rC   rI   rJ   rK   rO   rO   w   s   … ñð0 €N�CÔrJ   rO   c                   ó   — e Zd Zy)ÚAltCLIPOutputN©r>   r?   r@   rI   rJ   rK   rQ   rQ   •   ó   „ ØrJ   rQ   c                   ó   — e Zd Zy)ÚAltRobertaEmbeddingsNrR   rI   rJ   rK   rU   rU   ™   rS   rJ   rU   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltRobertaSelfAttentionc                 ó2   •— t         ‰| �  |«       d| _        y )NF)ÚsuperÚ__init__Ú	is_causal©ÚselfÚconfigÚ	__class__s     €rK   rZ   z AltRobertaSelfAttention.__init__ž   s   ø€ Ü‰Ñ˜Ô Øˆ�rJ   ©r>   r?   r@   rZ   Ú__classcell__©r_   s   @rK   rW   rW   �   s   ø„ ÷ð rJ   rW   c                   ó   — e Zd Zy)ÚAltRobertaSelfOutputNrR   rI   rJ   rK   rd   rd   £   rS   rJ   rd   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltRobertaAttentionc                 ób   •— t         ‰| �  «        t        |«      | _        t	        |«      | _        y ©N)rY   rZ   rW   r]   rd   Úoutputr\   s     €rK   rZ   zAltRobertaAttention.__init__¨   s&   ø€ Ü‰ÑÔÜ+¨FÓ3ˆŒ	Ü*¨6Ó2ˆ�rJ   r`   rb   s   @rK   rf   rf   §   s   ø„ ÷3ð 3rJ   rf   c                   ó   — e Zd Zy)ÚAltRobertaIntermediateNrR   rI   rJ   rK   rk   rk   ®   rS   rJ   rk   c                   ó   — e Zd Zy)ÚAltRobertaOutputNrR   rI   rJ   rK   rm   rm   ²   rS   rJ   rm   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltRobertaLayerc                 ó‚   •— t         ‰| �  «        t        |«      | _        t	        |«      | _        t        |«      | _        y rh   )rY   rZ   rf   Ú	attentionrk   Úintermediaterm   ri   r\   s     €rK   rZ   zAltRobertaLayer.__init__·   s3   ø€ Ü‰ÑÔÜ,¨VÓ4ˆŒÜ2°6Ó:ˆÔÜ& vÓ.ˆ�rJ   r`   rb   s   @rK   ro   ro   ¶   s   ø„ ÷/ð /rJ   ro   c                   ó(   ‡ — e Zd ZdZdefˆ fd„Zˆ xZS )ÚAltRobertaEncoderzº
    Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
    [`AltRobertaEncoderLayer`].

    Args:
        config: AltCLIPTextConfig
    r^   c                 ó¶   •— t         ‰| �  |«       t        j                  t	        |j
                  «      D �cg c]  }t        |«      ‘Œ c}«      | _        y c c}w rh   )rY   rZ   ÚnnÚ
ModuleListÚranger-   ro   Úlayers)r]   r^   Ú_r_   s      €rK   rZ   zAltRobertaEncoder.__init__Ç   s>   ø€ Ü‰Ñ˜Ô Ü—m‘mÄeÈF×LdÑLdÓFeÖ$fÀ¤_°VÕ%<Ò$fÓgˆ�ùÒ$fs   ·A)r>   r?   r@   rA   r)   rZ   ra   rb   s   @rK   rt   rt   ¾   s   ø„ ñðhÐ0÷ hñ hrJ   rt   c                   ó   — e Zd Zy)ÚAltRobertaPoolerNrR   rI   rJ   rK   r|   r|   Ì   rS   rJ   r|   c                   ó   — e Zd Zy)ÚAltCLIPAttentionNrR   rI   rJ   rK   r~   r~   Ð   rS   rJ   r~   c                   ó   — e Zd Zy)Ú
AltCLIPMLPNrR   rI   rJ   rK   r€   r€   Ô   rS   rJ   r€   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚAltCLIPEncoderLayerr^   c                 ó$   •— t         ‰| �  |«       y rh   )rY   rZ   r\   s     €rK   rZ   zAltCLIPEncoderLayer.__init__Ù   s   ø€ Ü‰Ñ˜Õ rJ   )r>   r?   r@   rM   rZ   ra   rb   s   @rK   r‚   r‚   Ø   s   ø„ ð!Ð2÷ !ñ !rJ   r‚   c                   ó   — e Zd Zy)ÚAltCLIPEncoderNrR   rI   rJ   rK   r…   r…   Ý   rS   rJ   r…   c                   ó   — e Zd Zy)ÚAltCLIPVisionEmbeddingsNrR   rI   rJ   rK   r‡   r‡   á   rS   rJ   r‡   c                   óL   — e Zd Zg d¢ZeedœZ ej                  «       d„ «       Z	y)ÚAltCLIPPreTrainedModel)rU   ro   r‚   r‡   ©Úhidden_statesÚ
attentionsc                 ó  — t        j                  | |«       | j                  j                  }t	        |t
        «      �rt        j                  |j                  d|j                  dz  |z  ¬«       t        j                  |j                  j                  |j                  j                  |z  ¬«       t        j                  |j                  j                  |j                  j                  |z  ¬«       t        j                  |j                  t!        j"                  |j$                  «      j'                  d«      «       yt	        |t(        «      rî|j                  dz  d|j                  j*                  z  dz  z  |z  }|j                  dz  |z  }t        j                  |j,                  j                  |¬«       t        j                  |j.                  j                  |¬«       t        j                  |j0                  j                  |¬«       t        j                  |j2                  j                  |¬«       yt	        |t4        «      r¯|j                  j6                  dz  d|j                  j*                  z  dz  z  |z  }d|j                  j6                  z  dz  |z  }t        j                  |j8                  j                  |¬«       t        j                  |j:                  j                  |¬«       yt	        |t<        «      rwt        j                  |j>                  j                  |j@                  dz  |z  ¬«       t        j                  |jB                  j                  |jD                  dz  |z  ¬«       yt	        |tF        «      ryt        j                  |j                  t!        j"                  |j                  jH                  d   «      j'                  d«      «       t        jJ                  |jL                  «       yy)	zInitialize the weightsg        g      à¿)ÚmeanÚstd)r�   )r6   éÿÿÿÿr   r�   N)'r	   Ú_init_weightsr^   r8   Ú
isinstancer‡   ÚinitÚnormal_Úclass_embeddingÚ	embed_dimÚpatch_embeddingÚweightÚinitializer_rangeÚposition_embeddingÚcopy_Úposition_idsÚtorchÚarangeÚnum_positionsÚexpandr~   r-   Úq_projÚk_projÚv_projÚout_projr€   r+   Úfc1Úfc2ÚAltCLIPModelÚtext_projectionÚtext_embed_dimÚvisual_projectionÚvision_embed_dimrU   ÚshapeÚzeros_Útoken_type_ids)r]   ÚmoduleÚfactorÚin_proj_stdÚout_proj_stdÚfc_stds         rK   r‘   z$AltCLIPPreTrainedModel._init_weightsì   sÜ  € ô 	×%Ñ% d¨FÔ3Ø—‘×/Ñ/ˆÜ�fÔ5Õ6Ü�L‰L˜×/Ñ/°c¸v×?OÑ?OÐQUÑ?UÐX^Ñ?^Õ_Ü�L‰L˜×/Ñ/×6Ñ6¸F¿M¹M×<[Ñ<[Ð^dÑ<dÕeÜ�L‰L˜×2Ñ2×9Ñ9¸v¿}¹}×?^Ñ?^ÐagÑ?gÕhÜ�J‰J�v×*Ñ*¬E¯L©L¸×9MÑ9MÓ,N×,UÑ,UÐV]Ó,^Õ_Ü˜Ô 0Ô1Ø!×+Ñ+¨TÑ1°q¸6¿=¹=×;ZÑ;ZÑ7ZÐ_cÑ6cÑdÐgmÑmˆKØ"×,Ñ,¨dÑ2°fÑ<ˆLÜ�L‰L˜Ÿ™×-Ñ-°;Õ?Ü�L‰L˜Ÿ™×-Ñ-°;Õ?Ü�L‰L˜Ÿ™×-Ñ-°;Õ?Ü�L‰L˜Ÿ™×/Ñ/°\ÖBÜ˜¤
Ô+Ø!Ÿ=™=×4Ñ4°dÑ:ÀÀFÇMÁM×DcÑDcÑ@cÐhlÑ?lÑmÐpvÑvˆKØ˜&Ÿ-™-×3Ñ3Ñ3¸Ñ<¸vÑEˆFÜ�L‰L˜Ÿ™×*Ñ*°Õ7Ü�L‰L˜Ÿ™×*Ñ*°Ö<Ü˜¤Ô-Ü�L‰LØ×&Ñ&×-Ñ-Ø×)Ñ)¨4Ñ/°&Ñ8õô �L‰LØ×(Ñ(×/Ñ/Ø×+Ñ+¨TÑ1°FÑ:öô ˜Ô 4Ô5Ü�J‰J�v×*Ñ*¬E¯L©L¸×9LÑ9L×9RÑ9RÐSUÑ9VÓ,W×,^Ñ,^Ð_fÓ,gÔhÜ�K‰K˜×-Ñ-Õ.ð 6rJ   N)
r>   r?   r@   Ú_no_split_modulesr‚   r~   Ú_can_record_outputsr�   Úno_gradr‘   rI   rJ   rK   r‰   r‰   å   s2   „ ÚuÐà,Ø&ñÐð
 €U‡]�]ƒ_ñ /ó ñ /rJ   r‰   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltCLIPVisionModelc                 ó"   •— t        ‰| �  di |¤ŽS )a  
        Examples:

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

        >>> model = AltCLIPVisionModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

        >>> 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 CLS states
        ```rI   )rY   Úforward©r]   Úsuper_kwargsr_   s     €rK   rº   zAltCLIPVisionModel.forward  s   ø€ ô. ‰w‰Ñ. Ñ.Ð.rJ   )r>   r?   r@   rº   ra   rb   s   @rK   r¸   r¸     s   ø„ ÷/ð /rJ   r¸   aE  
    The model behaves as an encoder following the architecture described in *Attention is
    all you need*_ by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz
    Kaiser and Illia Polosukhin.

    .. _*Attention is all you need*: https://huggingface.co/papers/1706.03762
    )Úcustom_introc                   ó  ‡ — e Zd ZU eed<   dZdZeedœZ	dˆ fd„	Z
eee	 	 	 	 	 ddej                  dz  dej                  dz  d	ej                  dz  d
ej                  dz  dej                  dz  dee   deez  fd„«       «       «       Zˆ xZS )ÚAltRobertaModelr^   ©ÚtextÚword_embeddingsrŠ   c                 ó¬   •— t         ‰| �  |«       t        |«      | _        t	        |«      | _        |rt        |«      nd| _        | j                  «        y)zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        N)	rY   rZ   rU   Ú
embeddingsrt   Úencoderr|   ÚpoolerÚ	post_init)r]   r^   Úadd_pooling_layerr_   s      €rK   rZ   zAltRobertaModel.__init__>  sE   ø€ ô
 	‰Ñ˜Ô Ü.¨vÓ6ˆŒÜ(¨Ó0ˆŒÙ2CÔ& vÔ.ÈˆŒà�‰ÕrJ   NÚ	input_idsÚattention_maskr®   rœ   Úinputs_embedsÚkwargsÚreturnc                 ó  — |du |duz  rt        d«      ‚| j                  ||||¬«      }t        | j                  ||¬«      } | j                  |fd|i|¤Ž}|d   }| j
                  �| j                  |«      nd}	t        ||	¬«      S )aK  
        Examples:

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

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

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

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        >>> pooled_output = outputs.pooler_output  # pooled (EOS token) states
        ```Nz:You must specify exactly one of input_ids or inputs_embeds)rÉ   rœ   r®   rË   )r^   rË   rÊ   rÊ   r   )Úlast_hidden_stateÚpooler_output)Ú
ValueErrorrÄ   r   r^   rÅ   rÆ   r   )
r]   rÉ   rÊ   r®   rœ   rË   rÌ   Úencoder_outputsÚsequence_outputÚpooled_outputs
             rK   rº   zAltRobertaModel.forwardJ  sº   € ð6 ˜Ð -°tÐ";Ò<ÜÐYÓZÐZàŸ™ØØ%Ø)Ø'ð	 (ó 
ˆô 3Ø—;‘;Ø'Ø)ô
ˆð '˜$Ÿ,™,Øñ
à)ð
ð ñ
ˆð
 *¨!Ñ,ˆØ8<¿¹Ð8O˜Ÿ™ OÔ4ÐUYˆä)Ø-Ø'ô
ð 	
rJ   )T©NNNNN)r>   r?   r@   r)   rC   Úinput_modalitiesÚ_input_embed_layerro   rW   rµ   rZ   r   r   r   r�   ÚTensorr
   r   Útupler   rº   ra   rb   s   @rK   r¿   r¿   +  sÜ   ø… ð ÓØ Ðà*Ðà(Ø-ñÐõ

ð  ØØð *.Ø.2Ø.2Ø,0Ø-1ñ3
à—<‘< $Ñ&ð3
ð Ÿ™ tÑ+ð3
ð Ÿ™ tÑ+ð	3
ð
 —l‘l TÑ)ð3
ð —|‘| dÑ*ð3
ð Ð+Ñ,ð3
ð 
Ð+Ñ	+ò3
ó ó ó  ô3
rJ   r¿   c                   ó  ‡ — e Zd ZU eed<   dZdZdZˆ fd„Ze	e
	 	 	 	 	 ddej                  dz  dej                  dz  d	ej                  dz  d
ej                  dz  dej                  dz  dee   deez  fd„«       «       Zˆ xZS )ÚAltCLIPTextModelr^   rÀ   rÂ   Úrobertac                 ó&  •— t         ‰| �  |«       t        |d¬«      | _        t	        j
                  |j                  |j                  «      | _        t	        j                  |j                  |j                  ¬«      | _        | j                  «        y )NF)rÈ   )Úeps)rY   rZ   r¿   rÜ   rv   ÚLinearr+   r=   ÚtransformationÚ	LayerNormÚlayer_norm_epsÚpre_LNrÇ   r\   s     €rK   rZ   zAltCLIPTextModel.__init__‰  se   ø€ Ü‰Ñ˜Ô Ü& vÀÔGˆŒÜ Ÿi™i¨×(:Ñ(:¸F×<NÑ<NÓOˆÔÜ—l‘l 6×#5Ñ#5¸6×;PÑ;PÔQˆŒØ�‰ÕrJ   NrÉ   rÊ   r®   rœ   rË   rÌ   rÍ   c           	      óØ   —  | j                   d|||||dœ|¤Ž}|d   }| j                  |«      }| j                  |«      }	|	dd…df   }
t        |	|
|j                  |j
                  ¬«      S )a+  
        Examples:

        ```python
        >>> from transformers import AutoProcessor, AltCLIPTextModel

        >>> model = AltCLIPTextModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

        >>> texts = ["it's a cat", "it's a dog"]

        >>> inputs = processor(text=texts, padding=True, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        >>> pooled_output = outputs.pooler_output  # pooled CLS states
        ```)rÉ   rÊ   r®   rœ   rË   r   N)rÏ   rÐ   r‹   rŒ   rI   )rÜ   rã   rà   r   r‹   rŒ   )r]   rÉ   rÊ   r®   rœ   rË   rÌ   ÚoutputsrÓ   Úprojection_staterÐ   s              rK   rº   zAltCLIPTextModel.forward�  s“   € ð: �$—,‘,ð 
ØØ)Ø)Ø%Ø'ñ
ð ñ
ˆð " !™*ˆð Ÿ+™+ oÓ6ˆð  ×.Ñ.¨Ó?ÐØ(ª¨A¨Ñ.ˆä6Ø.Ø'Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
rJ   rÕ   )r>   r?   r@   r)   rC   rÖ   r×   Úbase_model_prefixrZ   r   r   r�   rØ   r
   r   rÙ   r   rº   ra   rb   s   @rK   rÛ   rÛ   ƒ  sÊ   ø… ØÓØ ÐØ*ÐØ!Ðôð Øð *.Ø.2Ø.2Ø,0Ø-1ñ3
à—<‘< $Ñ&ð3
ð Ÿ™ tÑ+ð3
ð Ÿ™ tÑ+ð	3
ð
 —l‘l TÑ)ð3
ð —|‘| dÑ*ð3
ð Ð+Ñ,ð3
ð 
Ð8Ñ	8ò3
ó ó ô3
rJ   rÛ   c                   ó  ‡ — e Zd ZU eed<   defˆ fd„Zˆ fd„Zˆ fd„Z	 	 	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  d	ej                  dz  d
ej                  dz  dedz  dedee   deez  fd„Zˆ xZS )r§   r^   c                 ó  •— t         ‰| �  |«       |j                  }|j                  | _        t
        j                  | j                  j                  «      | _        t        j                  | j                  j                  «      | _        y rh   )rY   rZ   Útext_configr=   r©   rÛ   Ú_from_configr^   Ú
text_modelr¸   Úvision_configÚvision_model)r]   r^   rê   r_   s      €rK   rZ   zAltCLIPModel.__init__Ë  sb   ø€ Ü‰Ñ˜Ô Ø×(Ñ(ˆØ)×5Ñ5ˆÔÜ*×7Ñ7¸¿¹×8OÑ8OÓPˆŒÜ.×;Ñ;¸D¿K¹K×<UÑ<UÓVˆÕrJ   c                 ó"   •— t        ‰| �  di |¤ŽS )að  
        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoProcessor, AltCLIPModel

        >>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

        >>> inputs = processor(text=["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)
        ```rI   )rY   Úget_text_featuresr»   s     €rK   rð   zAltCLIPModel.get_text_featuresÒ  s   ø€ ô ‰wÑ(Ñ8¨<Ñ8Ð8rJ   c                 ó"   •— t        ‰| �  di |¤ŽS )ao  
        Examples:

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

        >>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

        >>> 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)
        ```rI   )rY   Úget_image_featuresr»   s     €rK   rò   zAltCLIPModel.get_image_featuresã  s   ø€ ô& ‰wÑ)Ñ9¨LÑ9Ð9rJ   NrÉ   Úpixel_valuesrÊ   r®   rœ   Úreturn_lossÚinterpolate_pos_encodingrÌ   rÍ   c           	      ó2  —  | j                   d||dœ|¤Ž}	 | j                  d||||dœ|¤Ž}
|	d   }| j                  |«      }|
d   }| j                  |«      }|t	        |«      z  }|t	        |«      z  }t        j                  ||j                  «       j                  |j                  «      «      }|| j                  j                  «       j                  |j                  «      z  }|j                  «       }d}|rt        |«      }t        ||||||
|	¬«      S )u  
        return_loss (`bool`, *optional*):
            Whether or not to return the contrastive loss.

        Examples:

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

        >>> model = AltCLIPModel.from_pretrained("OFA-Sys/chinese-clip-vit-base-patch16")
        >>> processor = AutoProcessor.from_pretrained("OFA-Sys/chinese-clip-vit-base-patch16")

        >>> url = "https://clip-cn-beijing.oss-cn-beijing.aliyuncs.com/pokemon.jpeg"
        >>> image = load_image(url)

        >>> inputs = processor(text=["æ�°å°¼é¾Ÿ", "å¦™è›™ç§�å­�", "å°�ç�«é¾™", "çš®å�¡ä¸˜"], images=image, return_tensors="pt", padding=True)

        >>> with torch.inference_mode():
        ...     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œ   r6   N)ÚlossÚlogits_per_imageÚlogits_per_textÚtext_embedsÚimage_embedsÚtext_model_outputÚvision_model_outputrI   )rî   rì   rª   r¨   r    r�   ÚmatmulÚtÚtoÚdeviceÚlogit_scaleÚexpr!   rQ   )r]   rÉ   ró   rÊ   r®   rœ   rô   rõ   rÌ   Úvision_outputsÚtext_outputsrû   rú   rù   rø   r÷   s                   rK   rº   zAltCLIPModel.forwardø  sG  € ðF +˜×*Ñ*ð 
Ø%Ø%=ñ
ð ñ
ˆð '�t—‘ð 
ØØ)Ø)Ø%ñ	
ð
 ñ
ˆð & aÑ(ˆØ×-Ñ-¨lÓ;ˆà" 1‘oˆØ×*Ñ*¨;Ó7ˆð $Ô&6°|Ó&DÑDˆØ!Ô$4°[Ó$AÑAˆô  Ÿ,™, {°L·N±NÓ4D×4GÑ4GÈ×HZÑHZÓ4[Ó\ˆØ)¨D×,<Ñ,<×,@Ñ,@Ó,B×,EÑ,EÀk×FXÑFXÓ,YÑYˆØ*×,Ñ,Ó.ÐàˆÙÜ.¨Ó?ˆDäØØ-Ø+Ø#Ø%Ø*Ø .ô
ð 	
rJ   )NNNNNNF)r>   r?   r@   rO   rC   rZ   rð   rò   r�   Ú
LongTensorÚFloatTensorrØ   Úboolr
   r   rÙ   rQ   rº   ra   rb   s   @rK   r§   r§   È  sá   ø… ØÓðW˜}õ Wô9ô":ð. .2Ø15Ø.2Ø.2Ø04Ø#'Ø).ñL
à×#Ñ# dÑ*ðL
ð ×'Ñ'¨$Ñ.ðL
ð Ÿ™ tÑ+ð	L
ð
 Ÿ™ tÑ+ðL
ð ×&Ñ&¨Ñ-ðL
ð ˜D‘[ðL
ð #'ðL
ð Ð+Ñ,ðL
ð 
�Ñ	÷L
rJ   r§   )r‰   r¸   rÛ   r§   r)   rM   rO   )LrA   r�   Útorch.nnrv   Úhuggingface_hub.dataclassesr   Ú r   r“   Úmasking_utilsr   Úmodeling_outputsr   r   Úmodeling_utilsr	   Úprocessing_utilsr
   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Ú"chinese_clip.modeling_chinese_clipr   r   r   r   Úclip.configuration_clipr   r   r   Úclip.modeling_clipr   r   r   r   r   r   r   r   r    r!   Úroberta.modeling_robertar"   r#   r$   r%   r&   r)   rM   rO   rQ   rU   rW   rd   rf   rk   rm   ro   rt   r|   r~   r€   r‚   r…   r‡   r‰   r¸   r¿   rÛ   r§   Ú__all__rI   rJ   rK   ú<module>r     s  ðñ ã Ý Ý .å &Ý 6÷õ .Ý &ß IÑ IÝ 7Ý 5÷ó ÷ SÑ R÷÷ ÷ ÷õ ñ ˜>Ô*Øô$)˜ó $)ó ó +ð$)ñN ˜>Ô*ØôÐ*ó ó ó +ðñ$ ˜>Ô*Øô�Jó ó ó +ðô8	�Jô 	ô	Ð,ô 	ôÐ:ô ô	Ð,ô 	ô3Ð2ô 3ô	Ð0ô 	ô	�}ô 	ô/Ð*ô /ôh˜ô hô	�}ô 	ô	�}ô 	ô	�ô 	ô!Ð*ô !ô
	�[ô 	ô	Ð2ô 	ô(/Ð0ô (/ôV/˜ô /ñ6 ðôôL
Ð,ó L
óðL
ô^B
Ð-ô B
ôJ|
Ð#Ð%;ô |
ò~�rJ   