Ë
    ÜÓ^j?=  ã                   óâ  — d dl mZ d dlZd dlmZ d dlmZ ddlmZ	 ddl
mZ 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 ddlmZmZmZmZmZmZ ddlm Z  ddl!m"Z"m#Z#  ejH                  e%«      Z& ed¬«      e G d„ de«      «       «       Z' G d„ de«      Z( G d„ de"«      Z) G d„ de«      Z* G d„ de«      Z+ G d„ de«      Z, G d„ de«      Z-e G d„ d e«      «       Z. G d!„ d"e«      Z/g d#¢Z0y)$é    )ÚCallableN)Ústricté   )Úinitialization)ÚPreTrainedConfig)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚloggingé   )ÚCLIPMLPÚCLIPAttentionÚCLIPEncoderÚCLIPEncoderLayerÚCLIPVisionEmbeddingsÚCLIPVisionModel)Úeager_attention_forward)ÚVisionRotaryEmbeddingÚapply_rotary_pos_emb_visionz&DeepGlint-AI/mlcd-vit-bigG-patch14-336)Ú
checkpointc                   ó  — e Zd ZU dZdZ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e   z  eeef   z  ed<   dZeee   z  eeef   z  ed<   dZeed<   dZeed<   dZeez  ed<   dZeed<   dZeed<   y)ÚMLCDVisionConfigav  
    num_key_value_groups (`int`, *optional*, defaults to 1):
        Number of key-value groups used in Attention.

    Example:

    ```python
    >>> from transformers import MLCDVisionConfig, MLCDVisionModel

    >>> # Initializing a MLCDVisionConfig with DeepGlint-AI/mlcd-vit-bigG-patch14-336 style configuration
    >>> configuration = MLCDVisionConfig()

    >>> # Initializing a MLCDVisionModel (with random weights) from the DeepGlint-AI/mlcd-vit-bigG-patch14-336 style configuration
    >>> model = MLCDVisionModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```Úmlcd_vision_modelÚvision_configi€  Úhidden_sizei    Úintermediate_sizeé0   Únum_hidden_layersé   Únum_attention_headsé   Únum_key_value_groupsr   Únum_channelsiP  Ú
image_sizeé   Ú
patch_sizeÚgeluÚ
hidden_actgñhãˆµøä>Úlayer_norm_epsç        Úattention_dropoutg{®Gáz”?Úinitializer_rangeç      ð?Úinitializer_factorN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚbase_config_keyr   ÚintÚ__annotations__r    r"   r$   r&   r'   r(   ÚlistÚtupler*   r,   Ústrr-   Úfloatr/   r0   r2   © ó    úp/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/mlcd/modular_mlcd.pyr   r   )   sÊ   … ñð& %€JØ%€Oà€K�ÓØ!Ð�sÓ!ØÐ�sÓØ!Ð˜Ó!Ø !Ð˜#Ó!Ø€L�#ÓØ47€J��d˜3‘i‘ %¨¨S¨¡/Ñ1Ó7Ø46€J��d˜3‘i‘ %¨¨S¨¡/Ñ1Ó6Ø€J�ÓØ €N�EÓ Ø%(Ð�u˜s‘{Ó(Ø#Ð�uÓ#Ø #Ð˜Ô#r@   r   c                   ó   — e Zd Zy)ÚMLCDMLPN©r3   r4   r5   r?   r@   rA   rC   rC   Q   ó   „ Ør@   rC   c                   ó   — e Zd Zy)ÚMLCDRotaryEmbeddingNrD   r?   r@   rA   rG   rG   U   rE   r@   rG   c                   ó\   ‡ — e Zd Zdefˆ fd„Zdej                  dej                  fd„Zˆ xZ	S )ÚMLCDVisionEmbeddingsÚconfigc                 ó(   •— t         ‰| �  |«       | `y ©N)ÚsuperÚ__init__Úposition_embedding©ÚselfrJ   Ú	__class__s     €rA   rN   zMLCDVisionEmbeddings.__init__Z   s   ø€ Ü‰Ñ˜Ô ØÑ#r@   Úpixel_valuesÚreturnc                 óT  — |j                   d   }| j                  j                  j                  }| j                  |j	                  |¬«      «      }|j                  d«      j                  dd«      }| j                  j                  |dd«      }t        j                  ||gd¬«      }|S )Nr   ©Údtyper   r%   éÿÿÿÿ©Údim)ÚshapeÚpatch_embeddingÚweightrW   ÚtoÚflattenÚ	transposeÚclass_embeddingÚexpandÚtorchÚcat)rQ   rS   Ú
batch_sizeÚtarget_dtypeÚpatch_embedsÚclass_embedsÚ
embeddingss          rA   ÚforwardzMLCDVisionEmbeddings.forward^   s–   € Ø!×'Ñ'¨Ñ*ˆ
Ø×+Ñ+×2Ñ2×8Ñ8ˆà×+Ñ+¨L¯O©OÀ,¨OÓ,OÓPˆØ#×+Ñ+¨AÓ.×8Ñ8¸¸AÓ>ˆà×+Ñ+×2Ñ2°:¸qÀ"ÓEˆÜ—Y‘Y ¨lÐ;ÀÔCˆ
àÐr@   )
r3   r4   r5   r   rN   rc   ÚFloatTensorÚTensorrj   Ú__classcell__©rR   s   @rA   rI   rI   Y   s-   ø„ ð$Ð/õ $ð
 E×$5Ñ$5ð 
¸%¿,¹,÷ 
r@   rI   c                   óæ   ‡ — e Zd ZdZdefˆ fd„Z	 ddej                  deej                  ej                  f   dej                  dz  de	e
   d	eej                  ej                  dz  f   f
d
„Zˆ xZS )ÚMLCDAttentionzÿMulti-headed attention with RoPE. Refer to papers:
    - Attention is all you need:
        https://huggingface.co/papers/1706.03762
    - RoFormer: Enhanced Transformer with Rotary Position Embedding:
        https://huggingface.co/papers/2104.09864
    rJ   c                 óT   •— t         ‰| �  |«       |j                  | _        d| _        y )NF)rM   rN   r&   Ú	is_causalrP   s     €rA   rN   zMLCDAttention.__init__s   s%   ø€ Ü‰Ñ˜Ô Ø$*×$?Ñ$?ˆÔ!Øˆ�r@   NÚhidden_statesÚposition_embeddingsÚattention_maskÚkwargsrT   c                 óž  — |j                   d d \  }}| j                  |«      j                  ||| j                  | j                  f«      }| j                  |«      j                  ||| j                  | j                  f«      }| j                  |«      j                  ||| j                  | j                  f«      }	|d   j                  d«      j                  «       }
|d   j                  d«      j                  «       }t        |||
|«      \  }}|j                  dddd«      j                  «       }|j                  dddd«      j                  «       }|	j                  dddd«      j                  «       }	t        j                  | j                  j                  t         «      } || |||	|f| j"                  sdn| j$                  | j&                  | j(                  dœ|¤Ž\  }}|j                  dddd«      j                  «       }|j+                  ||d«      }| j-                  |«      }|j                  ddd«      j                  «       }||fS )NrX   r   r%   r   r   r.   )ÚdropoutÚscalingrr   )r[   Úq_projÚreshapeÚ	num_headsÚhead_dimÚk_projÚv_projÚ	unsqueezer>   r   ÚpermuteÚ
contiguousr
   Úget_interfacerJ   Ú_attn_implementationr   Útrainingrx   Úscalerr   ÚviewÚout_proj)rQ   rs   rt   ru   rv   re   Ú
seq_lengthÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss                  rA   rj   zMLCDAttention.forwardx   s;  € ð "/×!4Ñ!4°S°bÐ!9Ñˆ
�Jð —{‘{ =Ó1×9Ñ9¸:ÀzÐSW×SaÑSaÐcg×cpÑcpÐ:qÓrˆØ—[‘[ Ó/×7Ñ7¸ÀZÐQU×Q_ÑQ_Ðae×anÑanÐ8oÓpˆ
Ø—{‘{ =Ó1×9Ñ9¸:ÀzÐSW×SaÑSaÐcg×cpÑcpÐ:qÓrˆð " !Ñ$×.Ñ.¨qÓ1×7Ñ7Ó9ˆØ! !Ñ$×.Ñ.¨qÓ1×7Ñ7Ó9ˆÜ#>¸|ÈZÐY\Ð^aÓ#bÑ ˆ�jð $×+Ñ+¨A¨q°!°QÓ7×BÑBÓDˆØ×'Ñ'¨¨1¨a°Ó3×>Ñ>Ó@ˆ
Ø#×+Ñ+¨A¨q°!°QÓ7×BÑBÓDˆä(?×(MÑ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð
%
ð  $Ÿ}š}‘C°$·,±,Ø—J‘JØ—n‘nñ
%
ð ñ
%
Ñ!ˆ�\ð "×)Ñ)¨!¨Q°°1Ó5×@Ñ@ÓBˆØ!×&Ñ& z°:¸rÓBˆØ—m‘m KÓ0ˆØ!×)Ñ)¨!¨Q°Ó2×=Ñ=Ó?ˆØ˜LÐ(Ð(r@   rL   )r3   r4   r5   r6   r   rN   rc   rl   r<   r   r   rj   rm   rn   s   @rA   rp   rp   k   s‹   ø„ ñðÐ/õ ð /3ñ	,)à—|‘|ð,)ð # 5§<¡<°·±Ð#=Ñ>ð,)ð Ÿ™ tÑ+ð	,)ð
 Ð+Ñ,ð,)ð 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1÷,)r@   rp   c                   óÄ   ‡ — e Zd Zdefˆ fd„Z	 d
dej                  deej                  ej                  f   dej                  dz  dee	   deej                     f
d	„Zˆ xZS )ÚMLCDEncoderLayerrJ   c                 óD   •— t         ‰| �  |«       t        |«      | _        y rL   )rM   rN   rp   Ú	self_attnrP   s     €rA   rN   zMLCDEncoderLayer.__init__¨   s   ø€ Ü‰Ñ˜Ô Ü& vÓ.ˆ�r@   Nrs   rt   ru   rv   rT   c                 óº   — |}| j                  |«      } | j                  d|||dœ|¤Ž\  }}||z   }|}| j                  |«      }| j                  |«      }||z   }|S )a¸  
        Args:
            hidden_states (`torch.FloatTensor`):
                Input to the layer of shape `(batch, seq_len, embed_dim)`.
                Represents the hidden states from the previous layer or the input embeddings.
            position_embeddings (`tuple[torch.Tensor, torch.Tensor]`):
                A tuple of two tensors, each of shape `(batch, seq_len, embed_dim)`.
                Represents absolute positional embeddings for the query and key in the attention mechanism.
            attention_mask (`torch.FloatTensor`):
                Attention mask of shape `(batch, 1, q_len, k_v_seq_len)` where padding elements are indicated by very large negative values.
        )rs   rt   ru   r?   )Úlayer_norm1r•   Úlayer_norm2Úmlp)rQ   rs   rt   ru   rv   ÚresidualÚ_s          rA   rj   zMLCDEncoderLayer.forward¬   s…   € ð$ !ˆà×(Ñ(¨Ó7ˆØ)˜4Ÿ>™>ð 
Ø'Ø 3Ø)ñ
ð ñ	
Ñˆ�qð ! =Ñ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ  =Ñ0ˆàÐr@   rL   )r3   r4   r5   r   rN   rc   rl   r<   r   r   rk   rj   rm   rn   s   @rA   r“   r“   §   sz   ø„ ð/Ð/õ /ð /3ñ	"à—|‘|ð"ð # 5§<¡<°·±Ð#=Ñ>ð"ð Ÿ™ tÑ+ð	"ð
 Ð+Ñ,ð"ð 
ˆu× Ñ Ñ	!÷"r@   r“   c                   ó´   ‡ — e Zd ZdZdefˆ fd„Z	 ddej                  deej                  ej                  f   dej                  dz  de
e   d	eez  f
d
„Zˆ xZS )ÚMLCDEncoderz³
    Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
    [`MLCDEncoderLayer`].

    Args:
        config: MLCDVisionConfig
    rJ   c                 ó$   •— t         ‰| �  |«       y)z3Overwrite dummy `MLCDConfig` to `MLCDVisionConfig`.N)rM   rN   rP   s     €rA   rN   zMLCDEncoder.__init__Ú   s   ø€ ä‰Ñ˜Õ r@   NÚinputs_embedsrt   ru   rv   rT   c                 óV   — |}| j                   D ]  } ||||fi |¤Ž}Œ t        |¬«      S )a=  
        Args:
            inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
                Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation.
                This is useful if you want more control over how to convert `input_ids` indices into associated vectors
                than the model's internal embedding lookup matrix.
            position_embeddings (`tuple[torch.Tensor, torch.Tensor]`):
                A tuple of two tensors, each of shape `(batch, seq_len, embed_dim)`.
                Represents absolute positional embeddings for the query and key in the attention mechanism.
            attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
                Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:
                - 1 for tokens that are **not masked**,
                - 0 for tokens that are **masked**.
                [What are attention masks?](../glossary#attention-mask)
        )Úlast_hidden_state)Úlayersr   )rQ   rŸ   rt   ru   rv   rs   Úencoder_layers          rA   rj   zMLCDEncoder.forwardÞ   sK   € ð, &ˆØ!Ÿ[™[ò 	ˆMÙ)ØØ#Øñð ñ	‰Mð	ô Ø+ô
ð 	
r@   rL   )r3   r4   r5   r6   r   rN   rc   rk   r<   rl   r   r   r   rj   rm   rn   s   @rA   r�   r�   Ñ   s{   ø„ ñð!Ð/õ !ð /3ñ	!
à×(Ñ(ð!
ð # 5§<¡<°·±Ð#=Ñ>ð!
ð Ÿ™ tÑ+ð	!
ð
 Ð+Ñ,ð!
ð 
�Ñ	 ÷!
r@   r�   c                   ó~   ‡ — e Zd ZU eed<   dZdgZdZdZdZ	dZ
dZdZeedœZ ej"                  «       ˆ fd„«       Zˆ xZS )ÚMLCDPreTrainedModelrJ   Úvision_modelr“   TF)rs   Ú
attentionsc                 ó  •— t         ‰| �  |«       | j                  j                  }t	        |t
        «      rä| j                  j                  }t        j                  |j                  d|j                  dz  |z  ¬«       t        j                  |j                  j                  |j                  j                  |z  ¬«       t        j                  |j                  t        j                   |j                  j"                  d   «      j%                  d«      «       yt	        |t&        «      �r| j                  j                  }|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                  |j.                  j                  |¬«       t        j                  |j0                  j                  |¬«       yt	        |t2        «      rÅ| j                  j                  }|j                  j4                  dz  d|j                  j(                  z  dz  z  |z  }d|j                  j4                  z  dz  |z  }t        j                  |j6                  j                  |¬«       t        j                  |j8                  j                  |¬«       yt	        |t:        «      ro| j                  j                  }|j                  j4                  |j                  j<                  z  dz  dz  |z  }t        j                  |j>                  d|¬«       yt	        |t@        «      rod|jB                  t        j                   d	|jD                  dt        jF                  ¬
«      |jD                  z  z  z  }t        j                  |jH                  |«       yy)zInitialize the weightsr.   g      à¿)ÚmeanÚstd)rª   rX   )r%   rX   r   r1   r   rV   N)%rM   Ú_init_weightsrJ   r2   Ú
isinstancerI   ÚinitÚnormal_ra   Ú	embed_dimr\   r]   r0   Úcopy_Úposition_idsrc   Úaranger[   rb   rp   r"   rz   r~   r   rˆ   rC   r   Úfc1Úfc2ÚMLCDVisionModelr$   Úclass_pos_embrG   ÚthetarZ   r>   Úinv_freq)	rQ   ÚmoduleÚfactorÚin_proj_stdÚout_proj_stdÚfc_stdÚpos_emb_stdr¸   rR   s	           €rA   r«   z!MLCDPreTrainedModel._init_weights  sÛ  ø€ ô 	‰Ñ˜fÔ%Ø—‘×/Ñ/ˆÜ�fÔ2Ô3Ø—[‘[×3Ñ3ˆFÜ�L‰L˜×/Ñ/°c¸v×?OÑ?OÐQUÑ?UÐX^Ñ?^Õ_Ü�L‰L˜×/Ñ/×6Ñ6¸F¿M¹M×<[Ñ<[Ð^dÑ<dÕeÜ�J‰J�v×*Ñ*¬E¯L©L¸×9LÑ9L×9RÑ9RÐSUÑ9VÓ,W×,^Ñ,^Ð_fÓ,gÕhÜ˜¤Õ.Ø—[‘[×3Ñ3ˆFØ!×+Ñ+¨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Ü˜¤Ô(Ø—[‘[×3Ñ3ˆFØ!Ÿ=™=×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˜Ÿ™×*Ñ*°Ö<Ü˜¤Ô0Ø—[‘[×3Ñ3ˆFØ!Ÿ=™=×4Ñ4¸¿¹×8YÑ8YÑYÐ]^Ñ^ÐcgÑgÐjpÑpˆKÜ�L‰L˜×-Ñ-°C¸[ÖIÜ˜Ô 3Ô4Ø˜fŸl™l¬u¯|©|¸A¸v¿z¹zÈ1ÔTY×T_ÑT_Ô/`Ðci×cmÑcmÑ/mÑnÑoˆHÜ�J‰J�v—‘¨Õ1ð 5r@   )r3   r4   r5   r   r:   Úbase_model_prefixÚ_no_split_modulesÚsupports_gradient_checkpointingÚaccepts_loss_kwargsÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_attention_backendr“   rp   Ú_can_record_outputsrc   Úno_gradr«   rm   rn   s   @rA   r¥   r¥     se   ø… àÓØ&ÐØ+Ð,ÐØ&*Ð#ØÐØÐØ€NØÐØ"&Ðà)Ø#ñÐð
 €U‡]�]ƒ_ó2ó ô2r@   r¥   c                   ób   ‡ — e Zd Zdefˆ fd„Z	 ddej                  dz  dee   de	e
z  fd„Zˆ xZS )	rµ   rJ   c                 ó  •— t         ‰| �  |«       t        |j                  |j                  z  dz  «      | _        t        j                  t        j                  d|j                  |j                  z  dz  «      «      | _
        y )Nr   r%   )rM   rN   rG   r   r$   Úvision_rotary_embeddingÚnnÚ	Parameterrc   Úrandnr¶   rP   s     €rA   rN   zMLCDVisionModel.__init__4  sh   ø€ Ü‰Ñ˜Ô Ü':¸6×;MÑ;MÐQW×QkÑQkÑ;kÐopÑ;pÓ'qˆÔ$ÜŸ\™\¬%¯+©+°a¸×9KÑ9KÈv×OiÑOiÑ9iÐmnÑ9nÓ*oÓpˆÕr@   NrS   rv   rT   c                 óÄ  — |€t        d«      ‚|j                  d   | j                  j                  z  }|j                  d   | j                  j                  z  }t	        j
                  ||j                  ¬«      j                  d«      j                  d|«      }t	        j
                  ||j                  ¬«      j                  d«      j                  |d«      }t	        j                  |j                  «       |j                  «       gd¬«      }| j                  |«      }t	        j                  | j                  |gd¬«      }t	        j                  ||fd¬«      }	|	j                  «       |	j                  «       f}
| j!                  |«      }| j#                  |«      } | j$                  d||
d	œ|¤Ž}|d   }|dd…ddd…f   }| j'                  |«      }t)        ||¬
«      S )aû  
        Example:

        ```python
        >>> import httpx
        >>> from io import BytesIO
        >>> from PIL import Image
        >>> from transformers import AutoProcessor, MLCDVisionModel
        >>> model = MLCDVisionModel.from_pretrained("DeepGlint-AI/mlcd-vit-bigG-patch14-448")
        >>> processor = AutoProcessor.from_pretrained("DeepGlint-AI/mlcd-vit-bigG-patch14-448")

        >>> 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")

        >>> with torch.no_grad():
        ...     outputs = model(**inputs, output_attentions=True)

        >>> features = outputs.last_hidden_state
        >>> print(f"Extracted features shape: {features.shape}")
        >>> print(f"Number of attention layers: {len(outputs.attentions)}")
        >>> print(f"Attention shape: {outputs.attentions[0].shape}")
        ```Nz You have to specify pixel_valueséþÿÿÿrX   )Údevicer%   r   rY   )rŸ   rt   )r¡   Úpooler_outputr?   )Ú
ValueErrorr[   rJ   r*   rc   r²   rÑ   r€   rb   Ústackr_   rË   rd   r¶   r�   rŽ   ri   Úpre_layrnormÚencoderÚpost_layernormr	   )rQ   rS   rv   Únum_patches_heightÚnum_patches_widthÚhpos_idsÚwpos_idsÚpos_idsÚrotary_pos_embÚembrt   rs   Úencoder_outputsr¡   Úpooled_outputs                  rA   rj   zMLCDVisionModel.forward9  sÅ  € ð: ÐÜÐ?Ó@Ð@à)×/Ñ/°Ñ3°t·{±{×7MÑ7MÑMÐØ(×.Ñ.¨rÑ2°d·k±k×6LÑ6LÑLÐä�L‰LÐ+°L×4GÑ4GÔH×RÑRÐSTÓU×\Ñ\Ð]_ÐarÓsð 	ô �L‰LÐ*°<×3FÑ3FÔG×QÑQÐRSÓT×[Ñ[Ð\nÐprÓsð 	ô —+‘+˜x×/Ñ/Ó1°8×3CÑ3CÓ3EÐFÈBÔOˆØ×5Ñ5°gÓ>ˆÜŸ™ D×$6Ñ$6¸Ð#GÈQÔOˆÜ�i‰i˜¨Ð8¸bÔAˆØ"Ÿw™w›y¨#¯'©'«)Ð4ÐàŸ™¨Ó5ˆØ×)Ñ)¨-Ó8ˆà&˜$Ÿ,™,ð 
Ø'Ø 3ñ
ð ñ
ˆð ,¨AÑ.ÐØ)ª!¨Q²¨'Ñ2ˆØ×+Ñ+¨MÓ:ˆä)Ø/Ø'ô
ð 	
r@   rL   )r3   r4   r5   r   rN   rc   rk   r   r   r<   r	   rj   rm   rn   s   @rA   rµ   rµ   3  sO   ø„ ðqÐ/õ qð 26ñ>
à×'Ñ'¨$Ñ.ð>
ð Ð+Ñ,ð>
ð 
Ð+Ñ	+÷	>
r@   rµ   )r   r¥   rµ   )1Úcollections.abcr   rc   Útorch.nnrÌ   Úhuggingface_hub.dataclassesr   Ú r   r­   Úconfiguration_utilsr   Úmodeling_outputsr   r	   Úmodeling_utilsr
   r   Úprocessing_utilsr   Úutilsr   r   r   Úclip.modeling_clipr   r   r   r   r   r   Úllama.modeling_llamar   Úqwen2_vl.modeling_qwen2_vlr   r   Ú
get_loggerr3   Úloggerr   rC   rG   rI   rp   r“   r�   r¥   rµ   Ú__all__r?   r@   rA   ú<module>rð      sú   ðõ %ã Ý Ý .å &Ý 3ß Kß FÝ &ß @Ñ @÷÷ õ ;ß [ð 
ˆ×	Ñ	˜HÓ	%€ñ ÐCÔDØô#$Ð'ó #$ó ó Eð#$ôL	ˆgô 	ô	Ð/ô 	ôÐ/ô ô$9)�Mô 9)ôx'Ð'ô 'ôT.
�+ô .
ðb ô-2˜/ó -2ó ð-2ô`D
�oô D
òN�r@   