ó
    ˆŽ¡jý<  ã                   óÜ  • S SK Jr  S SKrS SKJr  S SKJr  SSKJr	  SSK
Jr  SSKJrJr  SSKJrJr  SS	KJr  SS
KJrJrJr  SSKJrJrJrJrJrJr  SSKJ r   SSK!J"r"J#r#  \RH                  " \%5      r&\" SS9\ " S S\5      5       5       r' " S S\5      r( " S S\"5      r) " S S\5      r* " S S\5      r+ " S S\5      r, " S S\5      r-\ " S S \5      5       r. " S! S"\5      r// S#Qr0g)$é    )ÚCallableN)Ústricté   )Úinitialization)ÚPreTrainedConfig)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚloggingé   )ÚCLIPMLPÚCLIPAttentionÚCLIPEncoderÚCLIPEncoderLayerÚCLIPVisionEmbeddingsÚCLIPVisionModel)Úeager_attention_forward)ÚQwen2_5_VLVisionRotaryEmbeddingÚapply_rotary_pos_emb_visionz&DeepGlint-AI/mlcd-vit-bigG-patch14-336)Ú
checkpointc                   ó.  • \ rS rSr% SrSrSrSrSr\	\
S'   Sr\	\
S	'   S
r\	\
S'   Sr\	\
S'   Sr\	\
S'   Sr\	\
S'   Sr\	\\	   -  \\	\	4   -  \
S'   Sr\	\\	   -  \\	\	4   -  \
S'   Sr\\
S'   Sr\\
S'   Sr\\	-  \
S'   Sr\\
S'   Sr\\
S'   S r\S -  \
S!'   S"rg )#ÚMLCDVisionConfigé)   aF  
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_configÚaxiali€  Ú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_rangeg      ð?Úinitializer_factorNÚrope_parameters© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú
model_typeÚbase_config_keyÚdefault_rope_typer!   ÚintÚ__annotations__r"   r$   r&   r(   r)   r*   ÚlistÚtupler,   r.   Ústrr/   Úfloatr1   r2   r3   r4   ÚdictÚ__static_attributes__r5   ó    Ú³C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\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Ó#Ø #Ð˜Ó#Ø#'€O�T˜D‘[Ö'rF   r   c                   ó   • \ rS rSrSrg)ÚMLCDMLPéS   r5   N©r6   r7   r8   r9   rE   r5   rF   rG   rI   rI   S   ó   † ÚrF   rI   c                   ó   • \ rS rSrSrg)ÚMLCDRotaryEmbeddingéW   r5   NrK   r5   rF   rG   rN   rN   W   rL   rF   rN   c                   ój   ^ • \ rS rSrS\4U 4S jjrS\R                  S\R                  4S jr	Sr
U =r$ )ÚMLCDVisionEmbeddingsé[   Úconfigc                 ó(   >• [         TU ]  U5        U ?g ©N)ÚsuperÚ__init__Úposition_embedding©ÚselfrS   Ú	__class__s     €rG   rW   ÚMLCDVisionEmbeddings.__init__\   s   ø€ Ü‰Ñ˜Ô ØÑ#rF   Úpixel_valuesÚreturnc                 óH  • UR                   S   nU R                  R                  R                  nU R                  UR	                  US95      nUR                  S5      R                  SS5      nU R                  R                  USS5      n[        R                  " XT/SS9nU$ )Nr   )Údtyper   r'   éÿÿÿÿ©Údim)ÚshapeÚpatch_embeddingÚweightr`   ÚtoÚflattenÚ	transposeÚclass_embeddingÚexpandÚtorchÚcat)rZ   r]   Ú
batch_sizeÚtarget_dtypeÚpatch_embedsÚclass_embedsÚ
embeddingss          rG   ÚforwardÚMLCDVisionEmbeddings.forward`   s”   € Ø!×'Ñ'¨Ñ*ˆ
Ø×+Ñ+×2Ñ2×8Ñ8ˆà×+Ñ+¨L¯O©OÀ,¨OÐ,OÓPˆØ#×+Ñ+¨AÓ.×8Ñ8¸¸AÓ>ˆà×+Ñ+×2Ñ2°:¸qÀ"ÓEˆÜ—Y’Y Ð;ÀÑCˆ
àÐrF   r5   )r6   r7   r8   r9   r   rW   rl   ÚFloatTensorÚTensorrs   rE   Ú__classcell__©r[   s   @rG   rQ   rQ   [   s2   ø† ð$Ð/÷ $ð
 E×$5Ñ$5ð 
¸%¿,¹,÷ 
ò 
rF   rQ   c                   óö   ^ • \ rS rSrSrS\4U 4S jjr SS\R                  S\	\R                  \R                  4   S\R                  S-  S	\
\   S
\	\R                  \R                  S-  4   4
S jjrSrU =r$ )ÚMLCDAttentioném   zë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
rS   c                 óT   >• [         TU ]  U5        UR                  U l        SU l        g )NF)rV   rW   r(   Ú	is_causalrY   s     €rG   rW   ÚMLCDAttention.__init__u   s%   ø€ Ü‰Ñ˜Ô Ø$*×$?Ñ$?ˆÔ!Øˆ�rF   NÚhidden_statesÚposition_embeddingsÚattention_maskÚkwargsr^   c                 ó–  • UR                   S S u  pVU R                  U5      R                  XVU R                  U R                  45      nU R                  U5      R                  XVU R                  U R                  45      nU R                  U5      R                  XVU R                  U R                  45      n	US   R                  S5      R                  5       n
US   R                  S5      R                  5       n[        XxX«5      u  pxUR                  SSSS5      R                  5       nUR                  SSSS5      R                  5       nU	R                  SSSS5      R                  5       n	[        R                  " U R                  R                  [         5      nU" U UUU	U4U R"                  (       d  SOU R$                  U R&                  U R(                  S.UD6u  pÞUR                  SSSS5      R                  5       nUR+                  XeS5      nU R-                  U5      nUR                  SSS5      R                  5       nXÞ4$ )Nra   r   r'   r   r   r0   )ÚdropoutÚscalingr}   )rd   Úq_projÚreshapeÚ	num_headsÚhead_dimÚk_projÚv_projÚ	unsqueezerC   r   ÚpermuteÚ
contiguousr
   Úget_interfacerS   Ú_attn_implementationr   Útrainingr„   Úscaler}   ÚviewÚout_proj)rZ   r   r€   r�   r‚   rn   Ú
seq_lengthÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss                  rG   rs   ÚMLCDAttention.forwardz   s&  € ð "/×!4Ñ!4°S°bÐ!9Ñˆ
ð —{‘{ =Ó1×9Ñ9¸:ÐSW×SaÑSaÐcg×cpÑcpÐ:qÓrˆØ—[‘[ Ó/×7Ñ7¸ÐQU×Q_ÑQ_Ðae×anÑanÐ8oÓpˆ
Ø—{‘{ =Ó1×9Ñ9¸:ÐSW×SaÑSaÐcg×cpÑcpÐ:qÓrˆð " !Ñ$×.Ñ.¨qÓ1×7Ñ7Ó9ˆØ! !Ñ$×.Ñ.¨qÓ1×7Ñ7Ó9ˆÜ#>¸|ÐY\Ó#bÑ ˆð $×+Ñ+¨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×=Ñ=Ó?ˆØÐ(Ð(rF   )r}   r(   rU   )r6   r7   r8   r9   r:   r   rW   rl   rv   rA   r   r   rs   rE   rw   rx   s   @rG   rz   rz   m   s�   ø† ñðÐ/÷ ð /3ñ	,)à—|‘|ð,)ð # 5§<¡<°·±Ð#=Ñ>ð,)ð Ÿ™ tÑ+ð	,)ð
 Ð+Ñ,ð,)ð 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1÷,)ó ,)rF   rz   c                   óÔ   ^ • \ rS rSrS\4U 4S jjr SS\R                  S\\R                  \R                  4   S\R                  S-  S\	\
   S	\\R                     4
S
 jjrSrU =r$ )ÚMLCDEncoderLayeré©   rS   c                 óD   >• [         TU ]  U5        [        U5      U l        g rU   )rV   rW   rz   Ú	self_attnrY   s     €rG   rW   ÚMLCDEncoderLayer.__init__ª   s   ø€ Ü‰Ñ˜Ô Ü& vÓ.ˆ�rF   Nr   r€   r�   r‚   r^   c                 ó´   • UnU R                  U5      nU R                  " SUUUS.UD6u  pXQ-   nUnU R                  U5      nU R                  U5      nXQ-   nU$ )ah  
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.
)r   r€   r�   r5   )Úlayer_norm1r£   Úlayer_norm2Úmlp)rZ   r   r€   r�   r‚   ÚresidualÚ_s          rG   rs   ÚMLCDEncoderLayer.forward®   s}   € ð$ !ˆà×(Ñ(¨Ó7ˆØŸ>š>ð 
Ø'Ø 3Ø)ñ
ð ñ	
Ñˆð !Ñ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Ñ0ˆàÐrF   )r£   rU   )r6   r7   r8   r9   r   rW   rl   rv   rA   r   r   ru   rs   rE   rw   rx   s   @rG   r    r    ©   s   ø† ð/Ð/÷ /ð /3ñ	"à—|‘|ð"ð # 5§<¡<°·±Ð#=Ñ>ð"ð Ÿ™ tÑ+ð	"ð
 Ð+Ñ,ð"ð 
ˆu× Ñ Ñ	!÷"ó "rF   r    c                   óÄ   ^ • \ rS rSrSrS\4U 4S jjr SS\R                  S\	\R                  \R                  4   S\R                  S-  S	\\   S
\	\-  4
S jjrSrU =r$ )ÚMLCDEncoderéÓ   zŸ
Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
[`MLCDEncoderLayer`].

Args:
    config: MLCDVisionConfig
rS   c                 ó$   >• [         TU ]  U5        g)z3Overwrite dummy `MLCDConfig` to `MLCDVisionConfig`.N)rV   rW   rY   s     €rG   rW   ÚMLCDEncoder.__init__Ü   s   ø€ ä‰Ñ˜Õ rF   NÚinputs_embedsr€   r�   r‚   r^   c                 óT   • UnU R                    H  nU" UUU40 UD6nM     [        US9$ )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   )rZ   r±   r€   r�   r‚   r   Úencoder_layers          rG   rs   ÚMLCDEncoder.forwardà   sF   € ð, &ˆØ!Ÿ[œ[ˆMÙ)ØØ#Øñð ñ	ŠMñ )ô Ø+ñ
ð 	
rF   r5   rU   )r6   r7   r8   r9   r:   r   rW   rl   ru   rA   rv   r   r   r   rs   rE   rw   rx   s   @rG   r­   r­   Ó   s€   ø† ñð!Ð/÷ !ð /3ñ	!
à×(Ñ(ð!
ð # 5§<¡<°·±Ð#=Ñ>ð!
ð Ÿ™ tÑ+ð	!
ð
 Ð+Ñ,ð!
ð 
�Ñ	 ÷!
ó !
rF   r­   c                   óˆ   ^ • \ rS rSr% \\S'   SrS/rSrSr	Sr
SrSrSr\\S.r\R$                  " 5       U 4S j5       rS	rU =r$ )
ÚMLCDPreTrainedModeli  rS   Úvision_modelr    TF)r   Ú
attentionsc                 ó  >• [         TU ]  U5        U R                  R                  n[	        U[
        5      (       aâ  U R                  R                  n[        R                  " UR                  SUR                  S-  U-  S9  [        R                  " UR                  R                  UR                  R                  U-  S9  [        R                  " UR                  [        R                   " UR                  R"                  S   5      R%                  S5      5        g[	        U[&        5      (       aü  U R                  R                  nUR                  S-  SUR                  R(                  -  S-  -  U-  nUR                  S-  U-  n[        R                  " UR*                  R                  US9  [        R                  " UR,                  R                  US9  [        R                  " UR.                  R                  US9  [        R                  " UR0                  R                  US9  g[	        U[2        5      (       aÁ  U R                  R                  nUR                  R4                  S-  SUR                  R(                  -  S-  -  U-  nSUR                  R4                  -  S-  U-  n[        R                  " UR6                  R                  US9  [        R                  " UR8                  R                  US9  g[	        U[:        5      (       am  U R                  R                  nUR                  R4                  UR                  R<                  -  S-  S-  U-  n[        R                  " UR>                  SUS9  gg)	zInitialize the weightsr0   g      à¿)ÚmeanÚstd)r½   ra   )r'   ra   r   N) rV   Ú_init_weightsrS   r3   Ú
isinstancerQ   ÚinitÚnormal_rj   Ú	embed_dimre   rf   r2   Úcopy_Úposition_idsrl   Úarangerd   rk   rz   r$   r†   rŠ   r‹   r”   rI   r!   Úfc1Úfc2ÚMLCDVisionModelr&   Úclass_pos_emb)rZ   ÚmoduleÚfactorÚin_proj_stdÚout_proj_stdÚfc_stdÚpos_emb_stdr[   s          €rG   r¾   Ú!MLCDPreTrainedModel._init_weights  s‘  ø€ ô 	‰Ñ˜fÔ%Ø—‘×/Ñ/ˆÜ�fÔ2×3Ñ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Ñ0Ø—[‘[×3Ñ3ˆFØ!Ÿ=™=×4Ñ4¸¿¹×8YÑ8YÑYÐ]^Ñ^ÐcgÑgÐjpÑpˆKÜ�LŠL˜×-Ñ-°C¸[ÓIð 1rF   r5   )r6   r7   r8   r9   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    rz   Ú_can_record_outputsrl   Úno_gradr¾   rE   rw   rx   s   @rG   r¸   r¸     se   ø‡ àÓØ&ÐØ+Ð,ÐØ&*Ð#ØÐØÐØ€NØÐØ"&Ðà)Ø#ñÐð
 ‡]‚]ƒ_ôJó öJrF   r¸   c                   ór   ^ • \ rS rSrS\4U 4S jjr S
S\R                  S-  S\\	   S\
\-  4S jjrS	rU =r$ )rÈ   i2  rS   c                 óØ   >• [         TU ]  U5        [        U5      U l        [        R
                  " [        R                  " SUR                  UR                  -  S-  5      5      U l
        g )Nr'   r   )rV   rW   rN   Úvision_rotary_embeddingÚnnÚ	Parameterrl   Úrandnr!   r&   rÉ   rY   s     €rG   rW   ÚMLCDVisionModel.__init__3  sP   ø€ Ü‰Ñ˜Ô Ü':¸6Ó'BˆÔ$ÜŸ\š\¬%¯+ª+°a¸×9KÑ9KÈv×OiÑOiÑ9iÐmnÑ9nÓ*oÓpˆÕrF   Nr]   r‚   r^   c                 óî  • Uc  [        S5      eU R                  U5      nU R                  U5      nUR                  S   U R                  R
                  -  nUR                  S   U R                  R
                  -  n[        R                  " XAR                  S9R                  S5      R                  SU5      n[        R                  " XQR                  S9R                  S5      R                  US5      n[        R                  " UR                  5       UR                  5       /SS9nU R                  X85      n	[        R                  " U R                  U R                  /SS9n
[        R                  " U
R!                  5       U	S   /SS9[        R                  " U
R#                  5       U	S   /SS9/n	U R$                  " SUU	S	.UD6nUS   nUSS2SSS24   nU R'                  U5      n[)        UUS
9$ )ac  
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éþÿÿÿra   )Údevicer'   r   rb   )r±   r€   )r³   Úpooler_outputr5   )Ú
ValueErrorrr   Úpre_layrnormrd   rS   r,   rl   rÅ   rä   rŒ   rk   Ústackrh   rÝ   rm   rÉ   r™   rš   ÚencoderÚpost_layernormr	   )rZ   r]   r‚   r   Únum_patches_heightÚnum_patches_widthÚhpos_idsÚwpos_idsÚpos_idsr€   rÉ   Úencoder_outputsr³   Úpooled_outputs                 rG   rs   ÚMLCDVisionModel.forward8  sé  € ð: ÑÜÐ?Ó@Ð@àŸ™¨Ó5ˆØ×)Ñ)¨-Ó8ˆà)×/Ñ/°Ñ3°t·{±{×7MÑ7MÑMÐØ(×.Ñ.¨rÑ2°d·k±k×6LÑ6LÑ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ˆØ"×:Ñ:¸=ÓRÐÜŸ	š	 4×#5Ñ#5°t×7IÑ7IÐ"JÐPRÑSˆä�IŠI�}×(Ñ(Ó*Ð,?ÀÑ,BÐCÈÑKÜ�IŠI�}×(Ñ(Ó*Ð,?ÀÑ,BÐCÈÑKð
Ðð
 Ÿ,š,ð 
Ø'Ø 3ñ
ð ñ
ˆð ,¨AÑ.ÐØ)ª!¨Q²¨'Ñ2ˆØ×+Ñ+¨MÓ:ˆä)Ø/Ø'ñ
ð 	
rF   )rÉ   rÝ   rU   )r6   r7   r8   r9   r   rW   rl   ru   r   r   rA   r	   rs   rE   rw   rx   s   @rG   rÈ   rÈ   2  sY   ø† ðqÐ/÷ qð 26ñ@
à×'Ñ'¨$Ñ.ð@
ð Ð+Ñ,ð@
ð 
Ð+Ñ	+÷	@
ó @
rF   rÈ   )r   r¸   rÈ   )1Úcollections.abcr   rl   Ú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_5_vl.modeling_qwen2_5_vlr   r   Ú
get_loggerr6   Úloggerr   rI   rN   rQ   rz   r    r­   r¸   rÈ   Ú__all__r5   rF   rG   Ú<module>r     sû   ðõ %ã Ý Ý .å &Ý 3ß Kß FÝ &ß @Ñ @÷÷ õ ;ß ið 
×	Ò	˜HÓ	%€ñ ÐCÑDØô%(Ð'ó %(ó ó Eð%(ôP	ˆgô 	ô	Ð9ô 	ôÐ/ô ô$9)�Mô 9)ôx'Ð'ô 'ôT.
�+ô .
ðb ô*J˜/ó *Jó ð*JôZF
�oô F
òR�rF   