o
    㥵ik                     @   s:   d dl mZ d dlZeG dd dZdd Zdd ZdS )	    )	dataclassNc                   @   s*   e Zd ZU eed< eed< dZeed< dS )
LoraConfigr
lora_alphag        lora_dropoutN)__name__
__module____qualname__int__annotations__floatr    r   r   Y/home/ubuntu/.local/lib/python3.10/site-packages/fish_speech/models/text2semantic/lora.pyr      s   
 r   c              	   C   s  t j| jj| jj| jj|j|jd| _t j| jj| jj| jj|j|jd| _| dfg}| j	D ] }|
|jdf|jdfg |
|jdf|jdf|jdfg q.t| drt j| jj| jj| jj|j|jd| _|| d	f | jD ] }|
|jdf|jdfg |
|jdf|jdf|jdfg qq|D ]$\}}t jt||jt||jt||j|j|j|jd
}t||| qt j| dd d S )N)num_embeddingsembedding_dimpadding_idxr   r   outputwqkvwow1w2w3fast_layersfast_output)in_featuresout_featuresbiasr   r   r   none)r   )lora	Embedding
embeddingsr   r   r   r   r   codebook_embeddingslayersextend	attentionfeed_forwardhasattrfast_embeddingsappendr   Lineargetattrr   r   r   r   setattrmark_only_lora_as_trainable)modellora_configlinearslayermoduleupdated_linearr   r   r   
setup_lora   sf   
	

	



r3   c                 C   s8   |    |  }t| D ]}d|v r|| q|S )Nr   )eval
state_dictlistkeyspop)r-   r5   namer   r   r   get_merged_state_dictR   s   
r:   )dataclassesr   loralibr   r   r3   r:   r   r   r   r   <module>   s    E