o
    }oiv
                     @   sp   d dl Z d dlZdd ZdddZdd Zd	d
 Zedkr6dd Zee jd Z	ee jd Z
ee	e
 dS dS )    Nc                    s~   ddl m} dd l dd lm  m} ddlm} t| |s"|| } || }| } fdd|j	
 D }|j||d |S )Nr   )Path)FileSystemReaderc                    s4   i | ]\}}t |jd kr| j|j|jjdqS )TensorStorageMetadata)dtype)type__name__emptysize
propertiesr   ).0ktptorch h/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/llm/bitexact/mixtral/compare_ckpts.py
<dictcomp>    s
    zload_dcp.<locals>.<dictcomp>)storage_reader)pathlibr   r   torch.distributed.checkpointdistributed
checkpointr   
isinstanceread_metadatastate_dict_metadataitemsload)ckpt_dirr   dcpr   	fs_readermetadata
state_dictr   r   r   load_dcp   s    

r"    c              
   C   sV  t | trt |tsJ |  D ]}t| | || | qd S t | tjrz`| j|jks;J d| d| j d|j | j|jksPJ d| d| j d|j | j|jkseJ d| d| j d|j t	| |ks|J d| d| d|  d| t
d|  W d S  ty } zt
| W Y d }~d S d }~ww t
|d	t| d	t| d S )
Nz	mismatch	z: different dtypes  z: different device z: different shape z: different values 
zmatch		)r   dictkeyscompare_ckptsr   Tensorr   deviceshapeallprint	Exceptionr   )abkeyer   r   r   r)   -   s"   
***.r)   c                 C   s(   t | tsJ dtdd | dS )N.c                 S   s   | dkS )Nmoduler   xr   r   r   <lambda>C   s    z(remove_module_from_key.<locals>.<lambda>)r   strjoinfiltersplitr6   r   r   r   remove_module_from_key?   s   r=   c                 C   s    t | tsJ dd |  D S )Nc                 S   s   i | ]	\}}t ||qS r   )r=   )r   r   vr   r   r   r   H   s    z0remove_module_from_dict_keys.<locals>.<dictcomp>)r   r'   r   )dr   r   r   remove_module_from_dict_keysF   s   r@   __main__c                 C   s   t t| S )N)r@   r"   r6   r   r   r   r8   L   s    r8         )r#   )sysr   r"   r)   r=   r@   r   load_n_renameargvckptckpt2r   r   r   r   <module>   s   
