+
    QV-jµ'  ã                   óÞ   € ^ RI t ^ RI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Ht ^RIHt ^R	IHt ]! 4       '       d   ^ RIt^ RIHt R
tRtRtRtRtRR lt ! R R4      tR# )é    N)ÚImage)Úcreate_causal_mask)Ú_get_model_class)Ú
AutoConfig)ÚMODEL_FOR_PRETRAINING_MAPPINGÚMODEL_MAPPING)ÚPROCESSOR_MAPPING_NAMESÚAutoProcessor)ÚAutoTokenizer)Úis_torch_availablez[92mz[93mz[0mu   â– u   â¬šc                ó„	  a aaaaaa€ SP                  4       oSP                  ^8X  d
   SR,          oSP                  ^8X  d
   SR,          o\        S 4      p\        R S  4       4      p^ p. p	\	        S 4       Fb  w  op
V
S8X  d   V'       g
   Sp^SSS3&   V^ 8”  g   K'  V
S8w  g   SV^,
          8X  g   K>  SV^,
          8X  d
   S^,          o^SVS1VS13&   ^ pKd  	  RoVeQ   \        V4       UUu. uF8  p\        V4       Uu. uF  p^ W¼,
          u;8:  d   V8  d   M M^M^ NK!  	  upNK:  	  uppoRP                  V3R l\        V4       4       4      pVe�   V^8H  p\        P                  ! VP                  R4      ^,          V,           P                  4       VP                  R4      ^ 4      o\        P                  ! ^ V^,           V4      p\        P                  ! SVR7      o\         \         \         R\          \         \         R2pV	P#                  RV,           4       RV^,           ,          RP%                  \        V4      ^,          4      ,           pVe
   VR	,          pV	P#                  V4       . p\	        S 4       F¾  w  poSVV3,          ^8X  de   TP#                  \'        \)        V4      P+                  \        \)        V4      4      4      4       U
u. uF  p
\          V
 \         2NK  	  up
4       Kz  VP#                  \'        \)        V4      P+                  \        \)        V4      4      4      4      4       KÀ  	  \'        \-        \&        \/        V!  4      4      pV F[  pT	P#                  VeD   V^,           R,          RP                  V4      ,           R
,           RP                  V4      ,           MR4       K]  	  \	        S 4       FÄ  w  oo\1        S4      P%                  V4      pSS9   d   \          V \         2MTpRP                  VVVVV 3R l\        V4       4       4      pRpVe*   RP                  VVVVVV 3R l\        V4       4       4      pV	P#                  V R\)        S4      P+                  ^4       RV R
V 24       KÆ  	  RP                  V	4      # u upi u uppi u up
i )zÊ
Generates an attention matrix from a given attention mask.

Optionally applies a sliding window mask (e.g., for Gemma2/3) and
marks regions where image tokens occur based on the specified `img_token`.
c              3   óJ   "  € T F  p\        \        V4      4      x € K  	  R # 5i©N)ÚlenÚrepr)Ú.0Úwords   & Úx/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/utils/attention_visualizer.pyÚ	<genexpr>Ú6generate_attention_matrix_from_mask.<locals>.<genexpr>8   s   é € Ð<±e¨dœ#œd 4›jŸ/˜/³eùs   ‚!#NÚ c              3   óÞ   <"  € T Fb  pS^ V3,          '       d   \          \         \         2M7V^ 8X  d   \         \         \         2MS^ V3,          '       d   \        M\        x € Kd  	  R# 5i©r   N©ÚYELLOWÚBLACK_SQUAREÚRESETÚGREENÚWHITE_SQUARE)r   ÚjÚmasks   & €r   r   r   K   so   øé € ð 	ñ ˆAð ��1��:Œ:ô ˆ(”<�.¤ Ñ(ð �Œ6ô ˆw”|�n¤U GÑ,ð ��1��:Œ:õ äô	ó ùs   ƒA-™?A-ÁA-)Ú
boundariesz: i == j (diagonal)   z: token_type_idszAttention MatrixzSliding Window Maskz	    |    Ú c              3   ó  <"  € T Fw  pSSV,          9   d-   SSV3,          '       d   SS9   d   \          \         \         2M7SV8X  d   \         \         \         2MSSV3,          '       d   \        M\        x € Ky  	  R # 5ir   r   )r   r    ÚiÚ	img_tokenr!   r   Úwordss   & €€€€€r   r   r   x   s�   øé € ð 	
ñ �ð ˜E !�HÔ$¨¨a°¨d¯¬¸	ÀTÔ8Iô ˆh”|�n¤U GÑ,ð �AŒvô �7œ<˜.¬¨Ñ0ð �A�q�D�zŒzõ äôó ùs   ƒ#B§ABÁ.Bc              3   ó"  <"  € T F„  pSSV,          9   d5   SS9   d.   S^ S3,          S^ V3,          8X  d   \          \         \         2M<SV8X  d   \         \         \         2M!SS,          V,          '       d   \        M\        x € K†  	  R# 5ir   r   )r   r    r%   r&   Úsliding_window_maskÚtoken_type_bucketsr   r'   s   & €€€€€€r   r   r   „   s™   øé € ð 	*ñ "�Að   a¥Ô(¨Y¸$Ô->ÐCUÐVWÐYZÐVZÕC[Ð_qÐrsÐuvÐrvÕ_wÔCwô �(œ<˜.¬¨Ñ0ð ˜”6ô �wœ|˜n¬U¨GÑ4ð ' qÕ)¨!×,Ô,õ "ä!ô"ó "ùs   ƒA7BÁ;Bz: Ú
)r   ºNNNr,   )r   r   r,   r,   éÿÿÿÿ)ÚintÚndimr   ÚmaxÚ	enumerateÚrangeÚjoinÚtorchÚwhereÚcumsumÚboolÚarangeÚ	bucketizer   r   r   r   ÚappendÚljustÚlistÚstrÚrjustÚmapÚzipr   )r'   r!   r&   Úsliding_windowÚtoken_type_idsÚimage_seq_lengthÚnÚmax_word_lengthÚfirst_img_idxÚoutputÚkr%   r    Ú	row_dummyÚ
is_specialr"   ÚlegendÚf_stringÚvertical_headerÚidxÚrowÚ	word_reprÚcolored_wordÚrow_displayÚsliding_window_rowr)   r*   r   s   fff&&&     `             @@@r   Ú#generate_attention_matrix_from_maskrT   (   s?  þ€ ð �8‰8‹:€DØ‡y�y�A„~Ø�G�}ˆØ‡y�y�A„~Ø�JÕˆäˆE‹
€AÜÑ<±eÓ<Ó<€OØ€MØ€Fä˜%Ö ‰ˆˆ1Ø�	Œ>§-ØˆMØˆD��A�‰JØ˜1Ö ! y¤.°A¸¸Q½¶JØ�A˜•EŒzØ�Q•�Ø56ˆD�˜q� -° /Ð1Ñ2ØŠMñ !ð ÐØÒ!ÜfkÐlmÔfnÔoÑfnÐabÔSXÐYZÔS[Ó\ÑS[Èa a¨1­5Ö&A°>×&A¡ÈÒ IÑS[Ô\ÑfnÒoÐà—‘ô 	ô �q”ó	ó 	€Ið Ò!Ø# qÑ(ˆ
Ü"Ÿ[š[Ø×"Ñ" 2Ó&¨Õ*¨ZÕ7×=Ñ=Ó?À×AVÑAVÐWYÓAZÐ\]ó
Ðô —\’\ !Ð%5¸Õ%9Ð;KÓLˆ
Ü"Ÿ_š_Ð-?ÈJÔWÐô ˆw”|�n¤U GÐ+AÄ&ÀÌ,ÈÔX]ÐW^Ð^nÐo€FØ
‡M�M�#˜•,ÔØ�o¨Õ)Õ*Ð-?×-EÑ-EÄcÈ)ÃnÐXYÕFYÓ-ZÕZ€HØÒ!ØÐ)Õ)ˆØ
‡M�M�(Ôà€OÜ˜uÖ%‰	ˆˆTØ��S��>˜QÔØ×"Ñ"Ä4ÌÈCËÏÉÔWZÔ[^Ð_`Ó[aÓWbÓHcÔCdÓ#eÑCd¸a¤v h¨q¨c´%°Ó$9ÑCdÑ#eÖfà×"Ñ"¤4¬¨C«¯©´s¼3¸q»6³{Ó(CÓ#DÖEñ	 &ô œ3œt¤S¨/Ñ%:Ó;Ó<€OãˆØ�‰àÒ)ð ˜qÕ  CÕ'¨#¯(©(°3«-Õ7¸+ÕEÈÏÉÐQTËÖUàö	
ñ ô ˜UÖ#‰ˆˆ4Ü˜“J×$Ñ$ _Ó5ˆ	Ø8AÀTÔ8Iœ&˜ ) ¬U¨GÑ4ÈyˆØ—h‘h÷ 	
ð 	
ô ˜1”Xó	
ó 	
ˆð  ÐØÒ%Ø!$§¡÷ 	*ñ 	*ô ˜qœó	*ó 	"Ðð 	�‰˜˜ b¬¨Q«¯©°a«Ð(9¸¸;¸-ÀyÐQcÐPdÐeÖfñ5 $ð8 �9‰9�VÓÐùòQ  ]ùÓoùò@ $fs   Ã2R7Ä%R2Ä)R7Ë#R=
Ò2R7c                   ó^   a € ] tR t^”t o V 3R lR ltR	V 3R lR lltR	V 3R lR lltRtV tR# )
ÚAttentionMaskVisualizerc                ó    <€ V ^8„  d   QhRS[ /# )é   Ú
model_name©r=   )ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú$AttentionMaskVisualizer.__annotate__•   s   ø€ ÷ ñ ¡3ñ ó    c                ó  € \         P                  ! V4      pR V n        \        VP	                  4       R4      '       d!   \        VP	                  4       RR4      V n         \        V\        4      pVf   \        RV R24      hW0n         ! R RV\        P                  4      pV! W!4      V n        V P                  P!                  VP"                  4       Wn        W n        R#   \         d    \        T\        4      p L�i ; i)ú<img>rA   NzModel name z- is not supported for attention visualizationc                   ó&   a € ] tR t^£t o R tRtV tR# )Ú7AttentionMaskVisualizer.__init__.<locals>._ModelWrapperc                óˆ   € \         P                  P                  V 4       \         P                  ! ^^4      V n        Wn        R# )é   N)ÚnnÚModuleÚ__init__ÚLinearÚdummy_moduleÚconfig)Úselfrk   rY   s   &&&r   rh   Ú@AttentionMaskVisualizer.__init__.<locals>._ModelWrapper.__init__¤   s+   € Ü—	‘	×"Ñ" 4Ô(Ü$&§I¢I¨a°£O�Ô!Ø$–r_   )rk   rj   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rh   Ú__static_attributes__Ú__classdictcell__©r\   s   @r   Ú_ModelWrapperrc   £   s   ø‡ € ÷%ð %r_   ru   )r   Úfrom_pretrainedÚimage_tokenÚhasattrÚget_text_configÚgetattrrA   r   r   Ú	Exceptionr   Ú
ValueErrorÚ
mapped_clsrf   rg   ÚmodelÚtoÚdtypeÚrepo_idrk   )rl   rY   rk   r}   ru   s   &&   r   rh   Ú AttentionMaskVisualizer.__init__•   sß   € Ü×+Ò+¨JÓ7ˆØ"ˆÔÜ�6×)Ñ)Ó+Ð-=×>Ò>Ü")¨&×*@Ñ*@Ó*BÐDTÐVZÓ"[ˆDÔð	QÜ)¨&´-Ó@ˆJð ÒÜ˜{¨:¨,Ð6cÐdÓeÐeØ$Œô	%˜J¬¯	©	ô 	%ñ # 6Ó6ˆŒ
Ø�
‰
�‰�f—l‘lÔ#Ø!ŒØŽøô! ô 	QÜ)¨&Ô2OÓPŠJð	Qús   ÁC" Ã"D Ã?D c                ó    <€ V ^8„  d   QhRS[ /# ©rX   Úinput_sentencerZ   )r[   r\   s   "€r   r]   r^   ®   s   ø€ ÷ Eñ E¡sñ Er_   c                ó*   € V P                  WR 7       R# ))ÚsuffixN)Úvisualize_attention_mask)rl   r…   r‡   s   &&&r   Ú__call__Ú AttentionMaskVisualizer.__call__®   s   € Ø×%Ñ% nÐ%ÖDr_   c                ó    <€ V ^8„  d   QhRS[ /# r„   rZ   )r[   r\   s   "€r   r]   r^   ±   s   ø€ ÷ N&ñ N&±sñ N&r_   c           
     óp  € V P                   p/ pR pV P                  P                  \        9   EdZ   Rp\        P
                  ! \        P                  ! \        P                  ! VRR7      P                  4      4      p^p\        P                  ! V P                  VR7      p\        VR4      '       d   VP                  pM-VP                   P#                  VP$                  .4      ^ ,          pV'       d   VP'                  RV4      pV! WaVRR7      p	VP                   P#                  VP$                  .4      ^ ,          V n        V	R	,          p
R
V	9   d   V	R
,          VR
&   VP                   P#                  V	R,          ^ ,          4      pM…\(        P                  ! V P                  4      pVf   \+        RV P                   24      hVP-                  V4      pV! VRR7      R	,          p
V
f$   \+        RV P                  P                   R24      hRVP                  n        VP1                  4        V
P2                  w  rÞ\4        P6                  ! WÞVP                  P8                  3V P                   P:                  R7      p\=        VP                  VV
R R7      pVf3   V
P?                  ^4      P?                  ^4      PA                  V^Wî4      p
ME\C        V\4        PD                  4      '       d#   VPG                  \4        PH                  R7      ( p
MV( p
R\K        RV P                  P                   RV PL                   24      ^,           ,          pRp\O        RV 24       \O        RRV P                  P                   RV P                   RV PL                  PP                   2PS                  \K        V4      4      ,           R,           V,           4       \O        V 4       \U        VV
V P                  \W        V P                  RR 4      VP                  R
4      VR7      p\O        V4       \O        V 4       R # )Nzchttps://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg?download=trueT)Úfollow_redirects)rC   rw   ra   Úpt)ÚimagesÚtextr‡   Úreturn_tensorsÚattention_maskrB   Ú	input_idszCould not load tokenizer for )r‘   zModel type z) does not support attention visualizationÚeager)r€   )rk   Úinputs_embedsr’   Úpast_key_valuesz##zAttention visualization for z | r+   z"  Attention visualization for [1mÚ:z[0m z    rA   )r&   rA   rB   rC   ),r~   rk   Ú
model_typer	   r   ÚopenÚioÚBytesIOÚhttpxÚgetÚcontentr
   rv   r�   rx   rw   Ú	tokenizerÚconvert_ids_to_tokensÚimage_token_idÚreplacer   r|   ÚtokenizeÚ_attn_implementationÚtrainÚshaper4   ÚzerosÚhidden_sizer€   r   Ú	unsqueezeÚexpandÚ
isinstanceÚTensorr   r7   r   r}   Úprintrn   ÚcenterrT   rz   )rl   r…   r‡   r~   ÚkwargsrC   ÚimgÚ	processorrw   Úinputsr’   ÚtokensrŸ   Ú
batch_sizeÚ
seq_lengthr•   Úcausal_maskÚtop_bottom_borderÚside_borderrL   s   &&&                 r   rˆ   Ú0AttentionMaskVisualizer.visualize_attention_mask±   s¤  € Ø—
‘
ˆØˆØÐØ�;‰;×!Ñ!Ô%<Õ<ØwˆCÜ—*’*œRŸZšZ¬¯	ª	°#ÈÔ(M×(UÑ(UÓVÓWˆCØ ÐÜ%×5Ò5°d·l±lÐUeÔfˆIÜ�y -×0Ò0Ø'×3Ñ3‘à'×1Ñ1×GÑGÈ×IaÑIaÐHbÓcÐdeÕf�çØ!/×!7Ñ!7¸ÀÓ!M�á cÀvÐ^bÔcˆFà(×2Ñ2×HÑHÈ)×JbÑJbÐIcÓdÐefÕgˆDÔà#Ð$4Õ5ˆNØ 6Ô)Ø+1Ð2BÕ+C�Ð'Ñ(Ø×(Ñ(×>Ñ>¸vÀkÕ?RÐSTÕ?UÓV‰Fä%×5Ò5°d·l±lÓCˆIØÒ Ü Ð#@ÀÇÁÀÐ!OÓPÐPØ×'Ñ'¨Ó7ˆFÙ& ~ÀdÔKÐL\Õ]ˆNØÒ%Ü  ;¨t¯{©{×/EÑ/EÐ.FÐFoÐ!pÓqÐqà,3ˆ�‰Ô)Ø�‰Œà!/×!5Ñ!5Ñˆ
ÜŸš Z¸U¿\¹\×=UÑ=UÐ$VÐ^b×^hÑ^h×^nÑ^nÔoˆä(Ø—<‘<Ø'Ø)Ø ô	
ˆð Òà+×5Ñ5°aÓ8×BÑBÀ1ÓE×LÑLÈZÐYZÐ\fÓs‰NÜ˜¤U§\¡\×2Ò2Ø)Ÿn™n´5·:±:˜nÓ>Ð>‰Nà)˜\ˆNà ÜÐ.¨t¯{©{×/EÑ/EÐ.FÀcÈ$Ï/É/ÐIZÐ[Ó\Ð_`Õ`õ
Ðð ˆÜ�Ð$Ð%Ð&Ô'ÜØØ5°d·k±k×6LÑ6LÐ5MÈQÈtÏ|É|ÈnÐ\dÐei×etÑet×e}Ñe}Ðd~Ð÷  Gñ  GÜÐ%Ó&óõð õ	ð
 õô	
ô 	Ð"Ð#Ô%Ü6ØØØ×&Ñ&Ü" 4§;¡;Ð0@À$ÓGØ!Ÿ:™:Ð&6Ó7Ø-ô
ˆô 	ˆhŒÜÐ"Ð#Ö%r_   )rk   rw   r}   r~   r�   rA   N)r#   )	rn   ro   rp   rq   rh   r‰   rˆ   rr   rs   rt   s   @r   rV   rV   ”   s-   ø‡ € ÷ð ÷2Eò E÷N&÷ N&ð N&r_   rV   )ra   NNN)rš   rœ   ÚPILr   Úmasking_utilsr   Úmodels.auto.auto_factoryr   Úmodels.auto.configuration_autor   Úmodels.auto.modeling_autor   r   Úmodels.auto.processing_autor	   r
   Úmodels.auto.tokenization_autor   Úimport_utilsr   r4   Útorch.nnrf   r   r   r   r   r   rT   rV   © r_   r   Ú<module>rÄ      sd   ðó 
ã Ý å .Ý 7Ý 7ß Tß PÝ 9Ý ,ñ ×ÒÛÝð 	€Ø	€Ø€Ø€Ø€ôi÷Xk&ó k&r_   