§
    ãóÉj'3  ã                   ó`  — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 h d£Ze	j        j        e	j        j        e	j        j        e	j        j        e	j        j        dœZd„ Zd	„ Z G d
„ de¦  «        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 e!dk    r e ¦   «          dS dS )é    N)ÚOptional)Úutils)Ú	Converter)Úcommon_specÚtransformer_spec>   ÚbartÚtransformerÚtransformer_lmÚtransformer_alignÚmultilingual_transformer)ÚgeluÚgelu_accurateÚ	gelu_fastÚreluÚswishc                 óÌ  — dd l }t          | dd¦  «        }|j        j        | j                 }t          j        ¦   «         } ||t          v d|›d| j        ›dd                     t          ¦  «        ›d�¦  «         | 	                    ¦   «           ||t          v d	|›d
d                     t                               ¦   «         ¦  «        ›d�¦  «          |t          | dd¦  «         d¦  «          |t          | dd¦  «         d¦  «         |dk    rš || j         d¦  «          || j         d¦  «         | 	                    ¦   «          t          j                             | j        | j        | j        t          |         t          | dd¦  «        | j        | j        | j        k    ¬¦  «        S  || j        | j        k    d¦  «          || j        | j        k    d¦  «         | 	                    ¦   «          t          j                             | j        | j        f| j        | j        t          |         t          | dd¦  «        t          | dd¦  «        t          | dd¦  «        ¬¦  «        S )Nr   Úactivation_fnr   zModel 'z' used by architecture 'z*' is not supported (supported models are: z, ú)zOption --activation-fn z. is not supported (supported activations are: Úno_token_positional_embeddingsFz8Option --no-token-positional-embeddings is not supportedÚlang_tok_replacing_bos_eosz4Option --lang-tok-replacing-bos-eos is not supportedr
   z.Option --character-embeddings is not supportedz(Option --adaptive-input is not supportedÚlayernorm_embedding)Úpre_normÚ
activationr   Úno_final_normÚproject_in_outzZOptions --encoder-normalize-before and --decoder-normalize-before must have the same valuezXOptions --encoder-attention-heads and --decoder-attention-heads must have the same valueÚalignment_layeréÿÿÿÿÚalignment_heads)r   r   r   r   r   )ÚfairseqÚgetattrÚmodelsÚARCH_MODEL_NAME_REGISTRYÚarchr   ÚConfigurationCheckerÚ_SUPPORTED_MODELSÚjoinÚvalidateÚ_SUPPORTED_ACTIVATIONSÚkeysÚcharacter_embeddingsÚadaptive_inputr   ÚTransformerDecoderModelSpecÚfrom_configÚdecoder_layersÚdecoder_attention_headsÚdecoder_normalize_beforeÚno_decoder_final_normÚdecoder_input_dimÚdecoder_embed_dimÚencoder_normalize_beforeÚencoder_attention_headsÚTransformerSpecÚencoder_layers)Úargsr   r   Ú
model_nameÚchecks        úƒ/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/ctranslate2/converters/fairseq.pyÚ_get_model_specr<      sÔ  € Ø€N€N€Nå˜D /°6Ñ:Ô:€MØ”Ô8¸¼ÔC€JåÔ&Ñ(Ô(€EØ	€EØÕ'Ð'Ð'àˆ:ˆ:�t”y�y�y $§)¢)Õ,=Ñ">Ô">Ð">Ð">ð	@ñô ð ð
 
‡N‚NÑÔÐØ	€EØÕ/Ð/Ð/àˆ=ˆ=˜$Ÿ)š)Õ$:×$?Ò$?Ñ$AÔ$AÑBÔBÐBÐBð	Dñô ð ð
 
€EÝ�DÐ:¸EÑBÔBÐBØBñô ð ð 
€EÝ�DÐ6¸Ñ>Ô>Ð>Ø>ñô ð ð
 Ð%Ò%Ð%ØˆØÔ)Ð)Ø<ñ	
ô 	
ð 	
ð 	ˆØÔ#Ð#Ø6ñ	
ô 	
ð 	
ð 	�ŠÑÔÐåÔ;×GÒGØÔØÔ(ØÔ2Ý-¨mÔ<Ý '¨Ð.CÀUÑ KÔ KØÔ4ØÔ1°TÔ5KÒKð Hñ 
ô 
ð 	
ð 	ˆØÔ)¨TÔ-JÒJð'ñ	
ô 	
ð 	
ð
 	ˆØÔ(¨DÔ,HÒHð'ñ	
ô 	
ð 	
ð
 	�ŠÑÔÐåÔ/×;Ò;ØÔ  $Ô"5Ð6ØÔ(ØÔ2Ý-¨mÔ<Ý# DÐ*;¸RÑ@Ô@Ý# DÐ*;¸QÑ?Ô?Ý '¨Ð.CÀUÑ KÔ Kð <ñ 
ô 
ð 	
ó    c                 ó$   — d„ | j         D ¦   «         S )Nc                 ó"   — g | ]}|d k    rdn|‘ŒS )z<pad>z<blank>© )Ú.0Útokens     r;   ú
<listcomp>z_get_vocab.<locals>.<listcomp>e   s&   € ÐUÐUÐU¸˜ 'Ò)Ð)ˆIˆI¨uÐUÐUÐUr=   )Úsymbols)Ú
dictionarys    r;   Ú
_get_vocabrF   d   s   € ØUÐUÀ*ÔBTÐUÑUÔUÐUr=   c                   ó~   — e Zd ZdZ	 	 	 	 	 	 ddededee         dee         dee         d	ed
ee         defd„Zd„ ZdS )ÚFairseqConverterz%Converts models trained with Fairseq.NFÚ
model_pathÚdata_dirÚsource_langÚtarget_langÚfixed_dictionaryÚno_default_special_tokensÚuser_dirÚunsafe_deserializationc	                 óv   — || _         || _        || _        || _        || _        || _        || _        || _        dS )a5  Initializes the Fairseq converter.

        Arguments:
          model_path: Path to the Fairseq PyTorch model (.pt file).
          data_dir: Path to the Fairseq data directory containing vocabulary files.
          source_lang: Source language (may be required if not declared in the model).
          target_lang: Target language (may be required if not declared in the model).
          fixed_dictionary: Path to the fixed dictionary for multilingual models.
          no_default_special_tokens: Require all special tokens to be provided by the user
            (e.g. encoder end token, decoder start token).
          user_dir: Path to the user directory containing custom extensions.
          unsafe_deserialization: Allow unsafe pickle deserialization when loading
            trusted legacy checkpoints.
        N)Ú_model_pathÚ	_data_dirÚ_fixed_dictionaryÚ_source_langÚ_target_langÚ_no_default_special_tokensÚ	_user_dirÚ_unsafe_deserialization)	ÚselfrI   rJ   rK   rL   rM   rN   rO   rP   s	            r;   Ú__init__zFairseqConverter.__init__k   sH   € ð2 &ˆÔØ!ˆŒØ!1ˆÔØ'ˆÔØ'ˆÔØ*CˆÔ'Ø!ˆŒØ'=ˆÔ$Ð$Ð$r=   c                 ó  — dd l }dd l}ddl m} | j        r)ddlm}  |t          j        | j        ¬¦  «        ¦  «         |                     ¦   «         5  | 	                    | j
        |                     d¦  «        | j         ¬¦  «        }|d         p|d         d	         }| j        |_        | j        �| j        |_        t#          |d
¦  «        rS|j        rLt&          j                             | j        t&          j                             |j        ¦  «        ¦  «        |_        | j        �| j        |_        | j        �| j        |_        t7          |¦  «        }|j                             |¦  «        }|j                             ||¦  «        }	|	                      ¦   «          |	 !                    |d	         ¦  «         tE          |tF          j$        ¦  «        ratK          |j&        |	j&        d¬¦  «         | '                    tQ          |j)        ¦  «        ¦  «         |j*        s|j+        j,        |j+        _-        n¸t]          |j/        |	j/        ¦  «         tK          |j&        |	j&        ¦  «         | 0                    tQ          |j1        ¦  «        ¦  «         | 2                    tQ          |j3        ¦  «        ¦  «         | j4        rd |j+        _5        n"|j+        j,        |j+        _5        d|j+        _6        |cd d d ¦  «         S # 1 swxY w Y   d S )Nr   )Úcheckpoint_utils)Úimport_user_module)rO   Úcpu)Úmap_locationÚweights_onlyr8   ÚcfgÚmodelÚ	lang_dictF©Úwith_encoder_attentionT)7r   Útorchr]   rX   Úfairseq.utilsr^   ÚargparseÚ	NamespaceÚno_gradÚloadrR   ÚdevicerY   rS   ÚdatarT   rM   Úhasattrrd   ÚosÚpathr&   ÚbasenamerU   rK   rV   rL   r<   ÚtasksÚ
setup_taskr!   Úbuild_modelÚevalÚload_state_dictÚ
isinstancer   r,   Úset_transformer_decoderÚdecoderÚregister_vocabularyrF   rE   Úadd_bos_tokenÚconfigÚ	eos_tokenÚ	bos_tokenÚset_transformer_encoderÚencoderÚregister_source_vocabularyÚsource_dictionaryÚregister_target_vocabularyÚtarget_dictionaryrW   Údecoder_start_tokenÚadd_source_eos)
rZ   r   rg   r]   r^   Ú
checkpointr8   ÚspecÚtaskrc   s
             r;   Ú_loadzFairseqConverter._load�   s+  € ØˆˆˆØˆˆˆà,Ð,Ð,Ð,Ð,Ð,àŒ>ð 	LØ8Ð8Ð8Ð8Ð8Ð8àÐ�xÔ1¸4¼>ÐJÑJÔJÑKÔKÐKà�]Š]‰_Œ_ð 4	ð 4	ØŸšØÔ Ø"Ÿ\š\¨%Ñ0Ô0Ø!%Ô!=Ð=ð $ñ ô ˆJð
 ˜fÔ%ÐC¨°EÔ):¸7Ô)CˆDàœˆDŒIØÔ%Ð1Ø(,Ô(>�Ô%Ý�t˜[Ñ)Ô)ð ¨d¬nð Ý!#¤§¢Ø”N¥B¤G×$4Ò$4°T´^Ñ$DÔ$Dñ"ô "�”ð Ô Ð,Ø#'Ô#4�Ô àÔ Ð,Ø#'Ô#4�Ô å" 4Ñ(Ô(ˆDà”=×+Ò+¨DÑ1Ô1ˆDØ”N×.Ò.¨t°TÑ:Ô:ˆEØ�JŠJ‰LŒLˆLØ×!Ò! *¨WÔ"5Ñ6Ô6Ð6å˜$Õ 0Ô LÑMÔMð 6Ý'Ø”LØ”MØ+0ðñ ô ð ð ×(Ò(­°D´OÑ)DÔ)DÑEÔEÐEØÔ)ð BØ,0¬KÔ,A�D”KÔ)øõ (¨¬°e´mÑDÔDÐDÝ'¨¬°e´mÑDÔDÐDà×/Ò/µ
¸4Ô;QÑ0RÔ0RÑSÔSÐSØ×/Ò/µ
¸4Ô;QÑ0RÔ0RÑSÔSÐSØÔ2ð 6Ø6:�D”KÔ3Ð3à6:´kÔ6K�D”KÔ3Ø15�D”KÔ.àði4	ð 4	ð 4	ð 4	ñ 4	ô 4	ð 4	ð 4	ð 4	ð 4	ð 4	ð 4	øøøð 4	ð 4	ð 4	ð 4	ð 4	ð 4	s   ÁJK<Ë<L ÌL )NNNFNF)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Úboolr[   r‹   r@   r=   r;   rH   rH   h   sµ   € € € € € Ø/Ð/ð &*Ø%)Ø*.Ø*/Ø"&Ø',ð >ð  >àð >ð ð >ð ˜c”]ð	 >ð
 ˜c”]ð >ð # 3œ-ð >ð $(ð >ð ˜3”-ð >ð !%ð >ð  >ð  >ð  >ðD?ð ?ð ?ð ?ð ?r=   rH   c                 ó  — t          | |¦  «         t          | j        |j        ¦  «        D ]\  }}t	          ||¦  «         Œ|j        �t          | j        |j        ¦  «         |j        �t          | j        |j        ¦  «         d S d S ©N)Úset_input_layersÚzipÚlayerÚlayersÚset_transformer_encoder_layerÚ
layer_normÚset_layer_normr   )r‰   ÚmoduleÚ
layer_specr–   s       r;   r€   r€   Ï   s’   € Ý�T˜6Ñ"Ô"Ð"Ý  ¤¨V¬]Ñ;Ô;ð 9ð 9Ñˆ
�EÝ% j°%Ñ8Ô8Ð8Ð8ØÔÐ$Ý�t”¨Ô(9Ñ:Ô:Ð:ØÔ!Ð-Ý�tÔ/°Ô1KÑLÔLÐLÐLÐLð .Ð-r=   Tc                 óÊ  — t          | |¦  «         t          | j        |j        ¦  «         t	          | j        |j        ¦  «        D ]\  }}t          |||¬¦  «         Œ|j        �t          | j        |j        ¦  «         |j
        �t          | j
        |j
        ¦  «         |j        �t          | j        |j        ¦  «         |j        �t          | j        |j        ¦  «         d S d S )Nre   )r”   Ú
set_linearÚ
projectionÚoutput_projectionr•   r–   r—   Úset_transformer_decoder_layerr™   rš   r   Úproject_in_dimÚ
project_inÚproject_out_dimÚproject_out)r‰   r›   rf   rœ   r–   s        r;   ry   ry   Ù   sø   € Ý�T˜6Ñ"Ô"Ð"ÝˆtŒ Ô 8Ñ9Ô9Ð9Ý  ¤¨V¬]Ñ;Ô;ð 
ð 
Ñˆ
�EÝ%ØØØ#9ð	
ñ 	
ô 	
ð 	
ð 	
ð
 ÔÐ$Ý�t”¨Ô(9Ñ:Ô:Ð:ØÔ!Ð-Ý�tÔ/°Ô1KÑLÔLÐLØÔÐ(Ý�4”? FÔ$9Ñ:Ô:Ð:ØÔÐ)Ý�4Ô# VÔ%;Ñ<Ô<Ð<Ð<Ð<ð *Ð)r=   c                 óÔ   — t          | j        |j        ¦  «         t          t	          | j        t          ¦  «        r| j        d         n| j        |j        ¦  «         |j        | _	        d S )Nr   )
Úset_position_encodingsÚposition_encodingsÚembed_positionsÚset_embeddingsrx   Ú
embeddingsÚlistÚembed_tokensÚembed_scaleÚscale_embeddings©r‰   r›   s     r;   r”   r”   ì   se   € Ý˜4Ô2°FÔ4JÑKÔKÐKÝÝ(¨¬½$Ñ?Ô?ÐTˆŒ˜ÔÐÀTÄ_ØÔñô ð ð #Ô.€DÔÐÐr=   c                 ó¦   — t          | j        |¦  «         t          | j        |j        d¬¦  «         t          | j        j        |j        ¦  «         d S ©NT)Úself_attention)Úset_ffnÚffnÚset_multi_head_attentionr³   Ú	self_attnrš   r™   Úself_attn_layer_normr°   s     r;   r˜   r˜   õ   sO   € ÝˆDŒH�fÑÔÐÝ˜TÔ0°&Ô2BÐSWÐXÑXÔXÐXÝ�4Ô&Ô1°6Ô3NÑOÔOÐOÐOÐOr=   c                 ó   — t          | j        |¦  «         t          | j        |j        d¬¦  «         t          | j        j        |j        ¦  «         |r;t          | j        |j	        ¦  «         t          | j        j        |j
        ¦  «         d S d S r²   )r´   rµ   r¶   r³   r·   rš   r™   r¸   Ú	attentionÚencoder_attnÚencoder_attn_layer_norm)r‰   r›   rf   s      r;   r¡   r¡   û   s‘   € ÝˆDŒH�fÑÔÐÝ˜TÔ0°&Ô2BÐSWÐXÑXÔXÐXÝ�4Ô&Ô1°6Ô3NÑOÔOÐOØð RÝ  ¤°Ô1DÑEÔEÐEÝ�t”~Ô0°&Ô2PÑQÔQÐQÐQÐQðRð Rr=   c                 ó¢   — t          | j        |j        ¦  «         t          | j        |j        ¦  «         t          | j        |j        ¦  «         d S r“   )rš   r™   Úfinal_layer_normrž   Úlinear_0Úfc1Úlinear_1Úfc2r°   s     r;   r´   r´     sE   € Ý�4”? FÔ$;Ñ<Ô<Ð<ÝˆtŒ}˜fœjÑ)Ô)Ð)ÝˆtŒ}˜fœjÑ)Ô)Ð)Ð)Ð)r=   Fc                 ó~  — |r‹d„ t          d¦  «        D ¦   «         }t          |d         |j        ¦  «         t          |d         |j        ¦  «         t          |d         |j        ¦  «         t          j        | j        d         |¦  «         n�t          | j        d         |j        ¦  «         d„ t          d¦  «        D ¦   «         }t          |d         |j        ¦  «         t          |d         |j        ¦  «         t          j        | j        d         |¦  «         t          | j        d         |j        ¦  «         d S )Nc                 ó4   — g | ]}t          j        ¦   «         ‘ŒS r@   ©r   Ú
LinearSpec©rA   Ú_s     r;   rC   z,set_multi_head_attention.<locals>.<listcomp>  ó!   € ÐCÐCÐC°Q�Ô.Ñ0Ô0ÐCÐCÐCr=   é   r   é   é   c                 ó4   — g | ]}t          j        ¦   «         ‘ŒS r@   rÅ   rÇ   s     r;   rC   z,set_multi_head_attention.<locals>.<listcomp>  rÉ   r=   r   )	Úrangerž   Úq_projÚk_projÚv_projr   Úfuse_linearÚlinearÚout_proj)r‰   r›   r³   Úsplit_layerss       r;   r¶   r¶   
  s  € Øð 8ØCÐC½%À¹(¼(ÐCÑCÔCˆÝ�< ”? F¤MÑ2Ô2Ð2Ý�< ”? F¤MÑ2Ô2Ð2Ý�< ”? F¤MÑ2Ô2Ð2ÝÔ˜$œ+ aœ.¨,Ñ7Ô7Ð7Ð7å�4”;˜q”> 6¤=Ñ1Ô1Ð1ØCÐC½%À¹(¼(ÐCÑCÔCˆÝ�< ”? F¤MÑ2Ô2Ð2Ý�< ”? F¤MÑ2Ô2Ð2ÝÔ˜$œ+ aœ.¨,Ñ7Ô7Ð7ÝˆtŒ{˜2Œ ¤Ñ0Ô0Ð0Ð0Ð0r=   c                 ó~   — |j                              ¦   «         | _        |j                             ¦   «         | _        d S r“   )ÚweightÚnumpyÚgammaÚbiasÚbetar°   s     r;   rš   rš     s0   € Ø”×$Ò$Ñ&Ô&€D„JØ”×!Ò!Ñ#Ô#€D„I€I€Ir=   c                 ó�   — |j                              ¦   «         | _         |j        � |j                             ¦   «         | _        d S d S r“   )r×   rØ   rÚ   r°   s     r;   rž   rž     s@   € Ø”-×%Ò%Ñ'Ô'€D„KØ„{ÐØ”K×%Ò%Ñ'Ô'ˆŒ	ˆ	ˆ	ð Ðr=   c                 óB   — |j                              ¦   «         | _         d S r“   )r×   rØ   r°   s     r;   rª   rª   %  s   € Ø”-×%Ò%Ñ'Ô'€D„K€K€Kr=   c                 ó°   — dd l }t          ||j        j        ¦  «        r|j        n|j        }|                     ¦   «         |j        dz   d …         | _        d S )Nr   rË   )	rg   rx   ÚnnÚ	Embeddingr×   ÚweightsrØ   Úpadding_idxÚ	encodings)r‰   r›   rg   r×   s       r;   r§   r§   )  sR   € Ø€L€L€Lå(¨°´Ô1CÑDÔDÐXˆVŒ]ˆ]È&Ì.€FØ—\’\‘^”^ FÔ$6¸Ñ$:Ð$<Ð$<Ô=€D„N€N€Nr=   c            
      ó´  — t          j        t           j        ¬¦  «        } |                      ddd¬¦  «         |                      ddd¬¦  «         |                      dd	¬
¦  «         |                      dd¬
¦  «         |                      dd¬
¦  «         |                      dd¬
¦  «         |                      ddd¬¦  «         |                      ddd¬¦  «         t	          j        | ¦  «         |                      ¦   «         }t          |j        |j	        |j
        |j        |j        |j        |j        |j        ¬¦  «        }|                     |¦  «         d S )N)Úformatter_classz--model_pathTzModel path.)ÚrequiredÚhelpz
--data_dirz=Data directory containing the source and target vocabularies.z
--user_dirz'Directory containing custom extensions.)rç   z--fixed_dictionaryz)Fixed dictionary for multilingual models.z--source_langzOSource language. This argument is used to find dictionary file from `data_dir`.z--target_langzOTarget language. This argument is used to find dictionary file from `data_dir`.z--no_default_special_tokensÚ
store_truezjRequire all special tokens to be provided by the user during inference, including the decoder start token.)Úactionrç   z--unsafe_deserializationzuAllow loading legacy checkpoints with unsafe pickle deserialization. Only enable this option for trusted checkpoints.)rK   rL   rM   rN   rO   rP   )ri   ÚArgumentParserÚArgumentDefaultsHelpFormatterÚadd_argumentr   Údeclare_argumentsÚ
parse_argsrH   rI   rJ   rK   rL   rM   rN   rO   rP   Úconvert_from_args)Úparserr8   Ú	converters      r;   Úmainrò   0  sË  € ÝÔ$Ý Ô>ðñ ô €Fð ×Ò˜°¸MÐÑJÔJÐJØ
×ÒØØØLð ñ ô ð ð
 ×ÒØØ6ð ñ ô ð ð ×ÒØØ8ð ñ ô ð ð ×ÒØØ^ð ñ ô ð ð ×ÒØØ^ð ñ ô ð ð ×ÒØ%Øð1ð	 ñ ô ð ð ×ÒØ"Øð?ð	 ñ ô ð õ Ô Ñ'Ô'Ð'Ø×ÒÑÔ€DÝ ØŒØŒØÔ$ØÔ$ØÔ.Ø"&Ô"@Ø”Ø#Ô:ð	ñ 	ô 	€Ið ×Ò Ñ%Ô%Ð%Ð%Ð%r=   Ú__main__)T)F)"ri   rp   Útypingr   Úctranslate2.convertersr   Ú ctranslate2.converters.converterr   Úctranslate2.specsr   r   r%   Ú
ActivationÚGELUÚGELUTanhÚRELUÚSWISHr(   r<   rF   rH   r€   ry   r”   r˜   r¡   r´   r¶   rš   rž   rª   r§   rò   rŒ   r@   r=   r;   ú<module>rý      sý  ðØ €€€Ø 	€	€	€	à Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð Ð ð Ô"Ô'Ø Ô+Ô4ØÔ'Ô0ØÔ"Ô'ØÔ#Ô)ðð Ð ðE
ð E
ð E
ðPVð Vð Vðdð dð dð dð d�yñ dô dð dðNMð Mð Mð=ð =ð =ð =ð&/ð /ð /ðPð Pð PðRð Rð Rð Rð*ð *ð *ð1ð 1ð 1ð 1ð $ð $ð $ð
(ð (ð (ð(ð (ð (ð>ð >ð >ð6&ð 6&ð 6&ðr ˆzÒÐØ€D�F„F€F€F€Fð Ðr=   