o
     i                     @   s^   d dl Z d dlmZ d dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlmZmZ dddZdS )	    N)partial)	load_file)SAFE_WEIGHTS_INDEX_NAMESAFE_WEIGHTS_NAMEWEIGHTS_INDEX_NAMEWEIGHTS_NAME)cached_fileget_checkpoint_shard_filesc                    s  t jd fvr	dn }d}d}d }tj| t}tj| t}tj| t}	tj| t}
tj	|r;t
| tdd}nJtj	|rKt
| tdd}d}n:tj	|	r[t
| tdd}d}n*tj	|
rmt
| tdd}d}d}nt
| tdd}|d u rt
| tdd}|d urd}|d u rtd|  d|rtt|d}ntt j|d}|rt| |\}}i }|D ]	}||| qn||}d uṙfd	d
| D } fdd
| D }|S )NcpuF)%_raise_exceptions_for_missing_entriesTzModel name z was not found.device)map_locationc                       i | ]\}}||j  d qS )dtypeto.0kvr    Y/home/ubuntu/.local/lib/python3.10/site-packages/xformers/_flash_attn/utils/pretrained.py
<dictcomp>M       z.state_dict_from_pretrained.<locals>.<dictcomp>c                    r   )r   r   r   r   r   r   r   N   r   )torchfloat32ospathjoinr   r   r   r   isfiler   EnvironmentErrorr   safe_load_fileloadr	   updateitems)
model_namer   r   mapped_device
is_sharded	load_saferesolved_archive_fileweights_pathweights_index_pathsafe_weights_pathsafe_weights_index_pathloadersharded_metadata
state_dictsharded_filer   )r   r   r   state_dict_from_pretrained   sn   r4   )NN)r   	functoolsr   r   safetensors.torchr   r#   transformers.utilsr   r   r   r   transformers.utils.hubr   r	   r4   r   r   r   r   <module>   s    