Ë
    èÍ:jd  ã                   óx   — d dl Z d dlZd dlmZmZ  G d„ de j                  «      Z G d„ dej                  «      Z	y)é    N)Úcommon_specÚ
model_specc                   ó   — e Zd ZdZdZdZdZy)ÚRotaryScalingTypezRoPE scaling type.r   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚLinearÚSuÚLlama3© ó    úu/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/ctranslate2/specs/attention_spec.pyr   r   	   s   „ Ùà€FØ	
€BØ�Fr   r   c                   ó<   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚMultiHeadAttentionSpecNc                 óú  — t         j                  | _        |rt        j                  |¬«      | _        t        |rdnd«      D �cg c]  }t        j                  «       ‘Œ c}| _        |r6t        j                  |¬«      | _	        t        j                  |¬«      | _
        |rt        j                  d¬«      | _        |rd | _        d | _        |rd | _        d | _        |rd | _        d | _        d | _        |dk7  r)t'        j(                  d«      j+                  |«      | _        |dk7  r)t'        j(                  d«      j+                  |«      | _        |��t'        j(                  d«      j+                  |«      | _        || _        t'        j(                  d«      j+                  |
«      | _        |�)t'        j(                  d«      j+                  |«      | _        |t8        j:                  u r*t'        j(                  d«      j+                  |	«      | _        nA|t8        j>                  u rd | _         d | _!        n |t8        jD                  u rd | _#        d | _$        |�)t'        j(                  d«      j+                  |«      | _%        |�)t'        j(                  d«      j+                  |«      | _&        |�)t'        j(                  d«      j+                  |«      | _'        |r!d| _(        t        j                  «       | _)        y y c c}w )	N)Úrms_normr   é   Tr   Úint32Úfloat32Úint8)*r   ÚOPTIONALÚqueries_scaler   ÚLayerNormSpecÚ
layer_normÚrangeÚ
LinearSpecÚlinearÚq_normÚk_normÚv_normÚrelative_position_keysÚrelative_position_valuesÚrelative_attention_biasÚrelative_attention_max_distanceÚ!relative_asymmetric_position_keysÚrelative_left_max_positionÚrelative_right_max_positionÚnpÚdtypeÚtypeÚ original_max_position_embeddingsÚmax_position_embeddingsÚ
rotary_dimÚrotary_interleaveÚrotary_baseÚrotary_scaling_typer   r   Úrotary_scaling_factorr   Úrotary_scaling_long_factorÚrotary_scaling_short_factorr   Úrotary_low_freq_factorÚrotary_high_freq_factorÚnum_heads_kvÚhead_dimÚsliding_windowÚmerged_encoder_attentionÚ	memory_kv)ÚselfÚself_attentionÚrelative_positionÚrelative_asymmetric_positionr'   r   r1   r2   r4   r5   r3   r/   r0   r:   r;   r<   Úqk_normÚqk_norm_rmsr$   Úhas_normr=   Ú_s                         r   Ú__init__zMultiHeadAttentionSpec.__init__   s‚  € ô. (×0Ñ0ˆÔáÜ)×7Ñ7ÀÔJˆDŒOä.3¹±AÈQÓ.Oö
Ø)*ŒK×"Ñ"Õ$ò
ˆŒñ Ü%×3Ñ3¸[ÔIˆDŒKÜ%×3Ñ3¸[ÔIˆDŒKáÜ%×3Ñ3¸TÔBˆDŒKáØ*.ˆDÔ'Ø,0ˆDÔ)á"Ø+/ˆDÔ(Ø37ˆDÔ0á'Ø59ˆDÔ2Ø.2ˆDÔ+Ø/3ˆDÔ,à+¨qÒ0Ü46·H±H¸WÓ4E×4JÑ4JØ0ó5ˆDÔ1ð # aÒ'Ü+-¯8©8°GÓ+<×+AÑ+AØ'ó,ˆDÔ(ð Ñ!Ü Ÿh™h wÓ/×4Ñ4°ZÓ@ˆDŒOØ%6ˆDÔ"Ü!Ÿx™x¨	Ó2×7Ñ7¸ÓDˆDÔà"Ð.Ü+-¯8©8°FÓ+;×+@Ñ+@ÐATÓ+U�Ô(Ø"Ô&7×&>Ñ&>Ñ>Ü-/¯X©X°iÓ-@×-EÑ-EØ)ó.�Õ*ð %Ô(9×(<Ñ(<Ñ<Ø26�Ô/Ø37�Õ0Ø$Ô(9×(@Ñ(@Ñ@Ø.2�Ô+Ø/3�Ô,àÐ#Ü "§¡¨Ó 1× 6Ñ 6°|Ó DˆDÔàÐÜŸH™H WÓ-×2Ñ2°8Ó<ˆDŒMàÐ%Ü"$§(¡(¨7Ó"3×"8Ñ"8¸Ó"HˆDÔá#Ø,0ˆDÔ)Ü(×3Ñ3Ó5ˆD�Nð $ùòy
s   ÁK8)FFFFFNTNr   i'  r   r   NNNFTFTF)r	   r
   r   rG   r   r   r   r   r      sF   „ ð ØØ%*Ø %ØØØØ ØØØ)*Ø !ØØØØØØØØ!&ô+Y6r   r   )
ÚenumÚnumpyr,   Úctranslate2.specsr   r   ÚIntEnumr   Ú	LayerSpecr   r   r   r   ú<module>rM      s2   ðÛ ã ç 5ô˜Ÿ™ô ôZ6˜Z×1Ñ1õ Z6r   