Ë
    èÍ:jî/  ã                   ó®  — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ ej                   j"                  ej                   j$                  ej                   j&                  ej                   j(                  d	œZd
„ Zd„ Zd„ Z G d„ de«      Zd„ Zd„ Zdd„Zd„ Zd„ Zdd„Zd„ Z dd„Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'e(dk(  r e'«        yy) é    N)ÚPredictConfig)ÚPositionEncodingType)Úvocabs_to_dict)Úget_model_class)Úutils)Ú	Converter)Úcommon_specÚtransformer_spec)ÚgeluÚ	fast_geluÚreluú
gated-siluc                 ó�  — t        | j                  dd«      t        j                  k(  }t        | j                  dd«      t        j                  k(  }|rt        d«      ‚t        | j                  dd«      t        j                  k(  }|rt        d«      ‚t        | dd«      }t        | j                  dd«      dk(  rd	}	d
}
n,| j                  j                  }	| j                  j                  }
t        | j                  dd«      }|dk(  }t        | dd«      }|dk7  rt        d«      ‚t        j                  j                  | j                  j                  | j                  j                  f||t        |   || j                   dk(  |	|
|¬«	      }t#        ||«       |D ]  }|j%                  |«       Œ |D ]  }|j'                  |«       Œ |S )ú4Creates a model specification from the model config.Úposition_encoding_typeNzBRotary embeddings are not supported yet for encoder/decoder modelsz5Alibi is not supported yet for encoder/decoder modelsÚmlp_activation_fnr   Úlambda_alignr   éÿÿÿÿé   Úheadsé   r   Úsliding_windowz=Sliding window is not suported yet for encoder/decoder modelsÚrms)Úwith_relative_positionÚ
activationÚffn_gluÚrms_normÚalignment_layerÚalignment_headsÚnum_source_embeddings)ÚgetattrÚ
embeddingsr   ÚRelativeÚRotaryÚ
ValueErrorÚAlibiÚdecoderr   r   r
   ÚTransformerSpecÚfrom_configÚencoderÚlayersÚ_SUPPORTED_ACTIVATIONSÚ
layer_normÚset_transformer_specÚregister_source_vocabularyÚregister_target_vocabulary)ÚconfigÚ	variablesÚ
src_vocabsÚ
tgt_vocabsr    r   Úwith_rotaryÚ
with_alibiÚactivation_fnr   r   Ú	num_headsr   r   Ú
model_specÚ	src_vocabÚ	tgt_vocabs                    út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/ctranslate2/converters/eole_ct2.pyÚ_get_model_spec_seq2seqr=      sä  € ô
 	�×!Ñ!Ð#;¸TÓBÜ×(Ñ(ñ	)ð ô
 	�×!Ñ!Ð#;¸TÓBÜ×&Ñ&ñ	'ð ñ ÜØPó
ð 	
ô 	�×!Ñ!Ð#;¸TÓBÜ×%Ñ%ñ	&ð ñ ÜÐPÓQÐQÜ˜FÐ$7¸Ó@€Mô ˆv�~‰~˜~¨qÓ1°QÒ6ØˆØ‰à Ÿ.™.×8Ñ8ˆØ Ÿ.™.×8Ñ8ˆä˜Ÿ™¨°Ó3€Ið ˜|Ñ+€GÜ˜VÐ%5°qÓ9€NØ˜ÒÜØKó
ð 	
ô "×1Ñ1×=Ñ=Ø	�‰×	Ñ	 §¡× 5Ñ 5Ð6ØØ5ä)¨-Ñ8ØØ×"Ñ" eÑ+ð
 (Ø'Ø3ð >ó €Jô$ ˜ YÔ/Øò 9ˆ	Ø×-Ñ-¨iÕ8ð9àò 9ˆ	Ø×-Ñ-¨iÕ8ð9ð Ðó    c                 óæ  — t        | j                  dd«      t        j                  k(  }t        | j                  dd«      t        j                  k(  }t        | j                  dd«      t        j
                  k(  }t        | dd«      }t        | j                  dd«      }	t        | j                  dd«      }
|
|	k(  s|
dk(  rd}
|rdnd}t        | j                  d	d
«      }|dk(  }t        | dd«      }t        j                  j                  | j                  j                  |	t        |   |||| j                  dk(  |||
|¬«      }t        |j                  |d¬«       |D ]  }|j                  |«       Œ |S )r   r   Nr   r   r   r   Úheads_kvr   Úrotary_interleaveTr   r   r   )	r   r   r   Úalibir   Ú
rotary_dimrA   Únum_heads_kvr   F©Úwith_encoder_attention)r!   r"   r   r#   r$   r&   r'   Úrope_configr
   ÚTransformerDecoderModelSpecr)   r+   r,   r-   Úset_transformer_decoderÚregister_vocabulary)r1   r2   r3   r4   r    r   r5   r6   r7   r8   Únum_kvrC   rA   r   r   r9   r;   s                    r<   Ú_get_model_spec_lmrL   \   s‘  € ô
 	�×!Ñ!Ð#;¸TÓBÜ×(Ñ(ñ	)ð ô
 	�×!Ñ!Ð#;¸TÓBÜ×&Ñ&ñ	'ð ô
 	�×!Ñ!Ð#;¸TÓBÜ×%Ñ%ñ	&ð ô ˜FÐ$7¸Ó@€MÜ˜Ÿ™¨°Ó3€IÜ�V—^‘^ Z°Ó3€FØ�Ò˜f¨škØˆÙ!‘ t€JÜ × 2Ñ 2Ð4GÈÓNÐØ˜|Ñ+€GÜ˜VÐ%5°qÓ9€Nä!×=Ñ=×IÑIØ�‰×ÑØÜ)¨-Ñ8ØØ5ØØ×"Ñ" eÑ+ØØ+ØØ%ð Jó €Jô Ø×ÑØØ$õð  ò 2ˆ	Ø×&Ñ& yÕ1ð2ð Ðr>   c                 ó"   — | d   g}| d   g}||fS )NÚsrcÚtgt© )Úvocabr3   r4   s      r<   Ú
get_vocabsrR   ‘   s#   € Ø˜‘,�€JØ˜‘,�€JØ�zÐ!Ð!r>   c                   ó"   — e Zd ZdZdefd„Zd„ Zy)ÚEoleConverterz(Converts models generated by OpenNMT-py.Ú
model_pathc                 ó   — || _         y)z‰Initializes the OpenNMT-py converter.

        Arguments:
          model_path: Path to the OpenNMT-py PyTorch model (.pt file).
        N)Ú_model_path)ÚselfrU   s     r<   Ú__init__zEoleConverter.__init__š   s   € ð &ˆÕr>   c           	      óÆ  — dd l }t        | j                  d¬«      }t        |j                  «      }|j                  |«      \  }}}t        |«      }||_        t        |«      \  }}	|j                  j                  j                  dk(  r2t        |j                  |j                  «       ||	t        |«      ¬«      }
nEt        |j                  |j                  «       ||	t        |«      ¬«      }
|d   |
j                  _        |d   d   |
j                  _        |d   d	   |
j                  _        |d   d
   |
j                  _        t'        |dd«      |
j                  _        |
S )Nr   Údummy)rU   rN   Útransformer_lm)r    Údecoder_start_tokenÚspecialsÚ	bos_tokenÚ	eos_tokenÚ	unk_tokenÚnorm_epsg�íµ ÷Æ°>)Útorchr   rW   r   ÚmodelÚfor_inferencer   rR   r'   Údecoder_typerL   Ú
state_dictÚlenr=   r1   r]   r_   r`   ra   r!   Úlayer_norm_epsilon)rX   rc   r1   Úmodel_classrd   ÚvocabsÚmodel_configÚvocabs_dictr3   r4   Úspecs              r<   Ú_loadzEoleConverter._load¢   s;  € Ûä¨$×*:Ñ*:ÀÔHˆä% f§l¡lÓ3ˆØ&1×&?Ñ&?ÀÓ&GÑ#ˆˆv�|Ü$ VÓ,ˆà#ˆŒÜ!+¨KÓ!8Ñˆ
�Jà�<‰<×Ñ×,Ñ,Ð0@Ò@Ü%Ø—‘Ø× Ñ Ó"ØØÜ&)¨*£oô‰Dô +Ø—‘Ø× Ñ Ó"ØØÜ&)¨*£oôˆDð /5Ð5JÑ.KˆD�K‰KÔ+à & zÑ 2°;Ñ ?ˆ�‰ÔØ & zÑ 2°;Ñ ?ˆ�‰ÔØ & zÑ 2°;Ñ ?ˆ�‰ÔÜ)0°¸ÀTÓ)Jˆ�‰Ô&àˆr>   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrrY   ro   rP   r>   r<   rT   rT   —   s   „ Ù2ð& 3ó &ó#r>   rT   c                 ó\   — t        | j                  |«       t        | j                  |«       y ©N)Úset_transformer_encoderr*   rI   r'   )rn   r2   s     r<   r.   r.   È   s   € Ü˜DŸL™L¨)Ô4Ü˜DŸL™L¨)Õ4r>   c                 ó¦   — t        | |d«       t        | j                  |d«       t        | j                  «      D ]  \  }}t        ||d|z  «       Œ y )NÚsrc_embzencoder.layer_normzencoder.transformer_layers.%d)Úset_input_layersÚset_layer_normr-   Ú	enumerateÚlayerÚset_transformer_encoder_layer)rn   r2   Úir}   s       r<   rw   rw   Í   sP   € Ü�T˜9 iÔ0Ü�4—?‘? IÐ/CÔDÜ˜dŸj™jÓ)ò 
‰ˆˆ5Ü%Ø�9Ð=ÀÑAõ	
ñ
r>   c                 óØ   — t        | |d«       t        | j                  |d«       t        | j                  «      D ]  \  }}t        ||d|z  |¬«       Œ t        | j                  |d«       y )NÚtgt_embzdecoder.layer_normzdecoder.transformer_layers.%drE   Ú	generator)rz   r{   r-   r|   r}   Úset_transformer_decoder_layerÚ
set_linearÚ
projection)rn   r2   rF   r   r}   s        r<   rI   rI   Ö   sf   € Ü�T˜9 iÔ0Ü�4—?‘? IÐ/CÔDÜ˜dŸj™jÓ)ò 
‰ˆˆ5Ü%ØØØ+¨aÑ/Ø#9ö		
ð
ô ˆt�‰ 	¨;Õ7r>   c                 óÂ   — t        | d«      rt        | j                  |d|z  «       nd| _        | j                  }t        |t        «      r|d   }t        ||d|z  «       y )NÚposition_encodingsú%s.peFr   z%s.embeddings)ÚhasattrÚset_position_encodingsr‡   Úscale_embeddingsr"   Ú
isinstanceÚlistÚset_embeddings)rn   r2   ÚscopeÚembeddings_specss       r<   rz   rz   ä   sd   € ÜˆtÐ)Ô*ÜØ×#Ñ#ØØ�e‰Oõ	
ð !&ˆÔà—‘ÐäÐ"¤DÔ)Ø+¨AÑ.ÐÜÐ# Y°À%Ñ0GÕHr>   c                 ó   — t        | j                  |d|z  d¬«       t        | j                  j                  |d|z  «       t        | j                  j                  |d|z  «       t        | j                  |d|z  «       y )Nú%s.self_attnT©Úself_attentionú%s.input_layernormú%s.post_attention_layernormú%s.mlp)Úset_multi_head_attentionr”   r{   r-   ÚffnÚset_ffn©rn   r2   r�   s      r<   r~   r~   õ   s|   € ÜØ×ÑØØ˜ÑØõ	ô Ø×Ñ×&Ñ&¨	Ð3GÈ%Ñ3Oôô Ø�‰×Ñ˜YÐ(EÈÑ(Môô ˆD�H‰H�i ¨EÑ!1Õ2r>   c                 ó€  — t        | j                  |d|z  d¬«       t        | j                  j                  |d|z  «       |r>t        | j                  |d|z  «       t        | j                  j                  |d|z  «       t        | j
                  j                  |d|z  «       t        | j
                  |d|z  «       y )	Nr’   Tr“   r•   z%s.context_attnz%s.precontext_layernormr–   r—   )r˜   r”   r{   r-   Ú	attentionr™   rš   )rn   r2   r�   rF   s       r<   rƒ   rƒ     s·   € ÜØ×ÑØØ˜ÑØõ	ô Ø×Ñ×&Ñ&¨	Ð3GÈ%Ñ3Oôñ Ü  §¡°Ð<MÐPUÑ<UÔVÜØ�N‰N×%Ñ% yÐ2KÈeÑ2Sô	
ô Ø�‰×Ñ˜YÐ(EÈÑ(Môô ˆD�H‰H�i ¨EÑ!1Õ2r>   c                 óº   — t        | j                  |d|z  «       t        | j                  |d|z  «       t        | d«      rt        | j                  |d|z  «       y y )Nz%s.gate_up_projz%s.down_projÚlinear_0_noactz
%s.up_proj)r„   Úlinear_0Úlinear_1r‰   rŸ   r›   s      r<   rš   rš     sT   € Üˆt�}‰}˜iÐ):¸UÑ)BÔCÜˆt�}‰}˜i¨¸%Ñ)?Ô@ÜˆtÐ%Ô&Ü�4×&Ñ&¨	°<À%Ñ3GÕHð 'r>   c                 óè  — |r‡t        d«      D �cg c]  }t        j                  «       ‘Œ }}t        |d   |d|z  «       t        |d   |d|z  «       t        |d   |d|z  «       t	        j
                  | j                  d   |«       n�t        | j                  d   |d|z  «       t        d«      D �cg c]  }t        j                  «       ‘Œ }}t        |d   |d|z  «       t        |d   |d|z  «       t	        j
                  | j                  d   |«       t        | j                  d   |d	|z  «       t        | d
«      r&t        |d|z  «      | _	        | j                  | _
        y y c c}w c c}w )Né   r   z%s.linear_queryr   z%s.linear_keysé   z%s.linear_valuesr   z%s.final_linearÚrelative_position_keysz'%s.relative_positions_embeddings.weight)Úranger	   Ú
LinearSpecr„   r   Úfuse_linearÚlinearr‰   Ú_get_variabler¥   Úrelative_position_values)rn   r2   r�   r”   Ú_Úsplit_layerss         r<   r˜   r˜   !  s[  € ÙÜ:?À»(ÖC°Qœ×.Ñ.Õ0ÐCˆÐCÜ�< ‘? IÐ/@À5Ñ/HÔIÜ�< ‘? IÐ/?À%Ñ/GÔHÜ�< ‘? IÐ/AÀEÑ/IÔJÜ×Ñ˜$Ÿ+™+ a™.¨,Õ7ä�4—;‘;˜q‘> 9Ð.?À%Ñ.GÔHÜ:?À»(ÖC°Qœ×.Ñ.Õ0ÐCˆÐCÜ�< ‘? IÐ/?À%Ñ/GÔHÜ�< ‘? IÐ/AÀEÑ/IÔJÜ×Ñ˜$Ÿ+™+ a™.¨,Ô7Üˆt�{‰{˜2‰ 	Ð+<¸uÑ+DÔEÜˆtÐ-Ô.Ü&3ØÐ@À5ÑHó'
ˆÔ#ð )-×(CÑ(CˆÕ%ð	 /ùò Dùò Ds   �E*Â4E/c                 óä   — 	 t        |d|z  «      | _        	 t        |d|z  «      | _        y # t        $ r+ t        |d|z  «      | _        t        |d|z  «      | _        Y ŒIw xY w# t        $ r Y y w xY w)Nú	%s.weightz%s.a_2z%s.b_2ú%s.bias)rª   ÚgammaÚKeyErrorÚbetar›   s      r<   r{   r{   6  s|   € ð?Ü" 9¨k¸EÑ.AÓBˆŒ
ð
Ü! )¨Y¸Ñ->Ó?ˆ�	øô ò ?ä" 9¨h¸Ñ.>Ó?ˆŒ
Ü! )¨X¸Ñ-=Ó>ˆŽ	ð?ûô ò Ùðús    ‚, —A# ¬1A ÁA Á#	A/Á.A/c                 óh   — t        |d|z  «      | _        |j                  d|z  «      }|�|| _        y y )Nr¯   r°   )rª   ÚweightÚgetÚbias)rn   r2   r�   r·   s       r<   r„   r„   C  s:   € Ü 	¨;¸Ñ+>Ó?€D„KØ�=‰=˜ UÑ*Ó+€DØÐØˆ�	ð r>   c                 ó,   — t        |d|z  «      | _        y )Nr¯   )rª   rµ   r›   s      r<   rŽ   rŽ   J  s   € Ü 	¨;¸Ñ+>Ó?€D…Kr>   c                 óH   — t        |d|z  «      j                  «       | _        y )Nrˆ   )rª   ÚsqueezeÚ	encodingsr›   s      r<   rŠ   rŠ   N  s   € Ü" 9¨g¸©oÓ>×FÑFÓH€D…Nr>   c                 ó   — | |   S rv   rP   )r2   Únames     r<   rª   rª   R  s   € Ø�T‰?Ðr>   c                  ó  — t        j                  t         j                  ¬«      } | j                  ddd¬«       t	        j
                  | «       | j                  «       }t        |j                  «      j                  |«       y )N)Úformatter_classz--model_pathTzModel path.)ÚrequiredÚhelp)
ÚargparseÚArgumentParserÚArgumentDefaultsHelpFormatterÚadd_argumentr   Údeclare_argumentsÚ
parse_argsrT   rU   Úconvert_from_args)ÚparserÚargss     r<   ÚmainrË   V  se   € Ü×$Ñ$Ü ×>Ñ>ô€Fð ×Ñ˜°¸MÐÔJÜ×Ñ Ô'Ø×ÑÓ€DÜ�$—/‘/Ó"×4Ñ4°TÕ:r>   Ú__main__)T)F))rÂ   Úeole.config.runr   Úeole.constantsr   Úeole.inputters.inputterr   Úeole.models.modelr   Úctranslate2.convertersr   Ú ctranslate2.converters.converterr   Úctranslate2.specsr	   r
   Ú
ActivationÚGELUÚGELUTanhÚRELUÚSWISHr,   r=   rL   rR   rT   r.   rw   rI   rz   r~   rƒ   rš   r˜   r{   r„   rŽ   rŠ   rª   rË   rp   rP   r>   r<   ú<module>rÙ      sá   ðÛ å )Ý /Ý 2Ý -å (Ý 6ß ;ð ×"Ñ"×'Ñ'Ø×'Ñ'×0Ñ0Ø×"Ñ"×'Ñ'Ø×(Ñ(×.Ñ.ñ	Ð òEòP2òj"ô.�Iô .òb5ò

ó8òIò"3ó 3ò*IóDò*
òò@òIòò;ð ˆzÒÙ…Fð r>   