Ë
    ÛÓ^jÆ  ã                   ón  — d dl Zd dlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZmZ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 ddlmZ  ed¬«      e G d„ de«      «       «       Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z!g d ¢Z"y)!é    N)Ústricté   )ÚPreTrainedConfig)Úauto_docstring)ÚVideoMetadataé   )ÚCONFIG_MAPPINGÚ
AutoConfigÚ	AutoModel)ÚGlm4vImageProcessor)ÚGlm4vImageProcessorPil)ÚGlm4vForConditionalGenerationÚ
Glm4vModelÚGlm4vPreTrainedModel)ÚGlm4vProcessor)ÚGlm4vVideoProcessorzzai-org/GLM-4.1V-9B-Thinking)Ú
checkpointc                   óÎ   ‡ — e Zd ZU dZdZeedœZdgZdZe	e
z  dz  ed<   dZe	e
z  dz  ed<   dZeed	<   d
Zeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   ˆ fd„Zˆ xZS )ÚGlm46VConfigaœ  
    image_start_token_id (`int`, *optional*, defaults to 151339):
        The image start token index to encode the start of image.
    image_end_token_id (`int`, *optional*, defaults to 151340):
        The image end token index to encode the end of image.
    video_start_token_id (`int`, *optional*, defaults to 151361):
        The video start token index to encode the start of video.
    video_end_token_id (`int`, *optional*, defaults to 151362):
        The video end token index to encode the end of video.

    ```python
    >>> from transformers import Glm46VForConditionalGeneration, Glm46VConfig

    >>> # Initializing a GLM-4.6V style configuration
    >>> configuration = Glm46VConfig()

    >>> # Initializing a model from the GLM-4.6V style configuration
    >>> model = Glm4vForConditionalGeneration(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```Úglm46v)Útext_configÚvision_configÚpast_key_valuesNr   r   i/O Úimage_token_idi0O Úvideo_token_idi+O Úimage_start_token_idi,O Úimage_end_token_idiAO Úvideo_start_token_idiBO Úvideo_end_token_idFÚtie_word_embeddingsc                 óT  •— t        | j                  t        «      rT| j                  j                  dd«      | j                  d<   t	        | j                  d      di | j                  ¤Ž| _        n| j                  €t	        d   «       | _        t        | j
                  t        «      rT| j
                  j                  dd«      | j
                  d<   t	        | j
                  d      di | j
                  ¤Ž| _        n| j
                  €t	        d   «       | _        t        ‰| �  di |¤Ž y )NÚ
model_typeÚglm4v_visionÚ
glm4v_text© )Ú
isinstancer   ÚdictÚgetr	   r   ÚsuperÚ__post_init__)ÚselfÚkwargsÚ	__class__s     €út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/glm46v/modular_glm46v.pyr*   zGlm46VConfig.__post_init__F   s  ø€ Ü�d×(Ñ(¬$Ô/Ø/3×/AÑ/A×/EÑ/EÀlÐTbÓ/cˆD×Ñ˜|Ñ,Ü!/°×0BÑ0BÀ<Ñ0PÑ!QÑ!gÐTX×TfÑTfÑ!gˆDÕØ×ÑÐ'Ü!/°Ñ!?Ó!AˆDÔä�d×&Ñ&¬Ô-Ø-1×-=Ñ-=×-AÑ-AÀ,ÐP\Ó-]ˆD×Ñ˜\Ñ*Ü-¨d×.>Ñ.>¸|Ñ.LÑMÑaÐPT×P`ÑP`ÑaˆDÕØ×ÑÐ%Ü-¨lÑ;Ó=ˆDÔä‰ÑÑ' Ó'ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   r
   Úsub_configsÚkeys_to_ignore_at_inferencer   r'   r   Ú__annotations__r   r   Úintr   r   r   r   r   r    Úboolr*   Ú__classcell__©r-   s   @r.   r   r      s¡   ø… ñð. €JØ",¸zÑJ€KØ#4Ð"5Ðà26€K�Ð(Ñ(¨4Ñ/Ó6Ø48€M�4Ð*Ñ*¨TÑ1Ó8Ø €N�CÓ Ø €N�CÓ Ø &Ð˜#Ó&Ø$Ð˜Ó$Ø &Ð˜#Ó&Ø$Ð˜Ó$Ø %Ð˜Ó%÷(ð (r/   r   c                   ó   — e Zd ZdZdZd„ Zy)ÚGlm46VPreTrainedModelNc                 ó   — t        d«      ‚)Nz
Not needed)ÚAttributeError)r+   Úmodules     r.   Ú_init_weightsz#Glm46VPreTrainedModel._init_weightsZ   s   € Ü˜\Ó*Ð*r/   )r0   r1   r2   Ú_can_record_outputsÚ_no_split_modulesr@   r%   r/   r.   r<   r<   V   s   „ ØÐØÐó+r/   r<   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚGlm46VModelNc                 ó´   •— t         ‰| �  |«       t        j                  |j                  «      | _        t        j                  |j                  «      | _        y ©N)r)   Ú__init__r   Úfrom_configr   Úvisualr   Úlanguage_model)r+   Úconfigr-   s     €r.   rG   zGlm46VModel.__init__a   sA   ø€ Ü‰Ñ˜Ô Ü×+Ñ+¨F×,@Ñ,@ÓAˆŒÜ'×3Ñ3°F×4FÑ4FÓGˆÕr/   )r0   r1   r2   rB   rG   r9   r:   s   @r.   rD   rD   ^   s   ø„ ØÐ÷Hð Hr/   rD   c                   ó   — e Zd Zy)ÚGlm46VForConditionalGenerationN©r0   r1   r2   r%   r/   r.   rM   rM   g   ó   „ Ør/   rM   c                   ó   — e Zd Zddefd„Zy)ÚGlm46VProcessorÚnum_image_tokensc                 ó0   — d| j                   |z  › d|d›d�S )Nz<|begin_of_image|>z<|end_of_image|>z.1fz seconds)Úimage_token)r+   Útimestamp_secrR   s      r.   Úreplace_frame_token_idz&Glm46VProcessor.replace_frame_token_idl   s+   € Ø# D×$4Ñ$4Ð7GÑ$GÐ#HÐHXÐYfÐgjÐXkÐksÐtÐtr/   N)é   )r0   r1   r2   r7   rV   r%   r/   r.   rQ   rQ   k   s   „ ñuÀcô ur/   rQ   c                   ó   — e Zd Zy)ÚGlm46VImageProcessorPilNrN   r%   r/   r.   rY   rY   p   rO   r/   rY   c                   ó   — e Zd Zy)ÚGlm46VImageProcessorNrN   r%   r/   r.   r[   r[   t   rO   r/   r[   c                   ó,   — e Zd Z	 ddedeez  dz  fd„Zy)ÚGlm46VVideoProcessorNÚmetadataÚfpsc                 óð  — |�t        |dd «      €t        d«      ‚|j                  }|dz
  }|j                  xs t	        ||j
                  z  «      dz   }ddddœ}d}d}	t        ||	«      }
|
d	k  r|d	   }n|
d
k  r|d
   }n|d   }t        |
|z  | j                  z  «      }t        ||«      }d|j
                  z  }t        |«      D �cg c]  }||z  ‘Œ	 }}t        |«      }||k  r/t        j                  d|dz
  |t        ¬«      j                  «       }nLg }d}d| j                  |z  z  }t        |«      D ](  }||   |k\  sŒ||z  }|j                  |«       ||k\  sŒ( n t        |«      |k  rVt        |«      dk(  rdt        |dz
  d«      }}n
|d   |d   }}t        j                  |||t        ¬«      j                  «       }n<t        |«      |kD  r.t        j                  d|dz
  |t        ¬«      j                  «       }t!        «       g }}|D ])  }||vsŒ|j#                  |«       |j                  |«       Œ+ t        |«      dz  r|j                  |d   «       t        j$                  |«      S c c}w )Nr_   zµAsked to sample frames per second but no video metadata was provided which is required when sampling in Glm46V. Please pass in `VideoMetadata` object or set `do_sample_frames=False`rW   r   g      à?)é   é,  é`	  i€  rc   ra   rb   r   )Údtypeéÿÿÿÿ)ÚgetattrÚ
ValueErrorÚtotal_num_framesÚdurationÚroundr_   Úminr7   Útemporal_patch_sizeÚrangeÚnpÚlinspaceÚtolistÚappendÚlenÚmaxÚsetÚaddÚarray)r+   r^   r_   r,   Útotal_framesÚmax_frame_idxri   ÚDYNAMIC_FPS_THRESÚMAX_FRAME_COUNT_DYNAMICÚMAX_DURATIONÚeffective_durationÚ
target_fpsÚ	extract_tÚduration_per_frameÚiÚ
timestampsÚ
max_secondÚframe_indicesÚcurrent_secondÚinv_fpsÚframe_indexÚstartÚendÚseenÚuniqÚidxs                             r.   Úsample_framesz"Glm46VVideoProcessor.sample_framesy   s�  € ð Ðœw x°¸Ó=ÐEÜðXóð ð
  ×0Ñ0ˆØ$ qÑ(ˆØ×$Ñ$ÒO¬¨m¸h¿l¹lÑ.JÓ(KÈaÑ(Oˆà!"¨°#Ñ6ÐØ"%ÐØˆÜ  ¨<Ó8ÐØ Ò#Ø*¨2Ñ.‰JØ 3Ò&Ø*¨3Ñ/‰Jà*¨4Ñ0ˆJÜÐ*¨ZÑ7¸$×:RÑ:RÑRÓSˆ	Ü˜	Ð#:Ó;ˆ	à §¡Ñ-ÐÜ6;¸LÓ6IÖJ°�aÐ,Ó,ÐJˆ
ÐJÜ˜“]ˆ
à˜)Ò#ÜŸK™K¨¨<¸!Ñ+;¸YÌcÔR×YÑYÓ[‰MàˆMØˆNØ˜4×3Ñ3°jÑ@ÑAˆGÜ$ \Ó2ò �Ø˜kÑ*¨nÓ<Ø" gÑ-�NØ!×(Ñ(¨Ô5Ø%¨Ó3Ùðô ˆ}Ó 	Ò)Ü�=Ó! QÒ&Ø¤ L°1Ñ$4°aÓ 8�s‘à*¨1Ñ-¨}¸RÑ/@�s�ÜŸK™K¨¨s°IÄSÔI×PÑPÓR‰MÜ�Ó )Ò+ÜŸK™K¨¨<¸!Ñ+;¸YÌcÔR×YÑYÓ[ˆMä“U˜BˆdˆØ ò 	!ˆCØ˜$ŠØ—‘˜”Ø—‘˜CÕ ð	!ô
 ˆt‹9�qŠ=Ø�K‰K˜˜R™Ô!ä�x‰x˜‹~ÐùòE Ks   Ã	I3rF   )r0   r1   r2   r   r7   ÚfloatrŒ   r%   r/   r.   r]   r]   x   s*   „ ð #'ñ@àð@ð �5‰[˜4Ñô@r/   r]   )r   rD   r<   rM   rQ   r[   rY   r]   )#Únumpyrn   Úhuggingface_hub.dataclassesr   Úconfiguration_utilsr   Úutilsr   Úvideo_utilsr   Úautor	   r
   r   Úglm4v.image_processing_glm4vr   Ú glm4v.image_processing_pil_glm4vr   Úglm4v.modeling_glm4vr   r   r   Úglm4v.processing_glm4vr   Úglm4v.video_processing_glm4vr   r   r<   rD   rM   rQ   rY   r[   r]   Ú__all__r%   r/   r.   ú<module>rš      sÀ   ðó  Ý .å 3Ý #Ý (ß 8Ñ 8Ý >Ý Eß bÑ bÝ 3Ý >ñ Ð9Ô:Øô3(Ð#ó 3(ó ó ;ð3(ôl+Ð0ô +ôH�*ô Hô	Ð%Bô 	ôu�nô uô
	Ð4ô 	ô	Ð.ô 	ôAÐ.ô AòH	�r/   