
    oi                     `    S SK JrJr  S SKJrJr  S SKJr  S SKJ	r	J
r
  \ " S S\5      5       rg)    )	dataclassfield)LiteralOptional)PromptLearningConfig)PeftTypeTaskTypec                   L   \ rS rSr% Sr\" SSS0S9r\\\	      \
S'   \" SSS0S9r\\\	      \
S	'   \" SSS
0S9r\\\	      \
S'   \" SSS0S9r\\S      \
S'   \" SSS0S9r\\   \
S'   \" SSS0S9r\\   \
S'   \" SSS0S9r\\   \
S'   \" SSS0S9r\\   \
S'   SrS rSrg)	CPTConfig   aA  
CPT Configuration class extending PeftConfig for Context-aware Prompt Tuning (CPT).

This class introduces additional parameters required for CPT, such as:
- Token type masks
- Prompt tuning initialization
- Loss weighting
- Projection settings

For more details, see the paper: https://huggingface.co/papers/2410.17222
Nhelpz)Tensor of token IDs used for CPT prompts.)defaultmetadatacpt_token_idsz"Tensor mask applied to CPT tokens.cpt_maskz+Mask indicating the type of each CPT token.cpt_tokens_type_masknonez)Type of weighted loss: 'none' or 'decay'.)r   decayopt_weighted_loss_typeg      ?z/Factor for exponential decay in loss weighting.opt_loss_decay_factorg?z#Epsilon value for input projection.opt_projection_epsilonz$Epsilon value for format projection.opt_projection_format_epsilonz`The tokenizer to use for prompt tuning initialization. Only used if prompt_tuning_init is `TEXT`tokenizer_name_or_pathTc                     SU l         SU l        SU l        SU l        SU l        [
        R                  U l        U R                  [        R                  :w  a=  [        U R                  R                   S[        R                  R                   S35      eU R                  c  S/U l        [!        U R                  5      U l        U R$                  c"  U R                   Vs/ s H  nSPM     snU l        U R&                  c"  U R                   Vs/ s H  nSPM     snU l        [!        U R                  5      [!        U R$                  5      s=:X  a*  [!        U R&                  5      s=:X  a  U R"                  :X  d  O  [        S5      egs  snf s  snf )zX
Post-initialization hook to set additional attributes after the config is initialized.
TN   z only supports task_type = .r   zKcpt_token_ids, cpt_mask and cpt_tokens_type_mask must have the same length.)is_prompt_learning
num_layers	token_dimnum_attention_headsnum_transformer_submodulesr   CPT	peft_type	task_typer	   	CAUSAL_LM
ValueError	__class____name__valuer   lennum_virtual_tokensr   r   )self_s     P/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/cpt/config.py__post_init__CPTConfig.__post_init__G   sM   
 #'#' *+'!>>X/// 7 788ST\TfTfTlTlSmmnopp%"#D"%d&8&8"9== (,(:(:;(:1Q(:;DM$$,484F4F(G4Fq4F(GD% ""#s4=='9vSAZAZ=[v_c_v_vvjkk w < )Hs   FF)
r   r   r   r   r    r   r!   r+   r#   r   )r(   
__module____qualname____firstlineno____doc__r   r   r   listint__annotations__r   r   r   r   r   floatr   r   r   strr   r/   __static_attributes__     r.   r   r      s?   
 */(ST*M8DI&  %*$&JnAo$pHhtCy!p05(UV1(49- 
 BG&*U!VBHW_%=>  .3v'XY.8E? 
 /4v'LM/HUO  6;v'MN6!8E? 
 -2v
-HSM  lr<   r   N)dataclassesr   r   typingr   r   peft.configr   
peft.utilsr   r	   r   r;   r<   r.   <module>rA      s5    ) $ , ) Ll$ Ll Llr<   