§
    ‚Štjw  ã                   ót  — d dl Z d dlmZ d dlmZ d dlZd dlmZ ddlmZ	 ddl
mZ ddlmZ dd	lmZ dd
l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" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+ e e G d„ de¦  «        ¦   «         ¦   «         Z, e d¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z- e d¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z. ed¦  «         G d „ d!ej/        ¦  «        ¦   «         Z0 G d"„ d#ej/        ¦  «        Z1 G d$„ d%ej/        ¦  «        Z2	 dHd'ej/        d(ej3        d)ej3        d*ej3        d+ej3        dz  d,e4d-e4fd.„Z5 G d/„ d0ej/        ¦  «        Z6 G d1„ d2ej/        ¦  «        Z7 G d3„ d4e¦  «        Z8 G d5„ d6ej/        ¦  «        Z9 G d7„ d8ej/        ¦  «        Z: G d9„ d:ej;        ¦  «        Z< G d;„ d<e¦  «        Z=d=ej3        d>e>fd?„Z? G d@„ dAe=¦  «        Z@ e dB¬¦  «         G dC„ dDe=¦  «        ¦   «         ZAe  G dE„ dFe=e¦  «        ¦   «         ZBg dG¢ZCdS )Ié    N)ÚCallable)Ú	dataclass)Únné   )Úinitialization)ÚACT2FN)ÚCache)ÚGenerationMixin)Úuse_kernel_forward_from_hub)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPastÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚtorch_compilable_check)Úmerge_with_config_defaults)Úcapture_outputsé   )Ú	AutoModelé   )ÚOvis2ConfigÚOvis2VisionConfigc                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )Ú*BaseModelOutputWithVisualIndicatorFeatureszâ
    visual_indicator_features (`torch.FloatTensor` of shape `(batch_size, visual_indicator_size)`):
        Visual indicator features extracted from the model, which can be used for auxiliary tasks or further processing.
    NÚvisual_indicator_features)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   ÚtorchÚFloatTensorÚ__annotations__© ó    úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/ovis2/modeling_ovis2.pyr    r    ,   s7   € € € € € € ðð ð
 ;?Ð˜uÔ0°4Ñ7Ð>Ð>Ñ>Ð>Ð>r*   r    zJ
    Base class for Llava outputs, with hidden states and attentions.
    ©Úcustom_introc                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )ÚOvis2ModelOutputWithPastaÏ  
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    NÚimage_hidden_states)r"   r#   r$   r%   r0   r&   r'   r(   r)   r*   r+   r/   r/   7   s7   € € € € € € ð	ð 	ð 59Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r*   r/   zQ
    Base class for Ovis2 causal language model (or autoregressive) outputs.
    c                   óÖ   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
dz  ed<   dZeej                 dz  ed<   dZeej                 dz  ed<   dZej        dz  ed<   dS )	ÚOvis2CausalLMOutputWithPastaA  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
        Language modeling loss (for next-token prediction).
    logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
        Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size (batch_size * num_patches, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    NÚlossÚlogitsÚpast_key_valuesÚhidden_statesÚ
attentionsr0   )r"   r#   r$   r%   r3   r&   r'   r(   r4   r5   r	   r6   Útupler7   r0   r)   r*   r+   r2   r2   L   sµ   € € € € € € ðð ð &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø'+€FˆEÔ Ñ$Ð+Ð+Ñ+Ø$(€O�U˜T‘\Ð(Ð(Ñ(Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ø48Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r*   r2   ÚRMSNormc                   óT   ‡ — e Zd Zd	deddfˆ fd„Zdej        dej        fd„Zd„ Zˆ xZ	S )
ÚOvis2RMSNormç�íµ ÷Æ°>ÚepsÚreturnNc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )z;
        Ovis2RMSNorm is equivalent to T5LayerNorm
        N)ÚsuperÚ__init__r   Ú	Parameterr&   ÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer=   Ú	__class__s      €r+   rA   zOvis2RMSNorm.__init__l   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐr*   r6   c                 ó  — |j         }|                     t          j        ¦  «        }|                     d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        |                     |¦  «        z  S )Nr   éÿÿÿÿT©Úkeepdim)	ÚdtypeÚtor&   Úfloat32ÚpowÚmeanÚrsqrtrE   rD   )rF   r6   Úinput_dtypeÚvariances       r+   ÚforwardzOvis2RMSNorm.forwardt   s|   € Ø#Ô)ˆØ%×(Ò(­¬Ñ7Ô7ˆØ ×$Ò$ QÑ'Ô'×,Ò,¨R¸Ð,Ñ>Ô>ˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆØŒ{˜]×-Ò-¨kÑ:Ô:Ñ:Ð:r*   c                 óH   — t          | j        j        ¦  «        › d| j        › �S )Nz, eps=)r8   rD   ÚshaperE   ©rF   s    r+   Ú
extra_reprzOvis2RMSNorm.extra_repr{   s&   € Ý˜œÔ)Ñ*Ô*ÐIÐI°$Ô2GÐIÐIÐIr*   )r<   )
r"   r#   r$   ÚfloatrA   r&   ÚTensorrU   rY   Ú__classcell__©rH   s   @r+   r;   r;   j   sŒ   ø€ € € € € ð$ð $¨ð $¸$ð $ð $ð $ð $ð $ð $ð; U¤\ð ;°e´lð ;ð ;ð ;ð ;ðJð Jð Jð Jð Jð Jð Jr*   r;   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚOvis2VisionMLPc                 ó¶  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _	        t          j        | j        | j        |j        ¬¦  «        | _
        t          |j                 | _        d S ©N©Úbias©r@   rA   ÚconfigrG   Úintermediate_sizer   ÚLinearÚmlp_biasÚ	gate_projÚup_projÚ	down_projr   Ú
hidden_actÚact_fn©rF   re   rH   s     €r+   rA   zOvis2VisionMLP.__init__€   ó¯   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ!Ô-ˆÔØ!'Ô!9ˆÔÝœ 4Ô#3°TÔ5KÐRXÔRaÐbÑbÔbˆŒÝ”y Ô!1°4Ô3IÐPVÔP_Ð`Ñ`Ô`ˆŒÝœ 4Ô#9¸4Ô;KÐRXÔRaÐbÑbÔbˆŒÝ˜VÔ.Ô/ˆŒˆˆr*   c                 ó¨   — |                       |                      |                      |¦  «        ¦  «        |                      |¦  «        z  ¦  «        }|S ©N©rk   rm   ri   rj   ©rF   Úxrk   s      r+   rU   zOvis2VisionMLP.forwardŠ   óA   € Ø—N’N 4§;¢;¨t¯~ª~¸aÑ/@Ô/@Ñ#AÔ#AÀDÇLÂLÐQRÁOÄOÑ#SÑTÔTˆ	ØÐr*   ©r"   r#   r$   rA   rU   r\   r]   s   @r+   r_   r_      óG   ø€ € € € € ð0ð 0ð 0ð 0ð 0ðð ð ð ð ð ð r*   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 )ÚOvis2VisionEmbeddingsre   c                 óR  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        |j        | _        t          j        |j	        | j        | j        | j        d¬¦  «        | _
        | j        | j        z  dz  | _        | j        | _        t          j        | j        | j        ¦  «        | _        |                      dt!          j        | j        ¦  «                             d¦  «        d¬¦  «         t'          |j        |j        ¦  «        | _        d S )NÚvalid)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚpaddingr   Úposition_ids©r   rJ   F)Ú
persistent)r@   rA   re   rG   Ú	embed_dimÚ
image_sizeÚ
patch_sizer   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingÚregister_bufferr&   ÚarangeÚexpandr;   Úrms_norm_epsÚrms_normrn   s     €r+   rA   zOvis2VisionEmbeddings.__init__�   sþ   ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØ Ô+ˆŒØ Ô+ˆŒå!œyØÔ+ØœØœØ”?Øð 
ñ  
ô  
ˆÔð !œO¨t¬Ñ>À1ÑDˆÔØ!Ô-ˆÔÝ"$¤,¨tÔ/AÀ4Ä>Ñ"RÔ"RˆÔØ×Ò˜^­U¬\¸$Ô:LÑ-MÔ-M×-TÒ-TÐU\Ñ-]Ô-]ÐjoÐÑpÔpÐpÝ$ VÔ%7¸Ô9LÑMÔMˆŒˆˆr*   Úpixel_valuesr>   c                 ó0  — | j         j        j        }|                       |                     |¬¦  «        ¦  «        }|                     d¦  «                             dd¦  «        }|                      |¦  «        }||                      | j        ¦  «        z   }|S )N©rM   r   r   )	r‰   rD   rM   rN   ÚflattenÚ	transposer’   r�   r�   )rF   r“   Útarget_dtypeÚpatch_embedsÚ
embeddingss        r+   rU   zOvis2VisionEmbeddings.forward¥   s†   € ØÔ+Ô2Ô8ˆØ×+Ò+¨L¯OªOÀ,¨OÑ,OÔ,OÑPÔPˆØ!×)Ò)¨!Ñ,Ô,×6Ò6°q¸!Ñ<Ô<ˆ
Ø—]’] :Ñ.Ô.ˆ
à $×"9Ò"9¸$Ô:KÑ"LÔ"LÑLˆ
àÐr*   )
r"   r#   r$   r   rA   r&   r'   r[   rU   r\   r]   s   @r+   ry   ry   �   ss   ø€ € € € € ðNÐ0ð Nð Nð Nð Nð Nð Nð* EÔ$5ð ¸%¼,ð ð ð ð ð ð ð ð r*   ry   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutc                 óÀ  — t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |dt           j        ¬¦  «                             |j        ¦  «        }t          j         	                    ||| j
        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «                             ¦   «         }	|	|fS )NrJ   éþÿÿÿ)ÚdimrM   )ÚpÚtrainingr   r   )r&   Úmatmulr—   r   Ú
functionalÚsoftmaxrO   rN   rM   r¢   r§   Ú
contiguous)
rœ   r�   rž   rŸ   r    r¡   r¢   ÚkwargsÚattn_weightsÚattn_outputs
             r+   Úeager_attention_forwardr¯   °   sÃ   € õ ”<  s§}¢}°R¸Ñ'<Ô'<Ñ=Ô=ÀÑG€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r*   c            
       ó~   ‡ — e Zd ZdZˆ fd„Z	 ddej        dej        dz  deej        ej        dz  f         fd„Zˆ xZ	S )	ÚOvis2VisionAttentionz=Multi-headed attention from 'Attention Is All You Need' paperc                 óº  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        | j        | j        z  | _        | j        | j        z  | j        k    r t          d| j        › d| j        › d�¦  «        ‚| j        dz  | _	        |j
        | _        d| _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).g      à¿Frb   )r@   rA   re   rG   r„   Únum_attention_headsÚ	num_headsÚhead_dimÚ
ValueErrorÚscaleÚattention_dropoutr¢   Ú	is_causalr   rg   Úqkv_biasÚk_projÚv_projÚq_projÚout_projrn   s     €r+   rA   zOvis2VisionAttention.__init__Ê   s0  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØÔ3ˆŒØœ¨$¬.Ñ8ˆŒØŒ=˜4œ>Ñ)¨T¬^Ò;Ð;Ýð'ÈdÌnð 'ð 'Ø”Nð'ð 'ð 'ñô ð ð ”] DÑ(ˆŒ
ØÔ/ˆŒØˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝœ	 $¤.°$´.ÀvÄÐWÑWÔWˆŒˆˆr*   Nr6   r    r>   c           
      ó¼  — |j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }	 |	| ||||| j        | j        | j        sdn| j        ¬¦  «        \  }
} |
j        g |¢d‘R Ž                      ¦   «         }
|                      |
¦  «        }
|
|fS )z#Input shape: Batch x Time x ChannelNrJ   r   r   r›   )r¹   r¡   r¢   )rW   rµ   r½   Úviewr—   r»   r¼   r   Úget_interfacere   Ú_attn_implementationr¯   r¹   r·   r§   r¢   Úreshaper«   r¾   )rF   r6   r    r¬   Úinput_shapeÚhidden_shapeÚqueriesÚkeysÚvaluesÚattention_interfacer®   r­   s               r+   rU   zOvis2VisionAttention.forwardÝ   sg  € ð $Ô)¨#¨2¨#Ô.ˆà8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆØ—+’+˜mÑ,Ô,×1Ò1°,Ñ?Ô?×IÒIÈ!ÈQÑOÔOˆØ�{Š{˜=Ñ)Ô)×.Ò.¨|Ñ<Ô<×FÒFÀqÈ!ÑLÔLˆØ—’˜]Ñ+Ô+×0Ò0°Ñ>Ô>×HÒHÈÈAÑNÔNˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØØ”nØ”JØ#œ}Ð>�C�C°$´,ð	%
ñ 	%
ô 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆà˜LÐ(Ð(r*   rq   )
r"   r#   r$   r%   rA   r&   r[   r8   rU   r\   r]   s   @r+   r±   r±   Ç   s™   ø€ € € € € ØGÐGðXð Xð Xð Xð Xð, /3ð!)ð !)à”|ð!)ð œ tÑ+ð!)ð
 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð!)ð !)ð !)ð !)ð !)ð !)ð !)ð !)r*   r±   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚOvis2MLPc                 ó¶  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _	        t          j        | j        | j        |j        ¬¦  «        | _
        t          |j                 | _        d S ra   rd   rn   s     €r+   rA   zOvis2MLP.__init__  ro   r*   c                 ó¨   — |                       |                      |                      |¦  «        ¦  «        |                      |¦  «        z  ¦  «        }|S rq   rr   rs   s      r+   rU   zOvis2MLP.forward  ru   r*   rv   r]   s   @r+   rË   rË     rw   r*   rË   c            	       óp   ‡ — e Zd Zdefˆ fd„Z	 d	dej        dej        dz  dee         dej        fd„Z	ˆ xZ
S )
ÚOvis2VisionEncoderLayerre   c                 ó  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        t          |j        |j        ¦  «        | _	        t          |j        |j        ¦  «        | _
        d S rq   )r@   rA   r±   Ú	attentionrË   Úffnr;   rG   r‘   Ú	rms_norm1Ú	rms_norm2rn   s     €r+   rA   z Ovis2VisionEncoderLayer.__init__  si   ø€ Ý‰Œ×ÒÑÔÐÝ-¨fÑ5Ô5ˆŒÝ˜FÑ#Ô#ˆŒÝ% fÔ&8¸&Ô:MÑNÔNˆŒÝ% fÔ&8¸&Ô:MÑNÔNˆŒˆˆr*   Nr6   r    r¬   r>   c                 ó¾   — |                       |¦  «        } | j        d||dœ|¤Ž\  }}||z   }|                      |¦  «        }|                      |¦  «        }||z   }|S )N)r6   r    r)   )rÓ   rÑ   rÔ   rÒ   )rF   r6   r    r¬   Únorm_hidden_statesr®   Ú_Ú
mlp_outputs           r+   rU   zOvis2VisionEncoderLayer.forward  sy   € ð "Ÿ^š^¨MÑ:Ô:ÐØ'˜œÐrÐ6HÐYgÐrÐrÐkqÐrÐr‰ˆ�Qà%¨Ñ3ˆØ!Ÿ^š^¨MÑ:Ô:ÐØ—X’XÐ0Ñ1Ô1ˆ
à%¨
Ñ2ˆØÐr*   rq   )r"   r#   r$   r   rA   r&   r[   r   r   rU   r\   r]   s   @r+   rÏ   rÏ     s¡   ø€ € € € € ðOÐ0ð Oð Oð Oð Oð Oð Oð /3ðð à”|ðð œ tÑ+ðð Ð+Ô,ð	ð
 
Œðð ð ð ð ð ð ð r*   rÏ   c            	       ó|   ‡ — e Zd ZdZdefˆ fd„Zee	 d	dej	        dz  de
e         defd„¦   «         ¦   «         Zˆ xZS )
ÚOvis2VisionEncoderz»
    Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
    [`Ovis2VisionEncoderLayer`].

    Args:
        config: Ovis2VisionConfig
    re   c                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r)   )rÏ   )Ú.0r×   re   s     €r+   ú
<listcomp>z/Ovis2VisionEncoder.__init__.<locals>.<listcomp>6  s"   ø€ Ð$nÐ$nÐ$nÈÕ%<¸VÑ%DÔ%DÐ$nÐ$nÐ$nr*   F)	r@   rA   re   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersÚgradient_checkpointingrn   s    `€r+   rA   zOvis2VisionEncoder.__init__3  sa   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”mÐ$nÐ$nÐ$nÐ$nÍeÐTZÔTlÑNmÔNmÐ$nÑ$nÔ$nÑoÔoˆŒØ&+ˆÔ#Ð#Ð#r*   Nr    r¬   r>   c                 óN   — |}| j         D ]} |||fi |¤Ž}Œt          |¬¦  «        S )N©Úlast_hidden_state)râ   r   )rF   Úinputs_embedsr    r¬   r6   Úencoder_layers         r+   rU   zOvis2VisionEncoder.forward:  sH   € ð &ˆØ!œ[ð 	Sð 	SˆMØ)˜M¨-¸ÐRÐRÈ6ÐRÐRˆMˆMå°Ð?Ñ?Ô?Ð?r*   rq   )r"   r#   r$   r%   r   rA   r   r   r&   r[   r   r   r   rU   r\   r]   s   @r+   rÚ   rÚ   *  s»   ø€ € € € € ðð ð,Ð0ð ,ð ,ð ,ð ,ð ,ð ,ð Øð /3ð
@ð 
@ð œ tÑ+ð
@ð Ð+Ô,ð	
@ð
 
ð
@ð 
@ð 
@ñ „^ñ Ôð
@ð 
@ð 
@ð 
@ð 
@r*   rÚ   c                   óT   ‡ — e Zd Zdefˆ fd„Ze	 ddej        dz  fd„¦   «         Zˆ xZ	S )ÚOvis2VisionTransformerre   c                 óò   •— t          ¦   «                              ¦   «          || _        t          |¦  «        | _        t          |¦  «        | _        t          |j        |j	        ¦  «        | _
        d| _        d S )NF)r@   rA   re   ry   rš   rÚ   Úencoderr;   rG   r‘   r’   rã   rn   s     €r+   rA   zOvis2VisionTransformer.__init__J  sc   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ/°Ñ7Ô7ˆŒÝ)¨&Ñ1Ô1ˆŒÝ$ VÔ%7¸Ô9LÑMÔMˆŒØ&+ˆÔ#Ð#Ð#r*   Nr    c                 ó¤   — |                       |¦  «        } | j        d||dœ|¤Ž}|j        }|                      |¦  «        }t	          |¬¦  «        S )N)rç   r    rå   r)   )rš   rì   ræ   r’   r   )rF   r“   r    r¬   r6   Úencoder_outputsræ   s          r+   rU   zOvis2VisionTransformer.forwardR  sr   € ð Ÿš¨Ñ5Ô5ˆà+7¨4¬<ð ,
Ø'Ø)ð,
ð ,
ð ð,
ð ,
ˆð ,Ô=ÐØ ŸMšMÐ*;Ñ<Ô<ÐåÐ1BÐCÑCÔCÐCr*   rq   )
r"   r#   r$   r   rA   r   r&   r[   rU   r\   r]   s   @r+   rê   rê   I  s‹   ø€ € € € € ð,Ð0ð ,ð ,ð ,ð ,ð ,ð ,ð ð /3ðDð Dð œ tÑ+ðDð Dð Dñ ÔðDð Dð Dð Dð Dr*   rê   c                   ó<   ‡ — e Zd Zdej        dej        fˆ fd„Zˆ xZS )ÚOvis2VisualEmbeddingTableÚvisual_tokensr>   c                 óú   •— |j         t          j        t          j        t          j        t          j        t          j        fv r!t          ¦   «                              |¦  «        S t          j	        || j
        ¦  «        S rq   )rM   r&   Úint8Úint16Úint32Úint64Úlongr@   rU   r¨   rD   )rF   rñ   rH   s     €r+   rU   z!Ovis2VisualEmbeddingTable.forwardh  sR   ø€ ØÔ¥5¤:­u¬{½E¼KÍÌÕV[ÔV`Ð"aÐaÐaÝ‘7”7—?’? =Ñ1Ô1Ð1ÝŒ|˜M¨4¬;Ñ7Ô7Ð7r*   )r"   r#   r$   r&   r[   rU   r\   r]   s   @r+   rð   rð   g  sO   ø€ € € € € ð8 U¤\ð 8°e´lð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8r*   rð   c                   óZ   ‡ — e Zd ZU eed<   dZdZdZdgZdgZ	dZ
dZdZdZdZdZˆ fd„Zˆ xZS )ÚOvis2PreTrainedModelre   Úmodel)ÚimageÚtextTr±   r5   c                 ó  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rQt	          j        |j        t          j        |j        j	        d         ¦  «         
                    d¦  «        ¦  «         d S d S )NrJ   r‚   )r@   Ú_init_weightsÚ
isinstancery   ÚinitÚcopy_r�   r&   r�   rW   r�   )rF   rœ   rH   s     €r+   rþ   z"Ovis2PreTrainedModel._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r*   )r"   r#   r$   r   r(   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_cache_classÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_sdpaÚ_can_compile_fullgraphÚ_supports_attention_backendrþ   r\   r]   s   @r+   rù   rù   n  s–   ø€ € € € € € ØÐÐÑØÐØ(ÐØ&*Ð#Ø/Ð0ÐØ#4Ð"5ÐØ ÐØÐØÐØ€Nà!ÐØ"&Ððið ið ið ið ið ið ið ið ir*   rù   r4   r¥   c                 ó  — |                       |¦  «        }|                     |d¬¦  «        d         }t          j        | t          j        ¬¦  «                             ||d¦  «        }||                     ¦   «         z
  |z   }|S )NTrK   r   )Úmemory_formatg      ð?)rª   Úmaxr&   Ú
zeros_likeÚlegacy_contiguous_formatÚscatter_Údetach)r4   r¥   Úy_softÚindexÚy_hardÚrets         r+   Úhard_softmaxr  ƒ  sv   € Ø�^Š^˜CÑ Ô €Fà�JŠJ�s DˆJÑ)Ô)¨!Ô,€EÝÔ˜fµEÔ4RÐSÑSÔS×\Ò\Ð]`ÐbgÐilÑmÔm€FØ
�6—=’=‘?”?Ñ
" VÑ
+€Cà€Jr*   c            	       óŠ   ‡ — e Zd ZU eed<   eedœZdefˆ fd„Ze	e
dej        dee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚOvis2VisionModelre   )r6   r7   c                 ó   •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        |j        | _        |j        | _        t          j        |j	        |j
        z  |j
        z  | j        | j        z
  d¬¦  «        | _        t          j        | j        | j        z
  ¦  «        | _        |                      ¦   «          d S ©NFrb   )r@   rA   re   rê   ÚtransformerÚnum_visual_indicator_tokensÚ
vocab_sizer   rg   rG   Úhidden_strideÚhead_linearÚ	LayerNormÚ	head_normÚ	post_initrn   s     €r+   rA   zOvis2VisionModel.__init__”  s¹   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ1°&Ñ9Ô9ˆÔØ+1Ô+MˆÔ(Ø Ô+ˆŒÝœ9ØÔ Ô!5Ñ5¸Ô8LÑLØŒO˜dÔ>Ñ>Øð
ñ 
ô 
ˆÔõ
 œ d¤o¸Ô8XÑ&XÑYÔYˆŒà�ŠÑÔÐÐÐr*   r“   r¬   r>   c           	      óŽ  —  | j         |fi |¤Ž}|d         }| j        j        dk    rß|j        \  }}}| j        j        }t	          t          j        |¦  «        ¦  «        }	|	|	z  |k    rt          d¦  «        ‚||	|z  z
  |z  }
t          j	         
                    |ddd|
d|
fdd¦  «        }|	|
z  }	|                     ||	|z  ||	|z  ||¦  «        }|                     dddddd¦  «        }|                     |d	||z  |z  ¦  «        }|                      |¦  «        }|                      |¦  «        }| j        j        d
k    r#t          j	                             |d	d¬¦  «        }nS| j        j        dk    rt#          |d	¬¦  «        }n1| j        j        dk    r!t          j	                             |d	¬¦  «        }t'          ||¬¦  «        S )Nr   r   z.Token sequence length must be a perfect squareÚconstantr   r   é   é   rJ   Úgumbel_argmaxT)r¥   ÚhardÚ	st_argmax©r¥   rª   )ræ   Úpooler_output)r  re   r   rW   ÚintÚmathÚsqrtr¶   r   r©   ÚpadrÃ   Úpermuter!  r#  Útokenize_functionÚgumbel_softmaxr  rª   r    )rF   r“   r¬   Úoutputsræ   Ú
num_imagesÚseq_lenÚ
hidden_dimr   Úsqrt_lÚpad_sizer4   Ú
prob_tokens                r+   rU   zOvis2VisionModel.forward£  s  € ð
 #�$Ô" <Ð:Ð:°6Ð:Ð:ˆØ# AœJÐØŒ;Ô$ qÒ(Ð(Ø.?Ô.EÑ+ˆJ˜ Ø œKÔ5ˆMå�œ 7Ñ+Ô+Ñ,Ô,ˆFØ˜‰ 'Ò)Ð)Ý Ð!QÑRÔRÐRà%¨°-Ñ)?Ñ@ÀMÑQˆHÝ "¤× 1Ò 1Ð2CÀaÈÈAÈxÐYZÐ\dÐEeÐgqÐstÑ uÔ uÐØ�hÑˆFà 1× 9Ò 9Ø˜F mÑ3°]ÀFÈmÑD[Ð]jÐlvñ!ô !Ðð !2× 9Ò 9¸!¸QÀÀ1ÀaÈÑ KÔ KÐØ 1× 9Ò 9Ø˜B °Ñ =À
Ñ Jñ!ô !Ðð ×!Ò!Ð"3Ñ4Ô4ˆØ—’ Ñ'Ô'ˆàŒ;Ô(¨OÒ;Ð;Ýœ×5Ò5°fÀ"È4Ð5ÑPÔPˆJˆJØŒ[Ô*¨kÒ9Ð9Ý% f°"Ð5Ñ5Ô5ˆJˆJØŒ[Ô*¨iÒ7Ð7Ýœ×.Ò.¨v¸2Ð.Ñ>Ô>ˆJå9Ø/Ø$ð
ñ 
ô 
ð 	
r*   )r"   r#   r$   r   r(   rÏ   r±   Ú_can_record_outputsrA   r   r   r&   r'   r   r   r8   r    rU   r\   r]   s   @r+   r  r  �  s¸   ø€ € € € € € ØÐÐÑà0Ø*ðð Ðð
Ð0ð ð ð ð ð ð ð  Øð&
Ø!Ô-ð&
Ø9?Ð@RÔ9Sð&
à	Ð;Ñ	;ð&
ð &
ð &
ñ „_ñ  Ôð&
ð &
ð &
ð &
ð &
r*   r  zu
    The Ovis2 model which consists of a vision backbone and a language model, without a language modeling head.
    c                   ó   ‡ — e Zd Zdefˆ fd„Ze ed¬¦  «        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j        dz  dedz  deej        z  deez  fd„¦   «         ¦   «         Zˆ xZS )Ú
Ovis2Modelre   c                 óz  •— t          ¦   «                              |¦  «         t          |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          |j        j
        |j        ¦  «        | _        |j        j
        | _        |j
        | _
        |j        | _        |                      ¦   «          d S rq   )r@   rA   r  Úvision_configÚvision_towerr   Úfrom_configÚtext_configÚlanguage_modelrð   r  rG   Úvisual_embeddings_tableÚvisual_vocab_sizeÚvisual_indicator_token_idsr$  rn   s     €r+   rA   zOvis2Model.__init__Ô  s™   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý,¨VÔ-AÑBÔBˆÔÝ'Ô3°FÔ4FÑGÔGˆÔÝ'@ÀÔAUÔA`ÐbhÔbtÑ'uÔ'uˆÔ$à!'Ô!5Ô!@ˆÔØ Ô+ˆŒØ*0Ô*KˆÔ'Ø�ŠÑÔÐÐÐr*   zWObtains image last hidden states from the vision tower and apply multimodal projection.r,   r“   r¬   r>   c                 óð  —  | j         |fddi|¤Ž}|j        }|j        \  }}}t          j        ||| j         j        f|j        |j        d|j        ¬¦  «        }t          j	        ||gd¬¦  «        }|  
                    |¦  «        }t          j        | j        | j         j        z
  | j        t          j        ¬¦  «                             |j        ¦  «        }	||_        |  
                    |	¦  «        |_        |S )NÚreturn_dictTF)rM   ÚdeviceÚrequires_gradÚlayoutr   r,  r•   )rA  r-  rW   r&   Úzerosr  rM   rJ  rL  ÚcatrE  r�   rF  r÷   rN   r!   )
rF   r“   r¬   Úimage_outputsÚimage_featuresÚ
batch_sizeÚimg_seq_lenr×   Úpadding_tensorÚvisual_indicators
             r+   Úget_image_featureszOvis2Model.get_image_featuresß  s  € ð *˜Ô)¨,ÐSÐSÀDÐSÈFÐSÐSˆØ&Ô4ˆØ%3Ô%9Ñ"ˆ
�K ÝœØ˜ dÔ&7Ô&SÐTØ Ô&Ø!Ô(ØØ!Ô(ð
ñ 
ô 
ˆõ œ N°NÐ#CÈÐKÑKÔKˆØ×5Ò5°nÑEÔEˆå œ<ØÔ" TÔ%6Ô%RÑRØÔ"Ý”*ð
ñ 
ô 
÷ Š"ˆ^Ô"Ñ
#Ô
#ð	 	ð
 '5ˆÔ#Ø26×2NÒ2NÐO_Ñ2`Ô2`ˆÔ/àÐr*   Ú	input_idsrç   rP  c                 ó   — |€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©rM   rJ  rJ   r   r   z6Image features and image tokens do not match, tokens: z, features: )Úget_input_embeddingsr&   Útensorre   Úimage_token_idr÷   rJ  ÚallÚsumrW   Ú	unsqueezerN   r   Únumel)rF   rV  rç   rP  Úspecial_image_maskÚn_image_tokensÚn_image_featuress          r+   Úget_placeholder_maskzOvis2Model.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ñ	
ô 	
ð 	
ð "Ð!r*   Nr   r    r�   r5   ÚlabelsÚ	use_cacheÚlogits_to_keepc
           
      ó€  — |d u |d uz  rt          d¦  «        ‚|€ |                      ¦   «         |¦  «        }|��E|                      |d¬¦  «        }|j        }|j        }|                      |||¬¦  «        }|                     |j        |j        ¦  «        }| 	                    ||¦  «        }t          | j        ¦  «        D ]½\  }}|€[| |                      ¦   «         t          j        |t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }n||k                         |j        ¦  «        }|                     ¦   «         r)||                              |j        |j        ¦  «        ||<   Œ¾ | j        d	||||||	dœ|
¤Ž}t%          |j        |j        |j        |j        |�|nd ¬¦  «        S )
Nz:You must specify exactly one of input_ids or inputs_embedsT)r“   rI  )rç   rP  rX  rJ   )r    r�   r5   rç   re  rf  )ræ   r5   r6   r7   r0   r)   )r¶   rY  rU  r-  r!   rc  rN   rJ  rM   Úmasked_scatterÚ	enumeraterG  r&   rZ  r÷   r\  ÚanyrD  r/   ræ   r5   r6   r7   )rF   rV  r“   r    r�   r5   rç   rd  re  rf  r¬   rO  rP  r!   r`  ÚiÚvisual_indicator_idÚmaskr5  s                      r+   rU   zOvis2Model.forward  s  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMàÑ#Ø ×3Ò3ÀÐ[_Ð3Ñ`Ô`ˆMØ*Ô8ˆNØ(5Ô(OÐ%à!%×!:Ò!:ØØ+Ø-ð ";ñ "ô "Ðð
 ,×.Ò.¨}Ô/CÀ]ÔEXÑYÔYˆNØ)×8Ò8Ð9KÈ^Ñ\Ô\ˆMå*3°DÔ4SÑ*TÔ*Tð 
uð 
uÑ&�Ð&ØÐ$Ø(Ð,G¨D×,EÒ,EÑ,GÔ,GÝœÐ%8ÅÄ
ÐS`ÔSgÐhÑhÔhñ-ô -ò �Dð  Ÿ8š8 B™<œ<�D�Dà%Ð)<Ò<×@Ò@ÀÔAUÑVÔV�Dà—8’8‘:”:ð uØ*CÀAÔ*F×*IÒ*IÈ-ÔJ^Ð`mÔ`sÑ*tÔ*t�M $Ñ'øà%�$Ô%ð 
Ø)Ø%Ø+Ø'ØØ)ð
ð 
ð ð
ð 
ˆõ (Ø%Ô7Ø#Ô3Ø!Ô/ØÔ)Ø2>Ð2J  ÐPTð
ñ 
ô 
ð 	
r*   ©	NNNNNNNNr   )r"   r#   r$   r   rA   r   r   r&   r'   r   r   r8   r    rU  Ú
LongTensorrc  r[   r	   Úboolr.  r/   rU   r\   r]   s   @r+   r>  r>  Î  sÙ  ø€ € € € € ð	˜{ð 	ð 	ð 	ð 	ð 	ð 	ð Ø€^Ønðñ ô ðàÔ'ðð Ð+Ô,ðð 
Ð;Ñ	;ð	ð ð ñô ñ Ôðð8"ØÔ)ð"Ø:?Ô:Kð"Ø]bÔ]nð"ð "ð "ð "ð0 Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ð<
ð <
àÔ# dÑ*ð<
ð Ô'¨$Ñ.ð<
ð œ tÑ+ð	<
ð
 Ô&¨Ñ-ð<
ð  ™ð<
ð Ô(¨4Ñ/ð<
ð Ô  4Ñ'ð<
ð ˜$‘;ð<
ð ˜eœlÑ*ð<
ð 
Ð)Ñ	)ð<
ð <
ð <
ñ „^ñ Ôð<
ð <
ð <
ð <
ð <
r*   r>  c                   ó€  ‡ — e Zd ZddiZdefˆ fd„Zdej        fd„Ze	de
j        dee         deez  fd	„¦   «         Zee		 	 	 	 	 	 	 	 	 dde
j        d
z  de
j        d
z  de
j        d
z  de
j        d
z  ded
z  de
j        d
z  de
j        d
z  ded
z  dee
j        z  deez  fd„¦   «         ¦   «         Z	 	 	 	 	 	 dˆ fd„	Zˆ xZS )ÚOvis2ForConditionalGenerationzlm_head.weightz(model.language_model.embed_tokens.weightre   c                 óæ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        |  	                    ¦   «          d S r  )
r@   rA   r>  rú   r   rg   rG   r  Úlm_headr$  rn   s     €r+   rA   z&Ovis2ForConditionalGeneration.__init__\  s^   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý Ñ'Ô'ˆŒ
Ý”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒØ�ŠÑÔÐÐÐr*   r>   c                 ó   — | j         S rq   )rt  rX   s    r+   Úget_output_embeddingsz3Ovis2ForConditionalGeneration.get_output_embeddingsb  s
   € ØŒ|Ðr*   r“   r¬   c                 ó*   —  | j         j        dd|i|¤ŽS )Nr“   r)   )rú   rU  )rF   r“   r¬   s      r+   rU  z0Ovis2ForConditionalGeneration.get_image_featurese  s$   € ð -ˆtŒzÔ,ÐQÐQ¸,ÐQÈ&ÐQÐQÐQr*   Nr   rV  r    r�   r5   rç   rd  re  rf  c
                 ój  —  | j         d|||||||dœ|
¤Ž}|d         }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]`.

        Example:

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

        >>> model = Ovis2ForConditionalGeneration.from_pretrained("thisisiron/Ovis2-2B-hf")
        >>> processor = AutoProcessor.from_pretrained("thisisiron/Ovis2-2B-hf")

        >>> prompt = "<|im_start|>user\n<image>\nDescribe the image.<|im_end|>\n<|im_start|>assistant\n"
        >>> url = "http://images.cocodataset.org/val2014/COCO_val2014_000000537955.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> inputs = processor(images=image, text=prompt, return_tensors="pt")

        >>> # Generate
        >>> generate_ids = model.generate(**inputs, max_new_tokens=15)
        >>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
        "user\n\nDescribe the image.\nassistant\nThe image features a brown dog standing on a wooden floor, looking up with"
        ```)rV  r“   r    r�   r5   rç   re  r   N)r4   rd  r  )r3   r4   r5   r6   r7   r0   r)   )rú   rÿ   r.  Úslicert  Úloss_functionre   rC  r  r2   r5   r6   r7   r0   )rF   rV  r“   r    r�   r5   rç   rd  re  rf  r¬   r5  r6   Úslice_indicesr4   r3   s                   r+   rU   z%Ovis2ForConditionalGeneration.forwardk  s  € ðX �$”*ð 	
ØØ%Ø)Ø%Ø+Ø'Øð	
ð 	
ð ð	
ð 	
ˆð   œ
ˆå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Ø!Ô/ØÔ)Ø 'Ô ;ð
ñ 
ô 
ð 	
r*   Fc           	      ó‚   •—  t          ¦   «         j        |f|||||dœ|¤Ž}	|s|                     dd¦  «        s||	d<   |	S )N)r5   rç   r    rf  Úis_first_iterationre  Tr“   )r@   Úprepare_inputs_for_generationÚget)rF   rV  r5   rç   r“   r    rf  r}  r¬   Úmodel_inputsrH   s             €r+   r~  z;Ovis2ForConditionalGeneration.prepare_inputs_for_generation¶  st   ø€ ð =•u‘w”wÔ<Øð
à+Ø'Ø)Ø)Ø1ð
ð 
ð ð
ð 
ˆð ð 	8 V§Z¢Z°¸TÑ%BÔ%Bð 	8ð
 ,8ˆL˜Ñ(àÐr*   rn  )NNNNNF)r"   r#   r$   Ú_tied_weights_keysr   rA   r   ÚModulerv  r   r&   r'   r   r   r8   r    rU  r   ro  r[   r	   rp  r.  r2   rU   r~  r\   r]   s   @r+   rr  rr  X  sð  ø€ € € € € à*Ð,VÐWÐð˜{ð ð ð ð ð ð ð r¤yð ð ð ð ð ðRØ!Ô-ðRØ9?Ð@RÔ9SðRà	Ð;Ñ	;ðRð Rð Rñ „^ðRð
 Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ðG
ð G
àÔ# dÑ*ðG
ð Ô'¨$Ñ.ðG
ð œ tÑ+ð	G
ð
 Ô&¨Ñ-ðG
ð  ™ðG
ð Ô(¨4Ñ/ðG
ð Ô  4Ñ'ðG
ð ˜$‘;ðG
ð ˜eœlÑ*ðG
ð 
Ð,Ñ	,ðG
ð G
ð G
ñ „^ñ ÔðG
ðX ØØØØØ ðð ð ð ð ð ð ð ð ð r*   rr  )rù   r>  rr  )r›   )Dr/  Úcollections.abcr   Údataclassesr   r&   r   Ú r   r   Úactivationsr   Úcache_utilsr	   Ú
generationr
   Úintegrationsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úautor   Úconfiguration_ovis2r   r   r    r/   r2   r‚  r;   r_   ry   r[   rZ   r¯   r±   rË   rÏ   rÚ   rê   rŒ   rð   rù   r.  r  r  r>  rr  Ú__all__r)   r*   r+   ú<module>r”     sÎ  ðð* €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ð Ø
ð?ð ?ð ?ð ?ð ?Ð1Kñ ?ô ?ñ „ñ „ð?ð €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9Ð6ñ 9ô 9ñ „ñô ð9ð €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9 +ñ 9ô 9ñ „ñô ð9ð0 Ð˜YÑ'Ô'ðJð Jð Jð Jð J�2”9ñ Jô Jñ (Ô'ðJð(ð ð ð ð �R”Yñ ô ð ð ð ð ð ð ˜BœIñ ô ð ðP ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð %ð %ð %ð.7)ð 7)ð 7)ð 7)ð 7)˜2œ9ñ 7)ô 7)ð 7)ðtð ð ð ð ˆrŒyñ ô ð ð ð ð ð ð Ð8ñ ô ð ð2@ð @ð @ð @ð @˜œñ @ô @ð @ð>Dð Dð Dð Dð D˜RœYñ Dô Dð Dð<8ð 8ð 8ð 8ð 8 ¤ñ 8ô 8ð 8ðið ið ið ið i˜?ñ iô ið ið*˜œð ¨Cð ð ð ð ð>
ð >
ð >
ð >
ð >
Ð+ñ >
ô >
ð >
ðB €ððñ ô ð
B
ð B
ð B
ð B
ð B
Ð%ñ B
ô B
ñô ð
B
ðJ ð{ð {ð {ð {ð {Ð$8¸/ñ {ô {ñ „ð{ð| RÐ
QÐ
Q€€€r*   