
    )j                         d dl Z d dlmZ d dlmZmZ ddlmZ ddlm	Z	m
Z
mZmZ de j        fdZdd	Zed
k    r ed            e             dS dS )    N)Path)tree_flattentree_unflatten   )convert_to_gguf)dequantize_modelloadsaveupload_to_hubreturnc                     t          j        d          } |                     ddd           |                     ddd	           |                     d
t          dd           |                     ddt          d            |                     ddd           |                     ddd           |                     dddt                     |                                 S )Nz-Fuse fine-tuned adapters into the base model.)descriptionz--model	mlx_modelz;The path to the local model directory or Hugging Face repo.)defaulthelpz--save-pathfused_modelz!The path to save the fused model.z--adapter-pathadaptersz/Path to the trained adapter weights and config.)typer   r   z--upload-repoz-The Hugging Face repo to upload the model to.)r   r   r   z--dequantizezGenerate a dequantized model.
store_true)r   actionz--export-ggufz$Export model weights in GGUF format.z--gguf-pathzTPath to save the exported GGUF format model weights. Default is ggml-model-f16.gguf.zggml-model-f16.gguf)r   r   r   )argparseArgumentParseradd_argumentstr
parse_args)parsers    U/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/mlx_lm/fuse.pyparse_argumentsr      sQ   $C  F J    
 0    
 >	     <	     ,    
 3    
 c%	         c            	      D   t          d           t                      t          j        j        d          \  } }}fd|                                 D             }|r"|                     t          |                     j        rJt          d           t          |           } |
                    dd            |
                    dd            t          j                  }t          |j        | ||d	           j        rt|d
         }|dvrt          d| d          t!          t#          |                                                     }t'          |||t)          |j        z                       j        t/          j        j                   d S d S )NzLoading pretrained modelT)adapter_pathreturn_configc                 p    g | ]2\  }}t          |d           ||                    j                  f3S )fuse)
dequantize)hasattrr$   r%   ).0nmargss      r   
<listcomp>zmain.<locals>.<listcomp>D   sR       Aq1f	
AFFdoF../  r   zDequantizing modelquantizationquantization_configF)donate_model
model_type)llamamixtralmistralzModel type z# not supported for GGUF conversion.)printr   r	   modelr!   named_modulesupdate_modulesr   r%   r   popr   	save_pathr
   export_gguf
ValueErrordictr   
parametersr   r   	gguf_pathupload_repor   )r4   	tokenizerconfigfused_linearsr8   r/   weightsr*   s          @r   mainrC   <   s   	
$%%%D#
!2$     E9f   ''))  M  <^M::;;; 0"### ''

>4(((

($///T^$$I
     UL)
<<<MjMMM   |E$4$4$6$67788	7FC	DN8R4S4STTT#dnd&677777 $#r   __main__zwCalling `python -m mlx_lm.fuse...` directly is deprecated. Use `mlx_lm.fuse...` or `python -m mlx_lm fuse ...` instead.)r   N)r   pathlibr   	mlx.utilsr   r   ggufr   utilsr   r	   r
   r   	Namespacer   rC   __name__r3    r   r   <module>rL      s           2 2 2 2 2 2 2 2 ! ! ! ! ! !           *+ * * * *Z+8 +8 +8 +8\ z	E	H   	DFFFFF r   