+
    œ°³jã¹  ã                   ó8  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIH	u H
t ^ RIH	t	 ^RIHt ^RIHtHt ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHtHtHt ^RIHtHt ^RI H!t!H"t" ^RI#H$t$ ^RI%H&t&H't'H(t(H)t)H*t* ^RI+H,t, ^RI-H.t.H/t/ ^RI0H1t1 ^RI2H3t3H4t4 ])Pj                  ! ]64      t7]'] ! R R]4      4       4       t8 ! R R]	Pr                  4      t: ! R R]	Pr                  4      t;R t<RBR lt= ! R R]	Pr                  4      t> ! R R ]	P~                  4      t@R! R" ltARCR# R$ lltB ! R% R&]	Pr                  4      tC ! R' R(]4      tD ! R) R*]4      tE ! R+ R,]	Pr                  4      tF ! R- R.]	Pr                  4      tG ! R/ R0]	Pr                  4      tH ! R1 R2]	Pr                  4      tI ! R3 R4]	Pr                  4      tJ ! R5 R64      tK]' ! R7 R8]"4      4       tL]'! R9R:7       ! R; R<]L4      4       tM]' ! R= R>]L4      4       tN]'! R?R:7       ! R@ RA]L]4      4       tO. RDOtPR# )EzPyTorch Chameleon model.)ÚCallable)Ú	dataclass)Úcached_propertyN)Únn)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚBaseModelOutputWithPoolingÚCausalLMOutputWithPast)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚtorch_compilable_check)Údeprecate_kwarg)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputs)ÚChameleonConfigÚChameleonVQVAEConfigc                   ó<   a € ] tR t^2t o RtRtRtRtV 3R ltRt	V t
R# )ÚChameleonVQVAEModelOutputa‘  
quantized_last_hidden_state (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
    Quantized last hidden state from the VQ-VAE model.
image_tokens (`torch.FloatTensor` of shape `(batch_size, config.vocab_size`):
    Indices of the image tokens predicted by the VQ-VAE model.
embedding_loss (`torch.FloatTensor`):
    The embedding loss computed during quantization.
Nc                ó¤   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )é   NÚquantized_last_hidden_stateÚimage_tokensÚembedding_loss©ÚtorchÚFloatTensor)ÚformatÚ__classdict__s   "€Úq/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/chameleon/modeling_chameleon.pyÚ__annotate__Ú&ChameleonVQVAEModelOutput.__annotate__2   sM   ø‡ ‚ ñ "'×!2Ñ!2°TÕ!9Ñ@ñ ñ ×#Ñ# dÕ*Ñ1ñ ñ ×%Ñ%¨Õ,Ñ3ò ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r$   r%   r&   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r+   s   @r,   r!   r!   2   s$   ø‡ € ñð =AÐØ-1€LØ/3€N÷ ƒ r/   r!   c                   óZ   a a€ ] tR t^Dt oRV3R lV 3R llltV3R lR ltR tRtVtV ;t	# )ÚChameleonRMSNormc                ó$   <€ V ^8„  d   QhRS[ RR/# )r#   ÚepsÚreturnN)Úfloat)r*   r+   s   "€r,   r-   ÚChameleonRMSNorm.__annotate__E   s   ø€ ÷ $ñ $©ð $¸$ñ $r/   c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z/
ChameleonRMSNorm is equivalent to T5LayerNorm
N)ÚsuperÚ__init__r   Ú	Parameterr(   ÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer=   Ú	__class__s   &&&€r,   rC   ÚChameleonRMSNorm.__init__E   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör/   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r#   Úhidden_statesr>   ©r(   ÚTensor)r*   r+   s   "€r,   r-   r@   M   s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r/   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r#   T)Úkeepdiméÿÿÿÿ)	ÚdtypeÚtor(   Úfloat32ÚpowÚmeanÚrsqrtrG   rF   )rH   rM   Úinput_dtypeÚvariances   &&  r,   ÚforwardÚChameleonRMSNorm.forwardM   sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r/   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)ÚtuplerF   ÚshaperG   ©rH   s   &r,   Ú
extra_reprÚChameleonRMSNorm.extra_reprT   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr/   )rG   rF   )ç�íµ ÷Æ°>)
r1   r2   r3   r4   rC   r[   ra   r7   r8   Ú__classcell__©rJ   r+   s   @@r,   r;   r;   D   s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr/   r;   c                   óÎ   a a€ ] tR t^Yt o]! RRR7      R
V3R lV 3R lll4       t]]! RRR7      R
V3R lR ll4       4       t]P                  ! 4       ]
R 4       4       tR	tVtV ;t# )ÚChameleonRotaryEmbeddingÚdevicez5.18)Úversionc                ó    <€ V ^8„  d   QhRS[ /# ©r#   Úconfig©r   )r*   r+   s   "€r,   r-   Ú%ChameleonRotaryEmbedding.__annotate__[   s   ø€ ÷ Oñ O™ñ Or/   c                óä  <€ \         SV `  4        VP                  V n        VP                  V n        Wn        V P
                  P                  R ,          V n        V P                  pV P                  R8w  d   \        V P                  ,          pV! V P
                  V4      w  q@n
        \        P                  ! VRR7      V n        \        P                  ! VP                  4       RR7      V n        R# )Ú	rope_typeÚdefaultF)Ú
persistentN)rB   rC   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrl   Úrope_parametersrp   Úcompute_default_rope_parametersr   Úattention_scalingr   ÚBufferÚinv_freqÚcloneÚoriginal_inv_freq)rH   rl   rh   Úrope_init_fnrz   rJ   s   &&&  €r,   rC   Ú!ChameleonRotaryEmbedding.__init__Z   s¬   ø€ ä‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒàŸ™×4Ñ4°[ÕAˆŒØ!%×!EÑ!EˆØ�>‰>˜YÔ&Ü.¨t¯~©~Õ>ˆLÙ+7¸¿¹ÀVÓ+LÑ(ˆÔ(äŸ	š	 (°uÔ=ˆŒÜ!#§¢¨8¯>©>Ó+;ÈÔ!NˆÖr/   c                óP   <€ V ^8„  d   QhRS[ RS[S[P                  S[3,          /# )r#   rl   r>   )r   r^   r(   rO   r?   )r*   r+   s   "€r,   r-   rn   m   s.   ø€ ÷ 5ñ 5±ð 5Ñ[`Ñaf×amÑamÑotÐatÕ[uñ 5r/   c           	     ó0  € V P                   R,          p\        V RR4      ;'       g    V P                  V P                  ,          pRpRV\        P
                  ! ^ V^\        P                  R7      V,          ,          ,          pVP                  V4      V3# )a~  
Computes the inverse frequencies according to the original RoPE implementation
Args:
    config ([`~transformers.PreTrainedConfig`]):
        The model configuration.
Returns:
    Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
    post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
Ú
rope_thetaÚhead_dimNg      ð?©rS   )rv   ÚgetattrrI   Únum_attention_headsr(   Úaranger?   rT   )rl   rh   ÚkwargsÚbaseÚdimÚattention_factorrz   s   &&,    r,   rw   Ú8ChameleonRotaryEmbedding.compute_default_rope_parametersk   s~   € ð ×%Ñ% lÕ3ˆÜ�f˜j¨$Ó/×cÐc°6×3EÑ3EÈ×IcÑIcÕ3cˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÔ#MÐPSÕ#SÕTÕUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4r/   c                ó^  € V P                   R,          P                  VP                  ^ ,          R	^4      P                  \        P
                  VP                  R7      pVR
,          P                  4       p\        VP                  P                  \        4      '       d2   VP                  P                  R8w  d   VP                  P                  MRp\        VRR7      ;_uu_ 4        W4,          P                  ^^4      p\        P                  ! Wf3R	R7      pVP                  4       V P                  ,          pVP                  4       V P                  ,          p	R R R 4       XP                  VP                   R7      X	P                  VP                   R7      3#   + '       g   i     LH; i)N©rS   rh   ÚmpsÚcpuF)Údevice_typeÚenabled©r‰   rƒ   )NºNNNNrR   )r“   Nr“   )rz   Úexpandr_   rT   r(   r?   rh   Ú
isinstanceÚtypeÚstrr   Ú	transposeÚcatÚcosrx   ÚsinrS   )
rH   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedr�   ÚfreqsÚembrš   r›   s
   &&&       r,   r[   Ú ChameleonRotaryEmbedding.forward   s2  € ð �M‰M˜-Õ(×/Ñ/°×0BÑ0BÀ1Õ0EÀrÈ1ÓM×PÑPÔW\×WbÑWbÐkl×ksÑksÐPÓtð 	ð !-¨ZÕ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÒ'EÈ!Ï(É(Ï-É-Ð[`ÔJ`�a—h‘h—m’mÐfkˆä¨¸U×CÖCØ&Õ>×IÑIÈ!ÈQÓOˆEÜ—)’)˜U˜N°Ô3ˆCØ—'‘'“)˜d×4Ñ4Õ4ˆCØ—'‘'“)˜d×4Ñ4Õ4ˆC÷	 Dð �v‰v˜AŸG™GˆvÓ$ c§f¡f°1·7±7 fÓ&;Ð;Ð;÷ D×Cús   Ã(A4FÆF,	)rx   rl   rz   rt   r|   ru   rp   ©N)r1   r2   r3   r4   r   rC   Ústaticmethodrw   r(   Úno_gradr   r[   r7   r8   rd   re   s   @@r,   rg   rg   Y   su   ù‡ € Ù�X vÔ.÷Oô Oó /ðOð  Ù�X vÔ.÷5ñ 5ó /ó ð5ð$ ‡]‚]ƒ_Øñ<ó ó ÷<ð <r/   rg   c                óÌ   € V RRV P                   R,          ^,          13,          pV RV P                   R,          ^,          R13,          p\        P                  ! V) V3RR7      # )z*Rotates half the hidden dims of the input..Nr’   rR   )r_   r(   r™   )rœ   Úx1Úx2s   &  r,   Úrotate_halfr©   “   sZ   € à	
ˆ3Ð"�!—'‘'˜"•+ Õ"Ð"Ð"Õ	#€BØ	
ˆ3�—‘˜•˜qÕ Ñ"Ð"Õ	#€BÜ�9Š9�r�c˜2�Y BÔ'Ð'r/   c                óÈ   € VP                  V4      pVP                  V4      pW,          \        V 4      V,          ,           pW,          \        V4      V,          ,           pWV3# )aI  Applies Rotary Position Embedding to the query and key tensors.

Args:
    q (`torch.Tensor`): The query tensor.
    k (`torch.Tensor`): The key tensor.
    cos (`torch.Tensor`): The cosine part of the rotary embedding.
    sin (`torch.Tensor`): The sine part of the rotary embedding.
    unsqueeze_dim (`int`, *optional*, defaults to 1):
        The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
        sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
        that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
        k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
        cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
        the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
Returns:
    `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
)Ú	unsqueezer©   )ÚqÚkrš   r›   Úunsqueeze_dimÚq_embedÚk_embeds   &&&&&  r,   Úapply_rotary_pos_embr±   ›   sS   € ð$ �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ�wœ; q›>¨CÕ/Õ0€GØ�wœ; q›>¨CÕ/Õ0€GØÐÐr/   c                   ó8   a a€ ] tR t^µt oV 3R ltR tRtVtV ;t# )ÚChameleonMLPc                ó  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  VP                  R 7      V n        \
        P                  ! V P                  V P                  VP                  R 7      V n	        \
        P                  ! V P                  V P                  VP                  R 7      V n
        \        VP                  ,          V n        R# )©ÚbiasN)rB   rC   rl   rI   Úintermediate_sizer   ÚLinearÚmlp_biasÚ	gate_projÚup_projÚ	down_projr   Ú
hidden_actÚact_fn©rH   rl   rJ   s   &&€r,   rC   ÚChameleonMLP.__init__¶   s¶   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 4×#3Ñ#3°T×5KÑ5KÐRX×RaÑRaÔbˆŒÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPV×P_ÑP_Ô`ˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRX×RaÑRaÔbˆŒÜ˜V×.Ñ.Õ/ˆŽr/   c                ó�   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pV# r£   )r¼   r¾   rº   r»   )rH   rœ   r¼   s   && r,   r[   ÚChameleonMLP.forwardÁ   s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr/   )r¾   rl   r¼   rº   rI   r·   r»   ©	r1   r2   r3   r4   rC   r[   r7   r8   rd   re   s   @@r,   r³   r³   µ   s   ù‡ € õ0÷ò r/   r³   c                   ó<   a a€ ] tR t^Æt oRtV 3R ltR tRtVtV ;t	# )ÚChameleonLayerNormar  
LayerNorm but computes stats only over the last dim because Chameleon applies gamma and beta
from each shard separately to each head, instead of reducing. We can apply each head's own
gamma/beta by repeat-interleaving weights from each shard, but the stats have to be computed
in the last dimension. This module applies gamma/beta manually to fulfill this requirement.
c                óN   <€ \         SV `  ! V.VO5/ VB  VR,          3V n        R# )é   NrR   )rB   rC   Únormalized_shape)rH   rI   Úargsr‡   rJ   s   &&*,€r,   rC   ÚChameleonLayerNorm.__init__Î   s)   ø€ Ü‰Ò˜Ð6 tÒ6¨vÒ6Ø!,¨R¥Ð 2ˆÖr/   c                ó”   € \         P                  ! WP                  R R RR7      pWP                  ,          V P                  ,           pV# )Ngñhãˆµøä>©r=   )ÚFÚ
layer_normrÈ   rF   r¶   ©rH   rM   s   &&r,   r[   ÚChameleonLayerNorm.forwardÒ   s9   € ÜŸš ]×4IÑ4IÈ4ÐQUÐ[_Ô`ˆØ%¯©Õ3°d·i±iÕ?ˆØÐr/   )rÈ   ©
r1   r2   r3   r4   r5   rC   r[   r7   r8   rd   re   s   @@r,   rÅ   rÅ   Æ   s   ù‡ € ñõ3÷ò r/   rÅ   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r#   rM   Ún_repr>   )r(   rO   Úint)r*   s   "r,   r-   r-   Ù   s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur/   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
)r“   r“   Nr“   r“   )r_   r”   Úreshape)rM   rÓ   ÚbatchÚnum_key_value_headsÚslenr‚   s   &&    r,   Ú	repeat_kvrÚ   Ù   sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr/   c                ó   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        R	\
        \        ,          /# )
r#   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutr‡   )r   ÚModuler(   rO   r?   r   r   )r*   s   "r,   r-   r-   æ   sw   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ð%ô Ô'Õ(ñ%r/   c                 ó"  € \        W P                  4      p\        W0P                  4      p	\        P                  ! WP	                  ^^4      4      V,          p
Ve	   W¤,           p
\
        P                  P                  V
R\        P                  R7      P                  VP                  4      p
\
        P                  P                  W¦V P                  R7      p
\        P                  ! W©4      pVP	                  ^^4      P                  4       pWº3# )r#   )r‰   rS   )ÚpÚtrainingrR   )rÚ   Únum_key_value_groupsr(   Úmatmulr˜   r   Ú
functionalÚsoftmaxrU   rT   rS   râ   ræ   Ú
contiguous)rÜ   rÝ   rÞ   rß   rà   rá   râ   r‡   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&,    r,   Úeager_attention_forwardrð   æ   sÒ   € ô ˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r/   c                   ó\   a a€ ] tR t^ÿt oRtRV3R lV 3R llltRV3R lR lltRtVtV ;t	# )	ÚChameleonAttentionz=Multi-headed attention from 'Attention Is All You Need' paperc                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# )r#   rl   Ú	layer_idxN©r   rÔ   )r*   r+   s   "€r,   r-   ÚChameleonAttention.__annotate__  s#   ø€ ÷ "Tñ "T™ð "T¹3À½:ñ "Tr/   c                ó²  <€ \         SV `  4        Wn        W n        Vf.   \        P                  RV P                  P                   R24       VP                  V n        VP                  V n	        VP                  V n        V P                  V P                  ,          V n        VP                  V n        V P                  V P                  ,          V n        VP                  V n        RV n        VP"                  V n        V P                  R,          V n        V P                  V P                  ,          V P                  8w  d'   \'        RV P                   RV P                   R24      h\(        P*                  ! V P                  V P                  V P                  ,          VP,                  R7      V n        \(        P*                  ! V P                  V P                  V P                  ,          VP,                  R7      V n        \(        P*                  ! V P                  V P                  V P                  ,          VP,                  R7      V n        \(        P*                  ! V P                  V P                  VP,                  R7      V n        \7        V P                  V P                  34      V n        \7        V P                  V P                  34      V n        R # )	NzInstantiating z¹ without passing a `layer_idx` is not recommended and will lead to errors during the forward call if caching is used. Please make sure to provide a `layer_idx` when creating this class.Tz?hidden_size must be divisible by num_heads (got `hidden_size`: z and `num_heads`: z).rµ   ç      à¿)rB   rC   rl   rô   ÚloggerÚwarning_oncerJ   r1   Úattention_dropoutrI   r…   Ú	num_headsr‚   rØ   rç   rs   Ú	is_causalÚmodel_parallel_sizerá   Ú
ValueErrorr   r¸   Úattention_biasÚq_projÚk_projÚv_projÚo_projrÅ   Úq_normÚk_norm©rH   rl   rô   rJ   s   &&&€r,   rC   ÚChameleonAttention.__init__  s  ø€ Ü‰ÑÔØŒØ"ŒØÒÜ×ÑØ  §¡×!8Ñ!8Ð 9ð :,ð ,ôð "(×!9Ñ!9ˆÔØ!×-Ñ-ˆÔØ×3Ñ3ˆŒØ×(Ñ(¨D¯N©NÕ:ˆŒØ#)×#=Ñ#=ˆÔ Ø$(§N¡N°d×6NÑ6NÕ$NˆÔ!Ø'-×'EÑ'EˆÔ$àˆŒØ#)×#=Ñ#=ˆÔ Ø—}‘} dÕ*ˆŒà�M‰M˜DŸN™NÕ*¨t×/?Ñ/?Ô?ÜØQÐRV×RbÑRbÐQcØ$ T§^¡^Ð$4°Bð8óð ô
 —i’i × 0Ñ 0°$·.±.À4Ç=Á=Õ2PÐW]×WlÑWlÔmˆŒÜ—i’i × 0Ñ 0°$×2JÑ2JÈTÏ]É]Õ2ZÐag×avÑavÔwˆŒÜ—i’i × 0Ñ 0°$×2JÑ2JÈTÏ]É]Õ2ZÐag×avÑavÔwˆŒÜ—i’i × 0Ñ 0°$×2BÑ2BÈ×I^ÑI^Ô_ˆŒÜ(¨$¯.©.¸$¿-¹-Ð)HÓIˆŒÜ(¨$×*BÑ*BÀDÇMÁMÐ)RÓSˆŽr/   c                óT  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[RS[RS[ P                  R,          R	S[S[ P                  S[ P                  R,          S[S[ P                  ,          R,          3,          /# ©
r#   rM   rà   Nr�   Úpast_key_valuesÚoutput_attentionsÚ	use_cacheÚposition_embeddingsr>   )r(   rO   Ú
LongTensorr   Úboolr^   )r*   r+   s   "€r,   r-   rö   &  s§   ø€ ÷ 3)ñ 3)á—|‘|ð3)ñ Ÿ™ tÕ+ð3)ñ ×&Ñ&¨Õ-ð	3)ñ
  �ð3)ñ  ð3)ñ ð3)ñ #Ÿ\™\¨DÕ0ð3)ñ 
‰u�|‰|™UŸ\™\¨DÕ0±%¹¿¹Õ2EÈÕ2LÐLÕ	Mñ3)r/   c                ód  € VP                  4       w  ršpV P                  V4      pV P                  V4      pV P                  V4      pVP	                  RV P
                  V P                  4      pV P                  V4      pVP	                  RV P                  V P                  4      pV P                  V4      pVP	                  WšV P
                  V P                  4      P                  ^^4      pVP	                  WšV P                  V P                  4      P                  ^^4      pVP                  WšV P                  V P                  4      P                  ^^4      pVw  pp\        WÍVV4      w  rÍVe   VP                  WÞV P                  4      w  rÞ\        P                   ! V P"                  P$                  \&        4      pT! V VVVV3RV P(                  '       g   RMV P*                  RV P,                  /VB w  ppVP	                  WšR4      P/                  4       pV P1                  V4      pVV3# )rÇ   râ   ç        rá   rR   )Úsizer  r  r  rÖ   rü   r‚   r  rØ   r  r˜   Úviewr±   Úupdaterô   r   Úget_interfacerl   Ú_attn_implementationrð   ræ   rû   rá   rë   r  )rH   rM   rà   r�   r  r  r  r  r‡   ÚbszÚq_lenÚ_Úquery_statesrì   rí   rš   r›   Úattention_interfacerï   rî   s   &&&&&&&&,           r,   r[   ÚChameleonAttention.forward&  s  € ð &×*Ñ*Ó,‰ˆ�Aà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà#×+Ñ+¨B°·±ÀÇÁÓNˆØ—{‘{ <Ó0ˆà×'Ñ'¨¨D×,DÑ,DÀdÇmÁmÓTˆ
Ø—[‘[ Ó,ˆ
à#×+Ñ+¨C¸¿¹ÈÏÉÓV×`Ñ`ÐabÐdeÓfˆØ×'Ñ'¨°D×4LÑ4LÈdÏmÉmÓ\×fÑfÐghÐjkÓlˆ
Ø#×(Ñ(¨°T×5MÑ5MÈtÏ}É}Ó]×gÑgÐhiÐklÓmˆà&‰ˆˆSÜ#7¸ÐRUÐWZÓ#[Ñ ˆàÒ&Ø'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆ�\ð "×)Ñ)¨#°bÓ9×DÑDÓFˆØ—k‘k +Ó.ˆà˜LÐ(Ð(r/   )rû   rl   r‚   rI   rý   r  r  rô   rs   rþ   rü   rç   rØ   r  r  r  rá   r  r£   ©NNNFFNrÑ   re   s   @@r,   rò   rò   ÿ   s$   ù‡ € ÙG÷"Tõ "T÷H3)÷ 3)ò 3)r/   rò   c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚChameleonDecoderLayeri]  c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r#   rl   rô   rõ   )r*   r+   s   "€r,   r-   Ú"ChameleonDecoderLayer.__annotate__^  ó   ø€ ÷ fñ f™ð f¹3ñ fr/   c                ó   <€ \         SV `  4        VP                  V n        \        WR 7      V n        \        V4      V n        \        VP                  VP                  R7      V n	        \        VP                  VP                  R7      V n
        R# ©)rl   rô   rÌ   N©rB   rC   rI   rò   Ú	self_attnr³   Úmlpr;   Úrms_norm_epsÚinput_layernormÚpost_attention_layernormr  s   &&&€r,   rC   ÚChameleonDecoderLayer.__init__^  ók   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔä+°6ÔOˆŒä Ó'ˆŒÜ/°×0BÑ0BÈ×H[ÑH[Ô\ˆÔÜ(8¸×9KÑ9KÐQW×QdÑQdÔ(eˆÖ%r/   c                ód  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[ P                  R,          R	S[S[ P                  S[S[ P                  S[ P                  3,          R,          3,          /# r
  ©r(   rO   r  r   r  r^   r)   )r*   r+   s   "€r,   r-   r#  h  s´   ø€ ÷ 8ñ 8á—|‘|ð8ñ Ÿ™ tÕ+ð8ñ ×&Ñ&¨Õ-ð	8ñ
  �ð8ñ   $�;ð8ñ ˜$•;ð8ñ #Ÿ\™\¨DÕ0ð8ñ 
‰u× Ñ ¡%©×(9Ñ(9¹5×;LÑ;LÐ(LÕ"MÐPTÕ"TÐTÕ	Uñ8r/   c                ó   € Tp	V P                  V4      pV P                  ! RRVRVRVRVRVRVRV/VB w  rW‘,           pTp	V P                  V4      pV P                  V4      pW‘,           pV3pV'       d
   Wº3,          pV# )	a¼  
Args:
    hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
    attention_mask (`torch.FloatTensor`, *optional*):
        attention mask of size `(batch_size, sequence_length)` if flash attention is used or `(batch_size, 1,
        query_sequence_length, key_sequence_length)` if default attention is used.
    output_attentions (`bool`, *optional*):
        Whether or not to return the attentions tensors of all attention layers. See `attentions` under
        returned tensors for more detail.
    use_cache (`bool`, *optional*):
        If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
        (see `past_key_values`).
    past_key_values (`Cache`, *optional*): cached past key and value projection states
    kwargs (`dict`, *optional*):
        Arbitrary kwargs to be ignored, used for FSDP and other methods that injects code
        into the model
rM   rà   r�   r  r  r  r  r0   )r+  r(  r,  r)  ©rH   rM   rà   r�   r  r  r  r  r‡   ÚresidualÚself_attn_weightsÚoutputss   &&&&&&&&,   r,   r[   ÚChameleonDecoderLayer.forwardh  sÊ   € ð8 !ˆà×,Ñ,¨]Ó;ˆð ,0¯>ª>ñ 	,
Ø'ð	,
à)ð	,
ð &ð	,
ð ,ð		,
ð
 0ð	,
ð  ð	,
ð !4ð	,
ð ñ	,
Ñ(ˆð !Õ0ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØ Õ0ˆà Ð"ˆçØÐ+Õ+ˆGàˆr/   ©rI   r+  r)  r,  r(  r  rÃ   re   s   @@r,   r   r   ]  s    ù‡ € ÷fó f÷8÷ 8ò 8r/   r   c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚChameleonSwinDecoderLayeri£  c                ó&   <€ V ^8„  d   QhRS[ RS[/# r"  rõ   )r*   r+   s   "€r,   r-   Ú&ChameleonSwinDecoderLayer.__annotate__¤  r$  r/   c                ó   <€ \         SV `  4        VP                  V n        \        WR 7      V n        \        V4      V n        \        VP                  VP                  R7      V n	        \        VP                  VP                  R7      V n
        R# r&  r'  r  s   &&&€r,   rC   Ú"ChameleonSwinDecoderLayer.__init__¤  r.  r/   c                ód  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[ P                  R,          R	S[S[ P                  S[S[ P                  S[ P                  3,          R,          3,          /# r
  r0  )r*   r+   s   "€r,   r-   r;  ®  s´   ø€ ÷ 6ñ 6á—|‘|ð6ñ Ÿ™ tÕ+ð6ñ ×&Ñ&¨Õ-ð	6ñ
  �ð6ñ   $�;ð6ñ ˜$•;ð6ñ #Ÿ\™\¨DÕ0ð6ñ 
‰u× Ñ ¡%©×(9Ñ(9¹5×;LÑ;LÐ(LÕ"MÐPTÕ"TÐTÕ	Uñ6r/   c                ó   € Tp	V P                   ! RRVRVRVRVRVRVRV/VB w  rV P                  V4      pW‘,           pTp	V P                  V4      pV P                  V4      pW‘,           pV3pV'       d
   Wº3,          pV# )	aä  
Args:
    hidden_states (`torch.FloatTensor`):
        input to the layer of shape `(batch, seq_len, embed_dim)`
    attention_mask (`torch.FloatTensor`, *optional*):
        attention mask of size `(batch_size, sequence_length)` if flash attention is used or `(batch_size, 1,
        query_sequence_length, key_sequence_length)` if default attention is used.
    position_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
        Indices of positions of each input sequence tokens in the position embeddings
    past_key_values (`Cache`, *optional*): cached past key and value projection states
    output_attentions (`bool`, *optional*):
        Whether or not to return the attentions tensors of all attention layers. See `attentions` under
        returned tensors for more detail.
    use_cache (`bool`, *optional*):
        If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
        (see `past_key_values`).
rM   rà   r�   r  r  r  r  r0   )r(  r+  r)  r,  r2  s   &&&&&&&&,   r,   r[   Ú!ChameleonSwinDecoderLayer.forward®  sÈ   € ð: !ˆð ,0¯>ª>ñ 	,
Ø'ð	,
à)ð	,
ð &ð	,
ð ,ð		,
ð
 0ð	,
ð  ð	,
ð !4ð	,
ð ñ	,
Ñ(ˆð ×,Ñ,¨]Ó;ˆØ Õ0ˆà ˆØŸ™ Ó/ˆØ×5Ñ5°mÓDˆØ Õ0ˆØ Ð"ˆçØÐ+Õ+ˆGàˆr/   r7  r  rÃ   re   s   @@r,   r9  r9  £  s    ù‡ € ÷fó f÷6÷ 6ò 6r/   r9  c                   óH   a a€ ] tR tRt oRtV 3R ltV3R lR ltRtVtV ;t	# )ÚChameleonVQVAEVectorQuantizeriç  aÇ  
A module for vector quantization using learned embedding vectors.

This module implements the quantization process similar to the one described in
the VQ-VAE (Vector Quantized Variational AutoEncoder) paper. It quantizes continuous
input vectors into discrete codebook vectors, which are learned during training.
Current implementation improves over previous ones by avoiding costly matrix multiplications
and allowing for post-hoc remapping of indices.
c                óì   <€ \         SV `  4        VP                  V n        VP                  V n        \        VR R4      V n        \        P                  ! V P                  V P                  4      V n	        R# )Úbetag      Ð?N)
rB   rC   Únum_embeddingsÚ	embed_dimÚembedding_dimr„   rD  r   Ú	EmbeddingÚ	embeddingr¿   s   &&€r,   rC   Ú&ChameleonVQVAEVectorQuantizer.__init__ò  sX   ø€ Ü‰ÑÔØ$×3Ñ3ˆÔØ#×-Ñ-ˆÔÜ˜F F¨DÓ1ˆŒ	äŸš d×&9Ñ&9¸4×;MÑ;MÓNˆŽr/   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r#   Úhidden_staterN   )r*   r+   s   "€r,   r-   Ú*ChameleonVQVAEVectorQuantizer.__annotate__ú  s   ø€ ÷ >ñ >¡E§L¡Lñ >r/   c           
     ó¸  € VP                  ^ ^^^4      P                  4       pVP                  RV P                  4      p\        P
                  ! V^,          ^RR7      \        P
                  ! V P                  P                  ^,          ^R7      ,           ^\        P                  ! RW P                  P                  P                  ^ ^4      4      ,          ,
          p\        P                  ! V^R7      pV P                  V4      P                  VP                  4      p\        P                  ! VP                  4       V,
          ^,          4      V P                  \        P                  ! WQP                  4       ,
          ^,          4      ,          ,           pWV,
          P                  4       ,           pVP                  ^ ^^^4      P                  4       pWVV3# )é    T)r‰   rQ   r’   z	bd,dn->bnrR   )Úpermuterë   r  rG  r(   ÚsumrI  rF   Úeinsumr˜   Úargminr_   rW   ÚdetachrD  )rH   rL  Úhidden_state_flattenedÚ	distancesÚmin_encoding_indicesÚhidden_state_quantÚlosss   &&     r,   r[   Ú%ChameleonVQVAEVectorQuantizer.forwardú  s  € Ø#×+Ñ+¨A¨q°!°QÓ7×BÑBÓDˆØ!-×!2Ñ!2°2°t×7IÑ7IÓ!JÐô �IŠIÐ,¨aÕ/°QÀÔEÜ�iŠi˜Ÿ™×-Ñ-¨qÕ0°aÔ8õ9à”%—,’,˜{Ð,BÇNÁN×DYÑDY×DcÑDcÐdeÐghÓDiÓjÕjõkð 	ô  %Ÿ|š|¨I¸1Ô=ÐØ!Ÿ^™^Ð,@ÓA×FÑFÀ|×GYÑGYÓZÐô �zŠzÐ-×4Ñ4Ó6¸ÕEÈ!ÕKÓLÈtÏyÉyÔ[`×[eÒ[eØ×"5Ñ"5Ó"7Õ7¸AÕ=ó\
õ P
õ 
ˆð
 *À,Õ-N×,VÑ,VÓ,XÕXÐð 0×7Ñ7¸¸1¸aÀÓC×NÑNÓPÐà!Ð)=Ð=Ð=r/   )rD  rI  rG  rE  rÑ   re   s   @@r,   rB  rB  ç  s   ù‡ € ñõO÷>÷ >ð >r/   rB  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )Ú#ChameleonVQVAEEncoderConvDownsamplei  c                ób   <€ \         SV `  4        \        P                  ! W^^^ R7      V n        R# )é   ©Úkernel_sizeÚstrideÚpaddingN)rB   rC   r   ÚConv2dÚconv©rH   Úin_channelsrJ   s   &&€r,   rC   Ú,ChameleonVQVAEEncoderConvDownsample.__init__  s%   ø€ Ü‰ÑÔÜ—I’I˜kÀAÈaÐYZÔ[ˆŽ	r/   c                ó\   € \         P                  ! VRR^ R7      pV P                  V4      pV# )rO  Úconstant)ÚpadÚmoderß   )rO  rÇ   rO  rÇ   )rÍ   rj  rd  rÏ   s   &&r,   r[   Ú+ChameleonVQVAEEncoderConvDownsample.forward  s+   € äŸš˜m°ÀJÐVWÔXˆØŸ	™	 -Ó0ˆØÐr/   )rd  rÃ   re   s   @@r,   r\  r\    s   ù‡ € õ\÷ò r/   r\  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )Ú ChameleonVQVAEEncoderResnetBlocki"  c                óô  <€ \         SV `  4        W n        Vf   TMTV n        W@n        \
        P                  P                  ^ VRRR7      V n        \
        P                  P                  W#^^^R7      V n
        \
        P                  P                  ^ VRRR7      V n        \
        P                  P                  VP                  4      V n        \
        P                  P                  W3^^^R7      V n        V P                  V P                  8w  dg   V P                  '       d+   \
        P                  P                  W#^^^R7      V n        R # \
        P                  P                  W#^^^ R7      V n        R # R # )Nrc   T©Ú
num_groupsÚnum_channelsr=   Úaffiner_  )rB   rC   rf  Úout_channelsÚuse_conv_shortcutr(   r   Ú	GroupNormÚnorm1rc  Úconv1Únorm2ÚDropoutrâ   Úconv2Úconv_shortcutÚnin_shortcut)rH   rl   rf  rt  r|  rJ   s   &&&&&€r,   rC   Ú)ChameleonVQVAEEncoderResnetBlock.__init__#  s(  ø€ ô 	‰ÑÔØ&ÔØ+7Ò+?™KÀ\ˆÔØ!.Ôä—X‘X×'Ñ'°2ÀKÐUYÐbfÐ'ÓgˆŒ
Ü—X‘X—_‘_ [ÈAÐVWÐab�_ÓcˆŒ
Ü—X‘X×'Ñ'°2ÀLÐVZÐcgÐ'ÓhˆŒ
Ü—x‘x×'Ñ'¨¯©Ó7ˆŒÜ—X‘X—_‘_ \ÈQÐWXÐbc�_ÓdˆŒ
Ø×Ñ˜t×0Ñ0Ô0Ø×%×%Ð%Ü%*§X¡X§_¡_°[Ð\]ÐfgÐqr _Ó%s�Ö"ä$)§H¡H§O¡O°KÐ[\ÐefÐpq OÓ$r�Ö!ñ	 1r/   c                óâ  € TpV P                  V4      pV\        P                  ! V4      ,          pV P                  V4      pV P	                  V4      pV\        P                  ! V4      ,          pV P                  V4      pV P                  V4      pV P                  V P                  8w  d=   V P                  '       d   V P                  V4      pW!,           # V P                  V4      pW!,           # r£   )rw  r(   Úsigmoidrx  ry  râ   r{  rf  rt  ru  r|  r}  )rH   rM   r3  s   && r,   r[   Ú(ChameleonVQVAEEncoderResnetBlock.forward:  sÉ   € Ø ˆØŸ
™
 =Ó1ˆØœŸš }Ó5Õ5ˆØŸ
™
 =Ó1ˆàŸ
™
 =Ó1ˆØœŸš }Ó5Õ5ˆØŸ™ ]Ó3ˆØŸ
™
 =Ó1ˆà×Ñ˜t×0Ñ0Ô0Ø×%×%Ð%Ø×-Ñ-¨hÓ7�ð Õ'Ð'ð  ×,Ñ,¨XÓ6�àÕ'Ð'r/   )
rx  r{  r|  râ   rf  r}  rw  ry  rt  ru  )NFrÃ   re   s   @@r,   rn  rn  "  s   ù‡ € ÷s÷.(ò (r/   rn  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚChameleonVQVAEEncoderAttnBlockiN  c                óÀ  <€ \         SV `  4        Wn        \        P                  P                  ^ VRRR7      V n        \        P                  P                  W^^^ R7      V n        \        P                  P                  W^^^ R7      V n	        \        P                  P                  W^^^ R7      V n
        \        P                  P                  W^^^ R7      V n        R# )é    rc   Trp  r_  N)rB   rC   rf  r(   r   rv  Únormrc  r¬   r­   ÚvÚproj_outre  s   &&€r,   rC   Ú'ChameleonVQVAEEncoderAttnBlock.__init__O  s­   ø€ Ü‰ÑÔØ&Ôä—H‘H×&Ñ&°"À;ÐTXÐaeÐ&ÓfˆŒ	Ü—‘—‘ ÀqÐQRÐ\]�Ó^ˆŒÜ—‘—‘ ÀqÐQRÐ\]�Ó^ˆŒÜ—‘—‘ ÀqÐQRÐ\]�Ó^ˆŒÜŸ™Ÿ™¨ÈaÐXYÐcd˜ÓeˆŽr/   c                ó�  € TpV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pVP                  w  rgr‰VP                  WgW‰,          4      P                  ^ ^^4      pVP                  WgW‰,          4      p\        P                  ! W44      p
V
\        V4      R,          ,          p
\        P                  ! V
^R7      p
VP                  WgW‰,          4      pV
P                  ^ ^^4      p
\        P                  ! WZ4      P                  WgW‰4      pV P                  V4      pW+,           # )rO  r’   rø   )r†  r¬   r­   r‡  r_   rÖ   rP  r(   ÚbmmrÔ   rÍ   rê   rˆ  )rH   rM   r3  r  rì   rí   Ú
batch_sizeÚchannelsÚheightÚwidthrî   rï   s   &&          r,   r[   Ú&ChameleonVQVAEEncoderAttnBlock.forwardY  s  € Ø ˆØŸ	™	 -Ó0ˆØ—v‘v˜mÓ,ˆØ—V‘V˜MÓ*ˆ
Ø—v‘v˜mÓ,ˆð /;×.@Ñ.@Ñ+ˆ
˜fØ#×+Ñ+¨JÀ&Å.ÓQ×YÑYÐZ[Ð]^Ð`aÓbˆØ×'Ñ'¨
¸f½nÓMˆ
Ü—y’y Ó:ˆØ#¤s¨8£}¸Õ'>Õ?ˆÜ—y’y °1Ô5ˆð $×+Ñ+¨JÀ&Å.ÓQˆØ#×+Ñ+¨A¨q°!Ó4ˆÜ—i’i Ó;×CÑCÀJÐZ`Óhˆà—m‘m KÓ0ˆØÕ%Ð%r/   )rf  r­   r†  rˆ  r¬   r‡  rÃ   re   s   @@r,   rƒ  rƒ  N  s   ù‡ € õf÷&ò &r/   rƒ  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚChameleonVQVAEEncoderiq  c           
     ój  <€ \         SV `  4        \        VP                  4      V n        VP
                  V n        VP                  pVP                  pVP                  pVP                  pVP                  pVP                  p\        P                  P                  WB^^^R7      V n        TpR\        V4      ,           p	W�n        \        P"                  ! 4       V n        \'        V P                  4       EFD  p
\        P"                  ! 4       p\        P"                  ! 4       pW)V
,          ,          pW'V
,          ,          p\'        V P
                  4       Fq  pVP)                  \+        VVVR7      4       TpVP,                  f   K2  W�P,                  9   g   KD  VP.                  R8X  g   KW  VP)                  \1        V4      4       Ks  	  \        P2                  ! 4       pVVn        VVn        W P                  ^,
          8w  d   \9        V4      Vn        V^,          pV P$                  P)                  V4       EKG  	  \        P2                  ! 4       V n        \+        VXVR7      V P<                  n        VP.                  R8X  d   \1        V4      M\        P@                  ! 4       V P<                  n!        \+        VVVR7      V P<                  n"        \        P                  PG                  ^ VRRR7      V n$        \        P                  P                  TV'       d
   ^V,          MT^^^R7      V n%        R# )	r^  r_  )rl   rf  rt  NÚvanillarc   Trp  ©rÇ   )&rB   rC   ÚlenÚchannel_multiplierÚnum_resolutionsÚnum_res_blocksÚbase_channelsÚ
resolutionrf  Údouble_latentÚlatent_channelsr(   r   rc  Úconv_inr^   Úin_channel_multiplierÚ
ModuleListÚdownÚrangeÚappendrn  Úattn_resolutionsÚ	attn_typerƒ  rã   ÚblockÚattnr\  Ú
downsampleÚmidÚblock_1ÚIdentityÚattn_1Úblock_2rv  Únorm_outÚconv_out)rH   rl   rš  r›  rf  rœ  r�  r—  Úcurr_resrŸ  Úi_levelr¦  r§  Úblock_inÚ	block_outÚi_blockr¡  rJ   s   &&               €r,   rC   ÚChameleonVQVAEEncoder.__init__r  sˆ  ø€ Ü‰ÑÔä" 6×#<Ñ#<Ó=ˆÔØ$×3Ñ3ˆÔØ×,Ñ,ˆØ×&Ñ&ˆ
Ø×(Ñ(ˆØ×,Ñ,ˆØ ×0Ñ0ˆØ#×6Ñ6Ðä—x‘x—‘ {ÈqÐYZÐde�ÓfˆŒàˆØ $¤uÐ-?Ó'@Õ @ÐØ%:Ô"Ü—M’M“OˆŒ	Ü˜T×1Ñ1×2ˆGÜ—M’M“OˆEÜ—=’=“?ˆDØ$¸WÕ'EÕEˆHØ%¸7Õ(CÕCˆIÜ  ×!4Ñ!4Ö5�Ø—‘Ü4Ø%Ø$,Ø%.ôôð %�à×+Ñ+Ô7Ø ×$;Ñ$;Ö;Ø×(Ñ(¨IÖ5à—K‘KÔ >¸xÓ HÖIñ 6ô  —9’9“;ˆDØˆDŒJØˆDŒIØ×.Ñ.°Õ2Ô2Ü"EÀhÓ"O�”Ø# q�=�Ø�I‰I×Ñ˜T×"ñ7 3ô: —9’9“;ˆŒÜ;ØØ Ø!ô
ˆ�‰Ôð
 GM×FVÑFVÐZcÔFcÔ8¸ÔBÔik×itÒitÓivˆ�‰ŒÜ;ØØ Ø!ô
ˆ�‰Ôô Ÿ™×*Ñ*°bÀxÐUYÐbfÐ*ÓgˆŒÜŸ™Ÿ™Øß#0ˆA�Ö°oØØØð (ó 
ˆŽr/   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r#   Úpixel_values)r(   r  )r*   r+   s   "€r,   r-   Ú"ChameleonVQVAEEncoder.__annotate__·  s   ø€ ÷ !ñ !¡E×$4Ñ$4ñ !r/   c                ó   € V P                  V4      .p\        V P                  4       EF  p\        V P                  4       Fš  pV P                  V,          P
                  V,          ! VR,          4      p\        V P                  V,          P                  4      ^ 8”  d+   V P                  V,          P                  V,          ! V4      pVP                  V4       Kœ  	  W0P                  ^,
          8w  g   KÐ  VP                  V P                  V,          P                  VR,          4      4       EK  	  VR,          pV P                  P                  V4      pV P                  P                  V4      pV P                  P                  V4      pV P                  V4      pV\        P                   ! V4      ,          pV P#                  V4      pV# )rÇ   rR   )rž  r¢  r˜  r™  r¡  r¦  r–  r§  r£  r¨  r©  rª  r¬  r­  r®  r(   r€  r¯  )rH   r¸  rM   r±  r´  rL  Úlast_hidden_states   &&     r,   r[   ÚChameleonVQVAEEncoder.forward·  sr  € àŸ™ lÓ3Ð4ˆÜ˜T×1Ñ1×2ˆGÜ  ×!4Ñ!4Ö5�Ø#Ÿy™y¨Õ1×7Ñ7¸Ö@Ø! "Õ%ó �ô �t—y‘y Õ)×.Ñ.Ó/°!Ô3Ø#'§9¡9¨WÕ#5×#:Ñ#:¸7Ö#CÀLÓ#Q�LØ×$Ñ$ \Ö2ñ 6ð ×.Ñ.°Õ2Ö2Ø×$Ñ$ T§Y¡Y¨wÕ%7×%BÑ%BÀ=ÐQSÕCTÓ%U×Vñ 3ð *¨"Õ-ÐØ ŸH™H×,Ñ,Ð->Ó?ÐØ ŸH™HŸO™OÐ,=Ó>ÐØ ŸH™H×,Ñ,Ð->Ó?Ðð !ŸM™MÐ*;Ó<ÐØœUŸ]š]Ð+<Ó=Õ=ÐØ ŸM™MÐ*;Ó<ÐØ Ð r/   )rž  r¯  r¡  rŸ  r©  r®  r™  r˜  rÃ   re   s   @@r,   r’  r’  q  s   ù‡ € õC
÷J!÷ !ð !r/   r’  c                   óœ   a € ] tR tRt o RtR t]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       t]R	 4       tV 3R
 lR ltRtV tR# )ÚChameleonImageVocabularyMappingiÒ  zE
A class for mapping discrete image tokens from VQGAN to BPE tokens.
c                ó>   € Wn         VP                  R 4      V n        R# )z<image>N)Ú	vocab_mapÚgetÚimage_token_id)rH   rÀ  s   &&r,   rC   Ú(ChameleonImageVocabularyMapping.__init__×  s   € Ø"ŒØ'Ÿm™m¨IÓ6ˆÖr/   c                ój   € V P                   P                  4        UUu/ uF  w  rW!bK	  	  upp# u uppi r£   )rÀ  Úitems©rH   r­   r‡  s   &  r,   Úval2nameÚ(ChameleonImageVocabularyMapping.val2nameÛ  s-   € à!%§¡×!5Ñ!5Ô!7Ô8Ñ!7™˜�’Ñ!7Ò8Ð8ùÓ8ó   ž/c           	     ó®   € \        V P                  P                  4        UUu. uF   w  rVP                  R 4      '       g   K  VNK"  	  upp4      # u uppi )ÚIMGIMG)ÚsortedrÀ  rÅ  Ú
startswith)rH   ÚnameÚvals   &  r,   r%   Ú,ChameleonImageVocabularyMapping.image_tokensß  s>   € ä¨D¯N©N×,@Ñ,@Ô,BÔ`Ñ,B™y˜tÀdÇoÁoÐV^×F_—s�sÑ,BÒ`ÓaÐaùÓ`s   £A
ÁA
c           
     ó  a€ \        ^
4       Uu/ uF(  p\        \        R4      V,           4      \        V4      bK*  	  upoR V3R llpV P                   Uu/ uF%  q3\        V! V P                  V,          4      4      bK'  	  up# u upi u upi )é
   ÚAc                ó0   € V ^8„  d   QhR\         R\         /# )r#   Úold_namer>   )r—   )r*   s   "r,   r-   Ú=ChameleonImageVocabularyMapping.bpe2img.<locals>.__annotate__ç  s   € ÷ 	`ñ 	`œCð 	`¤Cñ 	`r/   c                 óR   <€ R P                  V3R lV \        R4      R  4       4      # )Ú c              3   óF   <"  € T F  pSP                  W4      x € K  	  R # 5ir£   )rÁ  )Ú.0ÚcÚimg_tkn_chr_mappings   & €r,   Ú	<genexpr>ÚIChameleonImageVocabularyMapping.bpe2img.<locals>.remap.<locals>.<genexpr>è  s"   øé € Ð_ÑB^¸QÐ.×2Ñ2°1×8Ð8ÓB^ùs   ƒ!rË  rR   )Újoinr–  )rÕ  rÜ  s   &€r,   ÚremapÚ6ChameleonImageVocabularyMapping.bpe2img.<locals>.remapç  s$   ø€ Ø—7‘7Ô_À(Ì3ÈxË=Ð[]ÑB^Ó_Ó_Ð_r/   )r¢  ÚchrÚordr—   r%   rÔ   rÇ  )rH   Úirà  ÚtokrÜ  s   &   @r,   Úbpe2imgÚ'ChameleonImageVocabularyMapping.bpe2imgã  s�   ø€ äBGÈÄ)ÓLÁ)¸Qœs¤3 s£8¨a¥<Ó0´#°a³&Ò8Á)ÑLÐ÷	`ð 	`ð @D×?PÒ?PÓQÑ?P¸”S™˜tŸ}™}¨SÕ1Ó2Ó3Ò3Ñ?PÑQÐQùò Mùò
 Rs   �.BÁ+B
c                ój   € V P                   P                  4        UUu/ uF  w  rW!bK	  	  upp# u uppi r£   )ræ  rÅ  rÆ  s   &  r,   Úimg2bpeÚ'ChameleonImageVocabularyMapping.img2bpeì  s-   € à!%§¡×!3Ñ!3Ô!5Ô6Ñ!5™˜�’Ñ!5Ò6Ð6ùÓ6rÉ  c                óÞ   € \         P                  ! \        V P                  P	                  4       4      4      \         P                  ! \        V P                  P                  4       4      4      3# r£   )r(   ÚtensorrÌ  ræ  ÚkeysÚvaluesr`   s   &r,   Úbpe2img_search_tensorsÚ6ChameleonImageVocabularyMapping.bpe2img_search_tensorsð  sC   € ä�|Š|œF 4§<¡<×#4Ñ#4Ó#6Ó7Ó8¼%¿,º,ÄvÈdÏlÉl×NaÑNaÓNcÓGdÓ:eÐeÐer/   c                óð   € \         P                  ! \        V P                  P	                  4       4      ^,           \         P
                  R7      pV P                  P                  4        F	  w  r#W1V&   K  	  V# )rÇ   rƒ   )r(   ÚzerosÚmaxré  rí  rÔ   rÅ  )rH   Úmappingr­   r‡  s   &   r,   Úimg2bpe_mapping_tensorÚ6ChameleonImageVocabularyMapping.img2bpe_mapping_tensorô  sR   € ä—+’+œc $§,¡,×"3Ñ"3Ó"5Ó6¸Õ:Ä%Ç)Á)ÔLˆØ—L‘L×&Ñ&Ö(‰DˆAØ�A‹Jñ )àˆr/   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r#   Ú	img_batchr>   rN   )r*   r+   s   "€r,   r-   Ú,ChameleonImageVocabularyMapping.__annotate__û  s#   ø€ ÷ %ñ %©¯©ð %¹%¿,¹,ñ %r/   c                ó€   € VP                   pV P                  VP                  R 4      ,          pVP                  V4      # )r�   )rh   rõ  rT   )rH   rø  rh   Ú
img_tokenss   &&  r,   Úconvert_img2bpeÚ/ChameleonImageVocabularyMapping.convert_img2bpeû  s5   € Ø×!Ñ!ˆØ×0Ñ0°·±¸eÓ1DÕEˆ
Ø�}‰}˜VÓ$Ð$r/   )rÂ  rÀ  N)r1   r2   r3   r4   r5   rC   r   rÇ  r%   ræ  ré  rï  rõ  rü  r7   r8   r9   s   @r,   r¾  r¾  Ò  s—   ø‡ € ñò7ð ñ9ó ð9ð ñbó ðbð ñRó ðRð ñ7ó ð7ð ñfó ðfð ñó ð÷%ö %r/   r¾  c                   ól   a € ] tR tRt o RtRtRtRR.tRR.tRt	Rt
RtRtRtR]].R	]/tV 3R
 ltRtV tR# )ÚChameleonPreTrainedModeli  ÚmodelTr   r9  r  Úcausal_maskrM   Ú
attentionsc                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rk   rm   )r*   r+   s   "€r,   r-   Ú%ChameleonPreTrainedModel.__annotate__  s   ø‡ ‚ áÑò r/   r0   N)ÚimageÚtext)r1   r2   r3   r4   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphÚ_supports_flex_attnÚ_supports_attention_backendr   r9  rò   Ú_can_record_outputsr6   r7   r8   r9   s   @r,   rÿ  rÿ    sn   ø‡ € ð  ÐØ(ÐØ&*Ð#Ø0Ð2MÐNÐØ#4°mÐ"DÐØÐØ€Nà!ÐØÐØ"&ÐàÐ/Ð1JÐKØÐ(ðÐ÷ ƒ r/   rÿ  aW  
    The VQ-VAE model used in Chameleon for encoding/decoding images into discrete tokens.
    This model follows the "Make-a-scene: Scene-based text-to-image generation with human priors" paper from
    [ Oran Gafni, Adam Polyak, Oron Ashual, Shelly Sheynin, Devi Parikh, and Yaniv
    Taigman](https://huggingface.co/papers/2203.13131).
    ©Úcustom_introc                   ó„   a a€ ] tR tRt o. R
OtR]R]/tV3R lV 3R llt]	]
V3R lR l4       4       tV3R ltR	tVtV ;t# )ÚChameleonVQVAEi  rM   r  c                ó    <€ V ^8„  d   QhRS[ /# rk   ©r   )r*   r+   s   "€r,   r-   ÚChameleonVQVAE.__annotate__)  s   ø€ ÷ ñ Ñ3ñ r/   c                óŽ  <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        P                  P                  VP                  VP                  ^4      V n        \        P                  P                  VP                  VP                  ^4      V n        V P                  4        V P                  4        R# )rÇ   N)rB   rC   r’  ÚencoderrB  Úquantizer(   r   rc  r�  rF  Ú
quant_convÚpost_quant_convÚevalÚ	post_initr¿   s   &&€r,   rC   ÚChameleonVQVAE.__init__)  s†   ø€ Ü‰Ñ˜Ô ä,¨VÓ4ˆŒÜ5°fÓ=ˆŒÜŸ(™(Ÿ/™/¨&×*@Ñ*@À&×BRÑBRÐTUÓVˆŒÜ$Ÿx™xŸ™¨v×/?Ñ/?À×AWÑAWÐYZÓ[ˆÔØ�	‰	ŒØ�‰Ör/   c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# ©r#   r¸  r‡   r>   )r(   r  r   r   r!   )r*   r+   s   "€r,   r-   r  5  s1   ø€ ÷ 
ñ 
Ù!×,Ñ,ð
Ù8>Ñ?QÕ8Rð
á	"ñ
r/   c                óŒ   € V P                  V4      pV P                  V4      pV P                  V4      w  rVp\        VVVVR 7      # ))r»  r$   r%   r&   )r  r  r  r!   )rH   r¸  r‡   rM   Úconv_hidden_statesr$   Úemb_lossÚindicess   &&,     r,   ÚencodeÚChameleonVQVAE.encode3  sO   € ð
 Ÿ™ \Ó2ˆØ!Ÿ_™_¨]Ó;ÐØ9=¿¹ÐGYÓ9ZÑ6Ð#¨wÜ(Ø+Ø(CØ Ø#ô	
ð 	
r/   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rk   r  )r*   r+   s   "€r,   r-   r    s   ø‡ ‚ ñ !Ñ ò r/   )r  r  r  r  )rB  rƒ  rn  )r1   r2   r3   r4   r
  rn  rƒ  r  rC   r   r   r'  r6   r7   r8   rd   re   s   @@r,   r  r    sQ   ù‡ € òÐð 	Ð9ØÐ4ðÐ÷
ó ð  Ø÷
ó ó  ð
÷A … r/   r  c                   óÊ   a a€ ] tR tRt oV3R lV 3R lltV3R lR lt]]! RR7      V3R lR	 l4       4       tV3R
 lR lt	]
]]RV3R lR ll4       4       4       tRtVtV ;t# )ÚChameleonModeliC  c                ó    <€ V ^8„  d   QhRS[ /# rk   rm   )r*   r+   s   "€r,   r-   ÚChameleonModel.__annotate__E  s   ø€ ÷ ñ ™ñ r/   c           	     óØ  <€ \         SV `  V4       VP                  V n        VP                  V n        \
        P                  ! VP                  VP                  V P                  4      V n        \        VP                  4      V n        V P                  P                  '       g   \        M\        p\
        P                   ! \#        VP$                  4       Uu. uF
  q2! W4      NK  	  up4      V n        \)        VP                  VP*                  R 7      V n        \.        P1                  VP2                  4      V n        \7        VR7      V n        RV n        V P=                  4        R# u upi )rÌ   ©rl   FN)rB   rC   Úpad_token_idÚpadding_idxÚ
vocab_sizer   rH  rI   Úembed_tokensr¾  Úvocabulary_mapÚvocabulary_mappingrl   Ú	swin_normr   r9  r   r¢  Únum_hidden_layersÚlayersr;   r*  r†  r  Ú_from_configÚ	vq_configÚvqmodelrg   Ú
rotary_embÚgradient_checkpointingr  )rH   rl   Údecoder_layerrô   rJ   s   &&  €r,   rC   ÚChameleonModel.__init__E  s  ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔÜ"AÀ&×BWÑBWÓ"XˆÔØ59·[±[×5J×5JÐ5JÕ-ÔPiˆÜ—m’mÜ?DÀV×E]ÑE]Ô?^Ó_Ñ?^°)ˆ]˜6Ö-Ñ?^Ñ_ó
ˆŒô % V×%7Ñ%7¸V×=PÑ=PÔQˆŒ	Ü%×2Ñ2°6×3CÑ3CÓDˆŒÜ2¸&ÔAˆŒØ&+ˆÔ#ð 	�‰Öùò `s   ÃE'c                ó4   <€ V ^8„  d   QhRS[ P                  /# r·  r'   )r*   r+   s   "€r,   r-   r-  X  s   ø€ ÷ ñ ©U×->Ñ->ñ r/   c                óÔ   € VP                   ^ ,          pV P                  P                  VRR7      pV P                  P	                  VP
                  4      pVP                  VR4      pV# )a;  
Tokenizes images into discrete tokens with VQGAN module. Converts
obtained image tokens into BPE tokens and wraps with "boi" and "eoi"
special tokens.

Args:
    pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)):
        The tensors corresponding to the input images.
T©Úreturn_dictrR   )r_   r;  r'  r5  rü  r%   r  )rH   r¸  rŒ  Úvqmodel_outputsÚbpe_tokss   &&   r,   Úget_image_tokensÚChameleonModel.get_image_tokensX  s_   € ð "×'Ñ'¨Õ*ˆ
Ø59·\±\×5HÑ5HÈÐcgÐ5HÓ5hˆØ×*Ñ*×:Ñ:¸?×;WÑ;WÓXˆØ—=‘= ¨RÓ0ˆØˆr/   zcTokenizes images into discrete tokens with VQGAN module and embeds them with text embeddings layer.r  c                ó`   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          /# r"  ©r(   r)   r   r   r^   r   )r*   r+   s   "€r,   r-   r-  l  s7   ø€ ÷ ñ Ù!×-Ñ-ðÙ9?Ñ@RÕ9Sðá	Ñ+Õ	+ñr/   c                ó
  € VP                   ^ ,          pV P                  P                  ! V3RR/VB pV P                  P	                  VP
                  4      P                  VR4      pV P                  4       ! V4      Vn        V# )z–
pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
    The tensors corresponding to the input images.
rC  TrR   )	r_   r;  r'  r5  rü  r%   r  Úget_input_embeddingsÚpooler_output)rH   r¸  r‡   rŒ  rD  Ú
bpe_tokenss   &&,   r,   Úget_image_featuresÚ!ChameleonModel.get_image_featuresh  s{   € ð "×'Ñ'¨Õ*ˆ
Ø59·\±\×5HÒ5HÈÑ5rÐcgÐ5rÐkqÑ5rˆØ×,Ñ,×<Ñ<¸_×=YÑ=YÓZ×_Ñ_Ð`jÐlnÓoˆ
Ø(,×(AÑ(AÔ(CÀJÓ(OˆÔ%ØÐr/   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r#   Ú	input_idsÚinputs_embedsÚimage_features)r(   r  r)   )r*   r+   s   "€r,   r-   r-  y  s7   ø€ ÷ "ñ "Ù×)Ñ)ð"Ù:?×:KÑ:Kð"Ù]b×]nÑ]nñ"r/   c           	     óV  € Vfn   W P                  4       ! \        P                  ! V P                  P                  \        P
                  VP                  R7      4      8H  pVP                  R4      pMWP                  P                  8H  pVP                  4       pVP                  ^ ,          VP                  ^,          ,          pVP                  R4      P                  VP                  4      p\        WRP                  R,          ,          VP                  4       8H  RV RV 24       V# )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.
r�   z6Image features and image tokens do not match, tokens: z, features: rR   )rK  r(   rì  r5  rÂ  Úlongrh   ÚallrQ  r_   r«   rT   r   Únumel)rH   rQ  rR  rS  Úspecial_image_maskÚn_image_tokensÚn_image_featuress   &&&&   r,   Úget_placeholder_maskÚ#ChameleonModel.get_placeholder_masky  s  € ð ÒØ!.×2KÑ2KÔ2MÜ—’˜T×4Ñ4×CÑCÌ5Ï:É:Ð^k×^rÑ^rÔsó3ñ "Ðð "4×!7Ñ!7¸Ó!;Ñà!*×.EÑ.E×.TÑ.TÑ!TÐà+×/Ñ/Ó1ˆØ)×/Ñ/°Õ2°^×5IÑ5IÈ!Õ5LÕLÐØ/×9Ñ9¸"Ó=×@Ñ@À×AUÑAUÓVÐÜØ×0Ñ0°Õ4Õ4¸×8LÑ8LÓ8NÑNØDÀ^ÐDTÐT`ÐaqÐ`rÐsô	
ð "Ð!r/   c                ó6  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[R,          R	S[S[,          R
S[S[	,          /	# )r#   rQ  Nr¸  rà   r�   r  rR  r  r‡   r>   )
r(   r  r)   rO   r   r  r   r   r^   r   )r*   r+   s   "€r,   r-   r-  ”  s¹   ø€ ÷ @
ñ @
á×#Ñ# dÕ*ð@
ñ ×'Ñ'¨$Õ.ð@
ñ Ÿ™ tÕ+ð	@
ñ
 ×&Ñ&¨Õ-ð@
ñ  �ð@
ñ ×(Ñ(¨4Õ/ð@
ñ ˜$•;ð@
ñ Ñ-Õ.ð@
ñ 
Ñ(Õ	(ñ@
r/   c                ó>  € VR J VR J,          '       d   \        R4      hVf   V P                  V4      pVeB   V P                  VRR7      P                  p	V P	                  WV	R7      p
VP                  W©4      pV'       d?   Vf;   \        P                  P                  4       '       g   \        V P                  R7      pVfb   Ve   VP                  4       M^ p\        P                  ! VP                  ^,          VP                  R7      V,           pVP                  ^ 4      p\!        V P                  VVVVR7      pTpV P#                  WÔR7      pV P$                   F  pV! V3R	VR
VRVRVRV/VB pV^ ,          pK!  	  V P'                  V4      p\)        VVR7      # )Nz:You must specify exactly one of input_ids or inputs_embedsTrB  )rR  rS  r/  )rh   )rl   rR  rà   r  r�   )r�   rà   r�   r  r  r  )r»  r  )rÿ   r3  rN  rL  r[  Úmasked_scatterr(   ÚjitÚ
is_tracingr   rl   Úget_seq_lengthr†   r_   rh   r«   r
   r<  r8  r†  r   )rH   rQ  r¸  rà   r�   r  rR  r  r‡   rS  rX  Úpast_seen_tokensr  rM   r  r>  Úlayer_outputss   &&&&&&&&,        r,   r[   ÚChameleonModel.forward‘  sÃ  € ð ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZàÒ Ø ×-Ñ-¨iÓ8ˆMàÒ#Ø!×4Ñ4°\ÈtÐ4ÓT×bÑbˆNØ!%×!:Ñ!:ØÀ~ð ";ó "Ðð *×8Ñ8Ð9KÓ\ˆM÷ ˜Ò0¼¿¹×9MÑ9M×9OÒ9OÜ*°$·+±+Ô>ˆOàÒØCRÒC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÕ(>À}×G[ÑG[Ô\Ð_oÕoˆLØ'×1Ñ1°!Ó4ˆLä(Ø—;‘;Ø'Ø)Ø+Ø%ô
ˆð &ˆØ"Ÿo™o¨m˜oÓWÐð "Ÿ[œ[ˆMÙ)Øñà*ðð *ðð !0ð	ð
 $ðð %8ðð ñˆMð *¨!Õ,ŠMñ )ð Ÿ	™	 -Ó0ˆä&Ø+Ø+ô
ð 	
r/   )	r3  r=  r8  r†  r1  r<  r2  r5  r;  )NNNNNNN)r1   r2   r3   r4   rC   rF  r   r   rN  r[  r   r   r[   r7   r8   rd   re   s   @@r,   r+  r+  C  sy   ù‡ € ÷ó ÷&ð ð  ÙØzô÷óó ð÷"ð "ð0  ØØ÷@
ñ @
ó ó ó  ÷@
ð @
r/   r+  zb
    Chameleon Model with a head on top used for outputting logits for next token prediction.
    c                   ó†   a a€ ] tR tRt oRR/tV 3R ltR t]V3R lR l4       t]	]RV3R lR	 ll4       4       t
R
tVtV ;t# )Ú!ChameleonForConditionalGenerationi×  zlm_head.weightzmodel.embed_tokens.weightc                óì   <€ \         SV `  V4       \        V4      V n        VP                  V n        \
        P                  ! VP                  VP                  R R7      V n        V P                  4        R# )Frµ   N)
rB   rC   r+  r   r2  r   r¸   rI   Úlm_headr  r¿   s   &&€r,   rC   Ú*ChameleonForConditionalGeneration.__init__ß  sU   ø€ Ü‰Ñ˜Ô Ü# FÓ+ˆŒ
Ø ×+Ñ+ˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Ör/   c                ó8   € V P                   P                  V4      # r£   )r   rF  )rH   r¸  s   &&r,   rF  Ú2ChameleonForConditionalGeneration.get_image_tokensè  s   € Ø�z‰z×*Ñ*¨<Ó8Ð8r/   c                ó`   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          /# r"  rI  )r*   r+   s   "€r,   r-   Ú.ChameleonForConditionalGeneration.__annotate__ì  s<   ø€ ÷ Eñ EÙ!×-Ñ-ðEÙ9?Ñ@RÕ9SðEá	Ñ+Õ	+ñEr/   c                ó<   € V P                   P                  ! V3/ VB # r£   )r   rN  )rH   r¸  r‡   s   &&,r,   rN  Ú4ChameleonForConditionalGeneration.get_image_featuresë  s   € ð �z‰z×,Ò,¨\ÑD¸VÑDÐDr/   c                óˆ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          R	S[R,          R
S[S[ P                  ,          RS[S[,          RS[	S[
,          /# )r#   rQ  Nr¸  rà   r�   r  rR  Úlabelsr  Úlogits_to_keepr‡   r>   )r(   r  r)   rO   r   r  rÔ   r   r   r^   r   )r*   r+   s   "€r,   r-   rn  ó  sã   ø€ ÷ K
ñ K
á×#Ñ# dÕ*ðK
ñ ×'Ñ'¨$Õ.ðK
ñ Ÿ™ tÕ+ð	K
ñ
 ×&Ñ&¨Õ-ðK
ñ  �ðK
ñ ×(Ñ(¨4Õ/ðK
ñ × Ñ  4Õ'ðK
ñ ˜$•;ðK
ñ ™eŸl™lÕ*ðK
ñ Ñ+Õ,ðK
ñ 
Ñ'Õ	'ñK
r/   c
                ó4  € V P                   ! RRVRVRVRVRVRVRV/V
B pV^ ,          p\        V	\        4      '       d   \        V	) R4      MT	pV P	                  VR	VR	3,          4      pV P                   P
                  P                  p\        P                  ! VP                  4      P                  VR	R	V3&   RpVe-   V P                  ! RR
VRVRV P                  P                  /V
B p\        VVVP                  VP                   VP"                  R7      # )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]`.

Example:

```python
>>> from transformers import ChameleonProcessor, ChameleonForConditionalGeneration
>>> import torch
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image

>>> model = ChameleonForConditionalGeneration.from_pretrained("facebook/chameleon-7b", dtype=torch.bfloat16)
>>> processor = ChameleonProcessor.from_pretrained("facebook/chameleon-7b")

>>> prompt = "I used to know a lot about constellations when I was younger, but as I grew older, I forgot most of what I knew. These are the only two constellations that I really remember now.<image><image>I would like for you to tell me about 3 more constellations and give me a little bit of history about the constellation."
>>> url = "https://nineplanets.org/wp-content/uploads/2020/12/the-big-dipper-1.jpg"
>>> with httpx.stream("GET", url) as response:
...     image1 = Image.open(BytesIO(response.read()))

>>> url = "https://www.kxan.com/wp-content/uploads/sites/40/2020/10/ORION.jpg"
>>> with httpx.stream("GET", url) as response:
...     image2 = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=[image1, image2], text=prompt, return_tensors="pt").to(model.device, torch.bfloat16)

>>> generated_ids = model.generate(**inputs, max_new_tokens=100, do_sample=False)
>>> processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
```rQ  r¸  rà   r�   r  rR  r  Nr“   Úlogitsrr  r2  )rY  ru  r  rM   r  r0   )r   r•   rÔ   Úsliceri  r5  r%   r(   ÚfinforS   ÚminÚloss_functionrl   r2  r   r  rM   r  )rH   rQ  r¸  rà   r�   r  rR  rr  r  rs  r‡   r5  rM   Úslice_indicesru  r%   rY  s   &&&&&&&&&&,      r,   r[   Ú)ChameleonForConditionalGeneration.forwardñ  sC  € ð^ ,0¯:ª:ñ 	,
Øð	,
à%ð	,
ð *ð	,
ð &ð		,
ð
 ,ð	,
ð (ð	,
ð  ð	,
ð ñ	,
ˆð   �
ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆð —z‘z×4Ñ4×AÑAˆÜ%*§[¢[°·±Ó%>×%BÑ%Bˆˆq�!�\Ð!Ñ"àˆØÒØ×%Ò%Ñp¨VÐp¸FÐpÈtÏ{É{×OeÑOeÐpÐioÑpˆDä%ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r/   )ri  r   r2  )	NNNNNNNNrO  )r1   r2   r3   r4   Ú_tied_weights_keysrC   rF  r   rN  r   r[   r7   r8   rd   re   s   @@r,   rg  rg  ×  s]   ù‡ € ð +Ð,GÐHÐõò9ð ÷Eó ðEð
 Ø÷K
ñ K
ó ó ÷K
ð K
r/   rg  r•  )r  )rg  r+  rÿ  r  )Qr5   Úcollections.abcr   Údataclassesr   Ú	functoolsr   r(   Útorch.nn.functionalr   ré   rÍ   Úactivationsr   Úcache_utilsr   r   Ú
generationr	   Úmasking_utilsr
   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.deprecationr   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_chameleonr   r   Ú
get_loggerr1   rù   r!   rã   r;   rg   r©   r±   r³   Ú	LayerNormrÅ   rÚ   rð   rò   r   r9  rB  r\  rn  rƒ  r’  r¾  rÿ  r  r+  rg  Ú__all__r0   r/   r,   Ú<module>r“     s  ðñ å $Ý !Ý %ã ß Ð Ý å !ß .Ý )Ý /Ý BÝ 9ß kÑ kß Kß FÝ &÷õ õ 1ß GÝ 5ß Jð 
×	Ò	˜HÓ	%€ð Ø
ô4Ð :ó 4ó ó ð4ô J�r—y‘yô Jô*6<˜rŸy™yô 6<òt(ôô4�2—9‘9ô ô"˜Ÿ™ô õ&	U÷%ô2Z)˜Ÿ™ô Z)ô|CÐ6ô CôLAÐ :ô AôH,> B§I¡Iô ,>ô^	¨"¯)©)ô 	ô)( r§y¡yô )(ôX & R§Y¡Yô  &ôF^!˜BŸI™Iô ^!÷B,%ñ ,%ð^ ô˜ó ó ðñ& ðôô#
Ð-ó #
óð#
ðL ôP
Ð-ó P
ó ðP
ñf ðôô
b
Ð(@À/ó b
óð
b
òJ p‚r/   