o
    Ti
                     @   sV   d dl Z d dlZddlmZmZmZmZ dd Zdd Zdd	 Z	e
d
fddZdS )    N   )MODEL_FILE_PREFIXMODEL_FILE_SUFFIXOPTIM_FILE_SUFFIXZERO_FILE_PREFIXc                 C   s   t j| t| t }|S )N)ospathjoinr   r   )base_foldermp_rank_str	ckpt_name r   N/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/checkpoint/utils.pyget_model_ckpt_name_for_rank   s
   
r   c                 C   s6   t  | }dt |d}tj| || t }|S )N_02d)r   r   r   r   r	   r   )r
   dp_rankmp_rankzero_prefixmp_rank_stringzero_ckpt_namer   r   r   get_zero_ckpt_name_for_rank   s   
r   c                 C   s&   | d|dt  }tj| |}|S )Nz-model_r   )r   r   r   r	   )r
   layer_idtp_rank	ckpt_file	ckpt_pathr   r   r   get_layer_ckpt_name_for_rank   s   r   cpuc                    s   t | r"t tu rt    | jkr|   S |   S t| t	r0 fdd| D S t| t
r@t
 fdd| D S t| trTt|  fdd|  D S | S )a  
    Returns a copy of ``item`` with all enclosed tensors replaced by clones on a specified device.
    Works on individual tensors, and tensors contained/nested in lists, tuples, and dicts.

    Parameters:
        - ``item``: tensor to clone or (possibly nested) container of tensors to clone.
        - ``device``: target device (defaults to 'cpu')

    Returns:
        - copy of ``item`` with cloned tensors on target device
    c                       g | ]}t | qS r   clone_tensors_for_torch_save.0vdevicer   r   
<listcomp>=       z0clone_tensors_for_torch_save.<locals>.<listcomp>c                    r   r   r   r!   r$   r   r   r&   ?   r'   c                    s   i | ]
\}}|t | qS r   r   )r"   kr#   r$   r   r   
<dictcomp>A   s    z0clone_tensors_for_torch_save.<locals>.<dictcomp>)torch	is_tensortypestrr%   detachcloneto
isinstancelisttupledictitems)itemr%   r   r$   r   r    )   s   





r    )r   r*   	constantsr   r   r   r   r   r   r   r%   r    r   r   r   r   <module>   s   
