+
    UV-j�  ã                   ó  € ^ RI Ht ^ RIHt ^ RIHt ^RIHt ^RI	H
t
 ^RIHt ^RIHt ^RIHt  ^ RIHt ]P&                  ! R	]4        ! R R]P.                  4      tR#   ] d   t]! R
] 24        RtAL.RtAii ; i)é    )ÚOptionalN)ÚInputEmbeddingsFeatures©ÚModelConfig)ÚLanguageModel)ÚGlm46VProcessor)ÚVisionModel)ÚAutoProcessorr   z#Error registering glm4v processor: c                   ó�   a a€ ] tR t^t oV3R lV 3R lltRV3R lR llt]R 4       t]R 4       t	RV3R lR llt
R	 tR
tVtV ;t# )ÚModelc                ó    <€ V ^8„  d   QhRS[ /# )é   Úconfigr   )ÚformatÚ__classdict__s   "€Úk/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/glm4v/glm4v.pyÚ__annotate__ÚModel.__annotate__   s   ø€ ÷ Hñ H™{ñ Hó    c                óš   <€ \         SV `  4        Wn        \        VP                  4      V n        \        VP                  V4      V n        R # ©N)	ÚsuperÚ__init__r   r	   Úvision_configÚvision_towerr   Útext_configÚlanguage_model)Úselfr   Ú	__class__s   &&€r   r   ÚModel.__init__   s;   ø€ Ü‰ÑÔØŒÜ'¨×(<Ñ(<Ó=ˆÔÜ+¨F×,>Ñ,>ÀÓGˆÖr   c                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# )r   Ú	input_idsÚpixel_values)r   ÚmxÚarray)r   r   s   "€r   r   r      s5   ø€ ÷ <Jñ <Já™BŸH™HÕ%ð<Jñ ™rŸx™xÕ(ñ<Jr   c                ó¤  € VP                  R R4      pVP                  RR4      pVP                  RR4      pVe   TMTpVfA   RV P                  n        \	        V P                  P
                  P                  V4      R7      # V P                  P                  P                  P                  P                  pVP                  V4      pV P                  P
                  P                  V4      p	VP                  RR4      p
V
e   T
pM½V P                  W'RR7      pVP                  R
4      V P                  P                  ^,          ,          P                  4       p\         P"                  ! W¼^ ,          \%        VR,          4      .^ R	7      p\         P&                  ! V^ R	7      P                  V^ ,          P                  4      pV P)                  V P*                  P,                  V P*                  P.                  VV	V4      pVf   Ve?   V P                  P1                  WWV4      w  rïWàP                  n        WðP                  n        \	        VR7      # )Úimage_grid_thwNÚvideo_grid_thwÚmask)Úinputs_embedsÚcached_image_featuresF)Úoutput_hidden_states:Nr   N©Úaxiséÿÿÿÿ)ÚpopÚgetr   Ú_position_idsr   ÚmodelÚembed_tokensr   Úpatch_embedÚprojÚweightÚdtypeÚastypeÚprodÚspatial_merge_sizeÚtolistr$   ÚsplitÚsumÚconcatenateÚ#merge_input_ids_with_image_featuresr   Úimage_token_idÚvideo_token_idÚget_rope_indexÚ_rope_deltas)r   r"   r#   Úkwargsr'   r(   r)   Úgrid_thwr8   r*   ÚcachedÚhidden_statesÚsplit_sizesÚfinal_inputs_embedsÚposition_idsÚrope_deltass   &&&,            r   Úget_input_embeddingsÚModel.get_input_embeddings   s  € ð  Ÿ™Ð$4°dÓ;ˆØŸ™Ð$4°dÓ;ˆØ�z‰z˜& $Ó'ˆØ%3Ò%?‘>À^ˆàÒØ04ˆD×ÑÔ-Ü*Ø"×1Ñ1×7Ñ7×DÑDÀYÓOôð ð ×!Ñ!×-Ñ-×2Ñ2×9Ñ9×?Ñ?ˆØ#×*Ñ*¨5Ó1ˆð ×+Ñ+×1Ñ1×>Ñ>¸yÓIˆà—‘Ð3°TÓ:ˆØÒØ"‰Mð !×-Ñ-Ø¸Uð .ó ˆMð
 ×#Ñ# BÓ'¨4×+<Ñ+<×+OÑ+OÐQRÕ+RÕRß‰f‹hð ô ŸHšHØ¨A¥´°KÀµOÓ0DÐEÈAôˆMô ŸNšN¨=¸qÔA×HÑHØ˜aÕ ×&Ñ&óˆMð
 #×FÑFØ�K‰K×&Ñ&Ø�K‰K×&Ñ&ØØØó
Ðð Ò%¨Ò)CØ(,×(;Ñ(;×(JÑ(JØ¨>ó)Ñ%ˆLð 1=×ÑÔ-Ø/:×ÑÔ,ä&Ð5HÔIÐIr   c           	     ó  € W@8H  p\         P                  ! V4      ^ 8X  d   WA8H  pVP                  w  rg. p^ p	\        V4       EF0  p
WZ,          p\         P                  ! V4      P	                  4       pV^ 8”  dá   VW™V,            pVP                  ^ ,          V8w  d&   \        RV RVP                  ^ ,           RV
 24      h\         P                  ! VP                  \         P                  4      4      p\         P                  ! W¾^,
          ^ 4      pWß,          p\         P                  ! VRR7      p\         P                  ! VVW:,          4      pWœ,          p	MW:,          pVP                  V4       EK3  	  \         P                  ! V^ R7      # )a,  Merge image features into input embeddings at image token positions.

Args:
    image_token_id: The token ID for image placeholders
    video_token_id: The token ID for video placeholders (fallback)
    image_features: Vision features from the vision tower [num_features, hidden_dim]
    inputs_embeds: Input embeddings [batch_size, seq_len, hidden_dim]
    input_ids: Input token IDs [batch_size, seq_len]
    grid_thw: Grid dimensions for each image (optional, not used in simple case)

Returns:
    Updated input embeddings with image features inserted
z!Number of image token positions (z+) does not match number of image features (z) for batch r-   r/   )r$   r>   ÚshapeÚrangeÚitemÚ
ValueErrorÚcumsumr9   Úint32ÚwhereÚexpand_dimsÚappendÚstack)rA   rB   Úimage_featuresr*   r"   Úimage_positionsÚ
batch_sizeÚseq_lenÚbatch_outputsÚfeature_start_idxÚ	batch_idxÚ
image_maskÚnum_positionsÚbatch_featuresrT   Úfeature_indicesÚgathered_featuresÚimage_mask_expandedÚbatch_outputs   &&&&&              r   r@   Ú)Model.merge_input_ids_with_image_features[   sx  € ð, $Ñ5ˆÜ�6Š6�/Ó" aÔ'Ø'Ñ9ˆOð (Ÿo™oÑˆ
ð ˆØÐä˜z×*ˆIà(Õ3ˆJÜŸFšF :Ó.×3Ñ3Ó5ˆMà˜qÔ à!/Ø%¸MÕ(Ið"�ð
 "×'Ñ'¨Õ*¨mÔ;Ü$Ø;¸M¸?ð K5Ø5C×5IÑ5IÈ!Õ5LÐ4MÈ\ÐZcÐYdðfóð ô Ÿš :×#4Ñ#4´R·X±XÓ#>Ó?�Ü"$§(¢(¨:ÀµzÀ1Ó"E�ð %3Õ$CÐ!ô ')§n¢n°ZÀbÔ&IÐ#Ü!ŸxšxØ'Ð):¸MÕ<Tó �ð "Õ2Ñ!ð  -Õ7�à× Ñ  ×.ñI +ôN �xŠx˜¨AÔ.Ð.r   c                óB   € V P                   P                  P                  # r   )r   r3   Úlayers)r   s   &r   rj   ÚModel.layers¥   s   € à×"Ñ"×(Ñ(×/Ñ/Ð/r   c                óˆ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          /# )r   r"   r#   r)   )r$   r%   r   )r   r   s   "€r   r   r   ©   s?   ø€ ÷ ñ á—8‘8ðñ ™rŸx™xÕ(ðñ ‘r—x‘xÕ ñ	r   c                óp   € V P                   ! W3/ VB pV P                  ! VVP                  3R VRV/VB pV# )r)   Úcache)rM   r   r*   )r   r"   r#   r)   rn   rE   Úinput_embeddings_featuresÚlogitss   &&&&&,  r   Ú__call__ÚModel.__call__©   sc   € ð %)×$=Ò$=Øñ%
Ø'-ñ%
Ð!ð ×$Ò$ØØ%×3Ñ3ñ
ð ð
ð ð	
ð
 ñ
ˆð ˆr   c                ój   € R  pVP                  4        UUu/ uF  w  r4V! V4      VbK  	  upp# u uppi )c                 óø   € R V 9   d*   RV 9  d#   V P                  RR4      P                  R R4      p RV 9   d   V P                  RR4      p RV 9   d*   V P                  R4      '       g   V P                  RR4      p V # )	Úvisualr   zmodel.Ú zmodel.language_modelzlanguage_model.modelÚlm_headr   zlanguage_model.lm_head)ÚreplaceÚ
startswith)Úkeys   &r   Útransform_keyÚ%Model.sanitize.<locals>.transform_keyÁ   su   € Ø˜3ŒØ!¨Ô,ØŸ+™+ h°Ó3×;Ñ;¸HÀnÓU�CØ%¨Ô,Ø—k‘kÐ"8Ð:PÓQ�Ø˜CÔ¨¯©Ð7G×(HÒ(HØ—k‘k )Ð-EÓF�ØˆJr   )Úitems)r   Úweightsr{   ÚkÚvs   &&   r   ÚsanitizeÚModel.sanitizeÀ   s3   € ò	ð 18·±´Ô@±©¨‘˜aÓ  !Ò#±Ò@Ð@ùÓ@s   —/)r   r   r   )NN)NNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rM   Ústaticmethodr@   Úpropertyrj   rq   r�   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   r   s   @@r   r   r      s_   ù‡ € ÷Hó H÷<Jò <Jð| ñG/ó ðG/ðR ñ0ó ð0÷ò ÷.Aò Ar   r   )Útypingr   Úmlx.coreÚcorer$   Úmlx.nnÚnnÚbaser   r   r   Úlanguager   Ú
processingr   Úvisionr	   Útransformersr
   ÚregisterÚ	ExceptionÚeÚprintÚModuler   © r   r   Ú<module>rœ      sq   ðÝ å Ý å *Ý Ý #Ý 'Ý ð5Ý*ð ×ÒÐ,¨oÔ>ô
uAˆB�I‰Iö uAøð	 ô 5Ù	Ð/°¨sÐ
3×4Ñ4ûð5ús   ²A" Á"A>Á)A9Á9A>