ó
    >:j  ã                   ó`   • 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     ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/cpt/config.pyÚ__post_init__ÚCPTConfig.__post_init__G   sM  € ð
 #'ˆÔØˆŒØˆŒØ#'ˆÔ Ø*+ˆÔ'Ü!Ÿ™ˆŒØ�>‰>œX×/Ñ/Ó/Ü §¡× 7Ñ 7Ð8Ð8SÔT\×TfÑTf×TlÑTlÐSmÐmnÐoÓpÐpà×ÑÑ%Ø"# ˆDÔä"% d×&8Ñ&8Ó"9ˆÔà�=‰=Ñ Ø(,×(:Ò(:Ó;Ò(: 1›QÑ(:Ñ;ˆDŒMà×$Ñ$Ñ,Ø48×4FÒ4FÓ(GÒ4F¨q«Ñ4FÑ(GˆDÔ%ô �×"Ñ"Ó#¤s¨4¯=©=Ó'9Õv¼SÀ×AZÑAZÓ=[Õ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ñ*€M�8˜D ™IÑ&ó ñ %*°$À&ÐJnÐAoÑ$p€Hˆh�t˜C‘yÑ!ÓpÙ05Ø Ð(UÐVñ1Ð˜( 4¨¡9Ñ-ó ñ
 BGØ &Ð*UÐ!VñBÐ˜H W¨_Ñ%=Ñ>ó ñ .3Ø˜vÐ'XÐYñ.Ð˜8 E™?ó ñ
 /4Ø˜vÐ'LÐMñ/Ð˜H U™Oó ñ 6;Ø˜vÐ'MÐNñ6Ð! 8¨E¡?ó ñ
 -2ØàÐvð
ñ-Ð˜H S™Mó ð Ðõ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<   