+
    œ°³jÈÂ  ã                   ór  € ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIHu Ht	 ^ RI
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 ^RIHt ^RIH t  ^RI!H"t" ^RI#H$t$H%t%H&t&H't'H(t( ^RI)H*t*H+t+ ^RI,H-t- ^RI.H/t/H0t0 ^RI1H2t2H3t3H4t4 ^RI5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t>H?t?H@t@ ^RIAHBtB ^RICHDtDHEtE ]'PŒ                  ! ]G4      tH]%! RR7      ] ! R R]4      4       4       tI]%! RR7      ] ! R R]4      4       4       tJ]%! RR7      ] ! R R]4      4       4       tK ! R R ]34      tL ! R! R"]94      tM ! R# R$]64      tN ! R% R&]@4      tO ! R' R(]P                   4      tQ ! R) R*]P                   4      tR ! R+ R,]>4      tS ! R- R.]?4      tT ! R/ R0]<4      tUR1 tVRKR2 ltW ! R3 R4]P                   4      tX ! R5 R6]24      tY ! R7 R8]4      tZ ! R9 R:]:4      t[ ! R; R<];4      t\ ! R= R>]\4      t] ! R? R@]=4      t^ ! RA RB]B4      t_ ! RC RD]74      t` ! RE RF]84      ta ! RG RH]E4      tb ! RI RJ]D4      tc. RLOtdR# )Mé    )ÚCallableN)Ústrict)Ú	LayerNorm)ÚACT2FN)ÚCacheÚDynamicCache)ÚPreTrainedConfig)Úcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚBaseModelOutputWithPooling)ÚRopeParameters)ÚALL_ATTENTION_FUNCTIONS)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚtorch_compilable_check)Úaccepts_precomputed_kwargsÚmerge_with_config_defaults)Úcapture_outputs)Úget_vision_attention_seqlensÚget_vision_position_ids)ÚGlm4MLPÚGlm4RMSNormÚeager_attention_forward)ÚQwen2_5_VisionPatchEmbedÚ Qwen2_5_VLCausalLMOutputWithPastÚ"Qwen2_5_VLForConditionalGenerationÚQwen2_5_VLMLPÚQwen2_5_VLModelOutputWithPastÚQwen2_5_VLPreTrainedModelÚQwen2_5_VLRotaryEmbeddingÚQwen2_5_VLTextModelÚQwen2_5_VLVisionAttentionÚQwen2_5_VLVisionBlockÚQwen2_5_VLVisionRotaryEmbedding)ÚQwen2VLModel)ÚQwen2VLProcessorÚQwen2VLProcessorKwargszzai-org/GLM-4.1V-9B-Thinking)Ú
checkpointc                   ó„   a € ] tR t^Ft o RtRtRtRtRR/t^t	Rt
RtR	tR
t^t^tRt^tRt^t^tRtRtRtRtV 3R ltRtV tR# )ÚGlm4vVisionConfigaü  
out_hidden_size (`int`, *optional*, defaults to 4096):
    The output hidden size of the vision model.

Example:

```python
>>> from transformers import Glm4vVisionConfig, Glm4vVisionModel

>>> # Initializing a Glm4vVisionConfig GLM-4.1V-9B style configuration
>>> configuration = Glm4vVisionConfig()

>>> # Initializing a model (with random weights) from the GLM-4.1V-9B configuration
>>> model = Glm4vVisionModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```Úglm4v_visionÚvision_configÚaxialÚnum_attention_headsÚ	num_headsi   ÚsiluFç        iP  çñhãˆµøä>é   é€5  ç{®Gáz”?Nc                óÊ  <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[;R&   S[;R&   S[S[ ,          ;R&   S[ ;R&   S[ ;R&   S[ S[S[ ,          ,          S[S[ S[ 3,          ,          ;R&   S[ S[S[ ,          ,          S[S[ S[ 3,          ,          ;R	&   S[;R
&   S[ ;R&   S[ S[S[ ,          ,          S[S[ S[ 3,          ,          ;R&   S[ ;R&   S[ ;R&   S[;R&   S[R,          ;R&   # )é   ÚdepthÚhidden_sizeÚ
hidden_actÚattention_biasÚattention_dropoutr4   Úin_channelsÚ
image_sizeÚ
patch_sizeÚrms_norm_epsÚspatial_merge_sizeÚtemporal_patch_sizeÚout_hidden_sizeÚintermediate_sizeÚinitializer_rangeNÚrope_parameters)ÚintÚstrÚboolÚfloatÚlistÚtupleÚdict)ÚformatÚ__classdict__s   "€Úh/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/glm4v/modular_glm4v.pyÚ__annotate__ÚGlm4vVisionConfig.__annotate__F   s1  ø‡ ‚ ñ6 �Oñ7 ñ8 Ññ9 ñ: Ññ; ñ< Ñ ñ= ñ> ™s•{Ñ(ñ? ñ@ ÑñA ñB ÑñC ñD ‘d™3•i•¡%©©S¨¥/Õ1Ñ7ñE ñF ‘d™3•i•¡%©©S¨¥/Õ1Ñ6ñG ñH ÑñI ñJ ÑñK ñL ™t¡C�y�©5±±c°­?Õ:Ñ>ñM ñN ÑñO ñP Ñ"ñQ ñR Ñ#ñS ñT ˜D•[Ñ'òU ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú
model_typeÚbase_config_keyÚdefault_rope_typeÚattribute_mapr=   r>   r?   r@   rA   r4   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©rT   s   @rU   r/   r/   F   sƒ   ø‡ € ñð&  €JØ%€OØÐØ*¨KÐ8€Mà€EØ€KØ€JØ €NØ%(ÐØ€IØ€KØ47€JØ46€JØ€LØÐØ=>ÐØ€OØ"ÐØ#ÐØ#'€O÷U ƒ rX   r/   c                   óÔ   a a€ ] tR t^st oRtRtRtR.tRRRRRRR	R
RRRR/tRR.R.3RRR.R.3RR.R.3/t	R0t
RtRtRt^(t^ t^tRtRtRtRtRtRtR tR tV 3R! ltV3R" ltR#tVtV ;t# )$ÚGlm4vTextConfiga\  
Example:

```python
>>> from transformers import Glm4vTextModel, Glm4vConfig

>>> # Initializing a GLM-4.1V style configuration
>>> configuration = Glm4vConfig()

>>> # Initializing a model from the GLM-4.1V style configuration
>>> model = Glm4vTextModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```Ú
glm4v_textÚtext_configÚpast_key_valueszlayers.*.self_attn.q_projÚcolwisezlayers.*.self_attn.k_projzlayers.*.self_attn.v_projzlayers.*.self_attn.o_projÚrowwisezlayers.*.mlp.gate_up_projÚcolwise_gather_outputzlayers.*.mlp.down_projÚrowwise_split_inputÚembed_tokensÚ	input_idsÚinputs_embedsÚlayersÚhidden_statesÚattention_maskÚnormÚmrope_sectioni P r8   r9   r5   i €  r:   r7   Tr6   Nc                óf   <€ V P                   f   V P                  V n         \        SV `  ! R/ VB  R # )NrY   )Únum_key_value_headsr3   ÚsuperÚ__post_init__©ÚselfÚkwargsÚ	__class__s   &,€rU   r{   ÚGlm4vTextConfig.__post_init__¨   s-   ø€ Ø×#Ñ#Ò+Ø'+×'?Ñ'?ˆDÔ$ä‰ÒÑ' Ô'rX   c                ó  <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ R,          ;R&   S[;R&   S[ ;R	&   S[;R
&   S[;R&   S[;R&   S[S[ ,          ;R&   S[S[,          R,          ;R&   S[ R,          ;R&   # )r<   Ú
vocab_sizer>   rI   Únum_hidden_layersr3   Nry   r?   Úmax_position_embeddingsrJ   rE   Ú	use_cacherA   rK   Úpad_token_id)rL   rM   rO   rN   r   rR   )rS   rT   s   "€rU   rV   ÚGlm4vTextConfig.__annotate__s   sí   ø‡ ‚ ñL ÑñM ñN ÑñO ñP Ñ"ñQ ñR ÑñS ñT Ñ!ñU ñV ˜t�Ñ'ñW ñX ÑñY ñZ !Ñ(ñ[ ñ\ Ñ#ñ] ñ^ Ññ_ ñ` Ñña ñb ™s•{Ñ(ñc ñd $¡dÕ*¨TÕ1Ñ8ñe ñf ˜•*Ñ#òg rX   )ry   )rZ   r[   r\   r]   r^   r_   r`   Úkeys_to_ignore_at_inferenceÚbase_model_tp_planÚbase_model_pp_planÚignore_keys_at_rope_validationr‚   r>   rI   rƒ   r3   ry   r?   r„   rJ   rE   r…   rA   rK   r†   r{   rc   rd   re   Ú__classcell__©r   rT   s   @@rU   rh   rh   s   sê   ù‡ € ñð  €JØ#€OØ#4Ð"5Ðð 	$ YØ# YØ# YØ# YØ#Ð%<Ø Ð"7ðÐð 	˜+˜¨Ð(9Ð:Ø�OÐ%5Ð6¸Ð8IÐJØ�/Ð" _Ð$5Ð6ðÐð
 '6Ð%6Ð"à€JØ€KØ"ÐØÐØ!ÐØ&'ÐØ€JØ#(ÐØ#ÐØ€LØ€IØ%(ÐØ48€OØ#€Lõ(÷k … rX   rh   c                   ó|   a a€ ] tR t^¯t oRtRtR]R]/tR.t	Rt
RtRtRtR	tR
tRtRtRtV 3R ltV3R ltRtVtV ;t# )ÚGlm4vConfigaU  
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 151341):
    The video start token index to encode the start of video.
video_end_token_id (`int`, *optional*, defaults to 151342):
    The video end token index to encode the end of video.

```python
>>> from transformers import Glm4vForConditionalGeneration, Glm4vConfig

>>> # Initializing a GLM-4.1V style configuration
>>> configuration = Glm4vConfig()

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

>>> # Accessing the model configuration
>>> configuration = model.config
```Úglm4vr1   rj   rk   Ni/O i0O i+O i,O i-O i.O Fc                óh  <€ \        V P                  \        4      '       d*   V P                  R ,          ! R/ V P                  B V n        M,V P                  f   V P                  R ,          ! R/ VB V n        \        V P                  \        4      '       d*   V P                  R,          ! R/ V P                  B V n        M,V P                  f   V P                  R,          ! R/ VB V n        V P
                  '       g%   \        V P                  RR4      '       d   RV n        \        SV `   ! R/ VB  R# )r1   Nrj   Útie_word_embeddingsFTrY   )	Ú
isinstancer1   rR   Úsub_configsrj   r’   Úgetattrrz   r{   r|   s   &,€rU   r{   ÚGlm4vConfig.__post_init__×   sõ   ø€ Ü�d×(Ñ(¬$×/Ò/Ø!%×!1Ñ!1°/Ö!BÑ!XÀT×EWÑEWÑ!XˆDÕØ×ÑÒ'Ø!%×!1Ñ!1°/Ö!BÑ!LÀVÑ!LˆDÔä�d×&Ñ&¬×-Ò-Ø#×/Ñ/°Ö>ÑRÀ×AQÑAQÑRˆDÕØ×ÑÒ%Ø#×/Ñ/°Ö>ÑHÀÑHˆDÔð
 ×'×'Ð'¬G°D×4DÑ4DÐF[Ð]b×,cÒ,cØ'+ˆDÔ$ä‰ÒÑ' Ô'rX   c                óÂ   <€ V ^8„  d   Qh/ S[ S[,          R,          ;R&   S[ S[,          R,          ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R	&   S[;R
&   # )r<   Nrj   r1   Úimage_token_idÚvideo_token_idÚimage_start_token_idÚimage_end_token_idÚvideo_start_token_idÚvideo_end_token_idr’   )rR   r	   rL   rN   )rS   rT   s   "€rU   rV   ÚGlm4vConfig.__annotate__¯   sž   ø‡ ‚ ñ< Ñ(Õ(¨4Õ/Ñ6ñ= ñ> Ñ*Õ*¨TÕ1Ñ8ñ? ñ@ Ñ ñA ñB Ñ ñC ñD Ñ&ñE ñF Ñ$ñG ñH Ñ&ñI ñJ Ñ$ñK ñL Ñ%òM rX   )rj   r’   r1   )rZ   r[   r\   r]   r^   r_   r/   rh   r”   rˆ   rj   r1   r˜   r™   rš   r›   rœ   r�   r’   r{   rc   rd   re   rŒ   r�   s   @@rU   r�   r�   ¯   sh   ù‡ € ñð. €JØ"Ð$5°}ÀoÐV€KØ#4Ð"5Ðà26€KØ48€MØ €NØ €NØ &ÐØ$ÐØ &ÐØ$ÐØ %Ðõ(÷Q … rX   r�   c                   ó   € ] tR t^ìtRtR# )ÚGlm4vRMSNormrY   N©rZ   r[   r\   r]   rd   rY   rX   rU   r    r    ì   ó   † ÛrX   r    c                   óB   a a€ ] tR t^ðt oRV3R lV 3R llltRtVtV ;t# )ÚGlm4VisionMlpc                ó    <€ V ^8„  d   QhRS[ /# )r<   Úbias)rN   )rS   rT   s   "€rU   rV   ÚGlm4VisionMlp.__annotate__ñ   s   ø€ ÷ 8ñ 8¡Tñ 8rX   c                óH   <€ \         SV `  W4       VP                  V n        R # ©N)rz   Ú__init__rH   rI   )r}   Úconfigr¦   r   s   &&&€rU   rª   ÚGlm4VisionMlp.__init__ñ   s   ø€ Ü‰Ñ˜Ô&Ø!'×!7Ñ!7ˆÖrX   )rI   ©F©rZ   r[   r\   r]   rª   rd   re   rŒ   r�   s   @@rU   r¤   r¤   ð   s   ù‡ € ÷8÷ 8õ 8rX   r¤   c                   ó2   a € ] tR t^öt o V 3R lR ltRtV tR# )ÚGlm4vVisionPatchEmbedc                ó$   <€ V ^8„  d   QhRS[ RR/# ©r<   r«   ÚreturnN©r/   )rS   rT   s   "€rU   rV   Ú"Glm4vVisionPatchEmbed.__annotate__÷   s    ø€ ÷ mñ mÑ0ð m°Tñ mrX   c                óv  € \         P                  P                  V 4       VP                  V n        VP                  V n        VP
                  V n        VP                  V n        V P                  V P                  V P                  .p\         P                  ! V P
                  V P                  W"R 7      V n	        R# ))Úkernel_sizeÚstrideN)
ÚnnÚModulerª   rD   rG   rB   r>   Ú	embed_dimÚConv3dÚproj)r}   r«   r·   s   && rU   rª   ÚGlm4vVisionPatchEmbed.__init__÷   s‚   € Ü
�	‰	×Ñ˜4Ô Ø ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ Ø!×-Ñ-ˆÔØ×+Ñ+ˆŒà×/Ñ/°·±À$Ç/Á/ÐRˆÜ—I’I˜d×.Ñ.°·±ÈKÔlˆŽ	rX   )r»   rB   rD   r½   rG   N)rZ   r[   r\   r]   rª   rd   re   rf   s   @rU   r°   r°   ö   s   ø‡ € ÷mö mrX   r°   c                   ó   € ] tR tRtRtR# )ÚGlm4vVisionRotaryEmbeddingi  rY   Nr¡   rY   rX   rU   rÀ   rÀ     r¢   rX   rÀ   c                   óT   a a€ ] tR tRt oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚGlm4vVisionPatchMergeri  c          
      ó6   <€ V ^8„  d   QhRS[ RS[ RS[RS[RR/# )r<   ÚdimÚcontext_dimr?   r¦   r³   N)rL   rM   rN   )rS   rT   s   "€rU   rV   Ú#Glm4vVisionPatchMerger.__annotate__  s1   ø€ ÷ )ñ )™Cð )©cð )¹sð )É$ð )Ð[_ñ )rX   c                ó„  <€ \         SV `  4        \        P                  ! WVR 7      V n        \        V4      V n        \        P                  ! WVR 7      V n        \        P                  ! WVR 7      V n        \        P                  ! W!VR 7      V n	        \        P                  ! 4       V n        \        V,          V n        R# )©r¦   N)rz   rª   r¹   ÚLinearr½   r   Úpost_projection_normÚ	gate_projÚup_projÚ	down_projÚGELUÚact1r   Úact_fn)r}   rÄ   rÅ   r?   r¦   r   s   &&&&&€rU   rª   ÚGlm4vVisionPatchMerger.__init__  s{   ø€ Ü‰ÑÔÜ—I’I˜c¨TÔ2ˆŒ	Ü$-¨c£NˆÔ!ÜŸš 3¸$Ô?ˆŒÜ—y’y ¸Ô=ˆŒÜŸš ;¸$Ô?ˆŒÜ—G’G“IˆŒ	Ü˜ZÕ(ˆŽrX   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r<   Úhidden_stater³   ©ÚtorchÚTensor)rS   rT   s   "€rU   rV   rÆ     s'   ø€ ÷ fñ f¡E§L¡Lð f±U·\±\ñ frX   c                óî   € V P                  V4      pV P                  V P                  V4      4      pV P                  V P	                  V P                  V4      4      V P                  V4      ,          4      # r©   )r½   rÏ   rÊ   rÍ   rÐ   rË   rÌ   )r}   rÓ   s   &&rU   ÚforwardÚGlm4vVisionPatchMerger.forward  sY   € Ø—y‘y Ó.ˆØ—y‘y ×!:Ñ!:¸<Ó!HÓIˆØ�~‰~˜dŸk™k¨$¯.©.¸Ó*FÓGÈ$Ï,É,ÐWcÓJdÕdÓeÐerX   )rÏ   rÐ   rÍ   rË   rÊ   r½   rÌ   r­   ©	rZ   r[   r\   r]   rª   rØ   rd   re   rŒ   r�   s   @@rU   rÂ   rÂ     s!   ù‡ € ÷)õ )÷f÷ fð frX   rÂ   c                   óP   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tVtV ;t# )ÚGlm4vVisionEmbeddingsi  c                ó    <€ V ^8„  d   QhRS[ /# ©r<   r«   r´   )rS   rT   s   "€rU   rV   Ú"Glm4vVisionEmbeddings.__annotate__  s   ø€ ÷ 
-ñ 
-Ñ0ñ 
-rX   c                óx  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  V n        V P
                  V P                  ,          ^,          V n        V P                  V n        \        P                  ! V P                  V P                  4      V n        RV n        R# )r<   ÚbicubicN)rz   rª   r«   r>   r»   rC   rD   Únum_patchesÚnum_positionsr¹   Ú	EmbeddingÚposition_embeddingÚinterpolated_method©r}   r«   r   s   &&€rU   rª   ÚGlm4vVisionEmbeddings.__init__  s‡   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒà ŸO™O¨t¯©Õ>À1ÕDˆÔØ!×-Ñ-ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÔØ#,ˆÖ rX   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r<   r³   rÔ   )rS   rT   s   "€rU   rV   rß   $  s   ø€ ÷ :ñ :ÑPU×P\ÑP\ñ :rX   c                ój  € V P                   P                  pVP                  ^,          pVP                  p\	        V\
        4      '       d'   \        P                  ! W(\        P                  R7      pVP                  ^ ,          p	\        V	R,          4      p
VP                  WªV4      P                  ^^ ^4      P                  ^ 4      P                  V\        P                  R7      pVP                  ^ ,          p\        P                  ! WÁP                  R7      pVP                  ^ 4      VP!                  ^ 4      P                  ^4      8¬  P#                  ^ 4      pW>^3,          P                  \        P                  R7      pW>^3,          P                  \        P                  R7      pVR,           V,          ^,          ^,
          pVR,           V,          ^,          ^,
          p\        P$                  ! VV3R	R7      P                  ^ 4      P                  ^4      p\&        P(                  ! VVV P*                  RRR7      pVP-                  ^ 4      P-                  R	4      P                  ^^ 4      pVP                  VP.                  4      P                  VP                  4      pVV,           pV# )
aQ  
Forward pass with integrated position encoding adaptation using 2D interpolation.

Args:
    embeddings: Input embeddings tensor
    lengths (torch.Tensor): Sequence lengths for each image in the batch.
    image_shapes (torch.Tensor): Tensor of shape [batch_size, 3] representing the image shapes (t, h, w).
    h_coords (torch.Tensor): Tensor of shape [total_seq] representing the h coordinate for each patch.
    w_coords (torch.Tensor): Tensor of shape [total_seq] representing the w coordinate for each patch.

Returns:
    torch.Tensor: Embeddings with adapted position encoding added.
)ÚdeviceÚdtypeg      à?©rë   ©rì   ©rÄ   FÚborder)ÚmodeÚalign_cornersÚpadding_modeéÿÿÿÿ)rå   ÚweightÚshaperë   r“   rP   rÕ   ÚtensorÚlongrL   ÚviewÚpermuteÚ	unsqueezeÚtoÚfloat32ÚarangeÚcumsumÚsumÚstackÚFÚgrid_sampleræ   Úsqueezerì   )r}   Ú
embeddingsÚlengthsÚimage_shapesÚh_coordsÚw_coordsÚpos_embed_weightr>   rë   Úorig_size_sqÚ	orig_sizeÚpos_embed_2dÚ
num_tokensÚtoken_positionsÚseq_idsÚtarget_hÚtarget_wÚnorm_wÚnorm_hÚgridÚinterpolated_embed_fp32Úadapted_pos_embed_fp32Úadapted_pos_embeds   &&&&&&                 rU   rØ   ÚGlm4vVisionEmbeddings.forward$  s6  € ð  ×2Ñ2×9Ñ9ÐØ&×,Ñ,¨QÕ/ˆØ!×(Ñ(ˆô �gœt×$Ò$Ü—l’l 7ÄÇÁÔLˆGð (×-Ñ-¨aÕ0ˆÜ˜ cÕ)Ó*ˆ	à×!Ñ! )¸ÓDß‰W�Q˜˜1Óß‰Y�q‹\ß‰R�v¤U§]¡]ˆRÓ3ð	 	ð  ×%Ñ% aÕ(ˆ
ÜŸ,š, z×:KÑ:KÔLˆØ"×,Ñ,¨QÓ/°7·>±>À!Ó3D×3NÑ3NÈqÓ3QÑQ×VÑVÐWXÓYˆØ¨ 
Õ+×.Ñ.´U·]±]Ð.ÓCˆØ¨ 
Õ+×.Ñ.´U·]±]Ð.ÓCˆð ˜c•> XÕ-°Õ2°QÕ6ˆØ˜c•> XÕ-°Õ2°QÕ6ˆô �{Š{˜F FÐ+°Ô4×>Ñ>¸qÓA×KÑKÈAÓNˆô #$§-¢-Ø˜$ T×%=Ñ%=ÈUÐaiô#
Ðð
 "9×!@Ñ!@ÀÓ!C×!KÑ!KÈBÓ!O×!WÑ!WÐXYÐ[\Ó!]ÐØ2×5Ñ5Ð6F×6LÑ6LÓM×PÑPÐQ[×QbÑQbÓcÐð  Ð"3Õ3ˆ
ØÐrX   )r«   r»   rC   ræ   râ   rã   rD   rå   rÚ   r�   s   @@rU   rÜ   rÜ     s   ù‡ € ÷
-ó 
-÷:÷ :ð :rX   rÜ   c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚGlm4vVisionAttentionia  c                ó$   <€ V ^8„  d   QhRS[ RR/# r²   r´   )rS   rT   s   "€rU   rV   Ú!Glm4vVisionAttention.__annotate__b  s    ø€ ÷ Rñ RÑ0ð R°Tñ RrX   c                ó2  <€ \         SV `  V4       VP                  V n        \        P                  ! VP
                  VP
                  ^,          VP                  R7      V n        \        P                  ! VP
                  VP
                  RR7      V n        R# )é   rÈ   FN)	rz   rª   rA   r¹   rÉ   r>   r@   Úqkvr½   rç   s   &&€rU   rª   ÚGlm4vVisionAttention.__init__b  si   ø€ Ü‰Ñ˜Ô Ø!'×!9Ñ!9ˆÔÜ—9’9˜V×/Ñ/°×1CÑ1CÀaÕ1GÈf×NcÑNcÔdˆŒÜ—I’I˜f×0Ñ0°&×2DÑ2DÈ5ÔQˆŽ	rX   )rA   r½   r   r®   r�   s   @@rU   r  r  a  s   ù‡ € ÷R÷ Ró RrX   r  c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚGlm4vVisionBlockii  c                ó   <€ V ^8„  d   QhRR/# ©r<   r³   NrY   )rS   rT   s   "€rU   rV   ÚGlm4vVisionBlock.__annotate__j  s   ø€ ÷ 5ñ 5 $ñ 5rX   c                ó  <€ \         SV `  V4       \        VP                  VP                  R 7      V n        \        VP                  VP                  R 7      V n        \        V4      V n        \        VRR7      V n
        R# )©ÚepsFrÈ   N)rz   rª   r    r>   rE   Únorm1Únorm2r  Úattnr¤   Úmlprç   s   &&€rU   rª   ÚGlm4vVisionBlock.__init__j  s^   ø€ Ü‰Ñ˜Ô Ü! &×"4Ñ"4¸&×:MÑ:MÔNˆŒ
Ü! &×"4Ñ"4¸&×:MÑ:MÔNˆŒ
Ü(¨Ó0ˆŒ	Ü  ¨eÔ4ˆŽrX   )r,  r-  r*  r+  r®   r�   s   @@rU   r#  r#  i  s   ù‡ € ÷5÷ 5ó 5rX   r#  c                   ó^   a a€ ] tR tRt oRV3R lV 3R llltRV3R lR lltR tRtVtV ;t	# )	ÚGlm4vTextRotaryEmbeddingir  c                ó    <€ V ^8„  d   QhRS[ /# rÞ   ©rh   )rS   rT   s   "€rU   rV   Ú%Glm4vTextRotaryEmbedding.__annotate__s  s   ø€ ÷ Vñ V™ñ VrX   c                ój   <€ \         SV `  4        VP                  P                  R . RO4      V n        R# )rw   N)é   é   r6  )rz   rª   rK   Úgetrw   )r}   r«   rë   r   s   &&&€rU   rª   Ú!Glm4vTextRotaryEmbedding.__init__s  s)   ø€ Ü‰ÑÔØ#×3Ñ3×7Ñ7¸ÊÓUˆÖrX   c                óP   <€ V ^8„  d   QhRS[ RS[S[P                  S[3,          /# )r<   r«   r³   )r�   rQ   rÕ   rÖ   rO   )rS   rT   s   "€rU   rV   r3  w  s.   ø€ ÷ 5ñ 5±ð 5ÑW\Ñ]b×]iÑ]iÑkpÐ]pÕWqñ 5rX   c           	     óŠ  € V P                   R,          pV P                   P                  RR4      p\        V RR4      ;'       g    V P                  V P                  ,          p\        WT,          4      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Úpartial_rotary_factorg      ð?Úhead_dimNrî   )
rK   r7  r•   r>   r3   rL   rÕ   rþ   rO   rü   )	r«   rë   r~   Úbaser<  r=  rÄ   Úattention_factorÚinv_freqs	   &&,      rU   Úcompute_default_rope_parametersÚ8Glm4vTextRotaryEmbedding.compute_default_rope_parametersw  s¦   € ð ×%Ñ% lÕ3ˆØ &× 6Ñ 6× :Ñ :Ð;RÐTWÓ XÐÜ˜6 :¨tÓ4×hÐh¸×8JÑ8JÈf×NhÑNhÕ8hˆÜ�(Õ2Ó3ˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÔ#MÐPSÕ#SÕTÕUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4rX   c           	     óî   € \         P                  ! \        VP                  V P                  RR7      4       UUu. uF  w  r#W2^,          ,          NK  	  uppRR7      pVP                  ^RR7      # u uppi )zM
Recompose the frequencies into the final spatial layout used per each grid.
rï   rô   )rÕ   ÚcatÚ	enumerateÚsplitrw   Úrepeat_interleave)r}   ÚfreqÚiÚms   &&  rU   Úrecomposition_frequenciesÚ2Glm4vTextRotaryEmbedding.recomposition_frequencies‹  se   € ô �yŠy¬y¸¿¹ÀD×DVÑDVÐ\^¸Ó9_Ô/`ÔaÑ/`¡t q˜! �EŸ(˜(Ñ/`ÒaÐgiÔjˆØ×%Ñ% a¨RÐ%Ó0Ð0ùó bs   ºA1
)rw   r©   )
rZ   r[   r\   r]   rª   rA  rK  rd   re   rŒ   r�   s   @@rU   r0  r0  r  s%   ù‡ € ÷Võ V÷5ò 5÷(1ò 1rX   r0  c                óz   € V R,          pV R,          p\         P                  ! V) V3RR7      P                  R4      # )z*Rotates half the hidden dims of the input.rï   ).:r   Nr<   ).:é   Nr<   rô   éþÿÿÿ)rÕ   r  Úflatten)ÚxÚx1Úx2s   &  rU   Úrotate_half_llmrT  “  s6   € à	
ˆ9�€BØ	
ˆ9�€BÜ�;Š;˜˜˜R�y bÔ)×1Ñ1°"Ó5Ð5rX   c                ó¶  € VP                  V4      pVP                  V4      pVP                  R,          pV RRV13,          V RVR13,          rvVRRV13,          VRVR13,          r˜Wb,          \        V4      V,          ,           p
W‚,          \        V4      V,          ,           p\        P                  ! W§.RR7      p
\        P                  ! W¹.RR7      pW«3# )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.
.Nrï   rô   )rû   rö   rT  rÕ   rD  )ÚqÚkÚcosÚsinÚunsqueeze_dimÚ
rotary_dimÚq_rotÚq_passÚk_rotÚk_passÚq_embedÚk_embeds   &&&&&       rU   Úapply_rotary_pos_embrb  š  sÐ   € ð$ �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€Cð —‘˜2•€JØ�c˜;˜J˜;Ð&Õ'¨¨3°
±Ð+;Õ)<ˆ6Ø�c˜;˜J˜;Ð&Õ'¨¨3°
±Ð+;Õ)<ˆ6ð �{œ¨uÓ5¸Õ;Õ<€GØ�{œ¨uÓ5¸Õ;Õ<€Gô �iŠi˜Ð)¨rÔ2€GÜ�iŠi˜Ð)¨rÔ2€GØÐÐrX   c                   ó\   a a€ ] tR tR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	# )
ÚGlm4vTextAttentioni¾  zz
Multi-headed attention from 'Attention Is All You Need' paper.
and "Generating Long Sequences with Sparse Transformers".
c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# )r<   r«   Ú	layer_idxN©rh   rL   )rS   rT   s   "€rU   rV   ÚGlm4vTextAttention.__annotate__Ä  s#   ø€ ÷ ^ñ ^™ð ^¹3À½:ñ ^rX   c                óÄ  <€ \         SV `  4        Wn        W 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	        R V n
        VP                  V n        VP                  V n        V P                  R,          V n        \        P                  ! V P                  V P                  V P                  ,          R R7      V n        \        P                  ! V P                  V P                  V P                  ,          R R7      V n        \        P                  ! V P                  V P                  V P                  ,          R R7      V n        \        P                  ! V P                  V P                  ,          V P                  RR7      V n        R# )TrÈ   FNg      à¿)rz   rª   r«   rf  r>   r3   r4   r=  ry   Únum_key_value_groupsÚ	is_causalrA   rK   Úscalingr¹   rÉ   Úq_projÚk_projÚv_projÚo_proj©r}   r«   rf  r   s   &&&€rU   rª   ÚGlm4vTextAttention.__init__Ä  sE  ø€ Ü‰ÑÔØŒØ"Œà!×-Ñ-ˆÔØ×3Ñ3ˆŒØ×(Ñ(¨D¯N©NÕ:ˆŒØ#)×#=Ñ#=ˆÔ Ø$(§N¡N°d×6NÑ6NÕ$NˆÔ!ØˆŒØ!'×!9Ñ!9ˆÔØ%×5Ñ5ˆÔØ—}‘} dÕ*ˆŒä—i’i × 0Ñ 0°$·.±.À4Ç=Á=Õ2PÐW[Ô\ˆŒÜ—i’i × 0Ñ 0°$×2JÑ2JÈTÏ]É]Õ2ZÐaeÔfˆŒÜ—i’i × 0Ñ 0°$×2JÑ2JÈTÏ]É]Õ2ZÐaeÔfˆŒÜ—i’i §¡°·±Õ >À×@PÑ@PÐW\Ô]ˆŽrX   c                ó`  <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  R,          S[S[ P                  ,          R,          3,          /# )r<   rt   Úposition_embeddingsNru   rk   r~   r³   )rÕ   rÖ   rQ   r   r   r   )rS   rT   s   "€rU   rV   rh  Ø  sœ   ø€ ÷ ))ñ ))á—|‘|ð))ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð))ñ Ÿ™ tÕ+ð	))ñ
  �ð))ñ Ñ-Õ.ð))ñ 
‰u�|‰|™UŸ\™\¨DÕ0±%¹¿¹Õ2EÈÕ2LÐLÕ	Mñ))rX   c                óD  € VP                  4       w  rgpV P                  V4      p	V P                  V4      p
V P                  V4      pV	P	                  WgRV P
                  4      P                  ^^4      p	V
P	                  WgRV P
                  4      P                  ^^4      p
VP	                  WgRV P
                  4      P                  ^^4      pVw  rÍ\        WšWÍ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%                  WgR4      P'                  4       pV P)                  V4      pVV3# )rN  Údropoutr6   rl  rô   )Úsizerm  rn  ro  rù   r=  Ú	transposerb  Úupdaterf  r   Úget_interfacer«   Ú_attn_implementationr   ÚtrainingrA   rl  ÚreshapeÚ
contiguousrp  )r}   rt   rt  ru   rk   r~   ÚbszÚq_lenÚ_Úquery_statesÚ
key_statesÚvalue_statesrX  rY  Úattention_interfaceÚattn_outputÚattn_weightss   &&&&&,           rU   rØ   ÚGlm4vTextAttention.forwardØ  s”  € ð &×*Ñ*Ó,‰ˆ�Aà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà#×(Ñ(¨°R¸¿¹ÓG×QÑQÐRSÐUVÓWˆØ—_‘_ S°°T·]±]ÓC×MÑMÈaÐQRÓSˆ
Ø#×(Ñ(¨°R¸¿¹ÓG×QÑQÐRSÐUVÓWˆà&‰ˆÜ#7¸ÐRUÓ#[Ñ ˆàÒ&Ø'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Ð(Ð(rX   )rA   r«   r=  r>   rk  rn  rf  r4   rj  ry   rp  rm  rK   rl  ro  r©   )NNN)
rZ   r[   r\   r]   r^   rª   rØ   rd   re   rŒ   r�   s   @@rU   rd  rd  ¾  s%   ù‡ € ñ÷
^õ ^÷())÷ ))ò ))rX   rd  c                   ó   € ] tR tRtRtR# )ÚGlm4vTextMLPi  rY   Nr¡   rY   rX   rU   rŠ  rŠ    r¢   rX   rŠ  c                   ó^   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4       tRtVtV ;t	# )ÚGlm4vTextDecoderLayeri  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r<   r«   rf  rg  )rS   rT   s   "€rU   rV   Ú"Glm4vTextDecoderLayer.__annotate__	  s   ø€ ÷ \ñ \™ð \¹3ñ \rX   c                ó¶  <€ \         SV `  4        VP                  V n        \        W4      V n        \        V4      V n        \        VP                  VP                  R 7      V n	        \        VP                  VP                  R 7      V n
        \        VP                  VP                  R 7      V n        \        VP                  VP                  R 7      V n        R# )r(  N)rz   rª   r>   rd  Ú	self_attnrŠ  r-  r    rE   Úinput_layernormÚpost_attention_layernormÚpost_self_attn_layernormÚpost_mlp_layernormrq  s   &&&€rU   rª   ÚGlm4vTextDecoderLayer.__init__	  s    ø€ Ü‰ÑÔØ!×-Ñ-ˆÔÜ+¨FÓ>ˆŒÜ Ó'ˆŒÜ+¨F×,>Ñ,>ÀF×DWÑDWÔXˆÔÜ(4°V×5GÑ5GÈV×M`ÑM`Ô(aˆÔ%Ü(4°V×5GÑ5GÈV×M`ÑM`Ô(aˆÔ%Ü".¨v×/AÑ/AÀv×GZÑGZÔ"[ˆÖrX   c                óz  <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[S[ P                  S[S[ P                  S[ P                  3,          R,          3,          /# )	r<   rt   rt  Nru   Úposition_idsrk   r…   r³   )rÕ   rÖ   rQ   Ú
LongTensorr   rN   ÚFloatTensor)rS   rT   s   "€rU   rV   rŽ    s´   ø€ ÷ #ñ #á—|‘|ð#ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð#ñ Ÿ™ tÕ+ð	#ñ
 ×&Ñ&¨Õ-ð#ñ  �ð#ñ ˜$•;ð#ñ 
‰u× Ñ ¡%©×(9Ñ(9¹5×;LÑ;LÐ(LÕ"MÐPTÕ"TÐTÕ	Uñ#rX   c                ó  € TpV P                  V4      pV P                  ! R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V P                  V4      pW�,           pV# )rt   rt  ru   r—  rk   r…   rY   )r‘  r�  r“  r’  r-  r”  )
r}   rt   rt  ru   r—  rk   r…   r~   Úresidualr�  s
   &&&&&&&,  rU   rØ   ÚGlm4vTextDecoderLayer.forward  sË   € ð !ˆà×,Ñ,¨]Ó;ˆð  Ÿ>š>ñ 
Ø'ð
à 3ð
ð *ð
ð &ð	
ð
 ,ð
ð  ð
ð ñ
Ñˆð ×5Ñ5°mÓDˆØ Õ0ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØ×/Ñ/°Ó>ˆØ Õ0ˆàÐrX   )r>   r‘  r-  r’  r”  r“  r�  )NNNNF)
rZ   r[   r\   r]   rª   r   rØ   rd   re   rŒ   r�   s   @@rU   rŒ  rŒ    s/   ù‡ € ÷\ó \ð ÷#ñ #ó ÷#ð #rX   rŒ  c                   ó   € ] tR tRtRtR# )ÚGlm4vModelOutputWithPasti:  rY   Nr¡   rY   rX   rU   rž  rž  :  r¢   rX   rž  c                   ó   € ] tR tRtRR.tRtR# )ÚGlm4vPreTrainedModeli>  rŒ  r#  rY   N)rZ   r[   r\   r]   Ú_no_split_modulesrd   rY   rX   rU   r   r   >  s   † Ø0Ð2DÐEÔrX   r   c                   ó�   a a€ ] tR tRt oRtR.tR]R]/tV3R lV 3R llt	]
]]V3R lR l4       4       4       tV3R	 ltR
tVtV ;t# )ÚGlm4vVisionModeliB  r#  rt   Ú
attentionsc                ó   <€ V ^8„  d   QhRR/# r%  rY   )rS   rT   s   "€rU   rV   ÚGlm4vVisionModel.__annotate__K  s   ø€ ÷ ñ  $ñ rX   c                ó  <€ \         SV `  V4       VP                  V n        VP                  V n        \	        V4      V n        \        V4      V n        \        V4      V n	        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        \!        VP"                  VP$                  VP&                  R 7      V n        \+        VP,                  VP.                  R7      V n        \        P2                  ! VP,                  VP"                  VP                  VP                  R7      V n        \+        VP,                  VP.                  R7      V n        RV n        V P;                  4        R# u upi ))rÄ   rÅ   r?   r(  )rB   Úout_channelsr·   r¸   FN)rz   rª   rF   rD   rÜ   r  r°   Úpatch_embedrÀ   Úrotary_pos_embr¹   Ú
ModuleListÚranger=   r#  ÚblocksrÂ   rH   rI   r?   Úmergerr    r>   rE   Úpost_conv_layernormÚConv2dÚ
downsampleÚpost_layernormÚgradient_checkpointingÚ	post_init)r}   r«   r�  r   s   && €rU   rª   ÚGlm4vVisionModel.__init__K  s-  ø€ Ü‰Ñ˜Ô Ø"(×";Ñ";ˆÔØ ×+Ñ+ˆŒä/°Ó7ˆŒÜ0°Ó8ˆÔä8¸Ó@ˆÔä—m’mÄuÈVÏ\É\ÔGZÓ$[ÑGZÀ!Ô%5°fÖ%=ÑGZÑ$[Ó\ˆŒÜ,Ø×&Ñ&°F×4LÑ4LÐY_×YjÑYjô
ˆŒô $0°×0BÑ0BÈ×H[ÑH[Ô#\ˆÔ ÜŸ)š)Ø×*Ñ*Ø×/Ñ/Ø×1Ñ1Ø×,Ñ,ô	
ˆŒô +¨6×+=Ñ+=À6×CVÑCVÔWˆÔà&+ˆÔ#Ø�‰Öùò %\s   Â
Fc          	      óz   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[,          RS[S[,          /# )r<   rt   Úgrid_thwr~   r³   )rÕ   rÖ   r   r   rQ   r   )rS   rT   s   "€rU   rV   r¦  i  sA   ø€ ÷ 2
ñ 2
Ù"Ÿ\™\ð2
Ù5:·\±\ð2
ÙMSÑTfÕMgð2
á	Ñ+Õ	+ñ2
rX   c           
     ó>  € \        W P                  VR7      p\        W P                  VR7      w  rVV P	                  V4      pV P                  V4      pV P                  W4      pVR,          VRR ,
          pV P                  VVVVR	,          P                  VP                  4      VR
,          P                  VP                  4      4      pV P                   F  p	V	! V3RVRVRV/VB pK  	  V P                  V4      pVP                  RV P                  V P                  VP                  R,          4      pVP                  ^ ^^^4      pV P                  V4      P                  RV P                  P                   4      pV P#                  V4      p
\%        VV
R7      # )a$  
hidden_states (`torch.Tensor` of shape `(seq_len, hidden_size)`):
    The final hidden states of the model.
grid_thw (`torch.Tensor` of shape `(num_images_or_videos, 3)`):
    The temporal, height and width of feature shape of each image in LLM.

Returns:
    `torch.Tensor`: hidden_states.
)r~   ºrN  NNNÚ
cu_seqlensÚ
max_seqlenrt  )Úlast_hidden_stateÚpooler_outputrô   ©ºNNNr   )r¿  rN  )r   rF   r   r«   r©  r¯  rª  r  rü   rë   r­  r²  rù   rö   rú   r±  rH   r®  r   )r}   rt   r·  r~   r—  rº  r»  rt  ÚseqlensÚblkÚmerged_hidden_statess   &&&,       rU   rØ   ÚGlm4vVisionModel.forwardf  sž  € ô /¨x×9PÑ9PÐY_Ô`ˆÜ!=¸hÏÉÐ\bÔ!cÑˆ
à×(Ñ(¨Ó7ˆØ×0Ñ0°Ó?ˆØ"×1Ñ1°-ÓNÐà˜R•. :¨c¨r ?Õ2ˆØŸ™ØØØØ˜Õ×!Ñ! -×"6Ñ"6Ó7Ø˜Õ×!Ñ! -×"6Ñ"6Ó7ó
ˆð —;”;ˆCÙØñà%ðð &ðð %8ð	ð
 ñŠMñ ð ×+Ñ+¨MÓ:ˆà%×*Ñ*Ø�×'Ñ'¨×)@Ñ)@À-×BUÑBUÐVXÕBYó
ˆð &×-Ñ-¨a°°A°qÓ9ˆØŸ™¨Ó6×;Ñ;¸BÀÇÁ×@[Ñ@[Ó\ˆà#Ÿ{™{¨=Ó9Ðä)Ø+Ø.ô
ð 	
rX   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rÞ   r´   )rS   rT   s   "€rU   rV   r¦  B  s   ø‡ ‚ ÙÑò rX   )r­  r±  r  r³  r®  r©  rD   r¯  r²  rª  rF   )ÚimageÚvideo)rZ   r[   r\   r]   Úinput_modalitiesr¡  r#  r  Ú_can_record_outputsrª   r   r   r   rØ   rc   rd   re   rŒ   r�   s   @@rU   r£  r£  B  s^   ù‡ € à)ÐØ+Ð,ÐàÐ)ØÐ*ðÐ÷
ó ð6  ØØ÷2
ó ó ó  ð2
÷O … rX   r£  c                   ó~   a a€ ] tR tRt oR]R]/tV3R lV 3R llt]]	]
R	V3R lR ll4       4       4       tRtVtV ;t# )
ÚGlm4vTextModeliž  rt   r¤  c                ó    <€ V ^8„  d   QhRS[ /# rÞ   r2  )rS   rT   s   "€rU   rV   ÚGlm4vTextModel.__annotate__¤  s   ø€ ÷ $ñ $™ñ $rX   c           	     ó4  <€ \         SV `  V4       \        P                  ! \	        VP
                  4       Uu. uF  p\        W4      NK  	  up4      V n        \        VP                  VP                  R 7      V n        \        VR7      V n        V =V =R# u upi )r(  ©r«   N)rz   rª   r¹   r«  r¬  rƒ   rŒ  rs   r    r>   rE   rv   r0  Ú
rotary_embr{  Úhas_sliding_layersrq  s   && €rU   rª   ÚGlm4vTextModel.__init__¤  s   ø€ Ü‰Ñ˜Ô Ü—m’mÜGLÈV×MeÑMeÔGfÓgÑGf¸)Ô" 6Ö5ÑGfÑgó
ˆŒô ! ×!3Ñ!3¸×9LÑ9LÔMˆŒ	Ü2¸&ÔAˆŒØÐ%ØÒ#ùò hs   ¸Bc                ó  <€ V ^8„  d   Qh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   Nru   r—  rk   rr   r…   r~   r³   )
rÕ   r˜  rÖ   r   r™  rN   r   r   rQ   r   )rS   rT   s   "€rU   rV   rÌ  ±  s£   ø€ ÷ J
ñ J
á×#Ñ# dÕ*ðJ
ñ Ÿ™ tÕ+ðJ
ñ ×&Ñ&¨Õ-ð	J
ñ
  �ðJ
ñ ×(Ñ(¨4Õ/ðJ
ñ ˜$•;ðJ
ñ Ñ-Õ.ðJ
ñ 
Ñ(Õ	(ñJ
rX   c                óî  € VR J VR J,          '       d   \        R4      hV'       d?   Vf;   \        P                  P                  4       '       g   \	        V P
                  R7      pVf   V P                  V4      pVf‡   Ve   VP                  4       M^ p\        P                  ! VP                  ^,          VP                  R7      V,           pVP                  ^^R4      P                  ^VP                  ^ ,          R4      pM<VP                  ^8X  d,   VR,          P                  ^VP                  ^ ,          R4      pVP                  ^8X  d,   VP                  ^ ,          ^8X  d   V^ ,          p	VR,          pMR p	RV P
                  RVRVRVR	V	/p
\        R/ V
B pTpV P                  WÃR
7      pV P                    F  pV! V3RVR	V	RVRV/VB pTpK  	  V P#                  V4      p\%        VVR7      # )Nú:You must specify exactly one of input_ids or inputs_embedsrÎ  rí   r¹  r«   rr   ru   rk   r—  )r—  rt  )r¼  rk   rô   )N.rY   )Ú
ValueErrorrÕ   ÚjitÚ
is_tracingr   r«   rp   Úget_seq_lengthrþ   rö   rë   rù   ÚexpandÚndimr
   rÏ  rs   rv   r   )r}   rq   ru   r—  rk   rr   r…   r~   Úpast_seen_tokensÚtext_position_idsÚmask_kwargsÚcausal_maskrt   rt  Údecoder_layerÚlayer_outputss   &&&&&&&,        rU   rØ   ÚGlm4vTextModel.forward®  s  € ð ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZ÷ ˜Ò0¼¿¹×9MÑ9M×9OÒ9OÜ*°$·+±+Ô>ˆOàÒ Ø ×-Ñ-¨iÓ8ˆMð ÒØCRÒC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÕ(>À}×G[ÑG[Ô\Ð_oÕoˆLØ'×,Ñ,¨Q°°2Ó6×=Ñ=¸aÀ×ATÑATÐUVÕAWÐY[Ó\‰LØ×Ñ !Ô#Ø'¨	Õ2×9Ñ9¸!¸\×=OÑ=OÐPQÕ=RÐTVÓWˆLð ×Ñ Ô! l×&8Ñ&8¸Õ&;¸qÔ&@Ø ,¨Q¥ÐØ'¨Õ+‰Lð !%Ðð �d—k‘kØ˜]Ø˜nØ˜ØÐ-ð
ˆô )Ñ7¨;Ñ7ˆà%ˆØ"Ÿo™o¨m˜oÓWÐà!Ÿ[œ[ˆMÙ)Øñà*ðð /ðð !0ð	ð
 %8ðð ñˆMð *ŠMñ )ð Ÿ	™	 -Ó0ˆä&Ø+Ø+ô
ð 	
rX   )rs   rv   rÏ  )NNNNNN)rZ   r[   r\   r]   rŒ  rd  rÈ  rª   r   r   r   rØ   rd   re   rŒ   r�   s   @@rU   rÊ  rÊ  ž  sU   ù‡ € àÐ.ØÐ(ðÐ÷
$ó $ð ØØ÷J
ñ J
ó ó  ó ÷J
ð J
rX   rÊ  c                   óØ   a a€ ] tR tRt oRR.tV 3R lt]! RR7      ]]RV3R lR ll4       4       4       t	RV3R	 lR
 llt
RV3R lV 3R lllt]]RV3R lR ll4       4       tRtVtV ;t# )Ú
Glm4vModeliþ  rŒ  r#  c                ón   <€ \         SV `  V4       \        P                  VP                  4      V n        R # r©   )rz   rª   r£  Ú_from_configr1   Úvisualrç   s   &&€rU   rª   ÚGlm4vModel.__init__  s(   ø€ Ü‰Ñ˜Ô Ü&×3Ñ3°F×4HÑ4HÓIˆŽrX   rÆ  )Úmodalityc          	      óˆ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[,          /# )r<   Úpixel_values_videosÚvideo_grid_thwNr~   r³   )rÕ   r™  r˜  r   r   rQ   r   )rS   rT   s   "€rU   rV   ÚGlm4vModel.__annotate__  sP   ø€ ÷ ñ á"×.Ñ.ðñ ×(Ñ(¨4Õ/ðñ Ñ+Õ,ð	ñ
 
Ñ+Õ	+ñrX   c                ó  € VP                  V P                  P                  4      pVR,          pVR,          p\        P                  ! WT^ R7      pVP                  VP                  ^ ,          ^4      p\        P                  ! Wv.^R7      pV P                  ! V3RVRR/VB p	VP                  R4      V P                  P                  ^,          ,          P                  4       p
\        P                  ! V	P                  V
4      pW¹n        V	# )r¿  rï   r·  Úreturn_dictTr¾  )r¿  r¹  rô   )Útyperæ  rì   rÕ   rG  Únew_onesrö   rD  ÚprodrF   ÚtolistrF  r½  )r}   rê  rë  r~   ÚtÚhwÚflattened_hwÚprefix_onesÚflattened_video_grid_thwÚvision_outputsÚsplit_sizesÚvideo_embedss   &&&,        rU   Úget_video_featuresÚGlm4vModel.get_video_features  sñ   € ð 2×6Ñ6°t·{±{×7HÑ7HÓIÐà˜4Õ ˆØ˜EÕ"ˆä×.Ò.¨r¸!Ô<ˆØ$×-Ñ-¨l×.@Ñ.@ÀÕ.CÀQÓGˆÜ#(§9¢9¨kÐ-HÈaÔ#PÐ ØŸšØñ
Ø*Bð
ØPTð
ØX^ñ
ˆð &×*Ñ*¨2Ó.°$·+±+×2PÑ2PÐRSÕ2SÕS×[Ñ[Ó]ˆÜ—{’{ >×#?Ñ#?ÀÓMˆØ'3Ô$àÐrX   c          	      óž   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[ P                  R,          /# )r<   rq   rr   Úimage_featuresNÚvideo_features)rÕ   r˜  r™  )rS   rT   s   "€rU   rV   rì    sU   ø€ ÷ (6ñ (6á×#Ñ#ð(6ñ ×(Ñ(ð(6ñ ×)Ñ)¨DÕ0ð	(6ñ
 ×)Ñ)¨DÕ0ñ(6rX   c           
     óJ  € VfÜ   W P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  pVP                  R4      pW P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  pVP                  R4      pM0WP                  P                  8H  pWP                  P                  8H  pVP                  4       pVP                  R4      P                  VP                  4      pVeL   \        WrP                  R,          ,          VP                  4       8H  RV RVP                  ^ ,           24       VP                  4       pVP                  R4      P                  VP                  4      pVeL   \        W‚P                  R,          ,          VP                  4       8H  RV RVP                  ^ ,           24       WV3# )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ì   rë   z6Image features and image tokens do not match, tokens: z, features: z6Video features and video tokens do not match, tokens: rY   rô   )Úget_input_embeddingsrÕ   Úfullr«   r˜   rø   rë   Úallr™   r   rû   rü   r   rö   Únumel)	r}   rq   rr   rþ  rÿ  Úspecial_image_maskÚspecial_video_maskÚn_image_tokensÚn_video_tokenss	   &&&&&    rU   Úget_placeholder_maskÚGlm4vModel.get_placeholder_mask  sß  € ð ÒØ!.×2KÑ2KÔ2MÜ—
’
˜2˜tŸ{™{×9Ñ9ÄÇÁÐTa×ThÑThÔió3ñ "Ðð "4×!7Ñ!7¸Ó!;ÐØ!.×2KÑ2KÔ2MÜ—
’
˜2˜tŸ{™{×9Ñ9ÄÇÁÐTa×ThÑThÔió3ñ "Ðð "4×!7Ñ!7¸Ó!;Ñð "+¯k©k×.HÑ.HÑ!HÐØ!*¯k©k×.HÑ.HÑ!HÐà+×/Ñ/Ó1ˆØ/×9Ñ9¸"Ó=×@Ñ@À×AUÑAUÓVÐØÒ%Ü"Ø×!4Ñ!4°RÕ!8Õ8¸N×<PÑ<PÓ<RÑRØHÈÐHXÐXdÐes×eyÑeyÐz{Õe|Ðd}Ð~ôð
 ,×/Ñ/Ó1ˆØ/×9Ñ9¸"Ó=×@Ñ@À×AUÑAUÓVÐØÒ%Ü"Ø×!4Ñ!4°RÕ!8Õ8¸N×<PÑ<PÓ<RÑRØHÈÐHXÐXdÐes×eyÑeyÐz{Õe|Ðd}Ð~ôð "Ð5Ð5rX   c                ó†   <€ V ^8„  d   QhRS[ P                  R,          RS[S[ P                  S[ P                  3,          /# )r<   rë  Nr³   )rÕ   r˜  rQ   rÖ   )rS   rT   s   "€rU   rV   rì  I  s@   ø€ ÷ #Uñ #Uá×(Ñ(¨4Õ/ð#Uñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ	#UrX   c                óx   <€ Ve%   \         P                  ! WR,          ^ R7      p^VR&   \        SV `  ! RRV/VB # )a9  
Difference from Qwen2VL/Qwen2.5VL's get_rope_index:
- GLM4V uses timestamps to separate each video frame, so the video_grid_thw should also be split too.

Args:
    input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
        Indices of input sequence tokens in the vocabulary. Padding will be ignored by default should you provide
        it.
    mm_token_type_ids (`torch.IntTensor` of shape `(batch_size, sequence_length)`):
        Token type ids matching each modality to a different value in the input sequence, i.e. text (0), image (1), video (2).
    image_grid_thw (`torch.LongTensor` of shape `(num_images, 3)`, *optional*):
        The temporal, height and width of feature shape of each image in LLM.
    video_grid_thw (`torch.LongTensor` of shape `(num_videos, 3)`, *optional*):
        The temporal, height and width of feature shape of each video in LLM.
    attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
        Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

        - 1 for tokens that are **not masked**,
        - 0 for tokens that are **masked**.

Returns:
    position_ids (`torch.LongTensor` of shape `(3, batch_size, sequence_length)`)
    mrope_position_deltas (`torch.Tensor` of shape `(batch_size)`)
rï   rë  r¾  rY   )rÕ   rG  rz   Úget_rope_index)r}   rë  Úsuper_kwargsr   s   &&,€rU   r  ÚGlm4vModel.get_rope_indexI  sF   ø€ ð> Ò%Ü"×4Ò4°^ÐTXÕEYÐ_`ÔaˆNØ#$ˆN˜4Ñ ä‰wÒ%ÑT°^ÐTÀ|ÑTÐTrX   c                óÂ  <€ V ^8„  d   Qh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[ P                  R,          R	S[ P                  R,          R
S[ P                  R,          RS[ P
                  R,          RS[S[,          RS[S[	,          /# )r<   rq   Nru   r—  rk   rr   Úpixel_valuesrê  Úimage_grid_thwrë  Úmm_token_type_idsr~   r³   )
rÕ   r˜  rÖ   r   r™  Ú	IntTensorr   r   rQ   rž  )rS   rT   s   "€rU   rV   rì  p  sð   ø€ ÷ ;
ñ ;
á×#Ñ# dÕ*ð;
ñ Ÿ™ tÕ+ð;
ñ ×&Ñ&¨Õ-ð	;
ñ
  �ð;
ñ ×(Ñ(¨4Õ/ð;
ñ —l‘l TÕ)ð;
ñ #×.Ñ.°Õ5ð;
ñ ×(Ñ(¨4Õ/ð;
ñ ×(Ñ(¨4Õ/ð;
ñ !Ÿ?™?¨TÕ1ð;
ñ Ñ+Õ,ð;
ñ 
Ñ)Õ	)ñ;
rX   c                ó,  € VR J VR J,          '       d   \        R4      hVf   V P                  4       ! V4      pVe‚   V P                  ! Wh3RR/VB P                  p\        P
                  ! V^ R7      P                  VP                  VP                  4      pV P                  WVR7      w  rÞVP                  WÜ4      pVe„   V P                  ! Wy3RR/VB P                  p\        P
                  ! V^ R7      P                  VP                  VP                  4      pV P                  WVR7      w  ppVP                  VV4      pVf   V P                  VVV	VVVV
R7      pV P                  ! RRR R	VR
VRVRV/VB p\        R/ VBRV P                  /B # )NrÔ  rî  Trï   )rþ  )rÿ  )rq   r  rë  rr   ru   rk   r  rq   r—  ru   rk   rr   Úrope_deltasrY   )rÕ  r  Úget_image_featuresr½  rÕ   rD  rü   rë   rì   r
  Úmasked_scatterrû  Úcompute_3d_position_idsÚlanguage_modelrž  r  )r}   rq   ru   r—  rk   rr   r  rê  r  rë  r  r~   Úimage_embedsÚ
image_maskr�  rú  Ú
video_maskÚoutputss   &&&&&&&&&&&,      rU   rØ   ÚGlm4vModel.forwardn  së  € ð  ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZàÒ Ø ×5Ñ5Ô7¸	ÓBˆMàÒ#Ø×2Ò2ØñØ:>ðØBHñç‰mð ô !Ÿ9š9 \°qÔ9×<Ñ<¸]×=QÑ=QÐS`×SfÑSfÓgˆLØ ×5Ñ5°iÐ_kÐ5Ól‰MˆJØ)×8Ñ8¸ÓRˆMàÒ*Ø×2Ò2Ø#ñØAEðØIOñç‰mð ô !Ÿ9š9 \°qÔ9×<Ñ<¸]×=QÑ=QÐS`×SfÑSfÓgˆLØ ×5Ñ5°iÐ_kÐ5Ól‰MˆAˆzØ)×8Ñ8¸À\ÓRˆMàÒØ×7Ñ7Ø#Ø-Ø-Ø+Ø-Ø /Ø"3ð 8ó ˆLð ×%Ò%ñ 
Øð
à%ð
ð *ð
ð ,ð	
ð
 (ð
ð ñ
ˆô (ñ 
Øñ
à×(Ñ(ò
ð 	
rX   )ræ  r©   )NN)
NNNNNNNNNN)rZ   r[   r\   r]   r¡  rª   r   r   r   rû  r
  r  rØ   rd   re   rŒ   r�   s   @@rU   rã  rã  þ  sƒ   ù‡ € Ø0Ð2DÐEÐõJñ  ¨Ô1ØØ÷ñ ó ó ó 2ð÷.(6ò (6÷T#Uõ #UðJ Ø÷;
ñ ;
ó ó ÷;
ð ;
rX   rã  c                   ó   € ] tR tRtRtR# )ÚGlm4vCausalLMOutputWithPasti®  rY   Nr¡   rY   rX   rU   r"  r"  ®  r¢   rX   r"  c                   óL   a € ] tR tRt o RV 3R lR lltR	V 3R lR lltRtV tR# )
ÚGlm4vForConditionalGenerationi²  Nc                ó  <€ V ^8„  d   Qh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[ P                  R,          R	S[ P                  R,          R
S[ P                  R,          RS[ P                  R,          RS[ P
                  R,          RS[S[ P                  ,          RS[S[,          RS[	S[
,          /# )r<   rq   Nru   r—  rk   rr   Úlabelsr  rê  r  rë  r  Úlogits_to_keepr~   r³   )rÕ   r˜  rÖ   r   r™  r  rL   r   r   rQ   r"  )rS   rT   s   "€rU   rV   Ú*Glm4vForConditionalGeneration.__annotate__³  s(  ø€ ÷ R
ñ R
á×#Ñ# dÕ*ðR
ñ Ÿ™ tÕ+ðR
ñ ×&Ñ&¨Õ-ð	R
ñ
  �ðR
ñ ×(Ñ(¨4Õ/ðR
ñ × Ñ  4Õ'ðR
ñ —l‘l TÕ)ðR
ñ #×.Ñ.°Õ5ðR
ñ ×(Ñ(¨4Õ/ðR
ñ ×(Ñ(¨4Õ/ðR
ñ !Ÿ?™?¨TÕ1ðR
ñ ™eŸl™lÕ*ðR
ñ Ñ+Õ,ðR
ñ 
Ñ,Õ	,ñR
rX   c                óÊ  € V P                   ! RRVRVRV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RpVe7   V P
                  ! RRVRVRV P                  P                  P                  /VB p\        VVVP                  VP                  VP                  VP                  R7      # )aï  
Example:

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

>>> model = Glm4vForConditionalGeneration.from_pretrained("zai-org/GLM-4.1V-9B-Thinking")
>>> processor = AutoProcessor.from_pretrained("zai-org/GLM-4.1V-9B-Thinking")

>>> messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://www.ilankelman.org/stopsigns/australia.jpg"},
            {"type": "text", "text": "What is shown in this image?"},
        ],
    },
]
>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
>>> inputs = processor(text=[text], images=[image], vision_infos=[vision_infos])

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"The image shows a street scene with a red stop sign in the foreground. In the background, there is a large red gate with Chinese characters ..."
```rq   r  rê  r  rë  r  r—  ru   rk   rr   Nr¿  Úlogitsr&  r‚   )Úlossr*  rk   rt   r¤  r  rY   )Úmodelr“   rL   ÚsliceÚlm_headÚloss_functionr«   rj   r‚   r"  rk   rt   r¤  r  )r}   rq   ru   r—  rk   rr   r&  r  rê  r  rë  r  r'  r~   r  rt   Úslice_indicesr*  r+  s   &&&&&&&&&&&&&,     rU   rØ   Ú%Glm4vForConditionalGeneration.forward³  sG  € ðb —*’*ñ 
Øð
à%ð
ð !4ð
ð *ð	
ð
 *ð
ð 0ð
ð &ð
ð *ð
ð ,ð
ð (ð
ð ñ
ˆð   �
ˆô 9CÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆàˆØÒØ×%Ò%ñ ØðØ&,ðØ9=¿¹×9PÑ9P×9[Ñ9[ðØ_eñˆDô +ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø×+Ñ+ô
ð 	
rX   c                ó®   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[S[ P                  S[ P                  3,          /# )r<   rq   Nrr   r³   )rÕ   r˜  rÖ   rQ   )rS   rT   s   "€rU   rV   r(    sO   ø€ ÷ 6*ñ 6*á×#Ñ# dÕ*ð6*ñ —|‘| dÕ*ð6*ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ	6*rX   c           
     óÖ  € VEe.   VV P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  R,          pVV P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  R,          pVV P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  R,          pMHWP                  P                  8H  pWP                  P                  8H  pWP                  P                  8H  p\        P                  ! VP                  4       VP                  4       ,
          ^R7      pV^ 8„  pW7( ,          pVP                  ^R7      p	VP                  ^R7      p
Wš3# )a  
Get the number of images and videos for each sample to calculate the separation length of the sample tensor.
These parameters are not passed through the processor to avoid unpredictable impacts from interface modifications.

Args:
    input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
        Indices of input sequence tokens in the vocabulary.

Returns:
    image_nums (`torch.LongTensor` of shape `(batch_size, num_images_sample)`)
    video_nums (`torch.LongTensor` of shape `(batch_size, num_videos_sample)`)
r  rï   rY   ).r   )r  rÕ   r  r«   rš   rø   rë   rœ   r�   rÿ   rL   r   )r}   rq   rr   Úis_imageÚis_video_startÚis_video_endÚvideo_levelÚinside_videoÚstandalone_imagesÚimage_countsÚvideo_countss   &&&        rU   Ú_get_image_nums_and_video_numsÚ<Glm4vForConditionalGeneration._get_image_nums_and_video_nums  s›  € ð$ Ó$àØ×,Ñ,Ô.Ü—J’J˜r 4§;¡;×#CÑ#CÌ5Ï:É:Ð^k×^rÑ^rÔsóñð õˆHð Ø×,Ñ,Ô.Ü—J’J˜r 4§;¡;×#CÑ#CÌ5Ï:É:Ð^k×^rÑ^rÔsóñð õˆNð Ø×,Ñ,Ô.Ü—J’J˜r 4§;¡;×#AÑ#AÌÏÉÐ\i×\pÑ\pÔqóñð õ‰Lð !§K¡K×$DÑ$DÑDˆHØ&¯+©+×*JÑ*JÑJˆNØ$¯©×(FÑ(FÑFˆLô —l’l >×#5Ñ#5Ó#7¸,×:JÑ:JÓ:LÕ#LÐRSÔTˆØ" Q‘ˆð %¨Õ6Ðð )×,Ñ,°Ð,Ó3ˆØ%×)Ñ)¨aÐ)Ó0ˆàÐ)Ð)rX   rY   )NNNNNNNNNNNr   r©   )rZ   r[   r\   r]   rØ   r<  rd   re   rf   s   @rU   r$  r$  ²  s!   ø‡ € ÷R
ò R
÷h6*÷ 6*ð 6*rX   r$  c                   ó2   € ] tR tRtRRRRRRR/RR	R//tR
tR# )ÚGlm4vProcessorKwargsi@  Útext_kwargsÚpaddingFÚreturn_token_type_idsÚreturn_mm_token_type_idsTÚvideos_kwargsÚreturn_metadatarY   N)rZ   r[   r\   r]   Ú	_defaultsrd   rY   rX   rU   r?  r?  @  s-   † àØ�uØ# UØ&¨ð
ð
 	Ð+¨TÐ2ð„IrX   r?  c                   óp   a a€ ] tR tRt oR
V 3R lltV3R lR ltV3R lR ltRV3R lR lltR	tVt	V ;t
# )ÚGlm4vProcessoriK  c                ó  <€ \         SV `  WW4R 7       \        VR4      '       g   RMVP                  V n        \        VR4      '       g   RMVP                  V n        VP                  R4      V n        VP                  R4      V n        R# ))Úchat_templateÚimage_tokenz	<|image|>Úvideo_tokenz	<|video|>z<|begin_of_video|>z<|end_of_video|>N)rz   rª   ÚhasattrrK  rL  Úconvert_tokens_to_idsÚvideo_start_idÚvideo_end_id)r}   Úimage_processorÚ	tokenizerÚvideo_processorrJ  r~   r   s   &&&&&,€rU   rª   ÚGlm4vProcessor.__init__L  sw   ø€ Ü‰Ñ˜°_ÐÔbÜ.5°iÀ×.OÒ.O™;ÐU^×UjÑUjˆÔÜ.5°iÀ×.OÒ.O™;ÐU^×UjÑUjˆÔØ'×=Ñ=Ð>RÓSˆÔØ%×;Ñ;Ð<NÓOˆÖrX   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r<   Úvideo_inputsÚ	video_idxr³   )rR   rL   rM   )rS   rT   s   "€rU   rV   ÚGlm4vProcessor.__annotate__S  s#   ø€ ÷ ñ ±ð Áð ÑSVñ rX   c                óÜ  € V P                   P                  ^,          pVR,          V,          ^ ,          pVR,          V,          P                  4       V,          V,          pVR,          V,          pRpVP                  f   \        P                  R4       VP                  f   ^MVP                  Vn        VP                  R,          p	. p
\        ^ \        V	4      4       F  pV
P                  W›,          4       K  	  V
RV p\        V4      V8  d%   TP                  V'       d
   VR,          M^ 4       K4  \        V4       F%  pWÍ,          pV P                  WæR7      pW�,          pK'  	  V# )	r<   rë  Úvideo_metadataÚ Na  GLM4V requires frame timestamps to construct prompts, but the `fps` of the input video could not be inferred. Probably `video_metadata` was missing from inputs and you passed pre-sampled frames. Defaulting to `fps=24`. Please provide `video_metadata` for more accurate results.:NNr<   )Únum_image_tokensrô   )rS  Ú
merge_sizerñ  ÚfpsÚloggerÚwarning_onceÚ
timestampsr¬  ÚlenÚappendÚreplace_frame_token_id)r}   rV  rW  r~   Úmerge_lengthÚ
num_framesr\  ÚmetadataÚvideo_structurera  Úunique_timestampsÚidxÚselected_timestampsÚ	frame_idxÚtimestamp_secÚframe_structures   &&&,            rU   Úreplace_video_tokenÚ"Glm4vProcessor.replace_video_tokenS  sI  € Ø×+Ñ+×6Ñ6¸Õ9ˆØ!Ð"2Õ3°IÕ>¸qÕAˆ
Ø'Ð(8Õ9¸)ÕD×IÑIÓKÈ|Õ[Ð_iÕiÐØÐ 0Õ1°)Õ<ˆØˆà�<‰<ÒÜ×Ñðeôð
 &Ÿ\™\Ò1‘r°x·|±|ˆŒØ×(Ñ(¨Õ-ˆ
àÐÜ˜œC 
›OÖ,ˆCØ×$Ñ$ Z¥_Ö5ñ -ð 0°°Ð<ÐÜÐ%Ó&¨Ô3Ø×&Ñ&×BUÐ':¸2Ö'>Ð[\Ö]ä˜zÖ*ˆIØ/Õ:ˆMØ"×9Ñ9¸-Ð9ÓkˆOØÕ.ŠOñ +ð
 ÐrX   c                óF   <€ V ^8„  d   QhRS[ RS[ S[ S[,          ,          /# )r<   rq   r³   )rP   rL   )rS   rT   s   "€rU   rV   rX  r  s#   ø€ ÷ !ñ !±$ð !¹4ÁÁSÅ	½?ñ !rX   c                ó¬  € . pV FË  p\         P                  ! V4      p\         P                  ! V4      p\         P                  ! W@P                  8H  ^ R7      p\         P                  ! W@P
                  8H  ^ R7      pWg8„  p^WTV P                  8H  V,          &   ^WTV P                  8H  V( ,          &   VP                  VP                  4       4       KÍ  	  V# )r   )Úaxis)	ÚnpÚarrayÚ
zeros_likerÿ   rO  rP  r˜   rc  rò  )	r}   rq   r  ÚinputÚ	array_idsÚmm_token_typesÚstartsÚendsÚis_video_modalitys	   &&       rU   Úcreate_mm_token_type_idsÚ'Glm4vProcessor.create_mm_token_type_idsr  s¿   € ð ÐÛˆEÜŸš ›ˆIÜŸ]š]¨5Ó1ˆNô
 —Y’Y˜y×,?Ñ,?Ñ?ÀaÔHˆFÜ—9’9˜Y×*;Ñ*;Ñ;À!ÔDˆDØ &¡ÐàUVˆN¨×)<Ñ)<Ñ<Ð@QÕQÑRØXYˆN¨×)<Ñ)<Ñ<ÐBSÐASÕTÑUØ×$Ñ$ ^×%:Ñ%:Ó%<Ö=ñ ð !Ð rX   c                ó    <€ V ^8„  d   QhRS[ /# )r<   r\  )rL   )rS   rT   s   "€rU   rV   rX  ‡  s   ø€ ÷ nñ nÁcñ nrX   c                óF   € R V P                   V,           R\        V4       2# )z<|begin_of_image|>z<|end_of_image|>)rK  rL   )r}   rm  r\  s   &&&rU   rd  Ú%Glm4vProcessor.replace_frame_token_id‡  s+   € Ø# D×$4Ñ$4Ð7GÕ$GÐ#HÐHXÔY\Ð]jÓYkÐXlÐmÐmrX   )rK  rP  rO  rL  )NNNN©rN  )rZ   r[   r\   r]   rª   ro  r}  rd  rd   re   rŒ   r�   s   @@rU   rH  rH  K  s1   ù‡ € ÷P÷ð ÷>!ð !÷*n÷ nò nrX   rH  r‚  )	r�   rh   r/   r$  rã  r   rH  rÊ  r£  )eÚcollections.abcr   Únumpyrt  rÕ   Útorch.nnr¹   Útorch.nn.functionalÚ
functionalr  Úhuggingface_hub.dataclassesr   r   Úactivationsr   Úcache_utilsr   r   Úconfiguration_utilsr	   Úmasking_utilsr
   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úvision_utilsr   r   Úglm4.modeling_glm4r   r   r   Úqwen2_5_vl.modeling_qwen2_5_vlr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Úqwen2_vl.modeling_qwen2_vlr*   Úqwen2_vl.processing_qwen2_vlr+   r,   Ú
get_loggerrZ   r_  r/   rh   r�   r    r¤   r°   rÀ   rº   rÂ   rÜ   r  r#  r0  rT  rb  rd  rŠ  rŒ  rž  r   r£  rÊ  rã  r"  r$  r?  rH  Ú__all__rY   rX   rU   Ú<module>r�     sR  ðõ %ã Û Ý ß Ð Ý .Ý å !ß .Ý 3Ý /Ý BÝ 9ß SÝ 1Ý 5Ý &÷õ ÷õ 6ß Qß NÑ N÷÷ ÷ ñ õ 6÷ð 
×	Ò	˜HÓ	%€ñ Ð9Ô:Øô((Ð(ó ((ó ó ;ð((ñV Ð9Ô:Øô7(Ð&ó 7(ó ó ;ð7(ñt Ð9Ô:Øô7(Ð"ó 7(ó ó ;ð7(ôv	�;ô 	ô8�Mô 8ô	mÐ4ô 	mô	Ð!@ô 	ôf˜RŸY™Yô fô"G˜BŸI™Iô GôTRÐ4ô Rô5Ð,ô 5ô1Ð8ô 1òB6ô!ôHC)˜Ÿ™ô C)ôL	�7ô 	ô/Ð6ô /ôd	Ð<ô 	ôFÐ4ô FôY
Ð+ô Y
ôx]
Ð(ô ]
ô@m
�ô m
ô`	Ð"Bô 	ôK*Ð$Fô K*ô\Ð1ô ô=nÐ%ô =nò@
‚rX   