+
    UV-j2  ã                  óÂ   € ^ 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HtHtHt ^ RIHt ^ RIHt ^ R	IHt R
tRtR R ltR R ltR R ltR R ltR# )é    )Úannotations)ÚPathN)Úhf_hub_download)Útree_unflatten)ÚFlux2KleinFastTransformerÚFlux2KleinMegakernelSpecÚfind_packed_artifact_dirÚ(load_klein_fast_packed_weights_from_disk)ÚModelConfig)ÚQwen3TextEncoder)ÚFlux2VAEz&black-forest-labs/FLUX.2-small-decoderz#diffusion_pytorch_model.safetensorsc               ó    € V ^8„  d   QhRRRR/# )é   Ú
model_pathú
str | PathÚreturnr   © )Úformats   "Ún/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/bonsai/weights.pyÚ__annotate__r      s   € ÷ ñ  zð Ð6Fñ ó    c                óæ  € \        V 4      P                  4       R ,          p\        P                  ! \	        VR,          4      4      pVP                  4        UUu/ uF-  w  r4VP                  R4      '       g   K  V\        R4      R VbK/  	  ppp\        \        VP                  4       4      4      p\        RRR7      p\        P                  ! VR ^^@R7       VP                  V4       V# u uppi )	ztext_encoder-mlx-4bitzmodel.safetensorszmodel.Ni 
  i &  )Úhidden_sizeÚintermediate_sizec                ó   € \        VR 4      # )Úto_quantized)Úhasattr)Ú_Úmodules   &&r   Ú<lambda>Ú(load_text_encoder_4bit.<locals>.<lambda>    s   € ¬'°&¸.Ô*Ir   )Úclass_predicateÚbitsÚ
group_size)r   Ú
expanduserÚmxÚloadÚstrÚitemsÚ
startswithÚlenr   Úlistr   ÚnnÚquantizeÚupdate)r   ÚrootÚrawÚkÚvÚstrippedÚnestedÚtext_encoders   &       r   Úload_text_encoder_4bitr7      sÄ   € Ü�
Ó×&Ñ&Ó(Ð+BÕB€DÜ
�'Š'”#�dÐ0Õ0Ó1Ó
2€CØ25·)±)´+ÔX±+©$¨!ÀÇÁÈh×AWÔ%�”#�h“-�/Ð" AÒ%±+€HÑXÜœD §¡Ó!1Ó2Ó3€FÜ#°ÈÔM€LÜ‡K‚KØÙIØØõ	ð ×Ñ˜ÔØÐùó Ys   ÁC-Á:C-c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   Ú	precisionr(   r   r   r   )r   s   "r   r   r   (   s$   € ÷ .ñ .Øð.Ø'*ð.àñ.r   c                óœ  € \        V 4      P                  4       p\        4       p\        V4      pVf   \	        RV 24      h\        WC\        P                  R7      p\        R/ RVbRVbR^bRVP                  bRVP                  bRVP                  bR	VP                  bR
VP                  bRVP                  bRVP                  bRRbRVP                  bRVP                   bRVP"                  bRRbRVP$                  bRVP&                  b p/ pVP)                  R4       FT  pVP*                  P-                  R4      '       d   K&  VP/                  \        P0                  ! \3        V4      4      4       KV  	  VR,          P5                  \        P                  4      VP6                  P8                  n        VR,          P5                  \        P                  4      VP6                  P<                  n        \        P>                  ! VP6                  P8                  P:                  VP6                  P<                  P:                  4       V# )Nz0Missing transformer-packed-mflux artifact under )ÚdtypeÚweightsr9   Ú
patch_sizeÚin_channelsÚout_channelsÚ
num_layersÚnum_single_layersÚattention_head_dimÚnum_attention_headsÚjoint_attention_dimÚtimestep_guidance_channelsé   Ú	mlp_ratioÚaxes_dims_ropeÚ
rope_thetaÚguidance_embedsFÚlayer_norm_epsÚrms_norm_epsz*.safetensorsz._z5time_guidance_embed.timestep_embedder.linear_1.weightz5time_guidance_embed.timestep_embedder.linear_2.weightr   ) r   r%   r   r	   ÚFileNotFoundErrorr
   r&   Úbfloat16r   r>   Únum_double_blocksÚnum_single_blocksÚhead_dimÚ	num_headsÚcontext_dimrG   rH   rI   rK   rL   ÚglobÚnamer*   r/   r'   r(   ÚastypeÚtime_guidance_embedÚlinear_1ÚweightÚlinear_2Úeval)	r   r9   r0   ÚspecÚ
packed_dirr<   Útransformerr1   Úshards	   &&       r   Úload_transformerr`   (   s3  € ô �
Ó×&Ñ&Ó(€DÜ#Ó%€DÜ)¨$Ó/€JØÒÜØ>¸t¸fÐEó
ð 	
ô 7Ø¤§¡ô€Gô ,ò Ùðáðñ ðð ×$Ò$ð	ð
 ×%Ò%ðð ×)Ò)ðð ×0Ò0ðð  Ÿ=š=ðð !ŸNšNðð !×,Ò,ðñ $'ðð —.’.ðð ×*Ò*ðð —?’?ðñ ðð  ×*Ò*ð!ð" ×&Ò&ð#€Kð&  "€CØ—‘ Ö1ˆØ�z‰z×$Ñ$ T×*Ô*Ø�J‰J”r—w’wœs 5›zÓ*Ö+ñ 2ð 7:Ø?õ7ç�fŒR�[‰[Óð ×#Ñ#×,Ñ,Ô3ð 7:Ø?õ7ç�fŒR�[‰[Óð ×#Ñ#×,Ñ,Ô3ô ‡G‚GØ×'Ñ'×0Ñ0×7Ñ7Ø×'Ñ'×0Ñ0×7Ñ7ôð Ðr   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   Y   s   € ÷ ñ �(ñ r   c                 óL  € \        4       p \        \        \        R 7      p\        P
                  ! V4      p/ pVP                  4        FÇ  w  rEVP                  R4      '       g1   VP                  R4      '       g   VP                  R4      '       g   KL  VP                  R4      '       d   Ke  VP                  RR4      pVP                  \        P                  4      pVP                  ^8X  d   VP                  ^ ^^^4      p\        W4V4       KÉ  	  V P!                  V4       V # ))Úrepo_idÚfilenamezdecoder.zpost_quant_conv.zbn.z.num_batches_trackedz
.to_out.0.z.to_out.)r   r   ÚSMALL_DECODER_REPOÚSMALL_DECODER_FILEr&   r'   r)   r*   ÚendswithÚreplacerV   r   r9   ÚndimÚ	transposeÚ_set_nested_valuer/   )ÚvaeÚpathr1   ÚmappedÚkeyÚvalueÚtensors          r   Úload_vaerr   Y   sâ   € Ü
‹*€CÜÔ#5Ô@RÔS€DÜ
�'Š'�$‹-€CØ€FØ—i‘i–k‰
ˆà�N‰N˜:×&Ò&Ø�~‰~Ð0×1Ò1Ø�~‰~˜e×$Ò$áØ�<‰<Ð.×/Ò/ÙØ�k‰k˜,¨
Ó3ˆØ—‘œk×3Ñ3Ó4ˆØ�;‰;˜!ÔØ×%Ñ% a¨¨A¨qÓ1ˆFÜ˜& vÖ.ñ "ð ‡J�JˆvÔØ€Jr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   ÚtreeÚdictrm   r(   rp   zmx.arrayr   ÚNoner   )r   s   "r   r   r   p   s(   € ÷ ñ ˜Dð ¨ð °Hð Àñ r   c                ó  € VP                  R 4      pT p^ pV\        V4      ^,
          8  dÓ   W5,          pV^,           \        V4      8  d—   W5^,           ,          P                  4       '       dt   VP                  V. 4       \	        W5^,           ,          4      p\        WF,          4      V8:  d   WF,          P                  / 4       K/  WF,          V,          pV^,          pKÌ  VP                  V/ 4      pV^,          pKé  W$VR,          &   R# )Ú.Néÿÿÿÿ)Úsplitr+   ÚisdigitÚ
setdefaultÚintÚappend)rt   rm   rp   ÚpartsÚcurrentÚiÚpartÚindexs   &&&     r   rk   rk   p   sÏ   € Ø�J‰J�s‹O€EØ€GØ	€AØ
Œc�%‹j˜1�nÔ
Ø�xˆØˆq�5”3�u“:Ô %¨A­¥,×"6Ñ"6×"8Ò"8Ø×Ñ˜t RÔ(Ü˜ !�e�Ó%ˆEÜ�g•mÓ$¨Ô-Ø•×$Ñ$ RÖ(Ø•m EÕ*ˆGØ��FŠAà×(Ñ(¨¨rÓ2ˆGØ��FŠAØˆE�"�IÓr   )Ú
__future__r   Úpathlibr   Úmlx.coreÚcorer&   Úmlx.nnr-   Úhuggingface_hubr   Ú	mlx.utilsr   Ú mlx_vlm.models.bonsai.klein_fastr   r   r	   r
   Úmlx_vlm.models.flux2.constantsr   Ú&mlx_vlm.models.flux2.qwen.text_encoderr   Úmlx_vlm.models.flux2.vaer   re   rf   r7   r`   rr   rk   r   r   r   Ú<module>r�      sM   ðÝ "å å Ý Ý +Ý $÷ó õ 7Ý CÝ -à=Ð Ø:Ð õõ .õb÷.r   