§
    ‚Štj8·  ã                   ó
  — d dl mZ d dlm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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! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZAmBZBmCZC  e(¦   «         r	  e)jD        eE¦  «        ZF e&d¬¦  «        e
 G d„ de?¦  «        ¦   «         ¦   «         ZG e&d¬¦  «        e
 G d„ de2¦  «        ¦   «         ¦   «         ZH e&d¬¦  «        e
 G d „ d!e¦  «        ¦   «         ¦   «         ZIe& G d"„ d#e!¦  «        ¦   «         ZJ e&d$¬%¦  «        e G d&„ d'e¦  «        ¦   «         ¦   «         ZK G d(„ d)e:¦  «        ZL G d*„ d+e;¦  «        ZM G d,„ d-eC¦  «        ZN G d.„ d/ejO        ¦  «        ZP G d0„ d1ejO        ¦  «        ZQ G d2„ d3eB¦  «        ZR G d4„ d5eA¦  «        ZS G d6„ d7e0¦  «        ZT G d8„ d9ejO        ¦  «        ZU G d:„ d;e8¦  «        ZV G d<„ d=e7¦  «        ZW G d>„ d?e5¦  «        ZX G d@„ dAe6¦  «        ZY G dB„ dCejO        ¦  «        ZZ G dD„ dEejO        ¦  «        Z[ G dF„ dGejO        ¦  «        Z\ G dH„ dIejO        ¦  «        Z] G dJ„ dKe4¦  «        Z^ G dL„ dMejO        ¦  «        Z_ G dN„ dOejO        ¦  «        Z` e&dP¬%¦  «         G dQ„ dReJ¦  «        ¦   «         Za G dS„ dTeJe¦  «        Zbg dU¢ZcdS )Vé    )ÚCallable)Ú	dataclassN)Ústrict)Únné   )Úinitialization)ÚACT2FN)ÚCache)ÚPreTrainedConfig)Ú%ClassifierFreeGuidanceLogitsProcessorÚGenerationMixinÚGenerationModeÚLogitsProcessorList)ÚGenerateDecoderOnlyOutput)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚModelOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚis_vision_availableÚloggingÚtorch_compilable_checké   )ÚCONFIG_MAPPINGÚ
AutoConfigÚ	AutoModel)ÚBlip2VisionModel)ÚChameleonVQVAEConfig)ÚChameleonVQVAEÚChameleonVQVAEEncoderAttnBlockÚ#ChameleonVQVAEEncoderConvDownsampleÚ ChameleonVQVAEEncoderResnetBlockÚChameleonVQVAEVectorQuantizer)ÚIdeficsBaseModelOutputWithPastÚIdeficsCausalLMOutputWithPast)Úeager_attention_forward)ÚSiglipVisionConfig)ÚSiglipEncoderÚSiglipEncoderLayerÚSiglipVisionEmbeddingszdeepseek-community/Janus-Pro-1B)Ú
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
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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<    e¦   «         ZdS )ÚJanusVisionConfigzÕ
    projection_dropout (`float`, *optional*, defaults to 0.0):
        Dropout probability for the projection layer.
    num_image_tokens (`int`, *optional*, defaults to 576):
        Number of image tokens.
    i   Úhidden_sizeé   Únum_hidden_layersé   Únum_attention_headsi€  Ú
image_sizeÚgeluÚ
hidden_actg      @Ú	mlp_ratioTÚattention_biasç        Úhidden_dropout_rateé   Úprojection_dimÚprojection_dropoutFÚuse_qk_normç{®Gáz”?Úinitializer_ranger   Údepthi@  Únum_image_tokensN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   ÚintÚ__annotations__r4   r6   r7   ÚlistÚtupler9   Ústrr:   Úfloatr;   Úboolr=   r?   r@   rA   rC   rD   rE   ÚAttributeErrorÚintermediate_size© ó    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/janus/modular_janus.pyr1   r1   @   s0  € € € € € € ðð ð €K�ÐÐÑØÐ�sÐÐÑØ!Ð˜Ð!Ð!Ñ!Ø47€J��d˜3”i‘ %¨¨S¨¤/Ñ1Ð7Ð7Ñ7Ø€J�ÐÐÑØ €Iˆu�s‰{Ð Ð Ñ Ø€N�DÐÐÑØ'*Ð˜ ™Ð*Ð*Ñ*Ø€N�CÐÐÑØ&)Ð˜ ™Ð)Ð)Ñ)Ø€K�ÐÐÑØ#Ð�uÐ#Ð#Ñ#Ø€Eˆ3€N€N�NØÐ�cÐÐÑØ&˜Ñ(Ô(ÐÐÐrT   r1   c                   óX  — 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d<   dZeed<   dZee         eed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<    e¦   «         Z e¦   «         Z e¦   «         Zd S )!ÚJanusVQVAEConfiga   
    base_channels (`int`, *optional*, defaults to 128):
        Base channel count.
    channel_multiplier (`list[int]`, *optional*, defaults to `[1, 1, 2, 2, 4]`):
        Channel multipliers for each resolution.
    num_res_blocks (`int`, *optional*, defaults to 2):
        Number of residual blocks.
    num_patches (`int`, *optional*, defaults to 32):
        Num of patches the input images can be divided into.
    out_channels (`int`, *optional*, defaults to 3):
        Number of out channels.
    image_token_embed_dim (`int`, *optional*, defaults to 2048):
        Dimension of image embeddings. It should be same as the dimensionality of text embeddings.
    é   Ú	embed_dimi @  Únum_embeddingsFÚdouble_latenté   Úlatent_channelsé    Únum_patchesr   Úin_channelsÚout_channelsé€   Úbase_channels)é   rd   r   r   é   .Úchannel_multiplierr   Únum_res_blocksr<   ÚdropoutrB   rC   r>   r?   r4   r8   r9   Úimage_token_embed_dimN)rF   rG   rH   rI   rY   rJ   rK   rZ   r[   rP   r]   r_   r`   ra   rc   rf   rL   rM   rg   rh   rO   rC   r?   r4   r9   rN   ri   rQ   Ú
resolutionÚattn_resolutionsÚ	attn_typerS   rT   rU   rW   rW   [   s]  € € € € € € ðð ð €IˆsÐÐÑØ€N�CÐÐÑØ€M�4ÐÐÑØ€O�SÐÐÑØ€K�ÐÐÑØ€K�ÐÐÑØ€L�#ÐÐÑØ€M�3ÐÐÑØ6EÐ˜˜Sœ	 E¨#¨s¨(¤OÑ3ÐEÐEÑEØ€N�CÐÐÑØ€GˆU�S‰[ÐÐÑØ#Ð�uÐ#Ð#Ñ#Ø€N�CÐÐÑØÐ�sÐÐÑØ€J�ÐÐÑØ!%Ð˜3Ð%Ð%Ñ%à�Ñ!Ô!€JØ%�~Ñ'Ô'ÐØ�Ñ Ô €I€I€IrT   rW   c                   óž   ‡ — e Zd ZU dZdZeeedœZdZ	e
ez  dz  ed<   dZe
ez  dz  ed<   dZe
ez  dz  ed<   dZeed	<   d
Zeed<   ˆ fd„Zˆ xZS )ÚJanusConfiga  
    Example:

    ```python
    >>> from transformers import JanusForConditionalGeneration, JanusConfig, JanusVisionConfig, JanusVQVAEConfig, LlamaConfig

    >>> # Initializing a Janus vision config
    >>> vision_config = JanusVisionConfig()

    >>> # Initializing a Llama config
    >>> text_config = LlamaConfig()

    >>> # Initializing a VQ config
    >>> vq_config = JanusVQVAEConfig()

    >>> # Initializing a Janus Pro 1B style configuration
    >>> configuration = JanusConfig(vision_config=vision_config, text_config=text_config, vq_config=vq_config)

    >>> # Initializing a model from the Janus Pro 1B style configuration
    >>> model = JanusForConditionalGeneration(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```Újanus)Útext_configÚvision_configÚ	vq_configNrp   rq   rr   iåˆ Úimage_token_idTÚtie_word_embeddingsc                 óR  •— t          | j        t          ¦  «        rK| j                             dd¦  «        | j        d<   t	          | j        d                  di | j        ¤Ž| _        n:| j        €3t
                               d¦  «         t	          d         ¦   «         | _        | j        €.t
                               d¦  «         t          ¦   «         | _        n0t          | j        t          ¦  «        rt          di | j        ¤Ž| _        | j	        €.t
                               d¦  «         t          ¦   «         | _	        n0t          | j	        t          ¦  «        rt          di | j	        ¤Ž| _	        | j        j        | j        j        z  | j	        _         t          ¦   «         j        di |¤Ž d S )NÚ
model_typeÚllamaz7`text_config` is None. Initializing with default valueszK`vision_config` is None. Initializing with default JanusVisionConfig valueszF`vq_config` is None. Initializing with default JanusVQVAEConfig valuesrS   )Ú
isinstancerp   ÚdictÚgetr   ÚloggerÚinforq   r1   rr   rW   r7   Ú
patch_sizer_   ÚsuperÚ__post_init__)ÚselfÚkwargsÚ	__class__s     €rU   r   zJanusConfig.__post_init__¬   s„  ø€ Ý�dÔ&­Ñ-Ô-ð 	9Ø-1Ô-=×-AÒ-AÀ,ÐPWÑ-XÔ-XˆDÔ˜\Ñ*Ý-¨dÔ.>¸|Ô.LÔMÐaÐaÐPTÔP`ÐaÐaˆDÔÐØÔÐ%Ý�KŠKÐQÑRÔRÐRÝ-¨gÔ6Ñ8Ô8ˆDÔàÔÐ%Ý�KŠKÐeÑfÔfÐfÝ!2Ñ!4Ô!4ˆDÔÐÝ˜Ô*­DÑ1Ô1ð 	IÝ!2Ð!HÐ!H°TÔ5GÐ!HÐ!HˆDÔàŒ>Ð!Ý�KŠKÐ`ÑaÔaÐaÝ-Ñ/Ô/ˆDŒNˆNÝ˜œ­Ñ-Ô-ð 	@Ý-Ð?Ð?°´Ð?Ð?ˆDŒNð &*Ô%7Ô%BÀdÔFXÔFcÑ%cˆŒÔ"Ø�‰ŒÔÐ'Ð' Ð'Ð'Ð'Ð'Ð'rT   )rF   rG   rH   rI   rv   r   r1   rW   Úsub_configsrp   ry   r   rK   rq   rr   rs   rJ   rt   rP   r   Ú__classcell__©r‚   s   @rU   rn   rn   ƒ   sÔ   ø€ € € € € € ðð ð2 €Jà!Ø*Ø%ðð €Kð 37€K�Ð(Ñ(¨4Ñ/Ð6Ð6Ñ6Ø48€M�4Ð*Ñ*¨TÑ1Ð8Ð8Ñ8Ø04€IˆtÐ&Ñ&¨Ñ-Ð4Ð4Ñ4Ø €N�CÐ Ð Ñ Ø $Ð˜Ð$Ð$Ñ$ð(ð (ð (ð (ð (ð (ð (ð (ð (rT   rn   c                   óR   ‡ — e Zd ZU eed<   dZdZdZddgZddgZ	dZ
dZdZˆ fd	„Zˆ xZS )
ÚJanusPreTrainedModelÚconfigÚmodel©ÚimageÚtextTÚLlamaDecoderLayerÚJanusVisionEncoderLayerÚpast_key_valuesÚcausal_maskc                 ó  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rQt	          j        |j        t          j        |j        j	        d         ¦  «         
                    d¦  «        ¦  «         d S d S )Néÿÿÿÿ)rd   r’   )r~   Ú_init_weightsrx   ÚJanusVisionEmbeddingsÚinitÚcopy_Úposition_idsÚtorchÚarangeÚshapeÚexpand)r€   Úmoduler‚   s     €rU   r“   z"JanusPreTrainedModel._init_weightsÒ   s{   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ3Ñ4Ô4ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhð	ið 	irT   )rF   rG   rH   rn   rK   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphr“   r„   r…   s   @rU   r‡   r‡   Å   s‰   ø€ € € € € € àÐÐÑØÐØ(ÐØ&*Ð#Ø,Ð.GÐHÐØ#4°mÐ"DÐØÐØ€Nà!Ððið ið ið ið ið ið ið ið irT   r‡   z9
    Base class for Janus VQ-VAE mode model outputs.
    )Úcustom_introc                   óP   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dS )ÚJanusVQVAEOutputzÿ
    decoded_pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
        Reconstructed pixel values after encoding and decoding the input.
    embedding_loss (`torch.FloatTensor`):
        Embedding loss.
    NÚdecoded_pixel_valuesÚembedding_loss)	rF   rG   rH   rI   r¨   r˜   ÚFloatTensorrK   r©   rS   rT   rU   r§   r§   Ø   sO   € € € € € € ðð ð 6:Ð˜%Ô+¨dÑ2Ð9Ð9Ñ9Ø/3€N�EÔ%¨Ñ,Ð3Ð3Ñ3Ð3Ð3rT   r§   c                   ó   — e Zd ZdS )ÚJanusBaseModelOutputWithPastN©rF   rG   rH   rS   rT   rU   r¬   r¬   ê   ó   € € € € € Ø€DrT   r¬   c                   ó   — e Zd ZdS )ÚJanusCausalLMOutputWithPastNr­   rS   rT   rU   r°   r°   î   r®   rT   r°   c                   ó8   — e Zd Zddej        dedej        fd„ZdS )r”   FÚpixel_valuesÚinterpolate_pos_encodingÚreturnc                 óV  — |j         \  }}}}| j        j        j        }|                      |                     |¬¦  «        ¦  «        }|                     d¦  «                             dd¦  «        }|r|                      |||¦  «        }	n|                      | j	        ¦  «        }	||	z   }|S )N)Údtyper   rd   )
rš   Úpatch_embeddingÚweightr¶   ÚtoÚflattenÚ	transposer³   Úposition_embeddingr—   )
r€   r²   r³   Ú_ÚheightÚwidthÚtarget_dtypeÚpatch_embedsÚ
embeddingsÚ
pos_embedss
             rU   ÚforwardzJanusVisionEmbeddings.forwardó   s­   € Ø*Ô0Ñˆˆ1ˆf�eØÔ+Ô2Ô8ˆØ×+Ò+¨L¯OªOÀ,¨OÑ,OÔ,OÑPÔPˆØ!×)Ò)¨!Ñ,Ô,×6Ò6°q¸!Ñ<Ô<ˆ
à#ð 	DØ×6Ò6°zÀ6È5ÑQÔQˆJˆJà×0Ò0°Ô1BÑCÔCˆJà *Ñ,ˆ
àÐrT   N)F)rF   rG   rH   r˜   ÚTensorrP   rÄ   rS   rT   rU   r”   r”   ò   sH   € € € € € ðð  E¤Lð ÈDð Ð]bÔ]ið ð ð ð ð ð rT   r”   c                   óf   ‡ — e Zd ZdZdefˆ fd„Z	 d	dej        dej        dz  dee	         fd„Z
ˆ xZS )
ÚJanusVisionAttentionz(Attention Class for Janus Vision Encoderrˆ   c                 ó6  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        | j        | j        z  | _        | j        | j        z  | j        k    r t          d| j        › d| j        › d�¦  «        ‚| j        dz  | _	        |j
        | _
        |j        }|j        }d| _        d| _        t          j        | j        | j        | j        z  |j        ¬¦  «        | _        t          j        | j        | j        | j        z  |j        ¬¦  «        | _        t          j        | j        | j        | j        z  |j        ¬¦  «        | _        t          j        | j        | j        ¦  «        | _        |dk    rt          j        |¦  «        nt          j        ¦   «         | _        |rt          j        | j        ¦  «        nt          j        ¦   «         | _        |rt          j        | j        ¦  «        nt          j        ¦   «         | _        d S )	Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).g      à¿Frd   ©Úbiasr   )r~   Ú__init__rˆ   r2   rY   r6   Ú	num_headsÚhead_dimÚ
ValueErrorÚscaleÚattention_dropoutr@   rA   Ú	is_causalÚnum_key_value_groupsr   ÚLinearr;   Úq_projÚk_projÚv_projÚprojection_layerÚDropoutÚIdentityÚ	LayerNormÚq_normÚk_norm)r€   rˆ   Úproj_dropoutÚqk_normr‚   s       €rU   rË   zJanusVisionAttention.__init__  sÑ  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØÔ3ˆŒØœ¨$¬.Ñ8ˆŒØŒ=˜4œ>Ñ)¨T¬^Ò;Ð;Ýð'ÈdÌnð 'ð 'Ø”Nð'ð 'ð 'ñô ð ð ”] DÑ(ˆŒ
Ø!'Ô!9ˆÔØÔ0ˆØÔ$ˆØˆŒð %&ˆÔ!å”i ¤°´ÀÄÑ0NÐU[ÔUjÐkÑkÔkˆŒÝ”i ¤°´ÀÄÑ0NÐU[ÔUjÐkÑkÔkˆŒÝ”i ¤°´ÀÄÑ0NÐU[ÔUjÐkÑkÔkˆŒÝ "¤	¨$¬.¸$¼.Ñ IÔ IˆÔØ>JÈQÒ>NÐ>N¥"¤*¨\Ñ":Ô":Ð":ÕTVÔT_ÑTaÔTaˆÔà6=ÐP•b”l 4¤>Ñ2Ô2Ð2Å2Ä;Á=Ä=ˆŒØ6=ÐP•b”l 4¤>Ñ2Ô2Ð2Å2Ä;Á=Ä=ˆŒˆˆrT   NÚhidden_statesÚattention_maskr�   c                 ó   — |                      ¦   «         \  }}}|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }	|                     d| j        | j        ¦  «        }|                      |¦  «        }|                     d| j        | j        ¦  «        }|                      |¦  «        }|                     ||| j        | j        ¦  «         	                    dd¦  «        }|                     ||| j        | j        ¦  «         	                    dd¦  «        }|	 
                    ||| j        | j        ¦  «         	                    dd¦  «        }	t          j        | j        j        t          ¦  «        }
 |
| |||	|f| j        sdn| j        | j        | j        dœ|¤Ž\  }}|                     ||| j        ¦  «        }|                      |¦  «        }|                      |¦  «        }||fS )Nr’   rd   r   r<   )rh   ÚscalingrÑ   )ÚsizerÔ   rÕ   rÖ   ÚreshaperÌ   rÍ   rÛ   rÜ   r»   Úviewr   Úget_interfacerˆ   Ú_attn_implementationr*   ÚtrainingrÐ   rÏ   rÑ   rY   r×   r@   )r€   rß   rà   r�   Ú
batch_sizeÚseq_lenr½   Úquery_statesÚ
key_statesÚvalue_statesÚattention_interfaceÚattn_outputÚattn_weightsÚoutputs                 rU   rÄ   zJanusVisionAttention.forward#  sù  € ð "/×!3Ò!3Ñ!5Ô!5Ñˆ
�G˜Qà—{’{ =Ñ1Ô1ˆØ—[’[ Ñ/Ô/ˆ
Ø—{’{ =Ñ1Ô1ˆà#×+Ò+¨B°´ÀÄÑNÔNˆØ—{’{ <Ñ0Ô0ˆà×'Ò'¨¨D¬N¸D¼MÑJÔJˆ
Ø—[’[ Ñ,Ô,ˆ
à#×+Ò+¨J¸ÀÄÐQUÔQ^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆØ×'Ò'¨
°G¸T¼^ÈTÌ]Ñ[Ô[×eÒeÐfgÐijÑkÔkˆ
Ø#×(Ò(¨°W¸d¼nÈdÌmÑ\Ô\×fÒfÐghÐjkÑlÔlˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð
%
ð  $œ}ÐH�C�C°$Ô2HØ”JØ”nð
%
ð 
%
ð ð
%
ð 
%
Ñ!ˆ�\ð "×)Ò)¨*°g¸t¼~ÑNÔNˆà×&Ò& {Ñ3Ô3ˆØ×(Ò(¨Ñ0Ô0ˆØ�|Ð#Ð#rT   ©N)rF   rG   rH   rI   r1   rË   r˜   rÅ   r   r   rÄ   r„   r…   s   @rU   rÇ   rÇ     sœ   ø€ € € € € Ø2Ð2ðQÐ0ð Qð Qð Qð Qð Qð Qð@ /3ð)$ð )$à”|ð)$ð œ tÑ+ð)$ð Ð+Ô,ð	)$ð )$ð )$ð )$ð )$ð )$ð )$ð )$rT   rÇ   c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚJanusVisionMLPrˆ   c                 óÎ  •— t          ¦   «                              ¦   «          || _        t          |j        |j        z  ¦  «        | _        t          |j                 | _	        t          j        |j        | j        ¦  «        | _        t          j        | j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        d S rò   )r~   rË   rˆ   rJ   r2   r:   rR   r	   r9   Úactivation_fnr   rÓ   Úfc1Úfc2rØ   r=   Údropout1Údropout2©r€   rˆ   r‚   s     €rU   rË   zJanusVisionMLP.__init__P  s©   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ!$ VÔ%7¸&Ô:JÑ%JÑ!KÔ!KˆÔÝ# FÔ$5Ô6ˆÔÝ”9˜VÔ/°Ô1GÑHÔHˆŒÝ”9˜TÔ3°VÔ5GÑHÔHˆŒÝœ
 6Ô#=Ñ>Ô>ˆŒÝœ
 6Ô#=Ñ>Ô>ˆŒˆˆrT   rß   r´   c                 óØ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rò   )r÷   rö   rù   rø   rú   ©r€   rß   s     rU   rÄ   zJanusVisionMLP.forwardZ  s_   € ØŸš Ñ/Ô/ˆØ×*Ò*¨=Ñ9Ô9ˆØŸš mÑ4Ô4ˆØŸš Ñ/Ô/ˆØŸš mÑ4Ô4ˆØÐrT   )	rF   rG   rH   r1   rË   r˜   rÅ   rÄ   r„   r…   s   @rU   rô   rô   O  sk   ø€ € € € € ð?Ð0ð ?ð ?ð ?ð ?ð ?ð ?ð U¤\ð °e´lð ð ð ð ð ð ð ð rT   rô   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )rŽ   rˆ   c                 óT  •— t          ¦   «                              |¦  «         || _        |j        | _        t          |¦  «        | _        t          j        | j        |j	        ¬¦  «        | _
        t          j        | j        |j	        ¬¦  «        | _        t          |¦  «        | _        d S )N)Úeps)r~   rË   rˆ   r2   rY   rÇ   Ú	self_attnr   rÚ   Úlayer_norm_epsÚlayer_norm1Úlayer_norm2rô   Úmlprû   s     €rU   rË   z JanusVisionEncoderLayer.__init__d  s†   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒØÔ+ˆŒÝ-¨fÑ5Ô5ˆŒÝœ<¨¬¸FÔ<QÐRÑRÔRˆÔÝœ<¨¬¸FÔ<QÐRÑRÔRˆÔÝ! &Ñ)Ô)ˆŒˆˆrT   ©rF   rG   rH   r1   rË   r„   r…   s   @rU   rŽ   rŽ   c  sE   ø€ € € € € ð*Ð0ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *rT   rŽ   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚJanusVisionEncoderrˆ   c                 óº   •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS rS   )rŽ   ©Ú.0r½   rˆ   s     €rU   ú
<listcomp>z/JanusVisionEncoder.__init__.<locals>.<listcomp>q  s"   ø€ Ð$nÐ$nÐ$nÈÕ%<¸VÑ%DÔ%DÐ$nÐ$nÐ$nrT   )r~   rË   r   Ú
ModuleListÚranger4   Úlayersrû   s    `€rU   rË   zJanusVisionEncoder.__init__o  sR   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”mÐ$nÐ$nÐ$nÐ$nÍeÐTZÔTlÑNmÔNmÐ$nÑ$nÔ$nÑoÔoˆŒˆˆrT   r  r…   s   @rU   r  r  n  sP   ø€ € € € € ðpÐ0ð pð pð pð pð pð pð pð pð pð prT   r  c            
       ón   ‡ — e Zd ZeedœZdefˆ fd„Z	 	 ddej	        dz  de
dee         d	eez  fd
„Zˆ xZS )ÚJanusVisionModel©rß   Ú
attentionsrˆ   c                 ór   •— t          ¦   «                              |¦  «         t          |¦  «        | _        d S rò   )r~   rË   r  Úencoderrû   s     €rU   rË   zJanusVisionModel.__init__z  s.   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý)¨&Ñ1Ô1ˆŒˆˆrT   NFr²   r³   r�   r´   c                 ó  — |€t          d¦  «        ‚|                      ||¬¦  «        } | j        dd|i|¤Ž}|j        }|                      |¦  «        }|d d …dd d …f         }|                      |¦  «        }t          ||¬¦  «        S )Nz You have to specify pixel_values)r³   Úinputs_embedsr   )Úlast_hidden_stateÚpooler_outputrS   )rÎ   rÂ   r  r  Úpost_layernormr   )r€   r²   r³   r�   rß   Úencoder_outputsr  Úpooled_outputs           rU   rÄ   zJanusVisionModel.forward~  s¿   € ð ÐÝÐ?Ñ@Ô@Ð@àŸš¨ÐOg˜ÑhÔhˆà+7¨4¬<ð ,
ð ,
Ø'ð,
àð,
ð ,
ˆð
 ,Ô=ÐØ ×/Ò/Ð0AÑBÔBÐà)¨!¨!¨!¨Q°°°¨'Ô2ˆØ×+Ò+¨MÑ:Ô:ˆå)Ø/Ø'ð
ñ 
ô 
ð 	
rT   ©NF)rF   rG   rH   rŽ   rÇ   Ú_can_record_outputsr1   rË   r˜   rª   rP   r   r   rM   r   rÄ   r„   r…   s   @rU   r  r  t  s³   ø€ € € € € à0Ø*ðð Ðð
2Ð0ð 2ð 2ð 2ð 2ð 2ð 2ð 26Ø).ð
ð 
àÔ'¨$Ñ.ð
ð #'ð
ð Ð+Ô,ð	
ð
 
Ð+Ñ	+ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rT   r  c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚJanusVisionAlignerMLPrˆ   c                 ó0  •‡— t          ¦   «                              ¦   «          t          j        ‰j        ‰j        ¦  «        | _        t          j        ˆfd„t          d‰j	        ¦  «        D ¦   «         ¦  «        | _
        t          ‰j                 | _        d S )Nc                 óN   •— g | ]!}t          j        ‰j        ‰j        ¦  «        ‘Œ"S rS   ©r   rÓ   r?   r  s     €rU   r  z2JanusVisionAlignerMLP.__init__.<locals>.<listcomp>   s+   ø€ ÐeÐeÐeÈ�RŒY�vÔ,¨fÔ.CÑDÔDÐeÐeÐerT   rd   )r~   rË   r   rÓ   r2   r?   r÷   r  r  rD   Úhidden_layersr	   r9   rö   rû   s    `€rU   rË   zJanusVisionAlignerMLP.__init__›  s…   øø€ Ý‰Œ×ÒÑÔÐå”9˜VÔ/°Ô1FÑGÔGˆŒÝœ]ØeÐeÐeÐeÍeÐTUÐW]ÔWcÑNdÔNdÐeÑeÔeñ
ô 
ˆÔõ $ FÔ$5Ô6ˆÔÐÐrT   c                 ó„   — |                       |¦  «        }| j        D ]"}|                      |¦  «        } ||¦  «        }Œ#|S rò   ©r÷   r%  rö   ©r€   rß   Úlayers      rU   rÄ   zJanusVisionAlignerMLP.forward¤  óO   € ØŸš Ñ/Ô/ˆØÔ'ð 	1ð 	1ˆEØ ×.Ò.¨}Ñ=Ô=ˆMØ!˜E -Ñ0Ô0ˆMˆMØÐrT   )rF   rG   rH   r1   rË   rÄ   r„   r…   s   @rU   r!  r!  š  sT   ø€ € € € € ð7Ð0ð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð rT   r!  c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚJanusVQVAEVectorQuantizerrˆ   c                 ój   •— t          ¦   «                              |¦  «         |j        gdz  | _        d S )Nr   )r~   rË   r_   Úquant_state_dimsrû   s     €rU   rË   z"JanusVQVAEVectorQuantizer.__init__­  s4   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!'Ô!3Ð 4°qÑ 8ˆÔÐÐrT   Úimage_tokensr´   c                 ó:  — |j         d         }| j        j        j         d         }|                      |¦  «        }t          j        |dd¬¦  «        }|                     |g| j        ¢|‘R ¦  «        }|                     dddd¦  «                             ¦   «         }|S )Nr   r’   r   )ÚpÚdimr   rd   )	rš   Ú	embeddingr¸   ÚFÚ	normalizerå   r.  ÚpermuteÚ
contiguous)r€   r/  ré   Úemb_dimÚhidden_state_quants        rU   Úget_codebook_entryz,JanusVQVAEVectorQuantizer.get_codebook_entry±  s£   € Ø!Ô'¨Ô*ˆ
Ø”~Ô,Ô2°2Ô6ˆð "Ÿ^š^¨LÑ9Ô9Ðåœ[Ð);¸qÀbÐIÑIÔIÐð 0×4Ò4°jÐ5bÀ4ÔCXÐ5bÐZaÐ5bÐ5bÑcÔcÐØ/×7Ò7¸¸1¸aÀÑCÔC×NÒNÑPÔPÐà!Ð!rT   )
rF   rG   rH   rW   rË   r˜   Ú
LongTensorrª   r:  r„   r…   s   @rU   r,  r,  ¬  sm   ø€ € € € € ð9Ð/ð 9ð 9ð 9ð 9ð 9ð 9ð"¨uÔ/?ð "ÀEÔDUð "ð "ð "ð "ð "ð "ð "ð "rT   r,  c                   ó   — e Zd ZdS )ÚJanusVQVAEResnetBlockNr­   rS   rT   rU   r=  r=  Á  r®   rT   r=  c                   ó   — e Zd ZdS )ÚJanusVQVAEAttnBlockNr­   rS   rT   rU   r?  r?  Å  r®   rT   r?  c                   ó   — e Zd ZdS )ÚJanusVQVAEConvDownsampleNr­   rS   rT   rU   rA  rA  É  r®   rT   rA  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚJanusVQVAEConvUpsamplec                 óš   •— t          ¦   «                              ¦   «          t          j                             ||ddd¬¦  «        | _        d S )Nr   rd   ©Úkernel_sizeÚstrideÚpadding)r~   rË   r˜   r   ÚConv2dÚconv)r€   r`   r‚   s     €rU   rË   zJanusVQVAEConvUpsample.__init__Î  s>   ø€ Ý‰Œ×ÒÑÔÐÝ”H—O’O K°È!ÐTUÐ_`�OÑaÔaˆŒ	ˆ	ˆ	rT   c                 ó^   — t          j        |dd¬¦  «        }|                      |¦  «        }|S )Ng       @Únearest)Úscale_factorÚmode)r4  ÚinterpolaterJ  rý   s     rU   rÄ   zJanusVQVAEConvUpsample.forwardÒ  s/   € Ýœ mÀ#ÈIÐVÑVÔVˆØŸ	š	 -Ñ0Ô0ˆØÐrT   )rF   rG   rH   rË   rÄ   r„   r…   s   @rU   rC  rC  Í  sL   ø€ € € € € ðbð bð bð bð bðð ð ð ð ð ð rT   rC  c                   óL   ‡ — e Zd Zdedefˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚJanusVQVAEMidBlockrˆ   Úchannelsc                 óÌ   •— t          ¦   «                              ¦   «          t          |||¬¦  «        | _        t	          |¦  «        | _        t          |||¬¦  «        | _        d S )N©rˆ   r`   ra   )r~   rË   r=  Úblock_1r?  Úattn_1Úblock_2)r€   rˆ   rR  r‚   s      €rU   rË   zJanusVQVAEMidBlock.__init__Ù  sl   ø€ Ý‰Œ×ÒÑÔÐÝ,ØØ Ø!ð
ñ 
ô 
ˆŒõ
 *¨(Ñ3Ô3ˆŒÝ,ØØ Ø!ð
ñ 
ô 
ˆŒˆˆrT   rß   r´   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rò   )rU  rV  rW  rý   s     rU   rÄ   zJanusVQVAEMidBlock.forwardç  s;   € ØŸš ]Ñ3Ô3ˆØŸš MÑ2Ô2ˆØŸš ]Ñ3Ô3ˆØÐrT   )
rF   rG   rH   rW   rJ   rË   r˜   rÅ   rÄ   r„   r…   s   @rU   rQ  rQ  Ø  sr   ø€ € € € € ð
Ð/ð 
¸3ð 
ð 
ð 
ð 
ð 
ð 
ð U¤\ð °e´lð ð ð ð ð ð ð ð rT   rQ  c                   ó4   ‡ — e Zd Zˆ fd„Zdej        fd„Zˆ xZS )ÚJanusVQVAEEncoderc           	      ó¦  •— t          ¦   «                              ¦   «          t          |j        ¦  «        | _        |j        | _        |j        }|j        }|j        }|j	        }|j        }t          j                             ||ddd¬¦  «        | _        dt          |¦  «        z   }|| _        t          j        ¦   «         | _        t%          | j        ¦  «        D �]
}t          j        ¦   «         }	t          j        ¦   «         }
|||         z  }|||         z  }t%          | j        ¦  «        D ]Y}|	                     t)          |||¬¦  «        ¦  «         |}|| j        dz
  k    r"|
                     t+          |¦  «        ¦  «         ŒZt          j        ¦   «         }|	|_        |
|_        || j        dz
  k    rt3          |¦  «        |_        | j                             |¦  «         �Œt7          ||¦  «        | _        t          j                             d|dd¬	¦  «        | _        t          j                             ||rd
|z  n|ddd¬¦  «        | _        d S )Nr   rd   rE  )rd   rT  r^   ç�íµ ÷Æ°>T©Ú
num_groupsÚnum_channelsr   Úaffiner   ) r~   rË   Úlenrf   Únum_resolutionsrg   rc   r`   r[   r]   r˜   r   rI  Úconv_inrM   Úin_channel_multiplierr  Údownr  Úappendr=  r?  ÚModuleÚblockÚattnrA  Ú
downsamplerQ  ÚmidÚ	GroupNormÚnorm_outÚconv_out)r€   rˆ   rc   r`   r[   r]   rf   rd  Úi_levelrh  ri  Úblock_inÚ	block_outÚi_blockre  r‚   s                  €rU   rË   zJanusVQVAEEncoder.__init__ï  s@  ø€ Ý‰Œ×ÒÑÔÐå" 6Ô#<Ñ=Ô=ˆÔØ$Ô3ˆÔØÔ,ˆØÔ(ˆØÔ,ˆØ Ô0ˆØ#Ô6Ðå”x—’ {°MÈqÐYZÐde�ÑfÔfˆŒà $¥uÐ-?Ñ'@Ô'@Ñ @ÐØ%:ˆÔ"Ý”M‘O”OˆŒ	Ý˜TÔ1Ñ2Ô2ð 	#ñ 	#ˆGÝ”M‘O”OˆEÝ”=‘?”?ˆDØ$Ð'<¸WÔ'EÑEˆHØ%Ð(:¸7Ô(CÑCˆIÝ  Ô!4Ñ5Ô5ð 
?ð 
?�Ø—’Ý)Ø%Ø$,Ø%.ðñ ô ñô ð ð %�Ø˜dÔ2°QÑ6Ò6Ð6Ø—K’KÕ 3°HÑ =Ô =Ñ>Ô>Ð>øå”9‘;”;ˆDØˆDŒJØˆDŒIØ˜$Ô.°Ñ2Ò2Ð2Ý":¸8Ñ"DÔ"D�”ØŒI×Ò˜TÑ"Ô"Ð"Ñ"å% f¨hÑ7Ô7ˆŒåœ×*Ò*°bÀxÐUYÐbfÐ*ÑgÔgˆŒÝœŸšØØ#0ÐEˆA�ÑÐ°oØØØð (ñ 
ô 
ˆŒˆˆrT   r²   c                 óØ  — |                       |¦  «        g}t          | j        ¦  «        D ]à}t          | j        ¦  «        D ]‚} | j        |         j        |         |d         ¦  «        }t          | j        |         j        ¦  «        dk    r! | j        |         j        |         |¦  «        }|                     |¦  «         Œƒ|| j        dz
  k    r9|                     | j        |          	                    |d         ¦  «        ¦  «         Œá|d         }|  
                    |¦  «        }|                      |¦  «        }|t          j        |¦  «        z  }|                      |¦  «        }|S )Nr’   r   rd   )rc  r  rb  rg   re  rh  ra  ri  rf  rj  rk  rm  r˜   Úsigmoidrn  )r€   r²   rß   ro  rr  Úhidden_stater  s          rU   rÄ   zJanusVQVAEEncoder.forward"  so  € àŸš lÑ3Ô3Ð4ˆÝ˜TÔ1Ñ2Ô2ð 		Wð 		WˆGÝ  Ô!4Ñ5Ô5ð 3ð 3�Ø@˜tœy¨Ô1Ô7¸Ô@Ø! "Ô%ñ ô  �õ �t”y Ô)Ô.Ñ/Ô/°!Ò3Ð3Ø#C 4¤9¨WÔ#5Ô#:¸7Ô#CÀLÑ#QÔ#Q�LØ×$Ò$ \Ñ2Ô2Ð2Ð2Ø˜$Ô.°Ñ2Ò2Ð2Ø×$Ò$ T¤Y¨wÔ%7×%BÒ%BÀ=ÐQSÔCTÑ%UÔ%UÑVÔVÐVøð *¨"Ô-ÐØ ŸHšHÐ%6Ñ7Ô7Ðð !ŸMšMÐ*;Ñ<Ô<ÐØ�Uœ]Ð+<Ñ=Ô=Ñ=ÐØ ŸMšMÐ*;Ñ<Ô<ÐØ Ð rT   )rF   rG   rH   rË   r˜   r;  rÄ   r„   r…   s   @rU   rZ  rZ  î  sW   ø€ € € € € ð1
ð 1
ð 1
ð 1
ð 1
ðf! EÔ$4ð !ð !ð !ð !ð !ð !ð !ð !rT   rZ  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚJanusVQVAEDecoderc           	      óz  •— t          ¦   «                              ¦   «          t          |j        ¦  «        | _        |j        | _        |j        }|j        }|j        }||j        | j        dz
           z  }t          j
                             ||ddd¬¦  «        | _        t          ||¦  «        | _        t          j        ¦   «         | _        t#          t%          | j        ¦  «        ¦  «        D ]þ}t          j        ¦   «         }t          j        ¦   «         }||j        |         z  }	t%          | j        dz   ¦  «        D ]Y}
|                     t)          |||	¬¦  «        ¦  «         |	}|| j        dz
  k    r"|                     t+          |¦  «        ¦  «         ŒZt          j        ¦   «         }||_        ||_        |dk    rt3          |¦  «        |_        | j                             |¦  «         Œÿt          j
                             d|dd¬	¦  «        | _        t          j
                             ||ddd¬¦  «        | _        d S )
Nrd   r   rE  rT  r   r^   r\  Tr]  )r~   rË   ra  rf   rb  rg   rc   r]   ra   r˜   r   rI  rc  rQ  rk  r  ÚupÚreversedr  rf  r=  r?  rg  rh  ri  rC  Úupsamplerl  rm  rn  )r€   rˆ   rc   r]   ra   rp  ro  rh  ri  rq  rr  ry  r‚   s               €rU   rË   zJanusVQVAEDecoder.__init__<  s  ø€ Ý‰Œ×ÒÑÔÐå" 6Ô#<Ñ=Ô=ˆÔØ$Ô3ˆÔØÔ,ˆØ Ô0ˆØÔ*ˆð ! 6Ô#<¸TÔ=QÐTUÑ=UÔ#VÑVˆõ ”x—’ ¸ÈaÐXYÐcd�ÑeÔeˆŒõ & f¨hÑ7Ô7ˆŒõ ”-‘/”/ˆŒÝ¥ dÔ&:Ñ ;Ô ;Ñ<Ô<ð 	ð 	ˆGÝ”M‘O”OˆEÝ”=‘?”?ˆDØ%¨Ô(AÀ'Ô(JÑJˆIÝ  Ô!4°qÑ!8Ñ9Ô9ð 
?ð 
?�Ø—’Ý)Ø%Ø$,Ø%.ðñ ô ñô ð ð %�Ø˜dÔ2°QÑ6Ò6Ð6Ø—K’KÕ 3°HÑ =Ô =Ñ>Ô>Ð>øÝ”‘”ˆBØˆBŒHØˆBŒGØ˜!Š|ˆ|Ý4°XÑ>Ô>�”ØŒG�NŠN˜2ÑÔÐÐõ œ×*Ò*°bÀxÐUYÐbfÐ*ÑgÔgˆŒÝœŸš¨°,ÈAÐVWÐab˜ÑcÔcˆŒˆˆrT   ru  r´   c                 ód  — |                       |¦  «        }|                      |¦  «        }t          | j        ¦  «        D ]¯}t          | j        dz   ¦  «        D ]g} | j        |         j        |         |¦  «        }t          | j        |         j        ¦  «        dk    r! | j        |         j        |         |¦  «        }Œh|| j        dz
  k    r | j        |          	                    |¦  «        }Œ°|  
                    |¦  «        }|t          j        |¦  «        z  }|                      |¦  «        }|S )Nrd   r   )rc  rk  r  rb  rg   ry  rh  ra  ri  r{  rm  r˜   rt  rn  )r€   ru  ro  rr  s       rU   rÄ   zJanusVQVAEDecoder.forwardj  s)  € Ø—|’| LÑ1Ô1ˆð —x’x Ñ-Ô-ˆõ ˜TÔ1Ñ2Ô2ð 	Gð 	GˆGÝ  Ô!4°qÑ!8Ñ9Ô9ð Pð P�Ø>˜tœw wÔ/Ô5°gÔ>¸|ÑLÔL�Ý�t”w˜wÔ'Ô,Ñ-Ô-°Ò1Ð1Ø#A 4¤7¨7Ô#3Ô#8¸Ô#AÀ,Ñ#OÔ#O�LøØ˜$Ô.°Ñ2Ò2Ð2Ø#œw wÔ/×8Ò8¸ÑFÔF�øà—}’} \Ñ2Ô2ˆØ�œ lÑ3Ô3Ñ3ˆØ—}’} \Ñ2Ô2ˆØÐrT   )rF   rG   rH   rË   r˜   rª   rÄ   r„   r…   s   @rU   rw  rw  ;  sf   ø€ € € € € ð,dð ,dð ,dð ,dð ,dð\ EÔ$5ð ¸%Ô:Kð ð ð ð ð ð ð ð rT   rw  c                   ó¼   ‡ — e Zd Zg d¢ZeedœZdZdefˆ fd„Z	de
j        de
j        fd„Zeede
j        dee
j        e
j        f         fd	„¦   «         ¦   «         Zˆ xZS )
Ú
JanusVQVAE)r?  r=  r,  r  r²   rˆ   c                 ó¨   •— t          ¦   «                              |¦  «         t          |¦  «        | _        d| _        |                      ¦   «          d S r  )r~   rË   rw  ÚdecoderÚgradient_checkpointingÚ	post_initrû   s     €rU   rË   zJanusVQVAE.__init__‹  sJ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý(¨Ñ0Ô0ˆŒØ&+ˆÔ#ð 	�ŠÑÔÐÐÐrT   r/  r´   c                 ór  — |j         d         | j        j        d         | j        j        d         z  k    r>t          d| j        j        d         | j        j        d         z  › d|j         › d�¦  «        ‚| j                             |¦  «        }|                      |¦  «        }|                      |¦  «        }|S )aG  
        Decodes quantized token IDs into pixel values.
        Args:
            image_tokens (torch.LongTensor): Batch of token IDs.
        Returns:
            pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
                Pixel values decoded from the token IDs.
        rd   r   z4Expected `image_tokens` to have shape `(batch_size, z)`, but got shape `z`.)rš   Úquantizer.  rÎ   r:  Úpost_quant_convr€  )r€   r/  Úcodebook_entryrß   r²   s        rU   ÚdecodezJanusVQVAE.decode“  s×   € ð Ô˜aÔ  D¤MÔ$BÀ1Ô$EÈÌÔHfÐghÔHiÑ$iÒiÐiÝð9ÀtÄ}ÔGeÐfgÔGhÐkoÔkxô  lJð  KLô  lMñ  HMð 9ð 9Ø".Ô"4ð9ð 9ð 9ñô ð ð œ×9Ò9¸,ÑGÔGˆØ×,Ò,¨^Ñ<Ô<ˆØ—|’| MÑ2Ô2ˆØÐrT   c                 óÂ   — |j         d         } | j        |fddi|¤Ž}|                      |j                             |d¦  «        ¦  «        }t          ||j        ¦  «        S )Nr   Úreturn_dictTr’   )rš   Úencoder‡  r/  rå   r§   r©   )r€   r²   r�   ré   Úencode_outputsr¨   s         rU   rÄ   zJanusVQVAE.forward¦  si   € ð "Ô'¨Ô*ˆ
Ø$˜œ \ÐNÐN¸tÐNÀvÐNÐNˆØ#Ÿ{š{¨>Ô+F×+KÒ+KÈJÐXZÑ+[Ô+[Ñ\Ô\ÐåÐ 4°nÔ6SÑTÔTÐTrT   )rF   rG   rH   r    r=  r?  r  Úmain_input_namerW   rË   r˜   r;  rª   r‡  r   r   rM   rÄ   r„   r…   s   @rU   r~  r~    sõ   ø€ € € € € ðð ð Ðð /Ø)ðð Ðð %€OðÐ/ð ð ð ð ð ð ð 5Ô#3ð ¸Ô8Ið ð ð ð ð& Øð	UàÔ'ð	Uð 
ˆuÔ  %Ô"3Ð3Ô	4ð		Uð 	Uð 	Uñ „^ñ Ôð	Uð 	Uð 	Uð 	Uð 	UrT   r~  c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚJanusVQVAEAlignerMLPrˆ   c                 ó0  •‡— t          ¦   «                              ¦   «          t          j        ‰j        ‰j        ¦  «        | _        t          j        ˆfd„t          d‰j	        ¦  «        D ¦   «         ¦  «        | _
        t          ‰j                 | _        d S )Nc                 óN   •— g | ]!}t          j        ‰j        ‰j        ¦  «        ‘Œ"S rS   r$  r  s     €rU   r  z1JanusVQVAEAlignerMLP.__init__.<locals>.<listcomp>º  s+   ø€ ÐqÐqÐqÈ�RŒY�vÔ,¨fÔ.CÑDÔDÐqÐqÐqrT   rd   )r~   rË   r   rÓ   rY   r?   r÷   r  r  r4   r%  r	   r9   rö   rû   s    `€rU   rË   zJanusVQVAEAlignerMLP.__init__µ  s…   øø€ Ý‰Œ×ÒÑÔÐå”9˜VÔ-¨vÔ/DÑEÔEˆŒÝœ]ØqÐqÐqÐqÍeÐTUÐW]ÔWoÑNpÔNpÐqÑqÔqñ
ô 
ˆÔõ $ FÔ$5Ô6ˆÔÐÐrT   c                 ó„   — |                       |¦  «        }| j        D ]"}|                      |¦  «        } ||¦  «        }Œ#|S rò   r'  r(  s      rU   rÄ   zJanusVQVAEAlignerMLP.forward¾  r*  rT   )rF   rG   rH   rW   rË   rÄ   r„   r…   s   @rU   rŽ  rŽ  ´  sT   ø€ € € € € ð7Ð/ð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð rT   rŽ  c                   óL   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        fd„Z	ˆ xZ
S )ÚJanusVQVAEHeadzOHead used for sampling tokens in image generation, replacing the usual lm head.rˆ   c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j                 | _	        t          j        |j        |j
        ¦  «        | _        d S rò   )r~   rË   r   rÓ   ri   r?   Úproj_outr	   r9   rö   rZ   Úvision_headrû   s     €rU   rË   zJanusVQVAEHead.__init__É  sb   ø€ Ý‰Œ×ÒÑÔÐÝœ	 &Ô">ÀÔ@UÑVÔVˆŒÝ# FÔ$5Ô6ˆÔÝœ9 VÔ%:¸FÔ<QÑRÔRˆÔÐÐrT   rß   r´   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rò   )r•  rö   r–  rý   s     rU   rÄ   zJanusVQVAEHead.forwardÏ  s?   € ØŸš mÑ4Ô4ˆØ×*Ò*¨=Ñ9Ô9ˆØ×(Ò(¨Ñ7Ô7ˆØÐrT   )rF   rG   rH   rI   rW   rË   r˜   rÅ   ÚtensorrÄ   r„   r…   s   @rU   r“  r“  Æ  sx   ø€ € € € € ØYÐYðSÐ/ð Sð Sð Sð Sð Sð Sð U¤\ð °e´lð ð ð ð ð ð ð ð rT   r“  zl
    The Janus model which consists of a siglip vision backbone, a Llama language model and a VQ model.
    c                   óp  ‡ — e Zd Zdefˆ fd„Zeedej        de	e
         deez  fd„¦   «         ¦   «         Zdej        dej        d	ej        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dz  dej        dz  dedz  deej        z  defd„¦   «         ¦   «         Zˆ xZS )Ú
JanusModelrˆ   c                 ó€  •— t          ¦   «                              |¦  «         || _        t                               |j        ¦  «        | _        t          | j        j        ¦  «        | _        t                               |j
        ¦  «        | _        t          j        | j        j        j        | j        j        j        ¦  «        | _        t#          | j        j        ¦  «        | _        t'          | j        j        ¦  «        | _        t+          j        |j        ¬¦  «        | _        d| _        |                      ¦   «          d S )N)rˆ   F)r~   rË   rˆ   r  Ú_from_configrq   Úvision_modelr!  Úalignerr~  rr   Úvqmodelr   Ú	EmbeddingrZ   rY   Úgeneration_embeddingsrŽ  Úgeneration_alignerr“  Úgeneration_headr    Úfrom_configrp   Úlanguage_modelr�  r‚  rû   s     €rU   rË   zJanusModel.__init__Ü  sñ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå,×9Ò9¸&Ô:NÑOÔOˆÔÝ,¨TÔ->Ô-EÑFÔFˆŒå!×.Ò.¨vÔ/?Ñ@Ô@ˆŒõ &(¤\°$´,Ô2EÔ2TÐVZÔVbÔViÔVsÑ%tÔ%tˆÔ"Ý"6°t´|Ô7JÑ"KÔ"KˆÔÝ-¨d¬lÔ.AÑBÔBˆÔå'Ô3¸6Ô;MÐNÑNÔNˆÔà&+ˆÔ#à�ŠÑÔÐÐÐrT   r²   r�   r´   c                 ód   —  | j         |fddi|¤Ž}|                      |j        ¦  «        |_        |S )Nr‰  T)r�  rž  r  r  )r€   r²   r�   Úvision_outputss       rU   Úget_image_featureszJanusModel.get_image_featuresñ  s@   € ð
 +˜Ô*¨<ÐTÐTÀTÐTÈVÐTÐTˆØ'+§|¢|°NÔ4TÑ'UÔ'UˆÔ$àÐrT   Ú	input_idsr  Úimage_featuresc                 ó   — |€e| |                       ¦   «         t          j        | j        j        t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }n|| j        j        k    }|                     ¦   «         }|j	        d         |j	        d         z  }| 
                    d¦  «                             |j        ¦  «        }t          ||j	        d         z  |                     ¦   «         k    d|› d|› �¦  «         |S )zï
        Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
        equal to the length of multimodal features. If the lengths are different, an error is raised.
        N©r¶   Údevicer’   r   rd   z6Image features and image tokens do not match, tokens: z, features: )Úget_input_embeddingsr˜   r˜  rˆ   rs   Úlongr­  ÚallÚsumrš   Ú	unsqueezer¹   r   Únumel)r€   r©  r  rª  Úspecial_image_maskÚn_image_tokensÚn_image_featuress          rU   Úget_placeholder_maskzJanusModel.get_placeholder_maskû  s  € ð ÐØ!.Ð2M°$×2KÒ2KÑ2MÔ2MÝ”˜Tœ[Ô7½u¼zÐR_ÔRfÐgÑgÔgñ3ô 3ò "Ðð "4×!7Ò!7¸Ñ!;Ô!;ÐÐà!*¨d¬kÔ.HÒ!HÐà+×/Ò/Ñ1Ô1ˆØ)Ô/°Ô2°^Ô5IÈ!Ô5LÑLÐØ/×9Ò9¸"Ñ=Ô=×@Ò@ÀÔAUÑVÔVÐÝØ˜]Ô0°Ô4Ñ4¸×8LÒ8LÑ8NÔ8NÒNØsÀ^ÐsÐsÐaqÐsÐsñ	
ô 	
ð 	
ð "Ð!rT   Nr   rà   r—   r�   Ú	use_cacheÚlogits_to_keepc	           
      ó
  — |d u |d uz  rt          d¦  «        ‚|€ |                      ¦   «         |¦  «        }|�‹|                      |d¬¦  «        j        }
|
                     d|j        d         ¦  «        }|                     |j        |j        ¦  «        }|  	                    |||¬¦  «        }| 
                    ||¦  «        } | j        d||||||dœ|	¤Ž}t          |j        |j        |j        |j        |�|
nd ¬¦  «        S )	NzaYou cannot specify both input_ids and inputs_embeds at the same time, and must specify either oneT)r‰  r’   )r  rª  )r  rà   r—   r�   r¸  r¹  )r  r�   rß   r  Úimage_hidden_statesrS   )rÎ   r®  r¨  r  rä   rš   r¹   r­  r¶   r·  Úmasked_scatterr¥  r¬   r  r�   rß   r  )r€   r©  r²   rà   r—   r�   r  r¸  r¹  r�   Úimage_embedsrª  Úimage_attention_maskÚ	lm_outputs                 rU   rÄ   zJanusModel.forward  s]  € ð ˜Ð -°tÐ";Ñ<ð 	ÝØsñô ð ð Ð Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMàÐ#Ø×2Ò2°<ÈTÐ2ÑRÔRÔ`ˆLØ)×1Ò1°"°mÔ6IÈ"Ô6MÑNÔNˆNØ+×.Ò.¨}Ô/CÀ]ÔEXÑYÔYˆNØ#'×#<Ò#<Ø¨À~ð $=ñ $ô $Ð ð *×8Ò8Ð9MÈ~Ñ^Ô^ˆMà'�DÔ'ð 
Ø'Ø)Ø%Ø+ØØ)ð
ð 
ð ð
ð 
ˆ	õ ,Ø'Ô9Ø%Ô5Ø#Ô1Ø Ô+Ø0<Ð0H  Èdð
ñ 
ô 
ð 	
rT   )NNNNNNNr   )rF   rG   rH   rn   rË   r   r   r˜   rª   r   r   rM   r   r¨  r;  r·  rÅ   r
   rP   rJ   r¬   rÄ   r„   r…   s   @rU   rš  rš  Ö  s£  ø€ € € € € ð˜{ð ð ð ð ð ð ð* ØðØ!Ô-ðØ9?Ð@RÔ9Sðà	Ð+Ñ	+ðð ð ñ „^ñ Ôðð"ØÔ)ð"Ø:?Ô:Kð"Ø]bÔ]nð"ð "ð "ð "ð0 Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø!%Ø-.ð,
ð ,
àÔ# dÑ*ð,
ð Ô'¨$Ñ.ð,
ð œ tÑ+ð	,
ð
 Ô&¨Ñ-ð,
ð  ™ð,
ð Ô(¨4Ñ/ð,
ð ˜$‘;ð,
ð ˜eœlÑ*ð,
ð 
&ð,
ð ,
ð ,
ñ „^ñ Ôð,
ð ,
ð ,
ð ,
ð ,
rT   rš  c                   óæ  ‡ — e Zd ZddiZdZdZdefˆ fd„Zdej	        dej	        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d
z  dej        d
z  dej        d
z  ded
z  deej	        z  dee         defd„¦   «         ¦   «         Z	 	 	 	 	 	 dˆ fd„	Zdej	        fd„Z ej        ¦   «         	 	 	 ddej	        d
z  dej        d
z  ded
z  fˆ fd„¦   «         Zˆ xZS ) ÚJanusForConditionalGenerationzlm_head.weightz(model.language_model.embed_tokens.weightrŠ   Trˆ   c                 ó  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          j        |j        j        |j        j	        d¬¦  «        | _
        |                      ¦   «          d S )NFrÉ   )r~   rË   rˆ   rš  r‰   r   rÓ   rp   r2   Ú
vocab_sizeÚlm_headr‚  rû   s     €rU   rË   z&JanusForConditionalGeneration.__init__I  sn   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ Ñ'Ô'ˆŒ
Ý”y Ô!3Ô!?ÀÔASÔA^ÐejÐkÑkÔkˆŒð 	�ŠÑÔÐÐÐrT   Úinputsr´   c                 ón   — | j                              |¦  «        }| j                              |¦  «        }|S rò   )r‰   r¡  r¢  )r€   rÅ  ru  s      rU   Ú'prepare_embeddings_for_image_generationzEJanusForConditionalGeneration.prepare_embeddings_for_image_generationR  s2   € Ø”z×7Ò7¸Ñ?Ô?ˆØ”z×4Ò4°\ÑBÔBˆØÐrT   Nr   r©  r²   rà   r—   r�   r  Úlabelsr¸  r¹  r�   c
                 óh  —  | j         d|||||||dœ|
¤Ž}|j        }t          |	t          ¦  «        rt	          |	 d¦  «        n|	}|                      |dd…|dd…f         ¦  «        }d}|�  | j        d||| j        j        j	        dœ|
¤Ž}t          |||j        |j        |j        |j        ¬¦  «        S )a­  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
        )r©  r²   rà   r—   r�   r  r¸  N)ÚlogitsrÈ  rÃ  )ÚlossrÊ  r�   rß   r  r»  rS   )r‰   r  rx   rJ   ÚslicerÄ  Úloss_functionrˆ   rp   rÃ  r°   r�   rß   r  r»  )r€   r©  r²   rà   r—   r�   r  rÈ  r¸  r¹  r�   Úoutputsrß   Úslice_indicesrÊ  rË  s                   rU   rÄ   z%JanusForConditionalGeneration.forwardW  s  € ð* �$”*ð 	
ØØ%Ø)Ø%Ø+Ø'Øð	
ð 	
ð ð	
ð 	
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ%�4Ô%ð Ø f¸¼Ô9PÔ9[ðð Ø_eðð ˆDõ +ØØØ#Ô3Ø!Ô/ØÔ)Ø 'Ô ;ð
ñ 
ô 
ð 	
rT   Fc           	      ó‚   •—  t          ¦   «         j        |f|||||dœ|¤Ž}	|s|                     dd¦  «        s||	d<   |	S )N)r�   r  rà   r¹  Úis_first_iterationr¸  Tr²   )r~   Úprepare_inputs_for_generationrz   )r€   r©  r²   r�   rà   r  r¹  rÑ  r�   Úmodel_inputsr‚   s             €rU   rÒ  z;JanusForConditionalGeneration.prepare_inputs_for_generationŠ  sr   ø€ ð =•u‘w”wÔ<Øð
à+Ø'Ø)Ø)Ø1ð
ð 
ð ð
ð 
ˆð ð 	8 V§Z¢Z°¸TÑ%BÔ%Bð 	8Ø+7ˆL˜Ñ(àÐrT   r/  c                 ót   — | j         j                             |¦  «        }|                     dddd¦  «        }|S )a,  
        Decodes generated image tokens from language model to continuous pixel values
        with VQGAN module via upsampling.
        Args:
            image_tokens (`torch.LongTensor` of shape `(batch_size, num_of_tokens)`):
                The tensors corresponding to the input images.
        r   r   r   rd   )r‰   rŸ  r‡  r6  )r€   r/  Údecoded_images      rU   Údecode_image_tokensz1JanusForConditionalGeneration.decode_image_tokensª  s;   € ð œ
Ô*×1Ò1°,Ñ?Ô?ˆØ%×-Ò-¨a°°A°qÑ9Ô9ˆØÐrT   Úlogits_processorc           	      óâ
  •— |                      dd¦  «        } | j        |                      dd ¦  «        fi |¤Ž\  }}|dk    r t          ¦   «         j        d|||d dœ|¤ŽS |                     ¦   «         t
          j        t
          j        fvrt          d¦  «        ‚| 	                    ¦   «          |  
                    |                     ¦   «         ¦  «         |�|nt          ¦   «         }d|d<   |j        €!t                               d¦  «         d	|_        |j        |d
<   |                      ||j        |¦  «        \  }}	}|j        |j        }}
t)          |j        ¦  «        dk    rt          d|j        › d�¦  «        ‚|d u}|                      |||j        ¬¦  «         |j        r9|j        dk    r.|                     t1          |j        ¦  «        ¦  «         d |_        |                      ||j        d         |d ||¬¦  «        } | j        d|||j        dœ|¤Ž\  }}| j        j        j        j        }|j        \  }}|                      dd¦  «        }|                      dd ¦  «        }|                      dd¦  «        }||d<   ||d …d d …f         |j        k    ||d …d d …f         |j!        d         k    z  }||d …d d …f          "                    ||j#        ¦  «          |  $                    ¦   «         |¦  «        }| %                    dd ¦  «        €<|  &                    |j'        pd|dz  tQ          |j)        ||z   ¦  «        |¬¦  «        |d<   tU          j+        ||f|
|¬¦  «        }|j,        }|j-        }|j.        }|j/        }|j0        }|r|rdnd }|r|rdnd }|r|rdnd }|r|rdnd }tc          |¦  «        D �]Z} | j2        d||ddœ|¤Ž}d|v r#|d          3                    |j        ¦  «        |d<    | j        j4        di |¤||dœ¤Ž}|  5                    ||¦  «        }|j6        d d …dd d …f          7                    ¦   «         } | j         8                    | ¦  «        }! |||!¦  «        }"|j9        r@tU          j:        |"d¬¦  «        }#tU          j;        |#d¬¦  «         <                    d¦  «        }$ntU          j=        |"d¬¦  «        }$|$|d d …|f<   tU          j>        |$|$g¦  «        }$|$ ?                    d¦  «        }$|  @                    |$¦  «        }�Œ\|r:|r||!fz  }|r||  A                    ¦   «         fz  }|r
||jB        z  }|r
||jC        z  }|rt‰          ||!||||jE        ¬¦  «        S |S )NÚgeneration_moderŒ   Úgeneration_config)rÅ  rà   rÚ  Úguidance_scalez’Got incompatible mode for Image Generation, should be one of greedy or sampling. Ensure that beam search is de-activated by setting `num_beams=1`.Tr¸  zU`guidance_scale` is required for CFG but not provided. Setting to default value of 5.é   rÛ  r   z;Expected input ids of shape (batch_size, seq_len), but got z3Passing `inputs embeds` is not supported currently.)r­  rd   )rÚ  Úinput_ids_seq_lengthÚencoder_input_idsÚprefix_allowed_tokens_fnr×  r­  )r©  rà   Úexpand_sizerà   Úboi_token_idr�   Ústatic)Úcache_implementationré   Úmax_cache_lenÚmodel_kwargsr¬  rS   )r  r©  rÑ  )Úoutput_attentionsÚoutput_hidden_statesr’   )r2  )Únum_samples)Ú	sequencesÚscoresrÊ  r  rß   r�   )FÚpopÚ_prepare_generation_configr~   ÚgenerateÚget_generation_moder   ÚSAMPLEÚGREEDY_SEARCHrÎ   ÚvalidateÚ_validate_model_kwargsÚcopyr   rÛ  r{   ÚwarningÚ_prepare_model_inputsÚbos_token_idr¶   r­  ra  rš   Ú_prepare_special_tokensrf  r   Ú_get_logits_processorÚ_expand_inputs_for_generationÚnum_return_sequencesr‰   r�  rˆ   rE   ÚrepeatÚgeneration_kwargsÚmasked_fill_Úpad_token_idr®  rz   Ú_prepare_static_cacherã  ÚmaxÚ
max_lengthr˜   Úzerosræ  rç  Úoutput_scoresÚoutput_logitsÚreturn_dict_in_generater  rÒ  r¹   r¥  Ú#_update_model_kwargs_for_generationr  Úcloner£  Ú	do_sampleÚsoftmaxÚmultinomialÚsqueezeÚargmaxÚcatr²  rÇ  rO   r  rß   r   r�   )&r€   rÅ  rà   r×  r�   rÙ  rÚ  rå  r©  Úmodel_input_namer¶   r­  Úkwargs_has_attention_maskrE   ré   rê   Úinput_tokensÚmaskr  Úgenerated_tokensræ  rç  r  r  r  Ú
raw_scoresÚ
raw_logitsÚdecoder_hidden_statesÚdecoder_attentionsÚirÓ  rÎ  ru  rê  Únext_token_scoresÚprobsÚ
next_tokenr‚   s&                                        €rU   rí  z&JanusForConditionalGeneration.generate¶  s4  ø€ ð !Ÿ*š*Ð%6¸Ñ?Ô?ˆØ*I¨$Ô*IØ�JŠJÐ*¨DÑ1Ô1ð+
ð +
Ø5;ð+
ð +
Ñ'Ð˜<ð
 ˜fÒ$Ð$à#•5‘7”7Ô#ð ØØ-Ø"3Ø#ð	ð ð
 ðð ð ð ×0Ò0Ñ2Ô2½>Ô;PÕR`ÔRnÐ:oÐoÐoÝðTñô ð ð 	×"Ò"Ñ$Ô$Ð$Ø×#Ò# L×$5Ò$5Ñ$7Ô$7Ñ8Ô8Ð8ð 0@Ð/KÐ+Ð+ÕQdÑQfÔQfÐð %)ˆ�[Ñ!àÔ+Ð3Ý�NŠNÐrÑsÔsÐsØ/0ÐÔ,Ø):Ô)IˆÐ%Ñ&ð 59×4NÒ4NØÐ%Ô2°Lñ5
ô 5
Ñ1ˆ	Ð# \ð "œ¨Ô)9ˆvˆåˆyŒÑÔ 1Ò$Ð$ÝðFÈiÌoð Fð Fð Fñô ð ð %3¸$Ð$>Ð!Ø×$Ò$Ð%6Ð8QÐZcÔZjÐ$ÑkÔkÐkð Ô+ð 	4Ð0AÔ0PÐSTÒ0TÐ0TØ×#Ò#Õ$IÐJ[ÔJjÑ$kÔ$kÑlÔlÐlØ/3ÐÔ,ð  ×5Ò5Ø/Ø!*¤°Ô!3Ø'Ø%)Ø-Øð 6ñ 
ô 
Ðð #E $Ô"Dð #
ØØ)Ø)Ô>ð#
ð #
ð ð	#
ð #
Ñˆ	�<ð  œ:Ô2Ô9ÔJÐØ'œoÑˆ
�Gà ×'Ò'¨¨1Ñ-Ô-ˆØ%×)Ò)Ð*:¸DÑAÔAˆØ'×.Ò.¨q°!Ñ4Ô4ˆØ)7ˆÐ%Ñ&ð ˜Z˜[˜[¨!¨!¨!˜^Ô,Ð0AÔ0NÒNØ˜˜˜ a a a˜Ô(Ð,=Ô,OÐP^Ô,_Ò_ñ
ˆð 	�Z�[�[ ! ! !�^Ô$×1Ò1°$Ð8IÔ8VÑWÔWÐWà3˜×1Ò1Ñ3Ô3°LÑAÔAˆà×ÒÐ-¨tÑ4Ô4Ð<à.2×.HÒ.HØ%6Ô%KÐ%WÈxà%¨™>å!Ð"3Ô">Ð@PÐSZÑ@ZÑ[Ô[Ø)ð /Iñ /ô /ˆLÐ*Ñ+õ !œ;¨
Ð4DÐ'EÈUÐ[aÐbÑbÔbÐð .Ô?ÐØ0ÔEÐØ)Ô7ˆØ)Ô7ˆØ"3Ô"KÐà3ÐP¸ÐP�R�RÈDˆ
Ø3ÐP¸ÐP�R�RÈDˆ
Ø'>Ð bÐCWÐ b  Ð^bÐØ$;Ð\Ð@QÐ\˜R˜RÐX\ÐåÐ'Ñ(Ô(ð (	Uñ (	UˆAð >˜4Ô=ð Ø+°|ÐX\ðð Ø`lðð ˆLð   <Ð/Ð/Ø1=Ð>NÔ1O×1RÒ1RÐS`ÔSgÑ1hÔ1h�Ð-Ñ.à/�d”jÔ/ð ð Øðà"3Ø%9ðð ð ð ˆGð  ×CÒCÀGÈ\ÑZÔZˆLØ"Ô4°Q°Q°Q¸¸A¸A¸A°XÔ>×DÒDÑFÔFˆLð ”Z×/Ò/°Ñ=Ô=ˆFØ 0Ð 0°¸FÑ CÔ CÐð !Ô*ð EÝœÐ&7¸RÐ@Ñ@Ô@�Ý"Ô.¨uÀ!ÐDÑDÔD×LÒLÈRÑPÔP�
�
å"œ\Ð*;ÀÐDÑDÔD�
à%/Ð˜Q˜Q˜Q ˜TÑ"õ œ J°
Ð#;Ñ<Ô<ˆJØ#×-Ò-¨bÑ1Ô1ˆJà ×HÒHÈÑTÔTˆM‰Mà"ð 	?Øð (Ø˜v˜iÑ'�
Øð 6Ø˜|×1Ò1Ñ3Ô3Ð5Ñ5�
Ø ð 9Ø" gÔ&8Ñ8Ð"Ø#ð ?Ø%¨Ô)>Ñ>Ð%à"ð 
	$Ý,Ø*ØØ!Ø-Ø3Ø 'Ô 7ðñ ô ð ð $Ð#rT   )	NNNNNNNNr   )NNNNNF)NNN)rF   rG   rH   Ú_tied_weights_keysÚoutput_modalitiesr¤   rn   rË   r˜   rÅ   rÇ  r   r   r;  rª   r
   rP   rJ   r   r   r°   rÄ   rÒ  rÖ  Úno_gradr   rí  r„   r…   s   @rU   rÁ  rÁ  D  sP  ø€ € € € € Ø*Ð,VÐWÐØ)ÐØ!Ðð˜{ð ð ð ð ð ð ð¸e¼lð ÈuÌ|ð ð ð ð ð
 Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ð/
ð /
àÔ# dÑ*ð/
ð Ô'¨$Ñ.ð/
ð œ tÑ+ð	/
ð
 Ô&¨Ñ-ð/
ð  ™ð/
ð Ô(¨4Ñ/ð/
ð Ô  4Ñ'ð/
ð ˜$‘;ð/
ð ˜eœlÑ*ð/
ð Ð+Ô,ð/
ð 
%ð/
ð /
ð /
ñ „^ñ Ôð/
ðh ØØØØØ ðð ð ð ð ð ð@
°´ð 
ð 
ð 
ð 
ð €U„]�_„_ð '+Ø26Ø7;ð	$ð $à”˜tÑ#ð$ð Ô(¨4Ñ/ð$ð .°Ñ4ð	$ð $ð $ð $ð $ñ „_ð$ð $ð $ð $ð $rT   rÁ  )r‡   rÁ  rš  r~  r  rW   r1   rn   )dÚcollections.abcr   Údataclassesr   r˜   Útorch.nn.functionalr   Ú
functionalr4  Úhuggingface_hub.dataclassesr   Ú r   r•   Úactivationsr	   Úcache_utilsr
   Úconfiguration_utilsr   Ú
generationr   r   r   r   Úgeneration.utilsr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   r   Úautor   r   r    Úblip_2.modeling_blip_2r!   Ú!chameleon.configuration_chameleonr"   Úchameleon.modeling_chameleonr#   r$   r%   r&   r'   Úidefics.modeling_ideficsr(   r)   Úllama.modeling_llamar*   Úsiglip.configuration_siglipr+   Úsiglip.modeling_siglipr,   r-   r.   Ú
get_loggerrF   r{   r1   rW   rn   r‡   r§   r¬   r°   r”   rg  rÇ   rô   rŽ   r  r  r!  r,  r=  r?  rA  rC  rQ  rZ  rw  r~  rŽ  r“  rš  rÁ  Ú__all__rS   rT   rU   ú<module>r7     sW  ðð %Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 9Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð ð ð ð eÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ :Ð :Ð :Ð :Ð :Ð :Ø <Ð <Ð <Ð <Ð <Ð <Ø ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^ð ÐÑÔð 	Øà	ˆÔ	˜HÑ	%Ô	%€ð
 €Ð<Ð=Ñ=Ô=Øð)ð )ð )ð )ð )Ð*ñ )ô )ñ „ñ >Ô=ð)ð2 €Ð<Ð=Ñ=Ô=Øð#!ð #!ð #!ð #!ð #!Ð+ñ #!ô #!ñ „ñ >Ô=ð#!ðL €Ð<Ð=Ñ=Ô=Øð=(ð =(ð =(ð =(ð =(Ð"ñ =(ô =(ñ „ñ >Ô=ð=(ð@ ðið ið ið ið i˜?ñ iô iñ „ðið$ €ððñ ô ð
 ð	4ð 	4ð 	4ð 	4ð 	4�{ñ 	4ô 	4ñ „ñô ð	4ð	ð 	ð 	ð 	ð 	Ð#Añ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð"?ñ 	ô 	ð 	ðð ð ð ð Ð2ñ ô ð ð"I$ð I$ð I$ð I$ð I$˜2œ9ñ I$ô I$ð I$ðXð ð ð ð �R”Yñ ô ð ð(*ð *ð *ð *ð *Ð0ñ *ô *ð *ðpð pð pð pð p˜ñ pô pð pð#
ð #
ð #
ð #
ð #
Ð'ñ #
ô #
ð #
ðLð ð ð ð ˜BœIñ ô ð ð$"ð "ð "ð "ð "Ð =ñ "ô "ð "ð*	ð 	ð 	ð 	ð 	Ð<ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð8ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	ÐBñ 	ô 	ð 	ðð ð ð ð ˜RœYñ ô ð ðð ð ð ð ˜œñ ô ð ð,J!ð J!ð J!ð J!ð J!˜œ	ñ J!ô J!ð J!ðZAð Að Að Að A˜œ	ñ Aô Að AðH2Uð 2Uð 2Uð 2Uð 2U�ñ 2Uô 2Uð 2Uðjð ð ð ð ˜2œ9ñ ô ð ð$ð ð ð ð �R”Yñ ô ð ð  €ððñ ô ð
f
ð f
ð f
ð f
ð f
Ð%ñ f
ô f
ñô ð
f
ðRr$ð r$ð r$ð r$ð r$Ð$8¸/ñ r$ô r$ð r$ðj		ð 	ð 	€€€rT   