+
    TV-jz  ã                   óà   € ^ RI t ^ RIHt ^ RIHt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R R llt. ROt. ROtRR R	 lltR
 R ltR t]R8X  d   ]! R4       ]! 4        R# R# )é    N)ÚPath)ÚCallableÚOptionalÚUnion)Útree_map_with_path)Údequantize_modelÚloadÚquantize_modelÚsaveÚupload_to_hubc                óÊ   € V ^8„  d   QhR\         R\        P                  R\        R\        \         \        P                  \
        .\        \        \
        3,          3,          /# )é   ÚrecipeÚmodelÚ
group_sizeÚreturn)ÚstrÚnnÚModuleÚintr   Údictr   Úbool)Úformats   "Ú_/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_lm/convert.pyÚ__annotate__r      sN   € ÷ 9!ñ 9!Üð9!ÜŸ	™	ð9!Ü/2ð9!äŒs”B—I‘IœtÐ$¤e¬D´$¨JÕ&7Ð7Õ8ñ9!ó    c                 óð  aaaa	a
a€ R o
^oV R8X  d   ^o	M.V R8X  d   ^o	^oM"V R8X  d   ^o	MV R8X  d   ^o	M\        RV  24      hVP                  4        UUu. uF  w  r4RV9   g   K  VNK  	  ppp\        V4      ^ 8X  d   \        R4      h\        V^ ,          P	                  R4      4       F  w  opVP                  4       '       g   K   M	  \        VP                  4      oR	 VVVV	V
V3R
 llpV# u uppi )ÚaffineÚ	mixed_2_6Ú	mixed_3_4Ú	mixed_3_6Ú	mixed_4_6zInvalid quant recipe Ú	down_projz2Model does not have expected keys for mixed quant.Ú.c                ór   € V ^8„  d   QhR\         R\        P                  R\        \        \
        3,          /# )r   ÚpathÚmoduler   )r   r   r   r   r   r   )r   s   "r   r   Ú3mixed_quant_predicate_builder.<locals>.__annotate__0   s8   € ÷ Jñ JÜðJä—	‘	ðJô 
Œt”TˆzÕ	ñJr   c                óÀ  <€ \        V P                  R4      4      S8”  d"   \        V P                  R4      S,          4      M^ pVS	^,          8  ;'       g6    V^S	,          ^,          8¬  ;'       g    VS	^,          ,
          ^,          ^8H  pRV 9   g   RV 9   g   RV 9   d   V'       d	   RSRSRS/# RV 9   d   V'       d	   RSRSRS/# R	V 9   d	   RSRSRS/# RSRSRS/# )
a%  Implements mixed quantization predicates with similar choices to, for example, llama.cpp's Q4_K_M.
Ref: https://github.com/ggerganov/llama.cpp/blob/917786f43d0f29b7c77a0c56767c0fa4df68b1c5/src/llama.cpp#L5265
By Alex Barron: https://gist.github.com/barronalex/84addb8078be21969f1690c1454855f3
r$   Úv_projÚv_a_projÚv_b_projr   ÚbitsÚmoder#   Úlm_head)ÚlenÚsplitr   )
r&   r'   ÚindexÚuse_more_bitsr   Ú	high_bitsÚlayer_locationÚlow_bitsr.   Ú
num_layerss
   &&  €€€€€€r   Úmixed_quant_predicateÚ<mixed_quant_predicate_builder.<locals>.mixed_quant_predicate0   s   ø€ ô �4—:‘:˜c“?Ó# nÔ4ô �—
‘
˜3“ Õ/Ô0àð 	ð �J !•OÑ#÷ 2ð 2Ø˜˜J�¨!Õ+Ñ+÷2ð 2à˜
 a�Õ'¨1Õ,°Ñ1ð 	ð ˜Ô 
¨dÔ 2°jÀDÔ6HßØ  *¨f°iÀÈÐNÐNØ˜$Ô§=Ø  *¨f°iÀÈÐNÐNØ˜ÔØ  *¨f°iÀÈÐNÐNà˜j¨&°(¸FÀDÐIÐIr   )Ú
ValueErrorÚnamed_modulesr0   Ú	enumerater1   ÚisdigitÚlayers)r   r   r   ÚkÚ_Ú	down_keysr8   r4   r5   r6   r.   r7   s   &&f    @@@@@r   Úmixed_quant_predicate_builderrB      sü   ý€ ð €DØ€Ià�ÔØ‰Ø	�;Ô	ØˆØ‰	Ø	�;Ô	Ø‰Ø	�;Ô	Ø‰äÐ0°°Ð9Ó:Ð:à$×2Ñ2Ô4ÔIÑ4‘t�q¸ÀqÑ8H—�Ñ4€IÑIÜ
ˆ9ƒ~˜ÔÜÐMÓNÐNô ' y°¥|×'9Ñ'9¸#Ó'>Ö?Ñˆ˜Ø�9‰9�;Œ;Ùñ @ô �U—\‘\Ó"€J÷Jõ Jð: !Ð ùóO Js   ÁC2Á&C2c                ó¦  € V ^8„  d   QhR\         R\         R\        R\        \        ,          R\        \        ,          R\         R\        \         ,          R\         R	\        \         ,          R
\        R\        \        \
        \         \        P                  \        .\        \        \        3,          3,          \         3,          ,          R\        /# )r   Úhf_pathÚmlx_pathÚquantizeÚq_group_sizeÚq_bitsÚq_modeÚdtypeÚupload_repoÚrevisionÚ
dequantizeÚquant_predicateÚtrust_remote_code)	r   r   r   r   r   r   r   r   r   )r   s   "r   r   r   U   sÎ   € ÷ Z-ñ Z-ÜðZ-äðZ-ô ðZ-ô œ3•-ð	Z-ô
 ”S�MðZ-ô ðZ-ô ”C�=ðZ-ô ðZ-ô ”s�mðZ-ô ðZ-ô ÜŒhœœRŸY™Y¬Ð-¬u´T¼4°ZÕ/@Ð@ÕAÄ3ÐFÕGõðZ-ô ñZ-r   c           	      óÜ  aa€ \        V\        4      '       d   \        V4      pVP                  4       '       d   \	        R V R24      h\        R4       \        V VRRV/RR7      w  rÍp\        V
\        4      '       d    VR8w  d   \	        R4      h\        V
VV4      p
Sf   VP                  R	R4      oSf-   VP                  R
R4      ;p'       d   VP                  RR4      oS\        9   d[   \        RS4       \        \        S4      o\        VRR 4      oVV3R lpVP                  \        VVP                  4       4      4       V'       d   V	'       d   \	        R4      hV'       d   \        R4       \        VVVVVV
R7      w  rÎV	'       d;   \        R4       VP!                  RR4       VP!                  RR4       \#        V4      p\%        VV VVV4       Ve   \'        W4       R# R# )zCannot save to the path zY as it already exists. Please delete the file/directory or specify a new path to save to.z[INFO] LoadingTrO   )rL   Úreturn_configÚtokenizer_configÚlazyr   z4Quant predicates only support 'affine' quantization.NÚtorch_dtypeÚtext_configrJ   z[INFO] Using dtype:Úcast_predicatec                 ó   € R # )T© )r@   s   &r   Ú<lambda>Úconvert.<locals>.<lambda>ˆ   s   € ÁDr   c                 ó°   <€ S! V 4      '       dG   \         P                  ! VP                  \         P                  4      '       d   VP	                  S4      # V# )N)ÚmxÚ
issubdtyperJ   ÚfloatingÚastype)r?   ÚvrV   rJ   s   &&€€r   Ú	set_dtypeÚconvert.<locals>.set_dtypeŠ   s9   ø€ Ù˜a× Ò ¤R§]¢]°1·7±7¼B¿K¹K×%HÒ%HØ—x‘x “Ð&à�r   z/Choose either quantize or dequantize, not both.z[INFO] Quantizing)r.   rN   z[INFO] DequantizingÚquantizationÚquantization_config)Ú
isinstancer   r   Úexistsr:   Úprintr	   rB   ÚgetÚMODEL_CONVERSION_DTYPESÚgetattrr\   Úupdater   Ú
parametersr
   Úpopr   r   r   )rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   Ú	tokenizerÚconfigrU   ra   rV   s   &&&&&&f&&&&&     @r   Úconvertrp   U   sÝ  ù€ ô" �(œC× Ò Ü˜“>ˆà‡�×ÒÜØ& x jð 1Rð Ró
ð 	
ô
 
Ð
ÔÜ#ØØØØ-Ð/@ÐAØô Ñ€E�fô �/¤3×'Ò'Ø�XÔÜÐSÓUÐUÜ7ØØØó
ˆð ‚}Ø—
‘
˜=¨$Ó/ˆØ‚}¨¯©°MÀ4Ó)HÐH˜+ÖHØ—‘ ¨Ó.ˆØÔ'Ô'ÜÐ# UÔ+Üœ˜EÓ"ˆÜ  Ð(8¹.ÓIˆö	ð 	�‰Ô'¨	°5×3CÑ3CÓ3EÓFÔGç—JÜÐJÓKÐKçÜÐ!Ô"Ü&ØØØØØØ+ô
‰ˆ÷ ÜÐ#Ô$Ø�
‰
�> 4Ô(Ø�
‰
Ð(¨$Ô/Ü  Ó'ˆäØØØØØôð ÒÜ�hÖ,ñ r   c                ó8   € V ^8„  d   QhR\         P                  /# )r   r   )ÚargparseÚArgumentParser)r   s   "r   r   r   ²   s   € ÷ Kñ Kœ(×1Ñ1ñ Kr   c                 ó^  € \         P                  ! RR7      p V P                  RR\        RR7       V P                  R\        RR	R
7       V P                  RRRRR7       V P                  RR\        RR7       V P                  RR\        RR7       V P                  RR\        R. R)OR7       V P                  RR\
        \        RR7       V P                  RR\        \        RR 7       V P                  R!R"\        RR7       V P                  R#R$R%RRR&7       V P                  R'R(RRR&7       V # )*z
Configures and returns the argument parser for the script.

Returns:
    argparse.ArgumentParser: Configured argument parser.
z(Convert Hugging Face model to MLX format)Údescriptionz	--hf-pathz--modelzSPath to the model. This can be a local path or a Hugging Face Hub model identifier.)ÚtypeÚhelpz
--mlx-pathÚ	mlx_modelzPath to save the MLX model.)rv   Údefaultrw   z-qz
--quantizezGenerate a quantized model.Ú
store_true)rw   Úactionz--q-group-sizezGroup size for quantization.N)rw   rv   ry   z--q-bitsz!Bits per weight for quantization.z--q-modezThe quantization mode.r   )rw   rv   ry   Úchoicesz--quant-predicatezMixed-bit quantization recipe.F)rw   r|   rv   Úrequiredz--dtypezvType to save the non-quantized parameters. Defaults to config.json's `torch_dtype` or the current model weights dtype.)rw   rv   r|   ry   z--upload-repoz-The Hugging Face repo to upload the model to.z-dz--dequantizezDequantize a quantized model.)rw   r{   ry   z--trust-remote-codez)Trust remote code when loading tokenizer.)r   Úmxfp4Únvfp4Úmxfp8)rr   rs   Úadd_argumentr   r   ÚQUANT_RECIPESri   )Úparsers    r   Úconfigure_parserr„   ²   s”  € ô ×$Ò$Ø>ô€Fð ×ÑØØÜØbð	 ô ð ×ÑØœ3¨Ð:Wð ô ð ×ÑØˆlÐ!>À|ð ô ð ×ÑØØ+ÜØð	 ô ð ×ÑØØ0ÜØð	 ô ð ×ÑØØ%ÜØÚ5ð ô ð ×ÑØØ-ÜÜØð ô ð ×ÑØð FÜÜ'Øð ô ð ×ÑØØ<ÜØð	 ô ð ×ÑØØØ,ØØð ô ð ×ÑØØ8ØØð	 ô ð €Mr   c                  ób   € \        4       p V P                  4       p\        R/ \        V4      B  R # )NrX   )r„   Ú
parse_argsrp   Úvars)rƒ   Úargss     r   Úmainr‰      s'   € ÜÓ€FØ×ÑÓ€DÜÑŒd�4‹jÔr   Ú__main__z‚Calling `python -m mlx_lm.convert ...` directly is deprecated. Use `mlx_lm.convert ...` or `python -m mlx_lm convert ...` instead.)é@   )r   r    r!   r"   )Úfloat16Úbfloat16Úfloat32)rx   FNNr   NNNFNF)rr   Úpathlibr   Útypingr   r   r   Úmlx.coreÚcorer\   Úmlx.nnr   Ú	mlx.utilsr   Úutilsr   r	   r
   r   r   rB   r‚   ri   rp   r„   r‰   Ú__name__rg   rX   r   r   Ú<module>r—      sq   ðó Ý ß ,Ñ ,å Ý Ý (÷õ ÷9!òx E€â<Ð ÷Z-õzKò\ð ˆzÔÙ	ð	Oôñ 	†Fñ r   