+
    QV-jV)  ã                   óz  a € R t'0 t R t^ RIt^ RIt^ RIHt ^ RIHtHt ^ RI	t	^ RI	H
t
 ^RIHtHt ^RIHtHtHtHt ^RIHt ^RIHt ]'       d   ^R	IHt ^R
IHt ]P6                  ! ]4      t/ t] ^ k  ! R R4      t ! R R4      t  ! R R]4      t!R R lt"R R lt#R]!! 4       /t$] ^k R R lt%RR R llt&R# )zrFusion registration helpers.

See `docs/source/en/fusion_mapping.md` for the design overview and extension guide.
N)ÚMapping)ÚTYPE_CHECKINGÚAny)Únn)Ú!get_checkpoint_conversion_mappingÚ&register_checkpoint_conversion_mapping)ÚConv3dToLinearÚWeightConverterÚWeightRenamingÚWeightTransform)Úregister_patch_mapping)Úlogging)ÚPretrainedConfig)ÚPreTrainedModelc                   ó|   a € ] tR t^,t o RtRtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 lt	V 3R
 lt
RtV tR# )ÚModuleFusionSpeczïBase recipe for a fusion family.

A fusion spec decides which modules are eligible for a fusion, how to build
the runtime replacement class, and which weight transforms are needed to map
checkpoints between the original and fused layouts.
c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )é   Ú
model_nameÚreturn)Ústr)ÚformatÚ__classdict__s   "€Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/fusion_mapping.pyÚ__annotate__ÚModuleFusionSpec.__annotate__6   s   ø€ ÷ ]ñ ]©ð ]±ñ ]ó    c                ó8   € R\        V 4      P                   RV 2# )zDReturn the log message emitted when no compatible modules are found.zNo compatible z classes found to fuse for )ÚtypeÚ__name__)Úselfr   s   &&r   Úget_empty_logÚModuleFusionSpec.get_empty_log6   s"   € à¤ T£
× 3Ñ 3Ð4Ð4OÐPZÈ|Ð\Ð\r   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# ©r   Úmoduler   ©r   ÚModuleÚbool)r   r   s   "€r   r   r   :   s   ø€ ÷ "ñ "¡§¡ð "©tñ "r   c                ó   € \         h)z>Return whether `module` is compatible with this fusion family.©ÚNotImplementedError)r    r%   s   &&r   Ú
is_fusableÚModuleFusionSpec.is_fusable:   ó   € ä!Ð!r   c                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# ©r   Úoriginal_clsr   ©r   r   r'   )r   r   s   "€r   r   r   >   s+   ø€ ÷ "ñ "©T±"·)±)­_ð "ÁÁbÇiÁiÅñ "r   c                ó   € \         h)zBBuild the runtime replacement class for a compatible module class.r*   )r    r1   s   &&r   Úmake_fused_classÚ!ModuleFusionSpec.make_fused_class>   r.   r   c                ó4   <€ V ^8„  d   QhRRRS[ S[,          /# ©r   Úconfigr   r   ©Úlistr   )r   r   s   "€r   r   r   B   s!   ø€ ÷ "ñ "Ð&8ð "¹TÁ/Õ=Rñ "r   c                ó   € \         h)zMBuild the weight transforms needed to load and save the fused runtime layout.r*   )r    r8   s   &&r   Úmake_transformsÚ ModuleFusionSpec.make_transformsB   r.   r   c                ó:   <€ V ^8„  d   Qh/ S[ S[R3,          ;R&   # )r   .Útarget_modules_patterns)Útupler   )r   r   s   "€r   r   r   ,   s   ø‡ ‚ ñ #¡3¨ 8�_Ñ1ò r   © N)r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r?   r!   r,   r4   r<   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   ,   sC   ø‡ € ñð 02Ð÷]ð ]÷"ð "÷"ð "÷"ð "÷- ƒ r   r   c                   óD   a a€ ] tR t^Gt oV 3R ltV3R lR ltRtVtV ;t# )Ú_FusedPatchEmbeddingMixinc                óà  <€ \         SV `  ! V/ VB  V P                  P                  \        P
                  ! V P                  P                  4      ,          V n        \        P                  ! V P                  V P                  P                  V P                  P                  R JV P                  P                  P                  V P                  P                  P                  R7      V n        V =R # )N)ÚbiasÚdeviceÚdtype)ÚsuperÚ__init__ÚprojÚin_channelsÚmathÚprodÚkernel_sizeÚpatch_volumer   ÚLinearÚout_channelsrM   ÚweightrN   rO   Úlinear_proj)r    ÚargsÚkwargsÚ	__class__s   &*,€r   rQ   Ú"_FusedPatchEmbeddingMixin.__init__H   s£   ø€ ä‰Ò˜$Ð) &Ò)Ø ŸI™I×1Ñ1´D·I²I¸d¿i¹i×>SÑ>SÓ4TÕTˆÔäŸ9š9Ø×ÑØ�I‰I×"Ñ"Ø—‘—‘ tÐ+Ø—9‘9×#Ñ#×*Ñ*Ø—)‘)×"Ñ"×(Ñ(ô
ˆÔð ŠIr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úhidden_statesr   )ÚtorchÚTensor)r   r   s   "€r   r   Ú&_FusedPatchEmbeddingMixin.__annotate__W   s#   ø€ ÷ 6ñ 6¡U§\¡\ð 6±e·l±lñ 6r   c                óô   € V P                   P                  P                  pVP                  RV P                  4      pV P                  VP                  VR7      4      pVP                  RV P                  4      # )é   )rO   éÿÿÿÿ)r[   rZ   rO   ÚviewrW   ÚtoÚ	embed_dim)r    ra   Útarget_dtypes   && r   ÚforwardÚ!_FusedPatchEmbeddingMixin.forwardW   sf   € Ø×'Ñ'×.Ñ.×4Ñ4ˆØ%×*Ñ*¨2¨t×/@Ñ/@ÓAˆØ×(Ñ(¨×)9Ñ)9ÀÐ)9Ó)MÓNˆØ×!Ñ! " d§n¡nÓ5Ð5r   )r[   rW   )	r   rB   rC   rD   rQ   rl   rG   rH   Ú__classcell__)r^   r   s   @@r   rK   rK   G   s   ù‡ € õ÷6÷ 6ð 6r   rK   c                   ó^   a € ] tR t^^t o RtR
tV 3R lR ltV 3R lR ltV 3R lR ltRt	V t
R	# )ÚPatchEmbeddingsFusionSpeczJFuse compatible Conv3d patch embeddings into flattened Linear projections.c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# r$   r&   )r   r   s   "€r   r   Ú&PatchEmbeddingsFusionSpec.__annotate__c   s   ø€ ÷ 

ñ 

¡§¡ð 

©tñ 

r   c                ó  € \        \        VR R4      ;p\        P                  4      '       g   R# VP                  VP
                  8H  ;'       d>    VP                  R8H  ;'       d'    VP                  R8H  ;'       d    VP                  ^8H  # )rR   NF)é    rt   rt   )rf   rf   rf   )	Ú
isinstanceÚgetattrr   ÚConv3dÚstriderV   ÚpaddingÚdilationÚgroups)r    r%   rR   s   && r   r,   Ú$PatchEmbeddingsFusionSpec.is_fusablec   s�   € Ü¤'¨&°&¸$Ó"?Ð?˜$ÄÇÁ×KÒKÙð �K‰K˜4×+Ñ+Ñ+÷ !ð !Ø—‘ 	Ñ)÷!ð !à—‘ Ñ*÷!ð !ð —‘˜qÑ ð		
r   c                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# r0   r2   )r   r   s   "€r   r   rr   o   s+   ø€ ÷ ñ ©T±"·)±)­_ð ÁÁbÇiÁiÅñ r   c                ón   € \        R VP                   2\        V3/ 4      pR VP                   2Vn        V# )ÚFused)r   r   rK   rC   )r    r1   Ú	fused_clss   && r   r4   Ú*PatchEmbeddingsFusionSpec.make_fused_classo   sB   € Ü˜5 ×!6Ñ!6Ð 7Ð8Ô;TÐVbÐ:cÐegÓhˆ	Ø#(¨×)BÑ)BÐ(CÐ!Dˆ	ÔØÐr   c                ó4   <€ V ^8„  d   QhRRRS[ S[,          /# r7   r9   )r   r   s   "€r   r   rr   t   s!   ø€ ÷ 
ñ 
Ð&8ð 
¹TÁ/Õ=Rñ 
r   c           	     óþ   € \        VR V4      pVP                  p\        V\        4      '       d   W33pVP                  .\        V4      O5pVP                  p\        RR\        VVR7      .R7      \        RRR7      .# )Úvision_configzpatch_embed\.proj\.weight$z!patch_embed\.linear_proj\.weight$)rS   rV   )Úsource_patternsÚtarget_patternsÚ
operationszpatch_embed\.proj\.bias$zpatch_embed\.linear_proj\.bias$)r…   r†   )
rv   Ú
patch_sizeru   ÚintÚtemporal_patch_sizer@   rS   r	   r   r
   )r    r8   r„   rˆ   rV   rS   s   &&    r   r<   Ú)PatchEmbeddingsFusionSpec.make_transformst   s�   € Ü ¨¸Ó@ˆØ"×-Ñ-ˆ
Ü�j¤#×&Ò&Ø$Ð1ˆJØ$×8Ñ8ÐM¼5ÀÓ;LÑMˆØ#×/Ñ/ˆô Ø =Ø Dä"Ø$/Ø$/ôðô	ô Ø ;Ø Bôð
ð 	
r   rA   N)z(^|\.)patch_embed$)r   rB   rC   rD   rE   r?   r,   r4   r<   rG   rH   rI   s   @r   rp   rp   ^   s,   ø‡ € ÙTà6Ð÷

ð 

÷ð ÷

ö 
r   rp   c                ó�   € V ^8„  d   QhRRRRR\         R\        R\        \         \        \        P
                  ,          3,          /# )r   Úclsútype[PreTrainedModel]r8   r   Úfusion_nameÚspecr   )r   r   Údictr   r   r'   )r   s   "r   r   r   Ž   sL   € ÷ -ñ -Ø	 ð-àð-ô ð-ô ð	-ô
 
Œ#Œt”B—I‘I�Ð
Õñ-r   c                ó�  € \         P                  V/ 4      pW9   d	   W@,          # \        P                  ! R4      ;_uu_ 4        V ! V4      pRRR4       \	        4       p/ pVP
                  '       d0   \        P                  ! RP                  VP
                  4      4      MRpXP                  4        Fx  w  rš\        V
4      pW¶9   d   K  Ve   VP                  V	4      f   K1  VP                  V
4      '       g   KJ  VP                  V4       VP                  V4      W{P                  &   Kz  	  WtV &   V#   + '       g   i     Lñ; i)aJ  Discover compatible module classes for one fusion family on a meta-initialized model.

This function:
- instantiates `cls(config)` on the meta device
- scans `named_modules()` for candidate modules
- optionally pre-filters them with `target_modules_patterns`
- uses `is_fusable(...)` as the final structural check
- builds the class-level patch mapping used by monkey patching

Results are cached per `(fusion_name, cls)` to avoid repeated meta-initialization.
This matches the current class-level fusion behavior, where one compatible
module class maps to one fused replacement class.
ÚmetaNÚ|)Ú_FUSION_DISCOVERY_CACHEÚ
setdefaultrb   rN   Úsetr?   ÚreÚcompileÚjoinÚnamed_modulesr   Úsearchr,   Úaddr4   r   )r�   r8   r�   r�   ÚcacheÚmodelÚseen_classesÚpatch_mappingÚtarget_module_patternÚmodule_namer%   Ú
module_clss   &&&&        r   Ú_discover_fusable_modulesr¥   Ž   s  € ô( $×.Ñ.¨{¸BÓ?€EØ
„|Ø�zÐä	�Š�f×	Õ	Ù�F“ˆ÷ 
ô “5€LØ€Mà>B×>Z×>ZÐ>ZŒ�
Š
�3—8‘8˜D×8Ñ8Ó9Ô:Ð`dð ð  %×2Ñ2Ö4ÑˆÜ˜&“\ˆ
ØÔ%ÙØ Ò,Ð1F×1MÑ1MÈkÓ1ZÒ1bÙØ�‰˜v×&Ò&Ùà×Ñ˜Ô$Ø-1×-BÑ-BÀ:Ó-Nˆ×)Ñ)Ó*ñ  5ð ˆ#�JØÐ÷+ 
×	ús   Á	D5Ä5E	c          
      ó<   € V ^8„  d   QhRRRRR\         R\        RR/# )	r   r�   rŽ   r8   r   r�   r�   r   N)r   r   )r   s   "r   r   r   ¾   s;   € ÷ *Sñ *SØ	 ð*SØ*<ð*SÜKNð*SÜVfð*Sà	ñ*Sr   c           
     ó²  € \        WW#R7      pV'       g1   \        P                  VP                  V P                  4      4       R# \        VRR7       \        V R4      '       d   \        V P                  R4      '       g   \        RV P                   R24      hV P                  P                  pVP                  V4      p\        V4      pVev   V Uu/ uF  p\        VP                  4      VbK  	  p	pV FB  p
\        V
P                  4      pV	P                  V4      pVf   K/  \        R	V R
V RV R24      h	  Wv,           p\        WVRR7       R# u upi )aq  Register one fusion family for `cls`.

This function updates the two global registries used by fused loading:
- the monkey-patching registry, so compatible module classes are replaced before initialization
- the checkpoint conversion mapping, so fused runtime modules still load from the original checkpoint layout

Notes:
- conflicting checkpoint transforms fail fast
)r�   r�   NT)Ú	overwriteÚconfig_classÚ
model_typezModel z" has no config class or model typezFusion z for model type zC conflicts with an existing conversion mapping for source patterns Ú.)r¥   ÚloggerÚinfor!   r   r   Úhasattrr©   Ú
ValueErrorrª   r<   r   r@   r…   Úgetr   )r�   r8   r�   r�   Úfusable_classesrª   Ú
convertersÚexisting_convertersÚexistingÚexisting_converter_sourcesÚ	converterr…   Úexisting_converters   &&&&         r   Ú_register_module_fusionr¸   ¾   sJ  € ô 0°ÈÔ`€OßÜ�‰�D×&Ñ& s§|¡|Ó4Ô5Ùä˜?°dÕ;ä�3˜×'Ò'¬w°s×7GÑ7GÈ×/VÒ/VÜ˜6 #§,¡, Ð/QÐRÓSÐSØ×!Ñ!×,Ñ,€JØ×%Ñ% fÓ-€Jä;¸JÓGÐØÒ&ñ atÓ%tÑ`sÐT\¤e¨H×,DÑ,DÓ&EÀxÒ&OÑ`sÐ"Ð%tÛ#ˆIÜ# I×$=Ñ$=Ó>ˆOØ!;×!?Ñ!?ÀÓ!PÐØ!Ô-Ü Ø˜k˜]Ð*:¸:¸,ð G+Ø+:Ð*;¸1ð>óð ñ	 $ð )Õ5ˆ
ä*¨:ÈT×Rùò &us   ÃEÚpatch_embeddingsc                ó    € V ^8„  d   QhR\         \        \        \         \        \        3,          ,          3,          R\        \        ,          /# )r   Úfusion_configr   )r   r   r(   r   r:   )r   s   "r   r   r   î   s9   € ÷ ñ ¬´´d¼WÄSÌ#ÀXÕ=NÕ6NÐ1NÕ)Oð ÔTXÔY\ÕT]ñ r   c                óö   € . pV P                  4        Fb  w  r#V\        9  d   \        RV 24      hVRJ d   K&  VRJd&   \        V\        4      '       g   \        RV R24      hVP                  V4       Kd  	  V# )zQValidate `fusion_config` and return enabled fusion names in user-specified order.zUnknown fusion type: FTzInvalid fusion config for z4: expected `True`, `False`, or a mapping of options.)ÚitemsÚ_FUSION_REGISTRYr¯   ru   r   Úappend)r»   Úenabled_fusionsr�   Úfusion_optionss   &   r   Ú_iter_enabled_fusionsrÂ   î   sŒ   € ð €OØ'4×':Ñ':Ö'<Ñ#ˆØÔ.Ô.ÜÐ4°[°MÐBÓCÐCØ˜UÓ"ÙØ Ó%¬j¸Ì×.QÒ.QÜØ,¨[¨MÐ9mÐnóð ð 	×Ñ˜{Ö+ñ (=ð Ðr   c          	      ó”   € V ^8„  d   QhRRR\         \        \        \         \        \        3,          ,          3,          R,          RR/# )r   r�   rŽ   r»   Nr   )r   r   r(   r   )r   s   "r   r   r   ÿ   sJ   € ÷ Yñ YØ	 ðYÜ9@ÄÄdÌWÔUXÔZ]ÐU]ÕM^ÕF^ÐA^Õ9_ÐbfÕ9fðYà	ñYr   c                ón   € V'       g   R# \        V4       F  p\        WV\        V,          4       K  	  R# )zúRegister requested runtime fusions for `cls`.

This function:
- validates `fusion_config` against `_FUSION_REGISTRY`
- resolves the enabled fusion families in user order
- registers monkey patches and checkpoint transforms before model instantiation
N)rÂ   r¸   r¾   )r�   r8   r»   r�   s   &&& r   Úregister_fusion_patchesrÅ   ÿ   s+   € ÷ Ùä,¨]Ö;ˆÜ ¨[Ô:JÈ;Õ:WÖXó <r   c          	      ó  € V ^8„  d   Qh/ ^ \         9   dR   \        \        \        \        \        \        \        \        P
                  ,          3,          3,          3,          ;R&   ^\         9   d   \        \        \        3,          ;R&   # )r   r•   r¾   )Ú__conditional_annotations__r‘   r   r   r   r'   r   )r   s   "r   r   r      se   € ÷ ñ ÷4 PÒ Oœœc¤4¬¬d´3¼¼R¿Y¹Y½Ð3GÕ.HÐ(HÕ#IÐIÕJÑ Oñ5÷x bÒ a”$”sÔ,Ð,Õ-Ñ aòyr   )N)(rÇ   rE   rT   r˜   Úcollections.abcr   Útypingr   r   rb   r   Úconversion_mappingr   r   Úcore_model_loadingr   r	   r
   r   Úmonkey_patchingr   Úutilsr   Úconfiguration_utilsr   Úmodeling_utilsr   Ú
get_loggerr   r¬   r•   r   rK   rp   r¥   r¸   r¾   rÂ   rÅ   r   )rÇ   s   @r   Ú<module>rÑ      s©   øðöó
 Û 	Ý #ß %ã Ý ç iß `Ó `Ý 3Ý ÷ Ý5Ý/ð 
×	Ò	˜HÓ	%€àMOÐ Ó O÷"ñ "÷66ñ 6ô.-
Ð 0ô -
õ`-õ`*SðZ 2DÑE^ÓE`Ð0aÐ Ó aõ÷"Yñ Yr   