§
    ‚ŠtjÆ  ã                   ó²  — 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"dS )!é    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                 óN  •— t          | j        t          ¦  «        rK| j                             dd¦  «        | j        d<   t	          | j        d                  di | j        ¤Ž| _        n | j        €t	          d         ¦   «         | _        t          | j        t          ¦  «        rK| j                             dd¦  «        | j        d<   t	          | j        d                  di | j        ¤Ž| _        n | j        €t	          d         ¦   «         | _         t          ¦   «         j        di |¤Ž d S )NÚ
model_typeÚglm4v_visionÚ
glm4v_text© )Ú
isinstancer   ÚdictÚgetr	   r   ÚsuperÚ__post_init__)ÚselfÚkwargsÚ	__class__s     €úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/glm46v/modular_glm46v.pyr*   zGlm46VConfig.__post_init__F   s  ø€ Ý�dÔ(­$Ñ/Ô/ð 	BØ/3Ô/A×/EÒ/EÀlÐTbÑ/cÔ/cˆDÔ˜|Ñ,Ý!/°Ô0BÀ<Ô0PÔ!QÐ!gÐ!gÐTXÔTfÐ!gÐ!gˆDÔÐØÔÐ'Ý!/°Ô!?Ñ!AÔ!AˆDÔå�dÔ&­Ñ-Ô-ð 	>Ø-1Ô-=×-AÒ-AÀ,ÐP\Ñ-]Ô-]ˆDÔ˜\Ñ*Ý-¨dÔ.>¸|Ô.LÔMÐaÐaÐPTÔP`ÐaÐ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ÐJ€KØ#4Ð"5Ðà26€K�Ð(Ñ(¨4Ñ/Ð6Ð6Ñ6Ø48€M�4Ð*Ñ*¨TÑ1Ð8Ð8Ñ8Ø €N�CÐ Ð Ñ Ø €N�CÐ Ð Ñ Ø &Ð˜#Ð&Ð&Ñ&Ø$Ð˜Ð$Ð$Ñ$Ø &Ð˜#Ð&Ð&Ñ&Ø$Ð˜Ð$Ð$Ñ$Ø %Ð˜Ð%Ð%Ñ%ð(ð (ð (ð (ð (ð (ð (ð (ð (r/   r   c                   ó   — e Zd ZdZdZd„ ZdS )Ú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        ¦  «        | _        d S ©N)r)   Ú__init__r   Úfrom_configr   Úvisualr   Úlanguage_model)r+   Úconfigr-   s     €r.   rG   zGlm46VModel.__init__a   sL   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ÝÔ+¨FÔ,@ÑAÔAˆŒÝ'Ô3°FÔ4FÑGÔGˆÔÐÐr/   )r0   r1   r2   rB   rG   r9   r:   s   @r.   rD   rD   ^   sG   ø€ € € € € ØÐðHð Hð Hð Hð Hð Hð Hð Hð Hr/   rD   c                   ó   — e Zd ZdS )ÚGlm46VForConditionalGenerationN©r0   r1   r2   r%   r/   r.   rM   rM   g   ó   € € € € € Ø€Dr/   rM   c                   ó   — e Zd Zddefd„ZdS )ÚGlm46VProcessoré   Únum_image_tokensc                 ó&   — d| j         |z  › d|d›d�S )Nz<|begin_of_image|>z<|end_of_image|>z.1fz seconds)Úimage_token)r+   Útimestamp_secrS   s      r.   Úreplace_frame_token_idz&Glm46VProcessor.replace_frame_token_idl   s(   € Øt DÔ$4Ð7GÑ$GÐtÐtÐYfÐtÐtÐtÐtÐtr/   N)rR   )r0   r1   r2   r7   rW   r%   r/   r.   rQ   rQ   k   s<   € € € € € ðuð uÀcð uð uð uð uð uð ur/   rQ   c                   ó   — e Zd ZdS )ÚGlm46VImageProcessorPilNrN   r%   r/   r.   rY   rY   p   rO   r/   rY   c                   ó   — e Zd ZdS )Ú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dS )ÚGlm46VVideoProcessorNÚmetadataÚfpsc                 ó|  ‡— |�t          |dd ¦  «        €t          d¦  «        ‚|j        }|dz
  }|j        p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  Šˆfd„t          |¦  «        D ¦   «         }t          |¦  «        }||k     r3t          j        d|dz
  |t          ¬¦  «                             ¦   «         }nQg }d}d| j        |z  z  }t          |¦  «        D ]0}||         |k    r"||z  }|                     |¦  «         ||k    r nŒ1t          |¦  «        |k     rit          |¦  «        dk    rdt          |dz
  d¦  «        }}n|d         |d         }}t          j        |||t          ¬¦  «                             ¦   «         }nEt          |¦  «        |k    r2t          j        d|dz
  |t          ¬¦  «                             ¦   «         }t!          ¦   «         g }}|D ]0}||vr*|                     |¦  «         |                     |¦  «         Œ1t          |¦  «        dz  r|                     |d         ¦  «         t          j        |¦  «        S )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`rR   r   g      à?)é   é,  é`	  i€  rc   ra   rb   c                 ó   •— g | ]}|‰z  ‘ŒS r%   r%   )Ú.0ÚiÚduration_per_frames     €r.   ú
<listcomp>z6Glm46VVideoProcessor.sample_frames.<locals>.<listcomp>—   s   ø€ ÐJÐJÐJ°�aÐ,Ñ,ÐJÐJÐJr/   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_idxrn   ÚDYNAMIC_FPS_THRESÚMAX_FRAME_COUNT_DYNAMICÚMAX_DURATIONÚeffective_durationÚ
target_fpsÚ	extract_tÚ
timestampsÚ
max_secondÚframe_indicesÚcurrent_secondÚinv_fpsÚframe_indexÚstartÚendÚseenÚuniqÚidxrg   s                           @r.   Úsample_framesz"Glm46VVideoProcessor.sample_framesy   s
  ø€ ð Ð�w x°¸Ñ=Ô=ÐEÝðXñô ð ð
  Ô0ˆØ$ qÑ(ˆØÔ$ÐO­¨m¸h¼lÑ.JÑ(KÔ(KÈaÑ(Oˆà!"¨°#Ð6Ð6ÐØ"%ÐØˆÝ  ¨<Ñ8Ô8ÐØ Ò#Ð#Ø*¨2Ô.ˆJˆJØ 3Ò&Ð&Ø*¨3Ô/ˆJˆJà*¨4Ô0ˆJÝÐ*¨ZÑ7¸$Ô:RÑRÑSÔSˆ	Ý˜	Ð#:Ñ;Ô;ˆ	à ¤Ñ-ÐØJÐJÐJÐJµe¸LÑ6IÔ6IÐJÑJÔJˆ
Ý˜‘]”]ˆ
à˜)Ò#Ð#ÝœK¨¨<¸!Ñ+;¸YÍcÐRÑRÔR×YÒYÑ[Ô[ˆMˆMàˆMØˆNØ˜4Ô3°jÑ@ÑAˆGÝ$ \Ñ2Ô2ð ð �Ø˜kÔ*¨nÒ<Ð<Ø" gÑ-�NØ!×(Ò(¨Ñ5Ô5Ð5Ø%¨Ò3Ð3Ø˜øåˆ}ÑÔ 	Ò)Ð)Ý�=Ñ!Ô! QÒ&Ð&Ø¥ L°1Ñ$4°aÑ 8Ô 8�s��à*¨1Ô-¨}¸RÔ/@�s�ÝœK¨¨s°IÅSÐIÑIÔI×PÒPÑRÔRˆMˆMÝ�ÑÔ )Ò+Ð+ÝœK¨¨<¸!Ñ+;¸YÍcÐRÑRÔR×YÒYÑ[Ô[ˆMå‘U”U˜BˆdˆØ ð 	!ð 	!ˆCØ˜$ˆˆØ—’˜‘”�Ø—’˜CÑ Ô Ð øåˆt‰9Œ9�q‰=ð 	"Ø�KŠK˜˜RœÑ!Ô!Ð!åŒx˜‰~Œ~Ðr/   rF   )r0   r1   r2   r   r7   Úfloatr�   r%   r/   r.   r]   r]   x   sV   € € € € € ð #'ð@ð @àð@ð �5‰[˜4Ñð@ð @ð @ð @ð @ð @r/   r]   )r   rD   r<   rM   rQ   r[   rY   r]   )#Únumpyrs   Ú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Ð 3Ð 3Ð 3Ð 3Ð 3Ø #Ð #Ð #Ð #Ð #Ð #Ø (Ð (Ð (Ð (Ð (Ð (Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø >Ð >Ð >Ð >Ð >Ð >Ø EÐ EÐ EÐ EÐ EÐ EØ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø >Ð >Ð >Ð >Ð >Ð >ð €Ð9Ð:Ñ:Ô:Øð3(ð 3(ð 3(ð 3(ð 3(Ð#ñ 3(ô 3(ñ „ñ ;Ô:ð3(ðl+ð +ð +ð +ð +Ð0ñ +ô +ð +ðHð Hð Hð Hð H�*ñ Hô Hð Hð	ð 	ð 	ð 	ð 	Ð%Bñ 	ô 	ð 	ðuð uð uð uð u�nñ uô uð uð
	ð 	ð 	ð 	ð 	Ð4ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð.ñ 	ô 	ð 	ðAð Að Að Að AÐ.ñ Aô Að AðH	ð 	ð 	€€€r/   