o
�J�h�D � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZd dl
Z
d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZm Z d dl!m"Z" d dl#Z#d dl$m%Z% d d l&m'Z' d d
l#m(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d
dl/m0Z0 d
dl1m2Z2 d
dl3m4Z4 d
dl5m6Z6m7Z7m8Z8 d
dl9m:Z:m;Z;m<Z< d
dl=m>Z> d
dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH d
dlImJZJmKZK d
dlLmMZM d
dlNmOZO d
dlPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZs d
dltmuZumvZv d
dlwmxZxmyZymzZzm{Z{ d
dl|m}Z}m~Z~ e j��dd���� Z�e j��dd���� Z�ee� �r�d dl�m�Z�m�Z�m�Z� d d l�m�Z� d d!l�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z� e'��ej��'d"��Z�e�e'��d#�k�r�d d$l�m�Z� el� �r�d d%l�m�Z� d d&l�m�Z� d d'l�m�Z� eq��e��Z�d(a�d)a�d)a�d*d+� Z�d,d-� Z�ey� �r�d dl�m� m#Z� d d.l�m�Z� e'��e��e'��d/�kZ�nd)Z�ej� �r�d
d0lPm�Z� ed1d2d3�Z�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�e)j�j�d4�Z�ed�d5d6��Z�ed7d8� �Z�ed9d:� �Z�d;e e)j�d<f fd=d>�Z�d;e e)j�d<f fd?d@�Z�d;e e)j�d<f fdAdB�Z�dCdD� Z�dEdF� Z�dGdH� Z�d�dJdK�Z�d�dLdM�Z� ) (d�dNe e�e j�f dOe�dPee e�e#j�f dQe�fdRdS�Z�dTdU� Z�dVe#j(dWe�fdXdY�Z�d�dZe)j�fd[d\�Z�d]eee� d^ee�e#j(f dWeeee� ee� f fd_d`�Z�d]eee� d^ee�e#j(f dWeeee� ee� f fdadb�Z�d�dcdd�Z�dedf� Z�dgdh� Z� ) d�didj�Z�d�dke�dlee� dWe�fdmdn�Z�G dod<� d<�Z�G dpd2� d2e)j�e�e8e_e:�Z�eae�j߃e�_�e�j�j�du�r<e�j�j�j�dqdrdsdt�e�j�_�G dudv� dve)jăZ�G dwdx� dxe)jăZ�G dydz� dze)jăZ�eG d{d|� d|e^��Z�G d}d~� d~e)jăZ�G dd�� d�e)jăZ�d�dqe)j�d�e�dWe)j�fd�d��Z�d�d�� Z�d�d�� Z�dS )�� N)�contextmanager)� dataclass)�partial�wraps)�Process)
�Any�Callable�Dict�List�Optional�Set�Tuple�Type�TypeVar�Union)�
is_zipfile)�"split_torch_state_dict_into_shards)�version)�Tensor�nn)�CrossEntropyLoss�Identity)�
checkpoint� )�get_activation)�PretrainedConfig)�custom_object_save)�
CompileConfig�GenerationConfig�GenerationMixin)�PeftAdapterMixin�deepspeed_config�is_deepspeed_zero3_enabled)�LOSS_MAPPING) �Conv1D�apply_chunking_to_forward� find_pruneable_heads_and_indices�id_tensor_storage�#is_torch_greater_or_equal_than_1_13�prune_conv1d_layer�prune_layer�prune_linear_layer�!translate_to_torch_parallel_style)�AutoHfQuantizer�HfQuantizer)�get_module_from_name)�auto_conversion)#�ACCELERATE_MIN_VERSION�ADAPTER_SAFE_WEIGHTS_NAME�ADAPTER_WEIGHTS_NAME�CONFIG_NAME�DUMMY_INPUTS�FLAX_WEIGHTS_NAME�SAFE_WEIGHTS_INDEX_NAME�SAFE_WEIGHTS_NAME�TF2_WEIGHTS_NAME�TF_WEIGHTS_NAME�WEIGHTS_INDEX_NAME�WEIGHTS_NAME�ContextManagers�ModelOutput�PushToHubMixin�cached_file� copy_func�download_url�extract_commit_hash�has_file�is_accelerate_available�is_bitsandbytes_available�is_flash_attn_2_available�is_offline_mode�is_optimum_available�is_peft_available�
is_remote_url�is_safetensors_available�is_torch_flex_attn_available�is_torch_greater_or_equal�is_torch_sdpa_available�is_torch_xla_available�logging�replace_return_docstrings� strtobool)�create_and_tag_model_card�get_checkpoint_shard_files)�ENV_VARS_TRUE_VALUES�is_sagemaker_mp_enabled�is_torch_fx_proxy�is_torchdynamo_compiling)�BitsAndBytesConfig�QuantizationMethod�XLA_USE_BF16�0�XLA_DOWNCAST_BF16)�dispatch_model�infer_auto_device_map�init_empty_weights)�add_hook_to_module) �$check_tied_parameters_on_same_device�extract_model_from_parallel�find_tied_parameters�get_balanced_memory�get_max_memory�load_offloaded_weights�offload_weight�save_offload_index�set_module_tensor_to_device�
accelerate�0.31)�get_state_dict_from_offload)� safe_open)� load_file)� save_fileTFc C s@ t j�� ot j�� ottj�dd��dkottj�dd��dkS )NZACCELERATE_USE_FSDP�Falser ZFSDP_CPU_RAM_EFFICIENT_LOADING)�torch�distributed�is_available�is_initializedrS �os�environ�get� rz rz �YC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\transformers\modeling_utils.py�is_fsdp_enabled� s
���r| c C s* t j�� ot j�� ottj�dd��dkS )N�
LOCAL_RANK�����r )rs rt ru rv �intrw rx ry rz rz rz r{ �is_local_dist_rank_0� s
��r� ��__version__z1.10)�find_adapter_config_file�SpecificPreTrainedModelType�PreTrainedModel)�bound)�uniform_�normal_�
trunc_normal_� constant_�xavier_uniform_�xavier_normal_�kaiming_uniform_�kaiming_normal_�uniform�normal�xavier_uniform�
xavier_normal�kaiming_uniform�kaiming_normalc c s� � t }| rda dd� }t�� D ]\}}ttjj||� qzdV W |a | r6t�� D ]\}}ttjj||� q)dS dS |a | rOt�� D ]
\}}ttjj||� qBw w )z�
Context manager to globally disable weight initialization to speed up loading large models.
TODO(Patrick): Delete safety argument `_enable=True` at next major version. .
Fc _ s d S �Nrz )�args�kwargsrz rz r{ �
_skip_init� s z#no_init_weights.<locals>._skip_initN)�
_init_weights�TORCH_INIT_FUNCTIONS�items�setattrrs r �init)�_enableZold_init_weightsr� �name� init_funcrz rz r{ �no_init_weights� s* ����r� c c � � da zd V W da d S da w �NTF)�
_is_quantizedrz rz rz r{ �set_quantized_state� �
�r� c c r� r� )�_is_ds_init_calledrz rz rz r{ �set_zero3_state� r� r� � parameter�ModuleUtilsMixinc
C �b zt | �� �jW S ty0 dtjdtttt f fdd�}| j
|d�}t |�}|d j Y S w )N�module�returnc S � dd� | j �� D �}|S )Nc S �"