Team Ai
Apppublic

xdecoder/Instruct-X-Decoder

sourceHugging Faceafl-3.0updated 3y agoView on Hugging Face
163likes
transformer.cpython-38.pyc61 linesDownload Raw Back to __pycache__
1U

2E$�c� �@s�ddlmZddlmZmZddlZddlZddlZddl	Z	ddl3mmZ
ddl	mZddlmZmZddlmZddlmZdd	lmZe�e�ZeGd4d�dej��ZGdd
�d
ej�ZGdd�dej�ZGdd�dej�Zedd��ZdS)�)�OrderedDict)�Tuple�UnionN)�nn)�DropPath�
trunc_normal_�)�register_lang_encoder)�is_main_process)�register_norm_modulecs&eZdZd�fdd�	Zdd�Z�ZS)�	LayerNorm��-���q=cs<tt|���t�t�|��|_t�t�|��|_	||_5dS)zWConstruct a layernorm module in the TF style (epsilon inside the square root).6        N)�superr�__init__r�	Parameter�torch�ones�weight�zeros�bias�variance_epsilon)�self�hidden_size�eps��	__class__��B/data/arXiv/demo/Demo/xdecoder/language/LangEncoder/transformer.pyrszLayerNorm.__init__cCsb|j}|��}|jddd�}||�d�jddd�}||t�||j�}|j|�|�|j	S)N�����T)�keepdim�)7�dtype�float�mean�powr�sqrtrr�tor)r�xZpdtype�u�srrr�forwardszLayerNorm.forward)r
)�__name__�8__module__�__qualname__rr*�
__classcell__rrrrrsrc@seZdZejd�dd�ZdS)�	QuickGELU�r'cCs|t�d|�S)Ng�Zd;�?)r�sigmoid)rr'rrrr*(szQuickGELU.forwardN)r+r,r-r�Tensorr*rrrrr/'sr/csXeZdZdeeejed��fdd�
Zdejejd�dd�Zd
ejejd�d	d9�Z	�Z10S)�ResidualAttentionBlockN�)�d_model�n_head�	attn_mask�	drop_pathc11s�t���t�||�|_t|�|_t�tdt�	||d�fdt12�fdt�	|d|�fg��|_t|�|_||_
|dkr~t|�nt��|_dS)NZc_fc��geluZc_projr4)rrr�MultiheadAttention�attnr�ln_1�13Sequentialr�Linearr/�mlp�ln_2r7r�Identityr8)rr5r6r7r8rrrr-s1415�1617zResidualAttentionBlock.__init__)r'�key_padding_maskcCs@|jdk	r|jj|j|jd�nd|_|j||||d|jd�dS)N)r!�deviceF)rC�need_weightsr7r)r7r&r!rDr<�rr'rCrrr�	attention?s����z ResidualAttentionBlock.attentioncCs<||�|j|�|�|d��}||�|�|�|���}|S)N)rC)r8rGr=r@rArFrrrr*KszResidualAttentionBlock.forward)Nr4)N)N)r+r,r-�intrr2r"rrGr*r.rrrrr3,s��r3c	sveZdZdeeeeeeed��fdd�
Zedd��Zdd	�Z	d18d�Z19dgdfd
d�Zej
jdd��Zddd�Z�ZS)�Transformerr4T)�context_length�20vocab_size�width�layers�headsr8�autogressivecs�t���t�|��|_||_t�t�|j���|_	�|_21||_||_|rR|�
�nd�dd�t�d||�D��t�����fdd�t|�D��|_t��|_t|j	dd�t|jjdd�|�|j�dS)NcSsg|]}|���qSr)�item)�.0r'rrr�22<listcomp>gsz(Transformer.__init__.<locals>.<listcomp>rcsg|]}t����|��qSr)r3)rQ�i�r7�dprrNrLrrrRis��{�G�z�?��std)rrr�	Embedding�token_embeddingrJrr�empty�positional_embeddingrLrMrO�build_attention_mask�linspace�23ModuleList�range�	resblocksr�ln_finalrr�apply�
_init_weights)rrJrKrLrMrNr8rOrrTrrRs(24���25zTransformer.__init__cCs|jS)N)rL�rrrr�dim_outvszTransformer.dim_outcCs,t�|j|j�}|�td��|�d�|S)Nz-infr)rr[rJ�fill_r"�triu_)r�maskrrrr]zs26z Transformer.build_attention_maskcCs�t|tjtjf�r\t�r"t�d�t|jdd�|j	dk	r~t�rJt�d�tj27�|j	d�n"t|tjtj
f�r~tj28�|j	d�dS)Nz/=> init weight of Linear/Conv2d from trunc normrVrWz&=> init bias of Linear/Conv2d to zerosr)�29isinstancerr?�Conv2dr30�logger�inforrr�init�	constant_r�BatchNorm2d)r�mrrrrd�s313233zTransformer._init_weights�cs�tj�|��r�tj|dd�}t�d|���|���dd����fdd�|��D�}i}|��D�]\}}|�	d�d	|kp�|d	d34k}|r`|r�t35�d|�d|���d
|k�rx|���|��k�rx|}	�|}36|	��\}}|37��\}
}||k�rt38�d|�d��np||
k�rxt39�d�||f|
|f��|	�
�}|jd	d��d	dd�}tjjj||
dd�}|�d	dd�jd	d�}|}|||<q`|j|dd�dS)N�cpu)�map_locationz=> loading pretrained model cSs|�d�r|dd�S|S)Nz
lang_encoder.�
)�40startswithr0rrr�<lambda>��z-Transformer.load_pretrained.<locals>.<lambda>cs*i|]"\}}�|����kr�|�|�qSr)�keys)rQ�k�v��41model_dictZstripped_keyrr�42<dictcomp>�s�z/Transformer.load_pretrained.<locals>.<dictcomp>�.r�*z=> init z from r\zError in loading z	, passingz-=> load_pretrained: resized variant: {} to {})�dimr r�linear)�size�modeF)�strict)�os�path�isfiler�load�loggingrm�43state_dict�items�splitrlr��formatr"�	unsqueeze�permuter�44functional�interpolate�squeeze�load_state_dict)r�45pretrained�pretrained_layers�verbose�pretrained_dict�need_init_state_dictrzr{�	need_initZpositional_embedding_pretrainedZpositional_embedding_current�L1�nH1�L2�nH2�posemb�posemb_gridrr|r�load_pretrained�sJ�46� 4748��49zTransformer.load_pretrainedcCsddhS)Nr\rZrrerrr�no_weight_decay�s�zTransformer.no_weight_decayNcCsr|js|dk	r|dknd}|�|�}||j}|�ddd�}|jD]}|||�}qB|�ddd�}|�|�}d|iS)Nrrr �last_hidden_state)rOrZr\r�rarb)r�	input_ids�attention_maskrCr'�blockrrrr*�s50515253zTransformer.forward)r4T)N)r+r,r-rHr"�boolr�propertyrfr]rdr�r�jit�ignorer�r*r.rrrrrIQs&��$54-55rIc56KsXt|d|j|d|d|d|�dd�d�}|�dd	�rT|�|d57|�ddg��|S)
N�CONTEXT_LENGTH�WIDTHZLAYERSZHEADSZAUTOGRESSIVET)rJrKrLrMrNrO�LOAD_PRETRAINEDF�58PRETRAINED�PRETRAINED_LAYERSr�)rIrK�getr�)�config_encoder�	tokenizerr��kwargs�transformerrrr�lang_encoder�s59�	r�) �collectionsr�typingrrr�r��numpy�nprZtorch.nn.functionalrr��F�timm.models.layersrr�registryr	�utils.distributedr60Zutils.modelr�	getLoggerr+rl�Modulerr/r3rIr�rrrr�<module>s(61%