Ë
    èÍ:jÖn ã                   óž
  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlZ		 d dl
Z
d dlZd dlZd dlmZ d dlmZ d dlmZmZmZmZmZmZmZ ej4                  j6                  ej4                  j8                  ej4                  j8                  ej4                  j6                  ej4                  j8                  ej4                  j:                  ej4                  j<                  ej4                  j>                  ej4                  j>                  dœ	Z ejB                  jD                  ejB                  jF                  ejB                  jH                  ejB                  jF                  dœZ%ejL                  jN                  ejL                  jP                  dœZ)i Z*d	„ Z+ G d
„ de«      Z, G d„ de jZ                  «      Z. e+d«       G d„ de.«      «       Z/ e+d«       G d„ de/«      «       Z0 e+d«       G d„ de/«      «       Z1 e+d«       G d„ de/«      «       Z2 e+d«       G d„ de/«      «       Z3 e+d«       G d„ de/«      «       Z4 e+d «       G d!„ d"e.«      «       Z5 e+d#«       G d$„ d%e.«      «       Z6 e+d&«       G d'„ d(e.«      «       Z7 e+d)«       G d*„ d+e.«      «       Z8 e+d,«       G d-„ d.e.«      «       Z9 e+d/«       G d0„ d1e/«      «       Z: e+d2«       G d3„ d4e/«      «       Z; e+d5«       G d6„ d7e/«      «       Z< e+d8«       G d9„ d:e.«      «       Z= e+d;«       G d<„ d=e=«      «       Z> e+d>«       G d?„ d@e.«      «       Z? e+dA«       G dB„ dCe.«      «       Z@ e+dD«       G dE„ dFe.«      «       ZA e+dG«       G dH„ dIe.«      «       ZB e+dJ«       G dK„ dLe.«      «       ZC e+dM«       e+dN«       G dO„ dPe.«      «       «       ZD e+dQ«       e+dR«       G dS„ dTe.«      «       «       ZE e+dU«       G dV„ dWe.«      «       ZF e+dX«       G dY„ dZe.«      «       ZG e+d[«       G d\„ d]e.«      «       ZH e+d^«       G d_„ d`e.«      «       ZI e+da«       G db„ dce.«      «       ZJ e+dd«       G de„ dfe.«      «       ZK e+dg«       G dh„ die.«      «       ZL e+dj«       G dk„ dleL«      «       ZM e+dm«       G dn„ doe.«      «       ZN e+dp«       G dq„ dre.«      «       ZO e+ds«       G dt„ due.«      «       ZP e+dv«       G dw„ dxe.«      «       ZQ e+dy«       G dz„ d{e.«      «       ZRd|„ ZSeTd}k(  r eS«        g d~¢g d¢g d€¢g d�¢g d‚¢g dƒ¢g d„¢g d…¢g d†¢g d‡¢g dˆ¢d‰œZU e+dŠ«       G d‹„ dŒe.«      «       ZV e+d�«       G dŽ„ d�e.«      «       ZWy# e$ r Y �Œw xY w)�é    N)ÚListÚOptional)Úutils)Ú	Converter)Úattention_specÚcommon_specÚ
model_specÚtransformer_specÚwav2vec2_specÚwav2vec2bert_specÚwhisper_spec)	ÚgeluÚ	gelu_fastÚgelu_newÚgelu_pythonÚgelu_pytorch_tanhÚ
quick_geluÚreluÚsiluÚswish)ÚlinearÚsuÚllama3Úlongrope)ÚgemmÚgemvc                 ó   ‡ — ˆ fd„}|S )z5Registers a model loader for this configuration name.c                 ó$   •—  | «       t         ‰<   | S ©N)Ú_MODEL_LOADERS)ÚclsÚconfig_names    €úx/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/ctranslate2/converters/transformers.pyÚ	decoratorz"register_loader.<locals>.decorator<   s   ø€ Ù&)£eŒ�{Ñ#Øˆ
ó    © )r"   r$   s   ` r#   Úregister_loaderr'   9   s   ø€ ôð Ðr%   c                   ór   — e Zd ZdZ	 	 	 	 	 	 ddedee   deee      dedee   ded	efd
„Zd„ Z	d„ Z
d„ Zd„ Zy)ÚTransformersConverterz/Converts models from Hugging Face Transformers.NÚmodel_name_or_pathÚactivation_scalesÚ
copy_filesÚload_as_float16ÚrevisionÚlow_cpu_mem_usageÚtrust_remote_codec                 óf   — || _         || _        || _        || _        || _        || _        || _        y)a  Initializes the converter.

        Arguments:
          model_name_or_path: Name of the pretrained model to download, or path to the
            directory containing the pretrained model.
          activation_scales: Path to the pre-computed activation scales. Models may
            use them to rescale some weights to smooth the intermediate activations
            and improve the quantization accuracy. See
            https://github.com/mit-han-lab/smoothquant.
          copy_files: List of filenames to copy from the Hugging Face model to the
            converted model directory.
          load_as_float16: Load the model weights as float16. More precisely, the model
            will be loaded with ``from_pretrained(..., dtype=torch.float16)``.
          revision: Revision of the model to download from the Hugging Face Hub.
          low_cpu_mem_usage: Enable the flag ``low_cpu_mem_usage`` when loading the model
            with ``from_pretrained``.
          trust_remote_code: Allow converting models using custom code.
        N)Ú_model_name_or_pathÚ_activation_scalesÚ_copy_filesÚ_load_as_float16Ú	_revisionÚ_low_cpu_mem_usageÚ_trust_remote_code)Úselfr*   r+   r,   r-   r.   r/   r0   s           r#   Ú__init__zTransformersConverter.__init__F   s;   € ð8 $6ˆÔ Ø"3ˆÔØ%ˆÔØ /ˆÔØ!ˆŒØ"3ˆÔØ"3ˆÕr%   c                 ó\  — t        j                  «       5  t        j                  j	                  | j
                  | j                  ¬«      }|j                  j                  }t        j                  |«      }|€<t        d|›ddj                  t        t        j                  «       «      «      ›d�«      ‚t        t        |j                   «      }t#        |d«      r|j%                  ||«      }t        j&                  }d|i}t#        |d«      r |j)                  |j+                  |«      «       d	| j,                  rt         j.                  nt        |d	d «      xs t        |d
d «      i}| j0                  r| j0                  |d<   | j2                  r| j2                  |d<   | j                  r| j                  |d<    | j4                  || j
                  fi |¤|¤Ž}i }	| j                  r| j                  |	d<    | j6                  || j
                  fi |	¤Ž}
 |||
«      }| j8                  r3t        j:                  | j8                  d¬«      }|j=                  ||«       | j>                  r1| j>                  D ]"  }|jA                  | jC                  |«      «       Œ$ |cd d d «       S # 1 sw Y   y xY w)N)r0   z8No conversion is registered for the model configuration z  (supported configurations are: ú, ú)Úget_model_classÚconfigÚget_model_kwargsÚdtypeÚtorch_dtyper.   r/   r0   Úcpu)Úmap_location)"ÚtorchÚno_gradÚtransformersÚ
AutoConfigÚfrom_pretrainedr2   r8   Ú	__class__Ú__name__r    ÚgetÚ
ValueErrorÚjoinÚsortedÚkeysÚgetattrÚarchitecture_nameÚhasattrr>   ÚAutoTokenizerÚupdater@   r5   Úfloat16r6   r7   Ú
load_modelÚload_tokenizerr3   ÚloadÚsmooth_activationr4   Úregister_fileÚget_model_file)r9   r?   r"   ÚloaderÚmodel_classÚtokenizer_classÚextra_kwargsÚkwargsÚmodelÚtokenizer_kwargsÚ	tokenizerÚspecr+   Úfilenames                 r#   Ú_loadzTransformersConverter._loadj   s�  € Ü�]‰]‹_ñ @	Ü!×,Ñ,×<Ñ<Ø×(Ñ(¸D×<SÑ<Sð =ó ˆFð !×*Ñ*×3Ñ3ˆKÜ#×'Ñ'¨Ó4ˆFàˆ~Ý ò # D§I¡I¬f´^×5HÑ5HÓ5JÓ.KÕ$LðNóð ô "¤,°×0HÑ0HÓIˆKÜ�vÐ0Ô1Ø$×4Ñ4°V¸[ÓI�Ü*×8Ñ8ˆOà$ fÐ-ˆLÜ�vÐ1Ô2Ø×#Ñ# F×$;Ñ$;¸FÓ$CÔDð à×,Ò,ô —M’Mä  ¨°$Ó7ò <Ü˜v }°dÓ;ðˆFð �~Š~Ø%)§^¡^��zÑ"Ø×&Ò&Ø.2×.EÑ.E�Ð*Ñ+Ø×&Ò&Ø.2×.EÑ.E�Ð*Ñ+à#�D—O‘OØ˜T×5Ñ5ñØ9?ðØCOñˆEð  "ÐØ×&Ò&Ø8<×8OÑ8OÐ Ð!4Ñ5à+˜×+Ñ+Ø ×!9Ñ!9ñØ=MñˆIñ ˜% Ó+ˆDà×&Ò&Ü$)§J¡JØ×+Ñ+¸%ô%Ð!ð ×(Ñ(¨Ð/@ÔAà×ÒØ $× 0Ñ 0ò F�HØ×&Ñ& t×':Ñ':¸8Ó'DÕEðFð ÷A@	÷ @	ò @	ús   •JJ"Ê"J+c                 ó(   —  |j                   |fi |¤ŽS r   ©rI   )r9   r^   r*   ra   s       r#   rW   z TransformersConverter.load_model­   s   € Ø*ˆ{×*Ñ*Ð+=ÑHÀÑHÐHr%   c                 ó(   —  |j                   |fi |¤ŽS r   ri   )r9   r_   r*   ra   s       r#   rX   z$TransformersConverter.load_tokenizer°   s   € Ø.ˆ×.Ñ.Ð/AÑLÀVÑLÐLr%   c                 ó´  — t         j                  j                  | j                  «      r+t         j                  j	                  | j                  |«      }n"	 t        j                  | j                  |¬«      }|�t         j                  j                  |«      st        d|›d| j                  ›�«      ‚|S # t
        j                  j                  $ r d }Y Œ_w xY w)N)Úrepo_idrf   zFile z does not exist in model )ÚosÚpathÚisdirr2   rN   Úhuggingface_hubÚhf_hub_downloadr   ÚEntryNotFoundErrorÚisfilerM   )r9   rf   rn   s      r#   r\   z$TransformersConverter.get_model_file³   s®   € Ü�7‰7�=‰=˜×1Ñ1Ô2Ü—7‘7—<‘< × 8Ñ 8¸(ÓC‰DðÜ&×6Ñ6Ø ×4Ñ4¸xô�ð ˆ<œrŸw™wŸ~™~¨dÔ3Ýâ˜T×5Ò5ð7óð ð
 ˆøô #×(Ñ(×;Ñ;ò Ø’ðús   Á!B5 Â5CÃC)NNFNFF)rK   Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   Úboolr:   rg   rW   rX   r\   r&   r%   r#   r)   r)   C   sŒ   „ Ù9ð
 ,0Ø*.Ø %Ø"&Ø"'Ø"'ñ"4àð"4ð $ C™=ð"4ð ˜T #™YÑ'ð	"4ð
 ð"4ð ˜3‘-ð"4ð  ð"4ð  ó"4òHAòFIòMór%   r)   c                   ó¬   — e Zd ZdZed„ «       Zej                  d„ «       Zd„ Z	d„ Z
d„ Zd„ Zd„ Zej                  j                   fd	„Zd
„ Zd„ Zd„ Zd„ Zy)ÚModelLoaderzRBase class for loading Transformers models into a CTranslate2 model specification.c                  ó   — y r   r&   ©r9   s    r#   rR   zModelLoader.architecture_nameÊ   s   € àr%   c                 ó   — t        «       ‚r   ©ÚNotImplementedError©r9   rb   s     r#   Úget_model_speczModelLoader.get_model_specÎ   s   € ä!Ó#Ð#r%   c                 óª   — | j                  |«      }| j                  |j                  ||«       | j                  ||«      }| j	                  ||«       |S r   )r�   Ú
set_configr?   Úget_vocabularyÚset_vocabulary)r9   rb   rd   re   Útokenss        r#   Ú__call__zModelLoader.__call__Ò   sM   € Ø×"Ñ" 5Ó)ˆØ�‰˜Ÿ™ U¨IÔ6à×$Ñ$ U¨IÓ6ˆØ×Ñ˜D &Ô)àˆr%   c                 óˆ   — t        |j                  «       j                  «       d„ ¬«      D ��cg c]  \  }}|‘Œ	 c}}S c c}}w )Nc                 ó   — | d   S ©Né   r&   )Úitems    r#   ú<lambda>z,ModelLoader.get_vocabulary.<locals>.<lambda>ß   s
   € ÀÀQÁ€ r%   )Úkey)rO   Ú	get_vocabÚitems)r9   rb   rd   ÚtokenÚ_s        r#   r„   zModelLoader.get_vocabularyÛ   sE   € ô #Ø×#Ñ#Ó%×+Ñ+Ó-Ñ3Gô÷
á��qò ó
ð 	
ùó 
s   ®>c                  ó   — y r   r&   ©r9   re   r†   s      r#   r…   zModelLoader.set_vocabularyã   ó   € Ør%   c                  ó   — y r   r&   ©r9   r?   rb   rd   s       r#   rƒ   zModelLoader.set_configæ   r•   r%   c                 óH   — |j                   |_        |j                  |_        y r   ©ÚweightÚgammaÚbiasÚbeta©r9   re   Úmodules      r#   Úset_layer_normzModelLoader.set_layer_normé   s   € Ø—]‘]ˆŒ
Ø—K‘Kˆ�	r%   c                 ó”  — |t         j                  j                  k(  r|j                  |_        n3|j                  |_        |j
                  |_        |j                  |_        t        |t        j                  «      r!|j                  j                  dd«      |_        t        |d«      r|j                  �|j                  |_        y y y )Nr   r‹   rœ   )r   ÚQuantizationÚCT2rš   ÚqweightÚscalesÚweight_scaleÚqzerosÚweight_zeroÚ
isinstancerG   ÚConv1DÚ	transposerS   rœ   )r9   re   rŸ   Ú
quant_types       r#   Ú
set_linearzModelLoader.set_linearí   s’   € Øœ×1Ñ1×5Ñ5Ò5Ø Ÿ-™-ˆD�Kà Ÿ.™.ˆDŒKØ &§¡ˆDÔØ%Ÿ}™}ˆDÔä�fœl×1Ñ1Ô2ØŸ+™+×/Ñ/°°1Ó5ˆDŒKÜ�6˜6Ô" v§{¡{Ð'>ØŸ™ˆD�Ið (?Ð"r%   c                 ó&   — |j                   |_         y r   )rš   rž   s      r#   Úset_embeddingszModelLoader.set_embeddingsú   s   € Ø—m‘mˆ�r%   c                 ót   — |j                   |_        t        |dd«      }|dkD  r|j                  |d  |_        y y )NÚoffsetr   ©rš   Ú	encodingsrQ   ©r9   re   rŸ   r±   s       r#   Úset_position_encodingsz"ModelLoader.set_position_encodingsý   s9   € ØŸ™ˆŒÜ˜ ¨1Ó-ˆØ�AŠ:Ø!Ÿ^™^¨F¨GÐ4ˆD�Nð r%   c                 ó   — t        d«      ‚)Nz7No activation smoothing logic is defined for this modelr~   )r9   re   r+   s      r#   rZ   zModelLoader.smooth_activation  s   € Ü!ØEó
ð 	
r%   c           	      ó€  — t        |dd «      }|rš|j                  d«      xs |j                  d«      }|dk(  rd }nIt        j                  |«      }|€2t        d|›ddj	                  t        j                  «       «      ›�«      ‚|j                  dd	«      }|j                  d
|«      }nd }d	}t        |d
|«      }|||fS )NÚrope_scalingÚtypeÚ	rope_typeÚdefaultúRoPE scaling type 'úT' is not yet implemented. The following RoPE scaling types are currently supported: r<   Úfactorr‹   Ú
rope_theta)rQ   rL   Ú_SUPPORTED_ROPE_SCALINGr   rN   rP   )r9   r?   Údefault_rope_thetar¸   rº   Úrotary_scaling_typeÚrotary_scaling_factorr¿   s           r#   Úget_rotary_paramszModelLoader.get_rotary_params  sÖ   € Ü˜v ~°tÓ<ˆÙØ$×(Ñ(¨Ó0ÒQ°L×4DÑ4DÀ[Ó4QˆIà˜IÒ%Ø&*Ñ#ä&=×&AÑ&AÀ)Ó&LÐ#Ø&Ð.Ý-ò % d§i¡iÔ0G×0LÑ0LÓ0NÔ&OðQóð ð
 %1×$4Ñ$4°X¸qÓ$AÐ!Ø%×)Ñ)¨,Ð8JÓK‰Jà"&ÐØ$%Ð!Ü  ¨Ð7IÓJˆJà"Ð$9¸:ÐEÐEr%   N)rK   rt   ru   rv   ÚpropertyrR   ÚabcÚabstractmethodr�   r‡   r„   r…   rƒ   r    r   r¢   r£   r­   r¯   rµ   rZ   rÄ   r&   r%   r#   rz   rz   Ç   su   „ Ù\àñó ðð 	×Ññ$ó ð$òò
òòò ð 3>×2JÑ2J×2NÑ2Nó $ò$ò5ò
ó
Fr%   rz   Ú
BartConfigc                   óZ   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
d
d„Zd	„ Zˆ xZS )Ú
BartLoaderc                  ó   — y)NÚBartForConditionalGenerationr&   r|   s    r#   rR   zBartLoader.architecture_name#  s   € à-r%   c                 ó$  — t         j                  j                  |j                  j                  |j                  j
                  f|j                  j                  |j                  j                  t        |j                  j                     t        |j                  dd«      ¬«      }| j                  |j                  |j                  j                  «       | j                  |j                  |j                  j                  «       | j!                  |j                  j"                  |j$                  «       t        |dd «      }|�J|j'                  «       j)                  «       dk7  r)|j+                  «       |j                  j"                  _        |S )NÚnormalize_embeddingT©Úpre_normÚ
activationÚlayernorm_embeddingÚfinal_logits_biasr   )r
   ÚTransformerSpecÚfrom_configr?   Úencoder_layersÚdecoder_layersÚencoder_attention_headsÚnormalize_beforeÚ_SUPPORTED_ACTIVATIONSÚactivation_functionrQ   Úset_encoderÚencoderrb   Úset_decoderÚdecoderr­   Ú
projectionÚlm_headÚnonzeroÚnumelÚsqueezerœ   )r9   rb   re   rÓ   s       r#   r�   zBartLoader.get_model_spec'  s!  € Ü×/Ñ/×;Ñ;Ø�\‰\×(Ñ(¨%¯,©,×*EÑ*EÐFØ�L‰L×0Ñ0Ø—\‘\×2Ñ2Ü-¨e¯l©l×.NÑ.NÑOÜ '¨¯©Ð6KÈTÓ Rð <ó 
ˆð 	×Ñ˜Ÿ™ u§{¡{×':Ñ':Ô;Ø×Ñ˜Ÿ™ u§{¡{×':Ñ':Ô;Ø�‰˜Ÿ™×/Ñ/°·±Ô?ä# EÐ+>ÀÓEÐØÐ(Ð->×-FÑ-FÓ-H×-NÑ-NÓ-PÐTUÒ-UØ+<×+DÑ+DÓ+FˆD�L‰L×#Ñ#Ô(àˆr%   c                 óž   •— t         ‰| �  ||«      }|j                  j                  t	        |«      k  r|d |j                  j                   }|S r   )Úsuperr„   r?   Ú
vocab_sizeÚlen©r9   rb   rd   r†   rJ   s       €r#   r„   zBartLoader.get_vocabulary:  sF   ø€ Ü‘Ñ'¨¨yÓ9ˆØ�<‰<×"Ñ"¤S¨£[Ò0ØÐ5˜eŸl™l×5Ñ5Ð6ˆFØˆr%   c                 óH   — |j                  |«       |j                  |«       y r   ©Úregister_source_vocabularyÚregister_target_vocabularyr”   s      r#   r…   zBartLoader.set_vocabulary@  ó   € Ø×'Ñ'¨Ô/Ø×'Ñ'¨Õ/r%   c                 ó¾   — |j                   |_         |j                  |_        |j                  |_        |j                  |j                  j
                  «      |_        y r   )Ú	bos_tokenÚ	eos_tokenÚ	unk_tokenÚconvert_ids_to_tokensr?   Údecoder_start_token_idÚdecoder_start_tokenr—   s       r#   rƒ   zBartLoader.set_configD  sL   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ%.×%DÑ%DØ�L‰L×/Ñ/ó&
ˆÕ"r%   c                 óH  — | j                  ||«       t        |j                  |j                  «      D ]í  \  }}| j	                  |j
                  |j                  d¬«       | j                  |j
                  j                  |j                  «       | j                  |j                  j                  |j                  «       | j                  |j                  j                  |j                  «       | j                  |j                  j                  |j                   «       Œï y ©NT©Úself_attention)Úset_common_layersÚzipÚlayerÚlayersÚset_attentionrù   Ú	self_attnr    Ú
layer_normÚself_attn_layer_normr­   ÚffnÚlinear_0Úfc1Úlinear_1Úfc2Úfinal_layer_norm)r9   re   rÝ   Ú
layer_specrü   s        r#   rÜ   zBartLoader.set_encoderL  sß   € Ø×Ñ˜t WÔ-ä!$ T§Z¡Z°·±Ó!@ò 	SÑˆJ˜Ø×ÑØ×)Ñ)Ø—‘Ø#ð ô ð
 ×ÑØ×)Ñ)×4Ñ4Ø×*Ñ*ôð
 �O‰O˜JŸN™N×3Ñ3°U·Y±YÔ?Ø�O‰O˜JŸN™N×3Ñ3°U·Y±YÔ?Ø×Ñ 
§¡× 9Ñ 9¸5×;QÑ;QÕRñ	Sr%   c                 ó  — | j                  ||«       t        |j                  |j                  «      D �]R  \  }}| j	                  |j
                  |j                  d¬«       | j                  |j
                  j                  |j                  «       t        |d«      rX| j	                  |j                  |j                  d¬«       | j                  |j                  j                  |j                  «       | j                  |j                  j                   |j"                  «       | j                  |j                  j$                  |j&                  «       | j                  |j                  j                  |j(                  «       �ŒU y )NTrø   Úencoder_attnF)rú   rû   rü   rý   rþ   rù   rÿ   r    r   r  rS   Ú	attentionr
  Úencoder_attn_layer_normr­   r  r  r  r  r  r  )r9   re   rß   r  rü   s        r#   rÞ   zBartLoader.set_decoder^  s;  € Ø×Ñ˜t WÔ-ä!$ T§Z¡Z°·±Ó!@ó 	SÑˆJ˜Ø×ÑØ×)Ñ)Ø—‘Ø#ð ô ð
 ×ÑØ×)Ñ)×4Ñ4Ø×*Ñ*ôô
 �u˜nÔ-Ø×"Ñ"Ø×(Ñ(Ø×&Ñ&Ø#(ð #ô ð
 ×#Ñ#Ø×(Ñ(×3Ñ3Ø×1Ñ1ôð
 �O‰O˜JŸN™N×3Ñ3°U·Y±YÔ?Ø�O‰O˜JŸN™N×3Ñ3°U·Y±YÔ?Ø×Ñ 
§¡× 9Ñ 9¸5×;QÑ;QÖRñ1	Sr%   c                 óR  — t        d«      D �cg c]  }t        j                  «       ‘Œ }}| j                  |d   |j                  «       | j                  |d   |j
                  «       | j                  |d   |j                  «       |r$t        j                  |j                  d   |«       nLt        j                  |j                  d   |d d «       t        j                  |j                  d   |dd  «       | j                  |j                  d   |j                  «       y c c}w )Né   r   r‹   é   éÿÿÿÿ)Úranger   Ú
LinearSpecr­   Úq_projÚk_projÚv_projr   Úfuse_linearr   Úout_proj©r9   re   r  rù   r’   Úsplit_layerss         r#   rþ   zBartLoader.set_attention{  så   € Ü:?À»(ÖC°Qœ×.Ñ.Õ0ÐCˆÐCØ�‰˜ Q™¨×)9Ñ)9Ô:Ø�‰˜ Q™¨×)9Ñ)9Ô:Ø�‰˜ Q™¨×)9Ñ)9Ô:áÜ×Ñ˜dŸk™k¨!™n¨lÕ;ä×Ñ˜dŸk™k¨!™n¨l¸2¸AÐ.>Ô?Ü×Ñ˜dŸk™k¨!™n¨l¸1¸2Ð.>Ô?à�‰˜Ÿ™ B™¨×);Ñ);Õ<ùò Ds   ŽD$c                 óz  — dd l }t        |d«      s>|j                  j                  r%|j	                  |j                  j
                  «      nd}n|j                  }||_        | j                  |j                  |j                  «       | j                  t        |j                  t        «      r|j                  d   n|j                  |j                  «       t        |d«      r&| j!                  |j"                  |j"                  «       t        |d«      r'| j!                  |j$                  |j$                  «       y y )Nr   Úembed_scaleç      ð?r   rÒ   )ÚmathrS   r?   Úscale_embeddingÚsqrtÚd_modelr  Úscale_embeddingsrµ   Úposition_encodingsÚembed_positionsr¯   r©   Ú
embeddingsÚlistÚembed_tokensr    r   rÒ   )r9   re   rŸ   r  r  s        r#   rú   zBartLoader.set_common_layers‰  sý   € Ûä�v˜}Ô-ð —=‘=×0Ò0ð —	‘	˜&Ÿ-™-×/Ñ/Ô0àñ ð !×,Ñ,ˆKØ +ˆÔØ×#Ñ# D×$;Ñ$;¸V×=SÑ=SÔTØ×Ñô ˜dŸo™o¬tÔ4ð —‘ Ò"à—_‘_à×Ñô	
ô �6˜<Ô(Ø×Ñ §¡°×1BÑ1BÔCÜ�6Ð0Ô1Ø×Ñ × 8Ñ 8¸&×:TÑ:TÕUð 2r%   ©F)rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   rÜ   rÞ   rþ   rú   Ú__classcell__©rJ   s   @r#   rÊ   rÊ   !  s@   ø„ àñ.ó ð.òô&ò0ò
òSò$Só:=öVr%   rÊ   ÚMarianConfigc                   óN   ‡ — e Zd Zed„ «       Zˆ fd„Zd„ Zˆ fd„Zˆ fd„Zd„ Z	ˆ xZ
S )ÚMarianMTLoaderc                  ó   — y)NÚMarianMTModelr&   r|   s    r#   rR   z MarianMTLoader.architecture_name§  s   € àr%   c                 óŒ   •— d|j                   _        d|j                   _        t        ‰| �  |«      }| j                  |«       |S ©NF)r?   rÙ   rÎ   ræ   r�   Ú_remove_pad_weights)r9   rb   re   rJ   s      €r#   r�   zMarianMTLoader.get_model_spec«  s=   ø€ Ø(-ˆ�‰Ô%Ø+0ˆ�‰Ô(Ü‰wÑ% eÓ,ˆØ× Ñ  Ô&Øˆr%   c                 ój   — |j                   |_         |j                  |_        |j                   |_        y r   )rñ   rò   rõ   r—   s       r#   rƒ   zMarianMTLoader.set_config²  s.   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔð &/×%8Ñ%8ˆÕ"r%   c                 ó4   •— d|_         t        ‰| �	  ||«       y ©NT)Ústart_from_zero_embeddingræ   rÞ   ©r9   re   rß   rJ   s      €r#   rÞ   zMarianMTLoader.set_decoderº  s   ø€ Ø)-ˆÔ&Ü‰Ñ˜D 'Õ*r%   c                 óX   •— t         ‰| �  ||«      }|d   dk(  r|j                  «        |S )Nr  z<pad>)ræ   r„   Úpopré   s       €r#   r„   zMarianMTLoader.get_vocabulary¾  s0   ø€ ô ‘Ñ'¨¨yÓ9ˆØ�"‰:˜Ò Ø�J‰JŒLØˆr%   c                 óþ  — |j                   j                  d   |j                  j                  |j                  j                  g}|d   j                  j
                  d   dz
  }|D ]•  }|j                  j
                  d   |dz   k(  r|j                  d d |_        t        |t        j                  «      sŒQ|j                  «       sŒb|j                  j
                  d   |dz   k(  sŒ‚|j                  d d |_
        Œ— y )Nr   r‹   r  )rÝ   r$  rß   rà   rš   Úshaper©   r   r  Úhas_biasrœ   )r9   re   Úvocab_specsÚnew_vocab_sizeÚ
vocab_specs        r#   r1  z"MarianMTLoader._remove_pad_weightsÇ  sâ   € à�L‰L×#Ñ# AÑ&Ø�L‰L×#Ñ#Ø�L‰L×#Ñ#ð
ˆð % Q™×.Ñ.×4Ñ4°QÑ7¸!Ñ;ˆà%ò 	7ˆJØ× Ñ ×&Ñ& qÑ)¨^¸aÑ-?Ò?Ø$.×$5Ñ$5°c°rÐ$:�
Ô!ä˜:¤{×'=Ñ'=Õ>Ø×'Ñ'Õ)Ø—O‘O×)Ñ)¨!Ñ,°ÀÑ0BÓBà",§/¡/°#°2Ð"6�
•ñ	7r%   )rK   rt   ru   rÅ   rR   r�   rƒ   rÞ   r„   r1  r(  r)  s   @r#   r,  r,  ¥  s.   ø„ àñó ðôò9ô+ôö7r%   r,  ÚM2M100Configc                   ó>   ‡ — e Zd Zed„ «       Zˆ fd„Zd„ Zˆ fd„Zˆ xZS )ÚM2M100Loaderc                  ó   — y)NÚM2M100ForConditionalGenerationr&   r|   s    r#   rR   zM2M100Loader.architecture_nameß  s   € à/r%   c                 óf   •— d|j                   _        d|j                   _        t        ‰| �  |«      S )NTF)r?   rÙ   rÎ   ræ   r�   )r9   rb   rJ   s     €r#   r�   zM2M100Loader.get_model_specã  s+   ø€ Ø(,ˆ�‰Ô%Ø+0ˆ�‰Ô(Ü‰wÑ% eÓ,Ð,r%   c                 ó@   — |j                   |j                  d  |_        y r   )Úweightsr±   r³   rž   s      r#   rµ   z#M2M100Loader.set_position_encodingsè  s   € ØŸ™¨¯©¨Ð8ˆ�r%   c                 óº  •— t         ‰| �  ||«      }|d   |j                  k(  r*|j                  |j                  |j                  «       «       |j                  j                  dg «      D ]  }||vsŒ|j                  |«       Œ t        |d|j                  j                  t        |«      z
  «      }|dkD  r|t        |«      D �cg c]  }d|z  ‘Œ	 c}z  }|S c c}w )Nr  Úadditional_special_tokensÚnum_madeup_wordsr   zmadeupword%d)ræ   r„   rò   ÚinsertÚunk_token_idr8  Úspecial_tokens_maprL   ÚappendrQ   r?   rç   rè   r  )r9   rb   rd   r†   r‘   rI  ÚirJ   s          €r#   r„   zM2M100Loader.get_vocabularyë  s×   ø€ Ü‘Ñ'¨¨yÓ9ˆð �"‰:˜×,Ñ,Ò,Ø�M‰M˜)×0Ñ0°&·*±*³,Ô?à×1Ñ1×5Ñ5Ð6QÐSUÓVò 	%ˆEØ˜FÒ"Ø—‘˜eÕ$ð	%ô #ØÐ)¨5¯<©<×+BÑ+BÄSÈÃ[Ñ+Pó
Ðð ˜aÒØ´5Ð9IÓ3JÖK¨a�~¨Ó)ÒKÑKˆFàˆùò Ls   ÃC)	rK   rt   ru   rÅ   rR   r�   rµ   r„   r(  r)  s   @r#   rA  rA  Ý  s)   ø„ àñ0ó ð0ô-ò
9÷ð r%   rA  ÚMBartConfigc                   ó"   — e Zd Zed„ «       Zd„ Zy)ÚMBartLoaderc                  ó   — y)NÚMBartForConditionalGenerationr&   r|   s    r#   rR   zMBartLoader.architecture_name  s   € à.r%   c                 óÎ   — |j                   |_         |j                  |_        |j                  |_        t        |j                  dd «      dv rd |_        y |j                  |_        y )Nr_   )ÚMBartTokenizerN)rð   rñ   rò   rQ   r?   rõ   r—   s       r#   rƒ   zMBartLoader.set_config  s[   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$×.Ñ.ˆÔô �5—<‘<Ð!2°DÓ9Ð=UÑUØ)-ˆFÕ&à)2×)<Ñ)<ˆFÕ&r%   N©rK   rt   ru   rÅ   rR   rƒ   r&   r%   r#   rQ  rQ  ÿ  s   „ àñ/ó ð/ó	=r%   rQ  ÚPegasusConfigc                   ó"   — e Zd Zed„ «       Zd„ Zy)ÚPegasusLoaderc                  ó   — y)NÚPegasusForConditionalGenerationr&   r|   s    r#   rR   zPegasusLoader.architecture_name  ó   € à0r%   c                 óŒ   — |j                   |_        |j                  |_        |j                  |_        |j                   |_        y r   )Ú	pad_tokenrð   rñ   rò   rõ   r—   s       r#   rƒ   zPegasusLoader.set_config  s:   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ%.×%8Ñ%8ˆÕ"r%   NrV  r&   r%   r#   rY  rY    s   „ àñ1ó ð1ó9r%   rY  Ú	OPTConfigc                   óV   ‡ — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zˆ fd„Z	d„ Z
ˆ fd„Zˆ xZS )	Ú	OPTLoaderc                  ó   — y)NÚOPTForCausalLMr&   r|   s    r#   rR   zOPTLoader.architecture_name   ó   € àr%   c                 ó  — t         j                  j                  |j                  j                  |j                  j
                  |j                  j                  t        |j                  j                     |j                  j                  |j                  j                  k7  ¬«      }| j                  |j                  |j                  j                  «       | j                  |j                  j                  |j                   «       |S )N)rÐ   rÑ   Úproject_in_out)r
   ÚTransformerDecoderModelSpecrÕ   r?   Únum_hidden_layersÚnum_attention_headsÚdo_layer_norm_beforerÚ   rÛ   Úword_embed_proj_dimÚhidden_sizerÞ   rß   rb   r­   rà   rá   ©r9   rb   re   s      r#   r�   zOPTLoader.get_model_spec$  s´   € Ü×;Ñ;×GÑGØ�L‰L×*Ñ*Ø�L‰L×,Ñ,Ø—\‘\×6Ñ6Ü-¨e¯l©l×.NÑ.NÑOØ Ÿ<™<×;Ñ;¸u¿|¹|×?WÑ?WÑWð Hó 
ˆð 	×Ñ˜Ÿ™ u§{¡{×':Ñ':Ô;Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 óv  — t        |j                  j                  «      D ]—  \  }}d|z  }t        j                  |j
                  j                  |j
                  j                  d   |d|z     «       t        j                  |j                  j                  |j                  j                  |d|z     «       Œ™ y )Nzmodel.decoder.layers.%dr   z%s.self_attn.q_projz%s.fc1)
Ú	enumeraterß   rü   r   rZ   rù   r   r   r  r  )r9   re   r+   rN  rü   Úlayer_scopes         r#   rZ   zOPTLoader.smooth_activation1  s¤   € Ü! $§,¡,×"4Ñ"4Ó5ò 	‰HˆAˆuØ3°aÑ7ˆKä×#Ñ#Ø×$Ñ$×/Ñ/Ø×$Ñ$×+Ñ+¨AÑ.Ø!Ð"7¸+Ñ"EÑFôô ×#Ñ#Ø—	‘	×$Ñ$Ø—	‘	×"Ñ"Ø! (¨[Ñ"8Ñ9õñ	r%   c                 ó&   — |j                  |«       y r   ©Úregister_vocabularyr”   s      r#   r…   zOPTLoader.set_vocabularyA  ó   € Ø× Ñ  Õ(r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   ©rð   rñ   rò   r—   s       r#   rƒ   zOPTLoader.set_configD  ó,   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$×.Ñ.ˆÕr%   c                 óT  •— t         ‰| �  ||«       |j                  �&| j                  |j                  |j                  «       |j                  �&| j                  |j                  |j                  «       |j
                  �'| j                  |j                  |j
                  «       y y r   )ræ   rÞ   Ú
project_inr­   Úproject_outr  r    r   r6  s      €r#   rÞ   zOPTLoader.set_decoderI  s‡   ø€ Ü‰Ñ˜D 'Ô*à×ÑÐ)Ø�O‰O˜DŸO™O¨W×-?Ñ-?Ô@Ø×ÑÐ*Ø�O‰O˜D×,Ñ,¨g×.AÑ.AÔBØ×#Ñ#Ð/Ø×Ñ §¡°×1IÑ1IÕJð 0r%   c                 óª   — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       y r0  )r!  rµ   r"  r#  r¯   r$  r&  rž   s      r#   rú   zOPTLoader.set_common_layersS  s@   € Ø %ˆÔØ×#Ñ# D×$;Ñ$;¸V×=SÑ=SÔTØ×Ñ˜DŸO™O¨V×-@Ñ-@ÕAr%   c                 óÈ   •— t         ‰| �  ||«      }d}t        |«      dz  dk7  r=dj                  |«      }||vr|j	                  |«       |dz  }t        |«      dz  dk7  rŒ=|S )Nr   é   zmadeupword{:04d}r‹   )ræ   r„   rè   ÚformatrM  )r9   rb   rd   r†   rN  ÚsymbolrJ   s         €r#   r„   zOPTLoader.get_vocabularyX  so   ø€ Ü‘Ñ'¨¨yÓ9ˆàˆÜ�&‹k˜A‰o Ò"Ø'×.Ñ.¨qÓ1ˆFØ˜VÑ#Ø—‘˜fÔ%Ø�‰FˆAô	 �&‹k˜A‰o Ó"ð ˆr%   )rK   rt   ru   rÅ   rR   r�   rZ   r…   rƒ   rÞ   rú   r„   r(  r)  s   @r#   ra  ra    s?   ø„ àñ ó ð òòò )ò/ô
KòB÷

ð 
r%   ra  ÚGPTBigCodeConfigc                   óF   ‡ — e Zd Zed„ «       Zd„ Zd„ Zˆ fd„Zd„ Zd„ Z	ˆ xZ
S )ÚGPTBigCodeMHALoaderc                  ó   — y)NÚGPTBigCodeForCausalLMr&   r|   s    r#   rR   z%GPTBigCodeMHALoader.architecture_nameg  s   € à&r%   c                 ó€  — t         j                  j                  |j                  j                  |j                  j
                  dt        |j                  j                     d¬«      }| j                  |j                  |j                  «       | j                  |j                  j                  |j                  «       |S )NT)rÐ   rÑ   Úmulti_query_attention©r
   rg  rÕ   r?   Ún_layerÚn_headrÚ   rÛ   rÞ   rß   Útransformerr­   rà   rá   rm  s      r#   r�   z"GPTBigCodeMHALoader.get_model_speck  s�   € Ü×;Ñ;×GÑGØ�L‰L× Ñ Ø�L‰L×ÑØÜ-¨e¯l©l×.NÑ.NÑOØ"&ð Hó 
ˆð 	×Ñ˜Ÿ™ u×'8Ñ'8Ô9Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   z"GPTBigCodeMHALoader.set_vocabularyx  rt  r%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S ©Nú<extra_id_%d>©ræ   r„   r?   rç   rè   r  rM  ©r9   rb   rd   r†   Ú	extra_idsrN  rJ   s         €r#   r„   z"GPTBigCodeMHALoader.get_vocabulary{  óX   ø€ Ü‘Ñ'¨¨yÓ9ˆà—L‘L×+Ñ+¬c°&«kÑ9ˆ	Ü�yÓ!ò 	/ˆAØ�M‰M˜/¨AÑ-Õ.ð	/ð ˆr%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zGPTBigCodeMHALoader.set_config„  rw  r%   c                 óæ  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       | j                  |j                  |j                  «       t        |j                  |j                  «      D �]T  \  }}| j                  |j                  j                  |j                  «       | j                  |j                  j                   d   |j"                  j$                  «       | j                  |j                  j                   d   |j"                  j&                  «       | j                  |j(                  j                  |j*                  «       | j                  |j(                  j,                  |j.                  j0                  «       | j                  |j(                  j2                  |j.                  j&                  «       �ŒW y ©NFr   r‹   ©r!  r¯   r$  Úwterµ   r"  Úwper    r   Úln_frû   rü   Úhrù   Úln_1r­   r   ÚattnÚc_attnÚc_projr  Úln_2r  ÚmlpÚc_fcr  ©r9   re   rŸ   r  rü   s        r#   rÞ   zGPTBigCodeMHALoader.set_decoder‰  óK  € Ø %ˆÔØ×Ñ˜DŸO™O¨V¯Z©ZÔ8Ø×#Ñ# D×$;Ñ$;¸V¿Z¹ZÔHØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!:ó 	GÑˆJ˜Ø×Ñ 
× 9Ñ 9× DÑ DÀeÇjÁjÔQØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×ARÑARÔSØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×ARÑARÔSØ×Ñ 
§¡× 9Ñ 9¸5¿:¹:ÔFØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y·^±^ÔDØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5EÑ5EÖFñ	Gr%   )rK   rt   ru   rÅ   rR   r�   r…   r„   rƒ   rÞ   r(  r)  s   @r#   r‚  r‚  e  s/   ø„ àñ'ó ð'òò)ôò/ö
Gr%   r‚  Ú
GPT2Configc                   ó4   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy)Ú
GPT2Loaderc                  ó   — y)NÚGPT2LMHeadModelr&   r|   s    r#   rR   zGPT2Loader.architecture_nameš  ó   € à r%   c                 ó~  — t         j                  j                  |j                  j                  |j                  j
                  dt        |j                  j                     ¬«      }| j                  |j                  |j                  «       | j                  |j                  j                  |j                  «       |S )NT)rÐ   rÑ   r‡  rm  s      r#   r�   zGPT2Loader.get_model_specž  sŠ   € Ü×;Ñ;×GÑGØ�L‰L× Ñ Ø�L‰L×ÑØÜ-¨e¯l©l×.NÑ.NÑOð	 Hó 
ˆð 	×Ñ˜Ÿ™ u×'8Ñ'8Ô9Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zGPT2Loader.set_vocabularyª  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zGPT2Loader.set_config­  rw  r%   c                 óæ  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       | j                  |j                  |j                  «       t        |j                  |j                  «      D �]T  \  }}| j                  |j                  j                  |j                  «       | j                  |j                  j                   d   |j"                  j$                  «       | j                  |j                  j                   d   |j"                  j&                  «       | j                  |j(                  j                  |j*                  «       | j                  |j(                  j,                  |j.                  j0                  «       | j                  |j(                  j2                  |j.                  j&                  «       �ŒW y r•  r–  r¢  s        r#   rÞ   zGPT2Loader.set_decoder²  r£  r%   N©	rK   rt   ru   rÅ   rR   r�   r…   rƒ   rÞ   r&   r%   r#   r¦  r¦  ˜  s)   „ àñ!ó ð!ò
ò)ò/ó
Gr%   r¦  Ú
GPTJConfigc                   ó4   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy)Ú
GPTJLoaderc                  ó   — y)NÚGPTJForCausalLMr&   r|   s    r#   rR   zGPTJLoader.architecture_nameÃ  r©  r%   c           
      ó  — t         j                  j                  |j                  j                  |j                  j
                  dt        |j                  j                     |j                  j                  ddd¬«      }| j                  |j                  |j                  |j                  j                  |j                  j
                  «       | j                  |j                  j                  |j                  «       |S ©NTF©rÐ   rÑ   Ú
rotary_dimÚrotary_interleaveÚparallel_residualÚshared_layer_norm)r
   rg  rÕ   r?   rˆ  r‰  rÚ   rÛ   r·  rÞ   rß   rŠ  r­   rà   rá   rm  s      r#   r�   zGPTJLoader.get_model_specÇ  sÀ   € Ü×;Ñ;×GÑGØ�L‰L× Ñ Ø�L‰L×ÑØÜ-¨e¯l©l×.NÑ.NÑOØ—|‘|×.Ñ.Ø#Ø"Ø"ð Hó 	
ˆð 	×ÑØ�L‰LØ×ÑØ�L‰L×#Ñ#Ø�L‰L×Ñô		
ð 	�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zGPTJLoader.set_vocabularyÜ  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zGPTJLoader.set_configß  rw  r%   c                 ó0  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        |j                  |j                  «      D �]Ÿ  \  }}| j	                  |j                  |j                  «       |j                  j                  j                  }|j                  j                  j                  }|j                  j                   j                  }	t#        j$                  |||«      }t#        j$                  |||«      }t'        j(                  |||	f«      |j*                  j,                  d   _        | j/                  |j*                  j,                  d   |j                  j0                  «       | j/                  |j2                  j4                  |j6                  j8                  «       | j/                  |j2                  j:                  |j6                  j<                  «       �Œ¢ y r•  )r!  r¯   r$  r—  r    r   r™  rû   rü   rš  rº  r›  rœ  r  rš   r  r  r   Úpermute_for_sliced_rotaryrE   Úcatrù   r   r­   r  r  r  r   Úfc_inr  Úfc_out)
r9   re   rŸ   r·  Ú	num_headsr  rü   ÚqwÚkwÚvws
             r#   rÞ   zGPTJLoader.set_decoderä  ss  € Ø %ˆÔØ×Ñ˜DŸO™O¨V¯Z©ZÔ8Ø×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!:ó 	GÑˆJ˜Ø×Ñ 
× <Ñ <¸e¿j¹jÔIà—‘×"Ñ"×)Ñ)ˆBØ—‘×"Ñ"×)Ñ)ˆBØ—‘×"Ñ"×)Ñ)ˆBä×0Ñ0°°YÀ
ÓKˆBÜ×0Ñ0°°YÀ
ÓKˆBä9>¿¹ÀBÈÈBÀ<Ó9PˆJ×%Ñ%×,Ñ,¨QÑ/Ô6Ø�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×ATÑATÔUà�O‰O˜JŸN™N×3Ñ3°U·Y±Y·_±_ÔEØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5EÑ5EÖFñ	Gr%   Nr®  r&   r%   r#   r±  r±  Á  s)   „ àñ!ó ð!òò*)ò/ó
Gr%   r±  ÚCodeGenConfigc                   óF   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	ˆ xZ
S )ÚCodeGenLoaderc                  ó   — y)NÚCodeGenForCausalLMr&   r|   s    r#   rR   zCodeGenLoader.architecture_nameü  ó   € à#r%   c           
      ó”  — t         j                  j                  |j                  j                  |j                  j
                  dt        |j                  j                     |j                  j                  ddd¬«      }d}t        |j                  d«      r|j                  j                  dv rd}| j                  |j                  |j                  |j                  j                  |j                  j
                  |j                  j                  |¬«       | j                  |j                  j                   |j"                  «       |S )	NTFr¶  é   Úhead_dim)é€   é   r}  )Úmp_num)r
   rg  rÕ   r?   rˆ  r‰  rÚ   rÛ   r·  rS   rÎ  rÞ   rß   rŠ  Ún_embdr­   rà   rá   )r9   rb   re   rÑ  s       r#   r�   zCodeGenLoader.get_model_spec   s   € Ü×;Ñ;×GÑGØ�L‰L× Ñ Ø�L‰L×ÑØÜ-¨e¯l©l×.NÑ.NÑOØ—|‘|×.Ñ.Ø#Ø"Ø"ð Hó 	
ˆð ˆÜ�5—<‘< Ô,°·±×1FÑ1FÈ*Ñ1Tð ˆFà×ÑØ�L‰LØ×ÑØ�L‰L×#Ñ#Ø�L‰L×ÑØ�L‰L×ÑØð 	ô 	
ð 	�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zCodeGenLoader.get_vocabulary  sX   ø€ Ü‘Ñ'¨¨yÓ9ˆà—L‘L×+Ñ+¬c°&«kÑ9ˆ	Ü�yÓ!ò 	/ˆAà�M‰M˜/¨AÑ-Õ.ð	/ð ˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zCodeGenLoader.set_vocabulary(  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zCodeGenLoader.set_config+  rw  r%   c           
      ó"  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        j                  d|dz  «      j                  dd«      j                  j                  «       j                  «       }||z  }t        j                  |D �	cg c]!  }	t        j                  |	|z  |	dz   |z  «      ‘Œ# c}	«      }
t        |j                   |j"                  «      D �]  \  }}| j	                  |j$                  |j&                  «       |j(                  j*                  j,                  }||
d d …f   }|j/                  dd¬«      \  }}}t1        j2                  |||«      }t1        j2                  |||«      }t        j                  |||f«      |j4                  j6                  d   _        | j9                  |j4                  j6                  d   |j(                  j:                  «       | j9                  |j<                  j>                  |j@                  jB                  «       | j9                  |j<                  jD                  |j@                  jF                  «       �Œ‚ y c c}	w )NFr   r  r  r‹   ©Údim)$r!  r¯   r$  r—  r    r   r™  ÚnpÚarangeÚreshapeÚTÚflattenÚtolistrE   r¿  rû   rü   rš  rº  r›  rœ  Úqkv_projrš   Úchunkr   r¾  rù   r   r­   r  r  r  r   rÀ  r  rÁ  )r9   re   rŸ   r·  rÂ  Ú	embed_dimrÑ  Úbase_permutationÚ	local_dimrN  Úpermutationr  rü   rß  Únew_qkv_projrÃ  rÅ  rÄ  s                     r#   rÞ   zCodeGenLoader.set_decoder0  sø  € Ø %ˆÔØ×Ñ˜DŸO™O¨V¯Z©ZÔ8Ø×Ñ˜DŸO™O¨V¯[©[Ô9äŸ9™9 Q¨°©
Ó3×;Ñ;¸BÀÓB×DÑD×LÑLÓN×UÑUÓWÐØ Ñ'ˆ	Ü—i‘iØGWÖXÀ!ŒU�\‰\˜!˜i™-¨!¨a©%°9Ñ)<Õ=ÒXó
ˆô "% T§Z¡Z°·±Ó!:ó 	GÑˆJ˜Ø×Ñ 
× <Ñ <¸e¿j¹jÔIð —z‘z×*Ñ*×1Ñ1ˆHð $ K² NÑ3ˆLà%×+Ñ+¨A°1Ð+Ó5‰JˆB��Bô ×0Ñ0°°YÀ
ÓKˆBÜ×0Ñ0°°YÀ
ÓKˆBä9>¿¹ÀBÈÈBÀ<Ó9PˆJ×%Ñ%×,Ñ,¨QÑ/Ô6Ø�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×ATÑATÔUà�O‰O˜JŸN™N×3Ñ3°U·Y±Y·_±_ÔEØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5EÑ5EÖFñ-	Gùò Ys   Â;&J©rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   rÞ   r(  r)  s   @r#   rÈ  rÈ  ú  s/   ø„ àñ$ó ð$òô<ò)ò/ö
!Gr%   rÈ  ÚGPTNeoXConfigc                   óF   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	ˆ xZ
S )ÚGPTNeoXLoaderc                  ó   — y)NÚGPTNeoXForCausalLMr&   r|   s    r#   rR   zGPTNeoXLoader.architecture_nameV  rË  r%   c                 ón  — t         j                  j                  |j                  j                  |j                  j
                  dt        |j                  j                     t        |j                  j                  |j                  j                  |j                  j
                  z  z  «      d|j                  j                  d¬«      }| j                  |j                  |j                  |j                  j
                  «       | j                  |j                  j                   |j"                  «       |S rµ  )r
   rg  rÕ   r?   rh  ri  rÚ   Ú
hidden_actÚintÚ
rotary_pctrl  Úuse_parallel_residualrÞ   rß   Úgpt_neoxr­   rà   Ú	embed_outrm  s      r#   r�   zGPTNeoXLoader.get_model_specZ  sà   € Ü×;Ñ;×GÑGØ�L‰L×*Ñ*Ø�L‰L×,Ñ,ØÜ-¨e¯l©l×.EÑ.EÑFÜØ—‘×'Ñ'Ø—<‘<×+Ñ+¨u¯|©|×/OÑ/OÑOñQóð $Ø#Ÿl™l×@Ñ@Ø#ð Hó 
ˆð 	×Ñ˜Ÿ™ u§~¡~°u·|±|×7WÑ7WÔXØ�‰˜Ÿ™×/Ñ/°·±ÔAØˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zGPTNeoXLoader.get_vocabularym  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zGPTNeoXLoader.set_vocabularyv  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zGPTNeoXLoader.set_configy  rw  r%   c                 óÊ  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        |j                  |j                  «      D �]l  \  }}t        |d«      rM| j	                  |j                  |j                  «       | j	                  |j                  |j                  «       n`| j	                  |j                  j
                  |j                  «       | j	                  |j                   j
                  |j                  «       |j"                  j$                  j&                  }|j"                  j$                  j(                  }|j+                  |dd|j,                  d   «      j/                  dd«      j+                  d|j,                  d   «      }|j+                  |dd«      j/                  dd«      j+                  d«      }||j                  j0                  d   _        ||j                  j0                  d   _        | j3                  |j                  j0                  d   |j"                  j4                  «       | j3                  |j                   j6                  |j8                  j:                  «       | j3                  |j                   j<                  |j8                  j>                  «       �Œo y )NFÚinput_layer_normr  r  r   r‹   ) r!  r¯   r$  Úembed_inr    r   r  rû   rü   rý   rS   r÷  Úinput_layernormÚpost_attention_layer_normÚpost_attention_layernormrù   r  r  Úquery_key_valuerš   rœ   rÛ  r:  Úswapaxesr   r­   Údenser  r   Údense_h_to_4hr  Údense_4h_to_h)r9   re   rŸ   rÂ  r  rü   Úqkv_wÚqkv_bs           r#   rÞ   zGPTNeoXLoader.set_decoder~  s*  € Ø %ˆÔØ×Ñ˜DŸO™O¨V¯_©_Ô=Ø×Ñ˜DŸO™O¨V×-DÑ-DÔEä!$ T§Z¡Z°·±Ó!?ó 	NÑˆJ˜Ü�zÐ#5Ô6Ø×#Ñ# J×$?Ñ$?À×AVÑAVÔWØ×#Ñ#Ø×8Ñ8¸%×:XÑ:Xõð ×#Ñ#Ø×-Ñ-×8Ñ8¸%×:OÑ:Oôð ×#Ñ#Ø—N‘N×-Ñ-¨u×/MÑ/Môð —O‘O×3Ñ3×:Ñ:ˆEØ—O‘O×3Ñ3×8Ñ8ˆEð —‘˜i¨¨B°·±¸B±Ó@ß‘˜!˜Q“ß‘˜˜UŸ[™[¨™_Ó-ð ð
 —M‘M )¨Q°Ó3×<Ñ<¸QÀÓB×JÑJÈ2ÓNˆEà9>ˆJ×%Ñ%×,Ñ,¨QÑ/Ô6Ø7<ˆJ×%Ñ%×,Ñ,¨QÑ/Ô4à�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×AVÑAVÔWà�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5LÑ5LÔMØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5LÑ5LÖMñ=	Nr%   ræ  r)  s   @r#   ré  ré  T  s/   ø„ àñ$ó ð$òô&ò)ò/ö
#Nr%   ré  ÚWhisperConfigc                   óf   ‡ — e Zd Zed„ «       Zd„ Zd„ Zd„ Zˆ fd„Zd„ Z	ˆ fd„Z
ˆ fd„Zd	„ Zd
„ Zˆ xZS )ÚWhisperLoaderc                  ó   — y)NÚWhisperForConditionalGenerationr&   r|   s    r#   rR   zWhisperLoader.architecture_name¦  r\  r%   c                 óö  — t        j                  |j                  j                  |j                  j                  |j                  j
                  |j                  j                  «      }| j                  |j                  |j                  j                  «       | j                  |j                  |j                  j                  «       | j                  |j                  j                  |j                  «       |S r   )r   ÚWhisperSpecr?   rÖ   rØ   r×   Údecoder_attention_headsrÜ   rÝ   rb   rÞ   rß   r­   rà   Úproj_outrm  s      r#   r�   zWhisperLoader.get_model_specª  s¥   € Ü×'Ñ'Ø�L‰L×'Ñ'Ø�L‰L×0Ñ0Ø�L‰L×'Ñ'Ø�L‰L×0Ñ0ó	
ˆð 	×Ñ˜Ÿ™ u§{¡{×':Ñ':Ô;Ø×Ñ˜Ÿ™ u§{¡{×':Ñ':Ô;Ø�‰˜Ÿ™×/Ñ/°·±Ô@àˆr%   c                 ó|   — g d¢}t        |dg «      }|sg S |D �cg c]  }||vr|j                  |«      ‘Œ c}S c c}w )N)z<|endoftext|>z<|startoftranscript|>z<|translate|>z<|transcribe|>z<|startoflm|>z<|startofprev|>z<|nocaptions|>z<|notimestamps|>rH  )rQ   Úconvert_tokens_to_ids)r9   rd   Únon_lang_special_tokensÚadditional_tokensr‘   s        r#   Ú_get_lang_ids_from_tokenizerz*WhisperLoader._get_lang_ids_from_tokenizer¸  sZ   € ò	#
Ðô $ IÐ/JÈBÓOÐÙ ØˆIð +ö
àØÐ3Ñ3ð ×+Ñ+¨EÕ2ò
ð 	
ùò 
s   š9c                 óê  — t        |dd «      }|�t|j                  |_        |j                  |_        t        |d«      r|j                  |_        t        |d«      rƒt        |j                  j                  «       «      |_
        nZ|j                  j                  |_        |j                  j                  |_        t        j                  |j                  «      |_        t        |dd «      €| j                  |«      |_
        |j                  €g|j                  j                   }|j                  j"                  }t%        t'        j(                  t+        |dz  |«      t+        |«      «      «      |_        y y )NÚgeneration_configÚalignment_headsÚ
lang_to_idÚlang_idsr  )rQ   Úsuppress_tokensÚsuppress_idsÚbegin_suppress_tokensÚsuppress_ids_beginrS   r  rO   r  Úvaluesr  r?   Ú_WHISPER_ALIGNMENT_HEADSrL   Úname_or_pathr  r×   r
  r%  Ú	itertoolsÚproductr  )r9   r?   rb   rd   Ú
gen_configÚ
num_layersrÂ  s          r#   rƒ   zWhisperLoader.set_configÎ  s/  € Ü˜UÐ$7¸Ó>ˆ
àÐ!Ø",×"<Ñ"<ˆFÔØ(2×(HÑ(HˆFÔ%Ü�zÐ#4Ô5Ø)3×)CÑ)C�Ô&Ü�z <Ô0Ü"(¨×)>Ñ)>×)EÑ)EÓ)GÓ"H�•à"'§,¡,×">Ñ">ˆFÔØ(-¯©×(JÑ(JˆFÔ%Ü%=×%AÑ%AÀ%×BTÑBTÓ%UˆFÔ"ä�6˜: tÓ,Ð4Ø"×?Ñ?À	ÓJˆFŒOà×!Ñ!Ð)àŸ™×4Ñ4ˆJØŸ™×<Ñ<ˆIÜ%)Ü×!Ñ!Ü˜*¨™/¨:Ó6Ü˜)Ó$óó&ˆFÕ"ð	 *r%   c           	      óª   •— t         ‰| �  ||«      }|j                  d„ t        |j                  j
                  t        |«      z
  «      D «       «       |S )Nc              3   ó,   K  — | ]  }d |dz  z  –— Œ y­w)z<|%.2f|>g{®Gáz”?Nr&   )Ú.0rN  s     r#   ú	<genexpr>z/WhisperLoader.get_vocabulary.<locals>.<genexpr>ï  s!   è ø€ ò 
àð ˜!˜d™(Õ#ñ
ùs   ‚)ræ   r„   Úextendr  r?   rç   rè   ré   s       €r#   r„   zWhisperLoader.get_vocabularyë  sN   ø€ Ü‘Ñ'¨¨yÓ9ˆð 	�‰ñ 
ä˜5Ÿ<™<×2Ñ2´S¸³[Ñ@ÓAô
ô 	
ð
 ˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zWhisperLoader.set_vocabularyö  rt  r%   c                 ó¾   •— | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        ‰| �  ||«       y r   )Ú
set_conv1dÚconv1Úconv2ræ   rÜ   )r9   re   rÝ   rJ   s      €r#   rÜ   zWhisperLoader.set_encoderù  s>   ø€ Ø�‰˜Ÿ
™
 G§M¡MÔ2Ø�‰˜Ÿ
™
 G§M¡MÔ2Ü‰Ñ˜D 'Õ*r%   c                 ór   •— | j                  |j                  |j                  «       t        ‰| �  ||«       y r   )r¯   r$  r&  ræ   rÞ   r6  s      €r#   rÞ   zWhisperLoader.set_decoderþ  s,   ø€ Ø×Ñ˜DŸO™O¨W×-AÑ-AÔBÜ‰Ñ˜D 'Õ*r%   c                 óœ   — | j                  |j                  |j                  «       | j                  |j                  |j                  «       y r   )rµ   r"  r#  r    r   rž   s      r#   rú   zWhisperLoader.set_common_layers  s8   € Ø×#Ñ# D×$;Ñ$;¸V×=SÑ=SÔTØ×Ñ˜DŸO™O¨V×->Ñ->Õ?r%   c                 óH   — |j                   |_         |j                  |_        y r   ©rš   rœ   rž   s      r#   r(  zWhisperLoader.set_conv1d  s   € Ø—m‘mˆŒØ—K‘Kˆ�	r%   )rK   rt   ru   rÅ   rR   r�   r  rƒ   r„   r…   rÜ   rÞ   rú   r(  r(  r)  s   @r#   r  r  ¤  sC   ø„ àñ1ó ð1òò
ò,ô:	ò)ô+ô
+ò@ö r%   r  ÚWav2Vec2Configc                   ó^   ‡ — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zˆ fd	„Zd
„ Zˆ xZS )ÚWav2Vec2Loaderc                  ó   — y)NÚWav2Vec2ForCTCr&   r|   s    r#   rR   z Wav2Vec2Loader.architecture_name  rd  r%   c                 ó*  — t        |j                  j                  dd«      }t        j                  |j                  j                  j
                  |j                  j                  j                  j                  |j                  j                  j                  j                  |j                  j                  j                  d   |«      }|j                  j                  j                  D ]u  }|j                  |_        |j                  |_        |j"                  j$                  |_        |j"                  j(                  |_        |j"                  j,                  |_        Œw | j1                  |j                  ||j                  j                  «       |S ©NÚreturn_hiddenFr   )rQ   Úwav2vec2r?   r   ÚWav2Vec2SpecÚnum_feat_extract_layersrÝ   rh  ri  rá   rš   r:  rý   r  rÿ   r   r  Úfeed_forwardÚintermediate_act_fnÚactivation_fnÚintermediate_denser  Úoutput_denser  rÜ   )r9   rb   r6  re   rü   s        r#   r�   zWav2Vec2Loader.get_model_spec  s%  € Ü §¡× 5Ñ 5°ÈÓNˆÜ×)Ñ)Ø�N‰N×!Ñ!×9Ñ9Ø�N‰N×"Ñ"×)Ñ)×;Ñ;Ø�N‰N×"Ñ"×)Ñ)×=Ñ=Ø�M‰M× Ñ ×&Ñ& qÑ)Øó
ˆð —^‘^×+Ñ+×2Ñ2ò 	8ˆEØ#Ÿo™oˆEŒOØ).×)9Ñ)9ˆEÔ&Ø"'×"4Ñ"4×"HÑ"HˆEÔØ×*Ñ*×=Ñ=ˆEŒIØ×*Ñ*×7Ñ7ˆE�Ið	8ð 	×Ñ˜Ÿ™ u¨e¯n©n×.CÑ.CÔDØˆr%   c                  ó   — y r   r&   r—   s       r#   rƒ   zWav2Vec2Loader.set_config&  ó   € Ør%   c                 ó"   — |j                  «       S r   ©r�   ©r9   rb   rd   s      r#   r„   zWav2Vec2Loader.get_vocabulary)  ó   € Ø×"Ñ"Ó$Ð$r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zWav2Vec2Loader.set_vocabulary,  rt  r%   c                 ó¤  — |j                   d   j                  j                  |j                  j                  _        |j                   d   j                  j                  |j                  j                  _        | j                  |j                  j                  |j                   d   j                  «       t        |j                  |j                   dd  «      D ]u  \  }}|j                  j                  |j                  _        |j                  j                  |j                  _        | j                  |j                  |j                  «       Œw y )Nr   r‹   )	Úconv_layersÚconvrš   Úfeat_layer0rœ   r    r   rû   Ú
feat_layer)r9   re   Úfeature_extractorÚ
spec_layerÚmodule_layers        r#   Úset_feature_extractorz$Wav2Vec2Loader.set_feature_extractor/  s  € Ø'8×'DÑ'DÀQÑ'G×'LÑ'L×'SÑ'Sˆ×Ñ×ÑÔ$Ø%6×%BÑ%BÀ1Ñ%E×%JÑ%J×%OÑ%Oˆ×Ñ×ÑÔ"Ø×ÑØ×Ñ×'Ñ'Ð):×)FÑ)FÀqÑ)I×)TÑ)Tô	
ô ),Ø�O‰OÐ.×:Ñ:¸1¸2Ð>ó)
ò 	PÑ$ˆJ˜ð &2×%6Ñ%6×%=Ñ%=ˆJ�O‰OÔ"Ø#/×#4Ñ#4×#9Ñ#9ˆJ�O‰OÔ Ø×Ñ 
× 5Ñ 5°|×7NÑ7NÕOñ	Pr%   c                 óœ   — | j                  |j                  |j                  «       | j                  |j                  |j
                  «       y r   ©r    Úfp_layer_normr   r­   Úfp_projectionrà   ©r9   re   Úfeature_projections      r#   Úset_feature_projectionz%Wav2Vec2Loader.set_feature_projection<  ó:   € Ø×Ñ˜D×.Ñ.Ð0B×0MÑ0MÔNØ�‰˜×*Ñ*Ð,>×,IÑ,IÕJr%   c                 ó  — |j                   j                  j                  j                  j	                  «       |j                   j                  j                  _        |j                   j                  j
                  j	                  «       |j                   j                  j
                  _        |j                   j                  «       D ]!  }|j                  j	                  «       |_        Œ# |j                  t        j                  dd|j                  f«      «       |j                   j                  j                  |j                   j                  _        |j                   j                  j
                  |j                   j                  _        y rŠ   )
Úpos_conv_embedrH  rš   ÚdataÚfloatrœ   Ú
parametersrE   Úrandnrl  )r9   re   rÝ   r?   Úparams        r#   Úset_pos_conv_embedz!Wav2Vec2Loader.set_pos_conv_embed@  s  € ð ×"Ñ"×'Ñ'×.Ñ.×3Ñ3×9Ñ9Ó;ð 	×Ñ×#Ñ#×*Ñ*Ô/ð 18×0FÑ0F×0KÑ0K×0PÑ0P×0VÑ0VÓ0Xˆ×Ñ×#Ñ#×(Ñ(Ô-Ø×+Ñ+×6Ñ6Ó8ò 	,ˆEØŸ™×)Ñ)Ó+ˆE�Jð	,à×ÑœuŸ{™{¨A¨q°&×2DÑ2DÐ+EÓFÔGØ*1×*@Ñ*@×*EÑ*E×*LÑ*Lˆ×Ñ× Ñ Ô'Ø(/×(>Ñ(>×(CÑ(C×(HÑ(Hˆ×Ñ× Ñ Õ%r%   c                 óÈ  •— | j                  ||j                  j                  «       | j                  ||j                  j                  «       | j                  ||j                  j                  |«       t        ‰| �!  ||j                  j                  «       t        |j                  j                  dd«      }|s'| j                  |j                  |j                  «       y y ©Nr6  F)rN  r7  rK  rU  rT  r^  rÝ   ræ   rÜ   rQ   r?   r­   rá   )r9   re   rb   r?   r6  rJ   s        €r#   rÜ   zWav2Vec2Loader.set_encoderM  s¢   ø€ Ø×"Ñ" 4¨¯©×)IÑ)IÔJØ×#Ñ# D¨%¯.©.×*KÑ*KÔLØ×Ñ  e§n¡n×&<Ñ&<¸fÔEÜ‰Ñ˜D %§.¡.×"8Ñ"8Ô9Ü §¡× 5Ñ 5°ÈÓNˆÙØ�O‰O˜DŸL™L¨%¯-©-Õ8ð r%   c                 óP   — | j                  |j                  |j                  «       y r   )r    r   rž   s      r#   rú   z Wav2Vec2Loader.set_common_layersV  s   € Ø×Ñ˜DŸO™O¨V×->Ñ->Õ?r%   )rK   rt   ru   rÅ   rR   r�   rƒ   r„   r…   rN  rU  r^  rÜ   rú   r(  r)  s   @r#   r1  r1    sF   ø„ àñ ó ð òò*ò%ò)òPòKòIô9ö@r%   r1  ÚWav2Vec2BertConfigc                   ób   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z		 dd„Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚWav2Vec2BertLoaderc                  ó   — y)NÚWav2Vec2BertForCTCr&   r|   s    r#   rR   z$Wav2Vec2BertLoader.architecture_name\  rË  r%   c                 ój  — t        |j                  j                  dd«      }t        j                  |j                  j                  j
                  |j                  j                  j                  |j                  j                  j                  d   |«      }| j                  |j                  |«       |S r5  )rQ   Úwav2vec2_bertr?   r   ÚWav2Vec2BertSpecÚnum_adapter_layersrh  rá   rš   r:  rÜ   rÝ   )r9   rb   r6  re   s       r#   r�   z!Wav2Vec2BertLoader.get_model_spec`  sŒ   € Ü × 3Ñ 3× :Ñ :¸OÈUÓSˆÜ ×1Ñ1Ø×Ñ×&Ñ&×9Ñ9Ø×Ñ×&Ñ&×8Ñ8Ø�M‰M× Ñ ×&Ñ& qÑ)Øó	
ˆð 	×Ñ˜Ÿ™ uÔ-Øˆr%   c                  ó   — y r   r&   r—   s       r#   rƒ   zWav2Vec2BertLoader.set_configk  r@  r%   c                 ó"   — |j                  «       S r   rB  rC  s      r#   r„   z!Wav2Vec2BertLoader.get_vocabularyn  rD  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   z!Wav2Vec2BertLoader.set_vocabularyq  rt  r%   c                 óœ   — | j                  |j                  |j                  «       | j                  |j                  |j
                  «       y r   rP  rS  s      r#   rU  z)Wav2Vec2BertLoader.set_feature_projectiont  rV  r%   Nc                 ó˜  — t        d«      D �cg c]  }t        j                  «       ‘Œ }}| j                  |d   |j                  «       | j                  |d   |j
                  «       | j                  |d   |j                  «       t        j                  |j                  d   |«       | j                  |j                  d   |j                  «       |s|rn|j                  j                  |_        t        j                  d«      j!                  |«      |_        t        j                  d«      j!                  |«      |_        y y c c}w )Nr  r   r‹   r  r  Úint32)r  r   r  r­   Úlinear_qÚlinear_kÚlinear_vr   r  r   Ú
linear_outÚdistance_embeddingrš   Ú!relative_asymmetric_position_keysrÙ  rA   r¹   Úrelative_left_max_positionÚrelative_right_max_position)r9   re   r  Úleft_max_positionÚright_max_positionr’   r  s          r#   rþ   z Wav2Vec2BertLoader.set_attentionx  s  € ô ;@À»(ÖC°Qœ×.Ñ.Õ0ÐCˆÐCØ�‰˜ Q™¨×);Ñ);Ô<Ø�‰˜ Q™¨×);Ñ);Ô<Ø�‰˜ Q™¨×);Ñ);Ô<Ü×Ñ˜$Ÿ+™+ a™.¨,Ô7Ø�‰˜Ÿ™ B™¨×)=Ñ)=Ô>ÙÑ 2Ø5>×5QÑ5Q×5XÑ5XˆDÔ2Ü.0¯h©h°wÓ.?×.DÑ.DÐEVÓ.WˆDÔ+Ü/1¯x©x¸Ó/@×/EÑ/EØ"ó0ˆDÕ,ð !3ùò Ds   ŽEc                 ó`  — t        ||«      D �]ž  \  }}| j                  |j                  |j                  «       | j	                  |j
                  j                  |j                  j                  «       | j	                  |j
                  j                  |j                  j                  «       | j                  |j                  |j                  ||«       | j                  |j                  |j                  «       | j                  |j                   |j"                  j$                  «       | j'                  |j(                  |j"                  j*                  «       | j'                  |j,                  |j"                  j.                  «       | j                  |j0                  |j"                  j2                  «       | j'                  |j4                  |j"                  j6                  «       | j                  |j8                  |j:                  «       | j	                  |j<                  j                  |j>                  j                  «       | j	                  |j<                  j                  |j>                  j                  «       | j                  |j@                  |jB                  «       �Œ¡ y r   )"rû   r    Úenc_ffn1_layer_normÚffn1_layer_normr­   Úenc_ffn1r  Úffn1r=  r  r>  rþ   Úenc_attnrÿ   Úenc_attn_layer_normr  Úenc_conv_layer_normÚconv_moduler   r(  Úenc_conv_pointwise_conv1Úpointwise_conv1Úenc_conv_depthwise_convÚdepthwise_convÚenc_conv_depthwise_layer_normÚdepthwise_layer_normÚenc_conv_pointwise_conv2Úpointwise_conv2Úenc_ffn2_layer_normÚffn2_layer_normÚenc_ffn2Úffn2Úenc_final_layer_normr  )r9   Úspec_layersrý   ry  rz  Úslayerrü   s          r#   Úset_wav2vec2bert_encoderz+Wav2Vec2BertLoader.set_wav2vec2bert_encoderˆ  sù  € ô ! ¨fÓ5ó 	U‰MˆF�EØ×Ñ × :Ñ :¸E×<QÑ<QÔRØ�O‰O˜FŸO™O×4Ñ4°e·j±j×6SÑ6SÔTØ�O‰O˜FŸO™O×4Ñ4°e·j±j×6MÑ6MÔNØ×ÑØ—‘ §¡Ð2CÐEWôð ×Ñ × :Ñ :¸E×<VÑ<VÔWØ×ÑØ×*Ñ*¨E×,=Ñ,=×,HÑ,Hôð �O‰OØ×/Ñ/°×1BÑ1B×1RÑ1Rôð �O‰OØ×.Ñ.°×0AÑ0A×0PÑ0Pôð ×ÑØ×4Ñ4Ø×!Ñ!×6Ñ6ôð �O‰OØ×/Ñ/°×1BÑ1B×1RÑ1Rôð ×Ñ × :Ñ :¸E×<QÑ<QÔRØ�O‰O˜FŸO™O×4Ñ4°e·j±j×6SÑ6SÔTØ�O‰O˜FŸO™O×4Ñ4°e·j±j×6MÑ6MÔNØ×Ñ × ;Ñ ;¸U×=SÑ=SÖTñ7	Ur%   c                 óà  — t        ||«      D �]^  \  }}| j                  |j                  |j                  «       | j	                  |j
                  |j                  «       | j                  |j                  |j                  «       | j	                  |j                  |j                  «       | j                  |j                  |j                  «       | j                  |j                  |j                  «       | j!                  |j"                  j$                  |j&                  j(                  «       | j!                  |j"                  j*                  |j&                  j,                  «       �Œa y r   )rû   r    Úadpt_residual_layer_normÚresidual_layer_normr(  Úadpt_residual_convÚresidual_convÚadpt_attn_layer_normr  Úadpt_attn_convÚself_attn_convrþ   Úadpt_attn_layerrÿ   Úadpt_ffn_layer_normÚffn_layer_normr­   Úadpt_ffnr  r  r=  r  r>  )r9   r‘  rý   r’  rü   s        r#   Úset_wav2vec2bert_adapterz+Wav2Vec2BertLoader.set_wav2vec2bert_adapter¨  s	  € Ü  ¨fÓ5ó 
	N‰MˆF�EØ×ÑØ×/Ñ/°×1JÑ1Jôð �O‰O˜F×5Ñ5°u×7JÑ7JÔKØ×Ñ × ;Ñ ;¸U×=WÑ=WÔXØ�O‰O˜F×1Ñ1°5×3GÑ3GÔHØ×Ñ˜v×5Ñ5°u·±ÔGØ×Ñ × :Ñ :¸E×<PÑ<PÔQØ�O‰O˜FŸO™O×4Ñ4°e·i±i×6RÑ6RÔSØ�O‰O˜FŸO™O×4Ñ4°e·i±i×6LÑ6LÖMñ
	Nr%   c                 óH  — | j                  ||j                  j                  «       | j                  |j                  |j                  j
                  j                  |j                  j                  j                  |j                  j                  j                  «       | j                  |j                  |j                  j                  j                  «       t        |j                  j                  dd«      }|s'| j                  |j                  |j                  «       y y r`  )rU  rh  rT  r“  rÖ   rÝ   rý   r?   Úleft_max_position_embeddingsÚright_max_position_embeddingsr   Úadapter_layersÚadapterrQ   r­   rá   )r9   re   rb   r6  s       r#   rÜ   zWav2Vec2BertLoader.set_encoderµ  sÛ   € Ø×#Ñ# D¨%×*=Ñ*=×*PÑ*PÔQØ×%Ñ%Ø×ÑØ×Ñ×'Ñ'×.Ñ.Ø×Ñ×&Ñ&×CÑCØ×Ñ×&Ñ&×DÑDô		
ð 	×%Ñ%Ø×Ñ ×!4Ñ!4×!<Ñ!<×!CÑ!Cô	
ô   × 3Ñ 3× :Ñ :¸OÈUÓSˆÙØ�O‰O˜DŸL™L¨%¯-©-Õ8ð r%   c                 ób   — |j                   |_         |j                  �|j                  |_        y y r   r.  rž   s      r#   r(  zWav2Vec2BertLoader.set_conv1dÄ  s'   € Ø—m‘mˆŒØ�;‰;Ð"ØŸ™ˆD�Ið #r%   c                 ób   — |j                   |_        |j                  �|j                  |_        y y r   r™   rž   s      r#   r    z!Wav2Vec2BertLoader.set_layer_normÉ  s'   € Ø—]‘]ˆŒ
Ø�;‰;Ð"ØŸ™ˆD�Ið #r%   )NN)rK   rt   ru   rÅ   rR   r�   rƒ   r„   r…   rU  rþ   r“  r   rÜ   r(  r    r&   r%   r#   rd  rd  Z  sV   „ àñ$ó ð$ò	òò%ò)òKð
 KOóò Uò@Nò9ò$ó
$r%   rd  ÚT5Configc                   óh   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zdd„Z	d„ Z
d„ Zd	„ Zdd
„Zd„ Zˆ xZS )ÚT5Loaderc                  ó   — y)NÚT5ForConditionalGenerationr&   r|   s    r#   rR   zT5Loader.architecture_nameÑ  s   € à+r%   c           	      ó¤  — t         j                  j                  |j                  j                  |j                  j
                  f|j                  j                  dt        |j                  j                     |j                  j                  dd¬«      }| j                  |j                  |j                  «       | j                  |j                  |j                  d¬«       | j                  |j                  j                  |j                  «       |j                  j                   r(|j                  j"                  dz  |j                  _        |S )NT)rÐ   rÑ   Úffn_gluÚrelative_attention_biasÚrms_norm)Ú
is_decoderg      à¿)r
   rÔ   rÕ   r?   r   Únum_decoder_layersrÂ  rÚ   Údense_act_fnÚis_gated_actÚ	set_stackrÝ   rß   r­   rà   rá   Útie_word_embeddingsr   Úscale_outputsrm  s      r#   r�   zT5Loader.get_model_specÕ  sé   € Ü×/Ñ/×;Ñ;Ø�\‰\×$Ñ$ e§l¡l×&EÑ&EÐFØ�L‰L×"Ñ"ØÜ-¨e¯l©l×.GÑ.GÑHØ—L‘L×-Ñ-Ø$(Øð <ó 
ˆð 	�‰�t—|‘| U§]¡]Ô3Ø�‰�t—|‘| U§]¡]¸tˆÔDØ�‰˜Ÿ™×/Ñ/°·±Ô?à�<‰<×+Ò+Ø).¯©×)=Ñ)=¸tÑ)CˆD�L‰LÔ&àˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zT5Loader.get_vocabularyé  r’  r%   c                 óH   — |j                  |«       |j                  |«       y r   rë   r”   s      r#   r…   zT5Loader.set_vocabularyò  rî   r%   c                 ó  — |j                   |_        |j                  |_        |j                  |_        t	        |j
                  d«      r+|j                  |j
                  j                  «      |_        y |j                   |_        y )Nrô   )	r^  rð   rñ   rò   rS   r?   ró   rô   rõ   r—   s       r#   rƒ   zT5Loader.set_configö  sk   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$×.Ñ.ˆÔÜ�5—<‘<Ð!9Ô:Ø)2×)HÑ)HØ—‘×3Ñ3ó*ˆFÕ&ð *3×)<Ñ)<ˆFÕ&r%   c                 ó  — | j                  |j                  |j                  «       | j                  t	        |j
                  t        «      r|j
                  d   n|j
                  |j                  «       d|_        t        t        |j                  |j                  «      «      D ]Ù  \  }\  }}| j                  |j                  |j                  d   «       |dkD  rO|j                  d   j                  }|j                  |j                  _        |j                   |j                  _        |r)| j#                  |j$                  |j                  d   «       | j'                  |j(                  |j                  d   «       ŒÛ y )Nr   Fr‹   r  )r    r   r  r¯   r©   r$  r%  r&  r!  ro  rû   rü   ÚblockÚset_self_attentionrù   r¯  Úrelative_attention_max_distanceÚset_cross_attentionr  Úset_ffnr  )r9   re   rŸ   r±  rN  r  r¼  Úfirst_self_attentions           r#   rµ  zT5Loader.set_stack  s5  € Ø×Ñ˜DŸO™O¨V×-DÑ-DÔEØ×Ñô ˜dŸo™o¬tÔ4ð —‘ Ò"à—_‘_à×Ñô	
ð !&ˆÔä&/´°D·J±JÀÇÁÓ0MÓ&Nò 	:Ñ"ˆAÑ"�
˜EØ×#Ñ# J×$=Ñ$=¸u¿{¹{È1¹~ÔNà�1Šuà'+§z¡z°!¡}×'CÑ'CÐ$à(×@Ñ@ð ×)Ñ)ÔAð )×HÑHð ×)Ñ)ÔIñ Ø×(Ñ(¨×)=Ñ)=¸u¿{¹{È1¹~ÔNà�L‰L˜Ÿ™¨¯©°R©Õ9ñ!	:r%   c                 óê  — t        |d«      ra| j                  |j                  |j                  j                  «       | j                  |j
                  |j                  j                  «       n0| j                  |j                  |j                  j                  «       | j                  |j                  |j                  j                  «       | j                  |j                  |j                  «       y )NÚlinear_0_noact)rS   r­   r  ÚDenseReluDenseÚwi_0rÃ  Úwi_1Úwir  Úwor    r   rž   s      r#   rÀ  zT5Loader.set_ffn   s¡   € Ü�4Ð)Ô*Ø�O‰O˜DŸM™M¨6×+@Ñ+@×+EÑ+EÔFØ�O‰O˜D×/Ñ/°×1FÑ1F×1KÑ1KÕLà�O‰O˜DŸM™M¨6×+@Ñ+@×+CÑ+CÔDà�‰˜Ÿ™ v×'<Ñ'<×'?Ñ'?Ô@Ø×Ñ˜DŸO™O¨V×->Ñ->Õ?r%   c                 óŒ   — | j                  ||j                  d¬«       | j                  |j                  |j                  «       y r÷   )rþ   ÚSelfAttentionr    r   rž   s      r#   r½  zT5Loader.set_self_attention*  s7   € Ø×Ñ˜4 ×!5Ñ!5ÀdÐÔKØ×Ñ˜DŸO™O¨V×->Ñ->Õ?r%   c                 óˆ   — | j                  ||j                  «       | j                  |j                  |j                  «       y r   )rþ   ÚEncDecAttentionr    r   rž   s      r#   r¿  zT5Loader.set_cross_attention.  s2   € Ø×Ñ˜4 ×!7Ñ!7Ô8Ø×Ñ˜DŸO™O¨V×->Ñ->Õ?r%   c                 ó  — d|_         t        d«      D �cg c]  }t        j                  «       ‘Œ }}| j	                  |d   |j
                  «       | j	                  |d   |j                  «       | j	                  |d   |j                  «       |r$t        j                  |j                  d   |«       nLt        j                  |j                  d   |d d «       t        j                  |j                  d   |dd  «       | j	                  |j                  d   |j                  «       |j                  rO|j                  j                  |_        t        j                   d«      j#                  |j$                  «      |_        y y c c}w )Nr  r  r   r‹   r  r  rp  )Úqueries_scaler  r   r  r­   ÚqÚkÚvr   r  r   ÚoÚhas_relative_attention_biasr¯  rš   rÙ  rA   r¹   r¾  r  s         r#   rþ   zT5Loader.set_attention2  s,  € Ø ˆÔä:?À»(ÖC°Qœ×.Ñ.Õ0ÐCˆÐCØ�‰˜ Q™¨¯©Ô5Ø�‰˜ Q™¨¯©Ô5Ø�‰˜ Q™¨¯©Ô5áÜ×Ñ˜dŸk™k¨!™n¨lÕ;ä×Ñ˜dŸk™k¨!™n¨l¸2¸AÐ.>Ô?Ü×Ñ˜dŸk™k¨!™n¨l¸1¸2Ð.>Ô?à�‰˜Ÿ™ B™¨¯©Ô5à×0Ò0Ø+4×+LÑ+L×+SÑ+SˆDÔ(Ü35·8±8¸GÓ3D×3IÑ3IØ×9Ñ9ó4ˆDÕ0ð 1ùò Ds   •Fc                 ó&   — |j                   |_        y r   ©rš   r›   ©r9   re   r   s      r#   r    zT5Loader.set_layer_normH  ó   € Ø×&Ñ&ˆ�
r%   r'  )rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   rµ  rÀ  r½  r¿  rþ   r    r(  r)  s   @r#   rª  rª  Ï  sJ   ø„ àñ,ó ð,òô(ò0ò	=ó:ò>@ò@ò@óö,'r%   rª  Ú	MT5Configc                   ó   — e Zd Zed„ «       Zy)Ú	MT5Loaderc                  ó   — y)NÚMT5ForConditionalGenerationr&   r|   s    r#   rR   zMT5Loader.architecture_nameN  s   € à,r%   N)rK   rt   ru   rÅ   rR   r&   r%   r#   rÚ  rÚ  L  s   „ àñ-ó ñ-r%   rÚ  ÚBloomConfigc                   óL   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )ÚBloomLoaderc                  ó   — y)NÚBloomForCausalLMr&   r|   s    r#   rR   zBloomLoader.architecture_nameU  ó   € à!r%   c           	      ó~  — t         j                  j                  |j                  j                  |j                  j
                  dt        j                  j                  ddd¬«      }| j                  |j                  |j                  «       | j                  |j                  j                  |j                  «       |S )NT)rÐ   rÑ   rÒ   ÚalibiÚalibi_use_positive_positions)r
   rg  rÕ   r?   rˆ  r‰  r   Ú
ActivationÚGELUTanhrÞ   rß   rŠ  r­   rà   rá   rm  s      r#   r�   zBloomLoader.get_model_specY  s�   € Ü×;Ñ;×GÑGØ�L‰L× Ñ Ø�L‰L×ÑØÜ"×-Ñ-×6Ñ6Ø $ØØ)-ð Hó 
ˆð 	×Ñ˜Ÿ™ u×'8Ñ'8Ô9Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zBloomLoader.get_vocabularyh  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zBloomLoader.set_vocabularyq  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zBloomLoader.set_configt  rw  r%   c                 ó  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       | j	                  |j                  |j                  «       t        |j                  |j                  «      D �]i  \  }}| j	                  |j                  j                  |j                  «       | j                  |j                  j                  d   |j                  j                   |j                  j"                  «       | j%                  |j                  j                  d   |j                  j&                  «       | j	                  |j(                  j                  |j*                  «       | j%                  |j(                  j,                  |j.                  j0                  «       | j%                  |j(                  j2                  |j.                  j4                  «       �Œl y r•  )r!  r¯   r$  Úword_embeddingsr    rÒ   Úword_embeddings_layernormr   r™  rû   rü   rš  rù   rù  Úset_qkv_linearr   rü  rÂ  r­   rþ  r  rû  r  r   rÿ  r  r   r¢  s        r#   rÞ   zBloomLoader.set_decodery  s  € Ø %ˆÔØ×Ñ˜DŸO™O¨V×-CÑ-CÔDØ×Ñ˜D×4Ñ4°f×6VÑ6VÔWØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!:ó 	NÑˆJ˜Ø×ÑØ×)Ñ)×4Ñ4°e×6KÑ6Kôð ×ÑØ×)Ñ)×0Ñ0°Ñ3Ø×$Ñ$×4Ñ4Ø×$Ñ$×.Ñ.ôð
 �O‰OØ×)Ñ)×0Ñ0°Ñ3°U×5IÑ5I×5OÑ5Oôð ×ÑØ—‘×)Ñ)¨5×+IÑ+Iôð �O‰O˜JŸN™N×3Ñ3°U·Y±Y×5LÑ5LÔMØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5LÑ5LÖMñ#	Nr%   c                 ó`  — |j                   }|j                  |dd|j                  d   «      }|j                  dd«      }|j                  d|j                  d   «      }|j                  }|j                  |dd«      }|j                  dd«      }|j                  d«      }||_         ||_        y )Nr  r  r   r‹   )rš   rÛ  r:  r«   rœ   )r9   re   rŸ   rÂ  rš   rœ   s         r#   rî  zBloomLoader.set_qkv_linear’  sš   € Ø—‘ˆØ—‘ 	¨1¨b°&·,±,¸rÑ2BÓCˆØ×!Ñ! ! QÓ'ˆØ—‘  F§L¡L°Ñ$4Ó5ˆà�{‰{ˆØ�|‰|˜I q¨"Ó-ˆØ�~‰~˜a Ó#ˆØ�|‰|˜BÓˆàˆŒØˆ�	r%   )rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   rÞ   rî  r(  r)  s   @r#   rß  rß  S  s4   ø„ àñ"ó ð"òôò)ò/ò
Nö2r%   rß  Ú	MPTConfigc                   óL   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )Ú	MPTLoaderc                  ó   — y©NÚAutoModelForCausalLMr&   r|   s    r#   rR   zMPTLoader.architecture_name£  ó   € à%r%   c                 ó  — t         j                  j                  |j                  j                  |j                  j
                  dt        j                  j                  d¬«      }| j                  |j                  |j                  «       |S )NT)rÐ   rÑ   rä  )r
   rg  rÕ   r?   Ún_layersÚn_headsr   ræ  ÚGELUrÞ   rß   rŠ  rm  s      r#   r�   zMPTLoader.get_model_spec§  sn   € Ü×;Ñ;×GÑGØ�L‰L×!Ñ!Ø�L‰L× Ñ ØÜ"×-Ñ-×2Ñ2Øð Hó 
ˆð 	×Ñ˜Ÿ™ u×'8Ñ'8Ô9Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zMPTLoader.get_vocabulary³  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zMPTLoader.set_vocabulary¼  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zMPTLoader.set_config¿  rw  r%   c                 óä  — | j                  |j                  |j                  «       | j                  |j                  |j
                  «       d|_        |j                  j                  |j                  _        t        |j                  |j                  «      D �]T  \  }}| j                  |j                  j                  |j                  «       | j                  |j                  j                  d   |j                   j"                  «       | j                  |j                  j                  d   |j                   j$                  «       | j                  |j&                  j                  |j(                  «       | j                  |j&                  j*                  |j&                  j,                  «       | j                  |j&                  j.                  |j&                  j0                  «       �ŒW y r•  )r¯   r$  r—  r    r   Únorm_fr!  rš   rà   rû   rü   Úblocksrù   Únorm_1r­   r   rœ  ÚWqkvr  r  Únorm_2r  Úup_projr  Ú	down_projr¢  s        r#   rÞ   zMPTLoader.set_decoderÄ  sG  € Ø×Ñ˜DŸO™O¨V¯Z©ZÔ8Ø×Ñ˜DŸO™O¨V¯]©]Ô;à %ˆÔØ!%§¡×!7Ñ!7ˆ�‰Ôä!$ T§Z¡Z°·±Ó!?ó 	JÑˆJ˜Ø×Ñ 
× 9Ñ 9× DÑ DÀeÇlÁlÔSØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁÇÁÔQØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×ATÑATÔUà×Ñ 
§¡× 9Ñ 9¸5¿<¹<ÔHØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5FÑ5FÔGØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5HÑ5HÖIñ	Jr%   c                 ón   — |j                   |_        t        j                  |j                  «      |_        y r   )rš   r›   rE   Ú
zeros_liker�   rž   s      r#   r    zMPTLoader.set_layer_normÔ  s#   € Ø—]‘]ˆŒ
Ü×$Ñ$ T§Z¡ZÓ0ˆ�	r%   )rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   rÞ   r    r(  r)  s   @r#   rò  rò  ¡  s4   ø„ àñ&ó ð&ò
ôò)ò/ò
Jö 1r%   rò  ÚGemmaConfigc                   óL   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )ÚGemmaLoaderc                  ó   — y)NÚGemmaForCausalLMr&   r|   s    r#   rR   zGemmaLoader.architecture_nameÛ  râ  r%   c                 óì  — |j                   j                  }|j                   j                  }t        |j                   d|«      }||k(  rd }t        |j                   dd«      }t        j
                  j                  |||dk(  rt        j                  j                  nt        j                  j                  dddddt        |j                   dd	«      ||j                   j                  ¬
«      }| j                  |j                  |j                  «       | j                  |j                  j                   |j"                  «       |j                   j$                  dz  |j                  j&                  _        |S )NÚnum_key_value_headsÚhidden_activationr   r   Tr   Fr¿   é'  )	rÑ   rÐ   r®  r°  r·  r¸  Úrotary_baseÚnum_heads_kvrÎ  ç      à?©r?   rh  ri  rQ   r
   rg  rÕ   r   ræ  rú  rç  rÎ  rÞ   rß   rb   r­   rà   rá   rl  r$  Úmultiply_by_sqrt_depth©r9   rb   r   rÂ  r  Úactivation_configre   s          r#   r�   zGemmaLoader.get_model_specß  s2  € Ø—\‘\×3Ñ3ˆ
à—L‘L×4Ñ4ˆ	Ü˜uŸ|™|Ð-BÀIÓNˆØ˜9Ò$ØˆLä#Ø�L‰LÐ-Ð/Bó
Ðô  ×;Ñ;×GÑGØØð %¨Ò.ô ×&Ñ&×+Ò+ä ×+Ñ+×4Ñ4àØØØØ#Ü §¡¨l¸EÓBØ%Ø—\‘\×*Ñ*ð Hó 
ˆð$ 	×Ñ˜Ÿ™ u§{¡{Ô3Ø�‰˜Ÿ™×/Ñ/°·±Ô?Ø9>¿¹×9QÑ9QÐSVÑ9Vˆ�‰×ÑÔ6Øˆr%   c                 ó*  •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |j                  j                  t	        |«      k  r|d |j                  j                   }|S r�  r�  r�  s         €r#   r„   zGemmaLoader.get_vocabulary  óƒ   ø€ Ü‘Ñ'¨¨yÓ9ˆà—L‘L×+Ñ+¬c°&«kÑ9ˆ	Ü�yÓ!ò 	/ˆAØ�M‰M˜/¨AÑ-Õ.ð	/à�<‰<×"Ñ"¤S¨£[Ò0ØÐ5˜eŸl™l×5Ñ5Ð6ˆFàˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zGemmaLoader.set_vocabulary  rt  r%   c                 ó    — |j                   |_         |j                  |_        |j                  |_        |j                  j                  |_        y r   ©rð   rñ   rò   r?   Úrms_norm_epsÚlayer_norm_epsilonr—   s       r#   rƒ   zGemmaLoader.set_config  ó>   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$)§L¡L×$=Ñ$=ˆÕ!r%   c                 ó4   — |j                   |_        d|_        y r4  ©rš   r›   Úlayer_norm_use_residualrÖ  s      r#   r    zGemmaLoader.set_layer_norm  ó   € Ø×&Ñ&ˆŒ
Ø'+ˆÕ$r%   c                 ó$  — d|_         d|_        | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        |j                  |j                  «      D �]  \  }}| j                  |j                  j                  |j                  «       | j                  |j                  j                  |j                  «       |j                  j                   j"                  }|j                  j$                  j"                  }|j                  j&                  j"                  }|j                  j(                  j"                  }t+        j,                  |||g«      |j                  j.                  d   _        ||j                  j.                  d   _        | j1                  |j                  j2                  |j4                  j6                  «       | j1                  |j                  j8                  |j4                  j:                  «       | j1                  |j                  j<                  |j4                  j>                  «       tA        |d«       tA        |d«       tC        jD                  «        �Œ y ©NTFr   r‹   rÿ   r   )#r!  r5  r¯   r$  r&  r    r   Únormrû   rü   rý   rù   rù  r  rû  rÿ   r  rš   r  r  Úo_projrE   r¿  r   r­   r  r   Ú	gate_projrÃ  r  r  r  ÚdelattrÚgcÚcollect©	r9   re   rŸ   r  rü   ÚwqÚwkÚwvrÈ  s	            r#   rÞ   zGemmaLoader.set_decoder  sË  € Ø $ˆÔØ).ˆÔ&Ø×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó 	ÑˆJ˜Ø×ÑØ×)Ñ)×4Ñ4°e×6KÑ6Kôð ×ÑØ—‘×)Ñ)¨5×+IÑ+Iôð —‘×'Ñ'×.Ñ.ˆBØ—‘×'Ñ'×.Ñ.ˆBØ—‘×'Ñ'×.Ñ.ˆBØ—‘×'Ñ'×.Ñ.ˆBä9>¿¹ÀBÈÈBÀ<Ó9PˆJ×%Ñ%×,Ñ,¨QÑ/Ô6Ø9;ˆJ×%Ñ%×,Ñ,¨QÑ/Ô6à�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5HÑ5HÔIØ�O‰O˜JŸN™N×9Ñ9¸5¿9¹9×;LÑ;LÔMØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5HÑ5HÔIä�E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñ-	r%   ©rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   r    rÞ   r(  r)  s   @r#   r
  r
  Ù  s4   ø„ àñ"ó ð"ò!ôF	ò)ò>ò,ör%   r
  ÚGemma2Configc                   óL   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )ÚGemma2Loaderc                  ó   — y)NÚGemma2ForCausalLMr&   r|   s    r#   rR   zGemma2Loader.architecture_name;  ó   € à"r%   c                 óî  — |j                   j                  }|j                   j                  }t        |j                   d|«      }||k(  rd }t        |j                   dd«      }t        j
                  j                  |||dk(  rt        j                  j                  nt        j                  j                  dddddt        |j                   dd	«      ||j                   j                  d¬
«      }| j                  |j                  |j                  «       | j                  |j                  j                   |j"                  «       |j                   j$                  dz  |j                  j&                  _        |S )Nr  r  r   r   Tr   Fr¿   r  )
rÑ   rÐ   r®  r°  r·  r¸  r  r  rÎ  Úpre_post_layer_normr  r  r  s          r#   r�   zGemma2Loader.get_model_spec?  s5  € Ø—\‘\×3Ñ3ˆ
à—L‘L×4Ñ4ˆ	Ü˜uŸ|™|Ð-BÀIÓNˆØ˜9Ò$ØˆLä#Ø�L‰LÐ-Ð/Bó
Ðô  ×;Ñ;×GÑGØØð %¨Ò.ô ×&Ñ&×+Ò+ä ×+Ñ+×4Ñ4àØØØØ#Ü §¡¨l¸EÓBØ%Ø—\‘\×*Ñ*Ø $ð! Hó 
ˆð& 	×Ñ˜Ÿ™ u§{¡{Ô3Ø�‰˜Ÿ™×/Ñ/°·±Ô?Ø9>¿¹×9QÑ9QÐSVÑ9Vˆ�‰×ÑÔ6Øˆr%   c                 ó*  •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |j                  j                  t	        |«      k  r|d |j                  j                   }|S r�  r�  r�  s         €r#   r„   zGemma2Loader.get_vocabularyc  r  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zGemma2Loader.set_vocabularyn  rt  r%   c                 ó    — |j                   |_         |j                  |_        |j                  |_        |j                  j                  |_        y r   r  r—   s       r#   rƒ   zGemma2Loader.set_configq  r  r%   c                 ó4   — |j                   |_        d|_        y r4  r!  rÖ  s      r#   r    zGemma2Loader.set_layer_normw  r#  r%   c                 ó”  — d|_         d|_        | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        |j                  |j                  «      D �]J  \  }}| j                  |j                  |j                  «       | j                  |j                  |j                  «       | j                  |j                  |j                   «       | j                  |j"                  |j$                  «       |j&                  j(                  j*                  }|j&                  j,                  j*                  }|j&                  j.                  j*                  }|j&                  j0                  j*                  }t3        j4                  |||g«      |j6                  j8                  d   _        ||j6                  j8                  d   _        | j;                  |j<                  j>                  |j@                  jB                  «       | j;                  |j<                  jD                  |j@                  jF                  «       | j;                  |j<                  jH                  |j@                  jJ                  «       tM        |d«       tM        |d«       tO        jP                  «        �ŒM y r%  ))r!  r5  r¯   r$  r&  r    r   r&  rû   rü   rý   r÷  rù  rú  rû  Úpre_feedforward_layer_normÚpre_feedforward_layernormÚpost_feedforward_layer_normÚpost_feedforward_layernormrÿ   r  rš   r  r  r'  rE   r¿  rù   r   r­   r  r  r   r(  rÃ  r  r  r  r)  r*  r+  r,  s	            r#   rÞ   zGemma2Loader.set_decoder{  sþ  € Ø $ˆÔØ).ˆÔ&Ø×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó 	ÑˆJ˜Ø×Ñ 
× ;Ñ ;¸U×=RÑ=RÔSà×ÑØ×4Ñ4°e×6TÑ6Tôð ×ÑØ×5Ñ5°u×7VÑ7Vôð ×ÑØ×6Ñ6¸×8XÑ8Xôð —‘×'Ñ'×.Ñ.ˆBØ—‘×'Ñ'×.Ñ.ˆBØ—‘×'Ñ'×.Ñ.ˆBØ—‘×'Ñ'×.Ñ.ˆBä9>¿¹ÀBÈÈBÀ<Ó9PˆJ×%Ñ%×,Ñ,¨QÑ/Ô6Ø9;ˆJ×%Ñ%×,Ñ,¨QÑ/Ô6à�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5HÑ5HÔIØ�O‰O˜JŸN™N×9Ñ9¸5¿9¹9×;LÑ;LÔMØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5HÑ5HÔIä�E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñ;	r%   r0  r)  s   @r#   r3  r3  9  s4   ø„ àñ#ó ð#ò"ôH	ò)ò>ò,ö#r%   r3  ÚLlamaConfigc                   óx   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	e
j                  j                  fd„Zˆ xZS )ÚLlamaLoaderc                  ó   — y)NÚLlamaForCausalLMr&   r|   s    r#   rR   zLlamaLoader.architecture_name£  râ  r%   c                 ó~  — |j                   j                  }|j                   j                  }t        |j                   d|«      }||k(  rd }| j	                  |j                   d«      \  }}}t        |j                   dd «      }|r‡d }	|j
                  dk(  rt        j                  |j                  «      }	|	€<t        d|j
                  ›ddj                  t        j                  «       «      ›�«      ‚|j                  }
|j                  }nt        j                  j                   }	d }
d }t"        j$                  j'                  ||t        j(                  j*                  dddd	d
|||||	|
|¬«      }| j-                  |j.                  |j0                  |	«       | j3                  |j.                  j4                  |j6                  «       t        |j                   dd «      }|t8        j:                  j<                  k(  rC|j.                  j>                  D ]*  }|d   |j@                  _!        |d   |j@                  _"        Œ, |S )Nr  r  Úquantization_configÚawqúQuantization type 'úT' is not yet implemented. The following Quantization types are currently supported: r<   Tr   F©rÑ   rÐ   r®  r°  r·  r¸  rÂ   rÃ   r  r  r¬   Úquant_group_sizeÚ
quant_bitsr¸   Úlow_freq_factorÚhigh_freq_factor)#r?   rh  ri  rQ   rÄ   Úquant_methodÚ_SUPPORTED_QUANTIZATIONrL   Úversionr   rN   rP   Ú
group_sizeÚbitsr   r¢   r£   r
   rg  rÕ   ræ  ÚSWISHrÞ   rß   rb   r­   rà   rá   r   ÚRotaryScalingTypeÚLlama3rü   rù   Úrotary_low_freq_factorÚrotary_high_freq_factor)r9   rb   r   rÂ  r  rÂ   rÃ   r¿   rH  r¬   rM  rN  re   r¸   rü   s                  r#   r�   zLlamaLoader.get_model_spec§  s  € Ø—\‘\×3Ñ3ˆ
à—L‘L×4Ñ4ˆ	Ü˜uŸ|™|Ð-BÀIÓNˆØ˜9Ò$ØˆLàAE×AWÑAWØ�L‰L˜&óB
Ñ>ÐÐ2°Jô & e§l¡lÐ4IÈ4ÓPÐÙØˆJØ"×/Ñ/°5Ò8Ü4×8Ñ8Ð9L×9TÑ9TÓU�
ØÐ!Ý)ð ,×8Ó8ØŸ	™	Ô"9×">Ñ">Ó"@ÔAð	óð ð  3×=Ñ=ÐØ,×1Ñ1‰Jä$×1Ñ1×5Ñ5ˆJØ#ÐØˆJä×;Ñ;×GÑGØØÜ"×-Ñ-×3Ñ3ØØØØØ#Ø 3Ø"7Ø"Ø%Ø!Ø-Ø!ð Hó 
ˆð$ 	×Ñ˜Ÿ™ u§{¡{°JÔ?Ø�‰˜Ÿ™×/Ñ/°·±Ô?ô ˜uŸ|™|¨^¸TÓBˆØ¤.×"BÑ"B×"IÑ"IÒIØŸ™×+Ñ+ò �Ø>JØ%ñ?�×$Ñ$Ô;ð @LØ&ñ@�×$Ñ$Õ<ð	ð ˆr%   c                 ó*  •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |j                  j                  t	        |«      k  r|d |j                  j                   }|S r�  r�  r�  s         €r#   r„   zLlamaLoader.get_vocabularyé  r  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zLlamaLoader.set_vocabularyô  rt  r%   c                 ó¼   — |j                   |_         |j                  |_        |j                  �|j                  nd|_        |j                  j                  |_        y ©NÚ r  r—   s       r#   rƒ   zLlamaLoader.set_config÷  sP   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔà#,×#6Ñ#6Ð#BˆI×ÒÈð 	Ôð %*§L¡L×$=Ñ$=ˆÕ!r%   c                 ó&   — |j                   |_        y r   rÕ  rÖ  s      r#   r    zLlamaLoader.set_layer_normÿ  r×  r%   c                 ó�  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        |j                  |j                  «      D �]Ê  \  }}| j	                  |j                  j
                  |j                  «       | j	                  |j                  j
                  |j                  «       t        d«      D �cg c]  }t        j                   «       ‘Œ }}| j#                  |d   |j$                  j&                  |¬«       | j#                  |d   |j$                  j(                  |¬«       | j#                  |d   |j$                  j*                  |¬«       |t        j,                  j.                  k(  r.t1        j2                  |j                  j4                  d   |«       nO|t        j,                  j6                  k(  rdnd}t1        j8                  |j                  j4                  d   ||«       | j#                  |j                  j4                  d   |j$                  j:                  |¬«       | j#                  |j                  j<                  |j>                  j@                  |¬«       | j#                  |j                  jB                  |j>                  jD                  |¬«       | j#                  |j                  jF                  |j>                  jH                  |¬«       tK        |d«       tK        |d«       tM        jN                  «        �ŒÍ y c c}w ©	NFr  r   ©r¬   r‹   r  rÿ   r   ©(r!  r¯   r$  r&  r    r   r&  rû   rü   rý   rù   rù  r  rû  r  r   r  r­   rÿ   r  r  r  r¢   r£   r   r  r   ÚAWQ_GEMMÚfuse_linear_prequantr'  r  r   r(  rÃ  r  r  r  r)  r*  r+  ©	r9   re   rŸ   r¬   r  rü   r’   r  Úcc_dims	            r#   rÞ   zLlamaLoader.set_decoder  s¡  € Ø %ˆÔØ×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó ,	ÑˆJ˜Ø×ÑØ×)Ñ)×4Ñ4°e×6KÑ6Kôð ×ÑØ—‘×)Ñ)¨5×+IÑ+Iôô ?DÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð œ[×5Ñ5×9Ñ9Ò9Ü×!Ñ! *×";Ñ";×"BÑ"BÀ1Ñ"EÀ|ÕTà(¬K×,DÑ,D×,MÑ,MÒM™ÐST�Ü×*Ñ*Ø×-Ñ-×4Ñ4°QÑ7¸Àvôð �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñY,	ùò Hó   Ã(M©rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   r    r   r¢   r£   rÞ   r(  r)  s   @r#   rD  rD  ¡  sF   ø„ àñ"ó ð"ò@ôD	ò)ò>ò'ð 4?×3KÑ3K×3OÑ3O÷ 1r%   rD  ÚGemma3TextConfigÚGemma3Configc                   ó~   ‡ — e Zd Zed„ «       Zd„ Zd„ Zˆ fd„Zd„ Zd„ Z	d„ Z
ej                  j                  fd„Zˆ xZS )	ÚGemma3Loaderc                  ó   — y)NÚGemma3ForCausalLMr&   r|   s    r#   rR   zGemma3Loader.architecture_name9  r6  r%   c                 óX   — |j                   j                  dk(  rt        j                  S |S )Nrl  )rJ   rK   rG   ÚGemma3ForConditionalGeneration©r9   r?   Údefault_classs      r#   r>   zGemma3Loader.get_model_class=  s*   € ð ×Ñ×$Ñ$¨Ò6Ü×>Ñ>Ð>ØÐr%   c                 óŒ  — t        |j                  d|j                  «      }|j                  }|j                  }t        |d|«      }||k(  rd }|j                  }t        |dd«      }t        |dd«      }t        |dd«      }	t        |d	d
«      }
t        |dd «      }|€4t        |dd «      }|�%t        |«      D �cg c]  }|dz   |z  dk(  rdnd‘Œ }}t        |dd «      }|ra|j                  dk(  rt        j                  |j                  «      }€t        d|j                  z  «      ‚|j                  }|j                  }nt        j                  j                  }d }d }t         j"                  j%                  |||dk(  rt        j&                  j(                  nt        j&                  j*                  ddd|d|	|||
d|||d¬«      }|| _        t/        |«      D ]ö  \  }}|j0                  j2                  |   }|dk(  rgt5        j6                  d«      j9                  |«      |j:                  _        t5        j6                  d«      j9                  d«      |j:                  _        Œ‹|dk(  sŒ‘t5        j6                  d«      j9                  |	«      |j:                  _        t5        j6                  d«      j9                  |
«      |j:                  _        Œø t        |j@                  d|j@                  «      }| jC                  |j0                  ||«       | jE                  |j0                  jF                  |jH                  «       |S c c}w )NÚtext_configr  r  r   r¿   é@B Úrope_local_base_freqr  Úsliding_windowi   Úlayer_typesÚ_sliding_window_patternr‹   r   Úfull_attentionÚsliding_attentionrH  rI  ú.Quantization type '%s' is not yet implemented.r   TF)rÑ   rÐ   r®  r°  r·  r¸  r  r  rÎ  ry  r8  r¬   rM  rN  Úqk_normÚfloat32rp  Úlanguage_model)%rQ   r?   rh  ri  rÎ  r  rQ  rR  rL   rS  r   rT  rU  r   r¢   r£   r
   rg  rÕ   ræ  rú  rç  Ú_layer_typesro  rß   rü   rÙ  rA   r¹   rù   r  ry  rb   rÞ   r­   rà   rá   )r9   rb   rv  r   rÂ  r  rÎ  r  r¿   rx  ry  rz  Úsliding_window_patternrN  rH  r¬   rM  rN  re   Ú
layer_typerü   Ú
text_models                         r#   r�   zGemma3Loader.get_model_specD  sI  € Ü˜eŸl™l¨M¸5¿<¹<ÓHˆØ ×2Ñ2ˆ
Ø×3Ñ3ˆ	Ü˜{Ð,AÀ9ÓMˆØ˜9Ò$ØˆLà×'Ñ'ˆä#ØÐ,Ð.Aó
Ðô
 ˜[¨,¸	ÓBˆ
Ü&ØÐ/°ó 
Ðô
 ! Ð.>ÀÓEˆÜ˜k¨=¸$Ó?ˆØÐÜ%,ØÐ6¸ó&Ð"ð &Ð1ô
 # :Ó.ö	ð ð ˜A™Ð!7Ñ7¸1Ò<ñ %à,ñ-ð�ð ô & kÐ3HÈ$ÓOÐÙØ"×/Ñ/°5Ò8Ü4×8Ñ8Ð9L×9TÑ9TÓU�
ØÐ!Ü)ØDØ)×6Ñ6ñ7óð ð  3×=Ñ=ÐØ,×1Ñ1‰Jä$×1Ñ1×5Ñ5ˆJØ#ÐØˆJô  ×;Ñ;×GÑGØØð %¨Ò.ô ×&Ñ&×+Ò+ä ×+Ñ+×4Ñ4àØØØØ#Ø,Ø%ØØ)Ø $Ø!Ø-Ø!Øð+ Hó 
ˆð2 (ˆÔô ' {Ó3ò 	‰MˆAˆzØ—L‘L×&Ñ& qÑ)ˆEØÐ-Ò-Ü35·8±8¸IÓ3F×3KÑ3KÈJÓ3W�×$Ñ$Ô0Ü68·h±h¸wÓ6G×6LÑ6LÈQÓ6O�×$Ñ$Õ3ØÐ2Ó2Ü35·8±8¸IÓ3F×3KÑ3KØ(ó4�×$Ñ$Ô0ô 79·h±h¸wÓ6G×6LÑ6LØ"ó7�×$Ñ$Õ3ð	ô ˜UŸ[™[Ð*:¸E¿K¹KÓHˆ
Ø×Ñ˜Ÿ™ z°:Ô>Ø�‰˜Ÿ™×/Ñ/°·±Ô?ØˆùòIs   Â9Mc                 ó0  •— t         ‰| �  ||«      }t        |j                  d|j                  «      }|j                  t        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |j                  t        |«      k  r|d |j                   }|S ©Nrv  rŽ  ©ræ   r„   rQ   r?   rç   rè   r  rM  ©r9   rb   rd   r†   rv  r‘  rN  rJ   s          €r#   r„   zGemma3Loader.get_vocabulary¦  s�   ø€ Ü‘Ñ'¨¨yÓ9ˆä˜eŸl™l¨M¸5¿<¹<ÓHˆØ×*Ñ*¬S°«[Ñ8ˆ	Ü�yÓ!ò 	/ˆAØ�M‰M˜/¨AÑ-Õ.ð	/à×!Ñ!¤C¨£KÒ/ØÐ4˜k×4Ñ4Ð5ˆFàˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zGemma3Loader.set_vocabulary²  rt  r%   c                 óú   — |j                   |_         |j                  |_        t        |d«      r<t        |j                  t
        «      r"|j                  j                  «       rd|_        y |j                  |_        y ©NÚchat_templatez<end_of_turn>©rð   rò   rS   r©   r�  rw   Ústriprñ   r—   s       r#   rƒ   zGemma3Loader.set_configµ  sb   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔô �I˜Ô/Ü˜9×2Ñ2´CÔ8Ø×'Ñ'×-Ñ-Ô/à.ˆFÕà(×2Ñ2ˆFÕr%   c                 ó4   — |j                   |_        d|_        y r4  r!  rÖ  s      r#   r    zGemma3Loader.set_layer_normÂ  r#  r%   c                 óö  — d|_         d|_        | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        |j                  |j                  «      D �]v  \  }}| j                  |j                  |j                  «       | j                  |j                  |j                  «       | j                  |j                  |j                   «       | j                  |j"                  |j$                  «       | j                  |j&                  j(                  |j*                  j(                  «       | j                  |j&                  j,                  |j*                  j,                  «       t/        d«      D �cg c]  }t1        j2                  «       ‘Œ }}| j5                  |d   |j*                  j6                  |¬«       | j5                  |d   |j*                  j8                  |¬«       | j5                  |d   |j*                  j:                  |¬«       |t0        j<                  j>                  k(  r.tA        jB                  |j&                  jD                  d   |«       nO|t0        j<                  jF                  k(  rdnd}tA        jH                  |j&                  jD                  d   ||«       | j5                  |j&                  jD                  d   |j*                  jJ                  |¬«       | j5                  |jL                  jN                  |jP                  jR                  |¬«       | j5                  |jL                  jT                  |jP                  jV                  |¬«       | j5                  |jL                  jX                  |jP                  jZ                  |¬«       t]        |d«       t]        |d	«       t_        j`                  «        �Œy y c c}w )
NTFr  r   rc  r‹   r  rÿ   r   )1r!  r5  r¯   r$  r&  r    r   r&  rû   rü   rý   r÷  rù  rú  rû  r>  r?  r@  rA  rù   Úq_normrÿ   Úk_normr  r   r  r­   r  r  r  r¢   r£   r   r  r   re  rf  r'  r  r  r   r(  rÃ  r  r  r  r)  r*  r+  rg  s	            r#   rÞ   zGemma3Loader.set_decoderÆ  s2  € Ø $ˆÔØ).ˆÔ&Ø×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó >	ÑˆJ˜Ø×Ñ 
× ;Ñ ;¸U×=RÑ=RÔSà×ÑØ×4Ñ4°e×6TÑ6Tôð ×ÑØ×5Ñ5°u×7VÑ7Vôð ×ÑØ×6Ñ6¸×8XÑ8Xôð
 ×ÑØ×)Ñ)×0Ñ0°%·/±/×2HÑ2Hôð ×ÑØ×)Ñ)×0Ñ0°%·/±/×2HÑ2Hôô
 ?DÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð œ[×5Ñ5×9Ñ9Ò9Ü×!Ñ! *×";Ñ";×"BÑ"BÀ1Ñ"EÀ|ÕTà(¬K×,DÑ,D×,MÑ,MÒM™ÐST�Ü×*Ñ*Ø×-Ñ-×4Ñ4°QÑ7¸Àvôð �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñ}>	ùò0 Hs   ÆO6©rK   rt   ru   rÅ   rR   r>   r�   r„   r…   rƒ   r    r   r¢   r£   rÞ   r(  r)  s   @r#   rn  rn  6  sN   ø„ ð ñ#ó ð#òò`ôD
ò)ò3ò,ð 4?×3KÑ3K×3OÑ3O÷ Dr%   rn  ÚGemma4TextConfigÚGemma4Configc                   ó~   ‡ — e Zd Zed„ «       Zd„ Zd„ Zˆ fd„Zd„ Zd„ Z	d„ Z
ej                  j                  fd„Zˆ xZS )	ÚGemma4Loaderc                  ó   — y)NÚGemma4ForCausalLMr&   r|   s    r#   rR   zGemma4Loader.architecture_name  r6  r%   c                 óX   — |j                   j                  dk(  rt        j                  S |S )Nr–  )rJ   rK   rG   ÚGemma4ForConditionalGenerationrs  s      r#   r>   zGemma4Loader.get_model_class  s(   € Ø×Ñ×$Ñ$¨Ò6Ü×>Ñ>Ð>ØÐr%   c                 ó€
  — t        |j                  d|j                  «      }|j                  }|j                  }t        |d|«      }||k(  rd }t        |dd«      }|dkD  rt	        d|z  «      ‚|j
                  }t        |d|«      }t        |dd «      }	t        |dd	«      }
t        |d
d«      }t        |dd «      xs i }|j                  di «      }|j                  di «      }t        |j                  dd«      «      }t        |j                  dd«      «      }t        |j                  dd«      «      }t        ||z  «      }t        |dd«      }t        |dd «      }|€-d}t        |«      D �cg c]  }t        |dz   |z  «      rdnd‘Œ }}t        |dd «      }|ra|j                  dk(  rt        j                  |j                  «      }€t	        d|j                  z  «      ‚|j                  }|j                  }nt         j"                  j$                  }d }d }t&        j(                  j+                  |||dk(  rt         j,                  j.                  nt         j,                  j0                  ddd|d	||||d|||dd¬«      }|| _        |
| _        t7        |«      D �]Ê  \  }}|j8                  j:                  |   }t=        j>                  d«      jA                  d«      |jB                  _"        |dk(  �rt=        j>                  d «      jA                  |«      |jB                  _#        t=        j>                  d«      jA                  |«      |jB                  _$        t=        j>                  d «      jA                  d«      |jB                  _%        t=        j>                  d «      jA                  |«      |jB                  _        |	€�Œ)t=        j>                  d «      jA                  |	«      |jB                  _&        �Œ^|dk(  s�Œet=        j>                  d«      jA                  |«      |jB                  _$        t=        j>                  d «      jA                  |«      |jB                  _%        �ŒÍ t        |j                  d|j                  «      }t        |d!d «      }|r3t=        j>                  d«      jA                  |«      |j8                  _'        t        |jP                  d"|jP                  «      }| jS                  |j8                  ||«       | jU                  |j8                  jV                  |jX                  «       |S c c}w )#Nrv  r  Únum_kv_shared_layersr   ztGemma 4 KV-shared layers (num_kv_shared_layers=%d) are not yet supported. Use the 31B model which has no KV sharing.Úglobal_head_dimÚnum_global_key_value_headsÚattention_k_eq_vFr  r   Úrope_parametersr}  r|  r¿   r  rw  Úpartial_rotary_factorr  ry  i   rz  é   r‹   rH  rI  r~  r   T)rÑ   rÐ   r®  r°  r·  r¸  r  r  rÎ  ry  r8  r¬   rM  rN  r  Úv_normr€  rp  Úfinal_logit_softcappingr�  )-rQ   r?   rh  ri  r   rÎ  rL   rZ  rî  r  rx   rQ  rR  rS  rT  rU  r   r¢   r£   r
   rg  rÕ   ræ  rú  rç  r‚  Ú_attention_k_eq_vro  rß   rü   rÙ  rA   r¹   rù   rÎ  r·  r  ry  r  r¦  rb   rÞ   r­   rà   rá   ) r9   rb   rv  r   rÂ  r  rž  rÎ  rŸ  Únum_global_kv_headsr¡  r  Úrope_paramsÚsliding_ropeÚglobal_roperx  r¿   Úglobal_partial_factorÚglobal_rotary_dimry  rz  rƒ  rN  rH  r¬   rM  rN  re   r„  rü   Úfinal_softcapr…  s                                    r#   r�   zGemma4Loader.get_model_spec  sù  € Ü˜eŸl™l¨M¸5¿<¹<ÓHˆØ ×2Ñ2ˆ
Ø×3Ñ3ˆ	Ü˜{Ð,AÀ9ÓMˆØ˜9Ò$ØˆLô  ' {Ð4JÈAÓNÐØ !Ò#Ü%ðHà&ñ'óð ð ×'Ñ'ˆÜ! +Ð/@À(ÓKˆô & kÐ3OÐQUÓVÐô # ;Ð0BÀEÓJÐä#ØÐ,Ð.Aó
Ðô
 ˜kÐ+<¸dÓCÒIÀrˆØ"—‘Ð':¸BÓ?ˆØ!—o‘oÐ&6¸Ó;ˆä$ \×%5Ñ%5°lÀFÓ%KÓLÐÜ˜;Ÿ?™?¨<¸ÓCÓDˆ
ô !& k§o¡oÐ6MÈsÓ&SÓ TÐÜ Ð2GÑ GÓHÐä  Ð.>ÀÓDˆÜ˜k¨=¸$Ó?ˆØÐØ%&Ð"ô
 ˜zÓ*ö	ð ô ˜˜Q™Ð"8Ñ8Ô9ñ $à%ñ&ðˆKð ô & kÐ3HÈ$ÓOÐÙØ"×/Ñ/°5Ò8Ü4×8Ñ8Ð9L×9TÑ9TÓU�
ØÐ!Ü)ØDØ)×6Ñ6ñ7óð ð  3×=Ñ=ÐØ,×1Ñ1‰Jä$×1Ñ1×5Ñ5ˆJØ#ÐØˆJô  ×;Ñ;×GÑGØØð %¨Ò.ô ×&Ñ&×+Ò+ä ×+Ñ+×4Ñ4àØØØØ#Ø,Ø%ØØ)Ø $Ø!Ø-Ø!ØØð- Hó 
ˆð2 (ˆÔØ!1ˆÔô ' {Ó3ó 	‰MˆAˆzØ—L‘L×&Ñ& qÑ)ˆEä13·±¸)Ó1D×1IÑ1IÈ#Ó1NˆE× Ñ Ô.ØÐ-Ó-Ü24·(±(¸7Ó2C×2HÑ2HØ%ó3�×$Ñ$Ô/ô 46·8±8¸IÓ3F×3KÑ3KÈJÓ3W�×$Ñ$Ô0Ü68·h±h¸wÓ6G×6LÑ6LÈQÓ6O�×$Ñ$Ô3Ü02·±¸Ó0A×0FÑ0FÀÓ0W�×$Ñ$Ô-Ø&Ò2Ü8:¿¹ÀÓ8I×8NÑ8NØ+ó9�E×(Ñ(Ö5ð Ð2Ô2Ü35·8±8¸IÓ3F×3KÑ3KØ(ó4�×$Ñ$Ô0ô 79·h±h¸wÓ6G×6LÑ6LØ"ó7�×$Ñ$Ö3ð'	ô. ˜eŸl™l¨M¸5¿<¹<ÓHˆÜ Ð-FÈÓMˆÙÜ35·8±8¸IÓ3F×3KÑ3KØó4ˆD�L‰LÔ0ô ˜UŸ[™[Ð*:¸E¿K¹KÓHˆ
Ø×Ñ˜Ÿ™ z°:Ô>Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆùòms   Å-T;c                 ó0  •— t         ‰| �  ||«      }t        |j                  d|j                  «      }|j                  t        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |j                  t        |«      k  r|d |j                   }|S r‡  rˆ  r‰  s          €r#   r„   zGemma4Loader.get_vocabulary   s�   ø€ Ü‘Ñ'¨¨yÓ9ˆÜ˜eŸl™l¨M¸5¿<¹<ÓHˆØ×*Ñ*¬S°«[Ñ8ˆ	Ü�yÓ!ò 	/ˆAØ�M‰M˜/¨AÑ-Õ.ð	/à×!Ñ!¤C¨£KÒ/ØÐ4˜k×4Ñ4Ð5ˆFØˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zGemma4Loader.set_vocabularyª  rt  r%   c                 óú   — |j                   |_         |j                  |_        t        |d«      r<t        |j                  t
        «      r"|j                  j                  «       rd|_        y |j                  |_        y rŒ  rŽ  r—   s       r#   rƒ   zGemma4Loader.set_config­  s`   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔä�I˜Ô/Ü˜9×2Ñ2´CÔ8Ø×'Ñ'×-Ñ-Ô/à.ˆFÕà(×2Ñ2ˆFÕr%   c                 ó&   — |j                   |_        y r   rÕ  rÖ  s      r#   r    zGemma4Loader.set_layer_norm¹  r×  r%   c                 ó"
  — d|_         d|_        | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        | dd«      }t        |j                  |j                  «      D �]  \  }}| j                  |j                  |j                  «       | j                  |j                  |j                  «       | j                  |j                   |j"                  «       | j                  |j$                  |j&                  «       | j                  |j(                  j*                  |j,                  j*                  «       | j                  |j(                  j.                  |j,                  j.                  «       t1        j2                  |j,                  j.                  j4                  «      j7                  «       j9                  «       |j(                  j:                  _        |j,                  j>                  dk(  }|xr |}tA        d«      D �	cg c]  }	tC        jD                  «       ‘Œ }
}	| jG                  |
d   |j,                  jH                  |¬«       | jG                  |
d   |j,                  jJ                  |¬«       |r,| jG                  |
d	   |j,                  jJ                  |¬«       n+| jG                  |
d	   |j,                  jL                  |¬«       |tB        jN                  jP                  k(  r.tS        jT                  |j(                  jV                  d   |
«       nO|tB        jN                  jX                  k(  rdnd}tS        jZ                  |j(                  jV                  d   |
|«       | jG                  |j(                  jV                  d   |j,                  j\                  |¬«       | jG                  |j^                  j`                  |jb                  jd                  |¬«       | jG                  |j^                  jf                  |jb                  jh                  |¬«       | jG                  |j^                  jj                  |jb                  jl                  |¬«       t        |d
d «      }|�Eto        jp                  d«      js                  |j7                  «       ju                  «       «      |_;        ty        |d«       ty        |d«       t{        j|                  «        �Œ‚ y c c}	w )NTFr§  r|  r  r   rc  r‹   r  Úlayer_scalarr€  rÿ   r   )?r!  r5  r¯   r$  r&  r    r   r&  rQ   rû   rü   rý   r÷  rù  rú  rû  r>  r?  r@  rA  rù   r’  rÿ   r“  rE   Ú	ones_likerš   rZ  Únumpyr¥  r›   r„  r  r   r  r­   r  r  r  r¢   r£   r   r  r   re  rf  r'  r  r  r   r(  rÃ  r  r  r  rÙ  rA   r¹   rŒ   r´  r)  r*  r+  )r9   re   rŸ   r¬   r¡  r  rü   Úis_full_attnÚ
use_k_as_vr’   r  rh  Úlss                r#   rÞ   zGemma4Loader.set_decoder½  s  € Ø $ˆÔØ).ˆÔ&Ø×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä" 4Ð)<¸eÓDÐä!$ T§Z¡Z°·±Ó!?ó J	ÑˆJ˜Ø×Ñ 
× ;Ñ ;¸U×=RÑ=RÔSØ×ÑØ×4Ñ4°e×6TÑ6Tôð ×ÑØ×5Ñ5°u×7VÑ7Vôð ×ÑØ×6Ñ6¸×8XÑ8Xôð ×ÑØ×)Ñ)×0Ñ0°%·/±/×2HÑ2Hôð ×ÑØ×)Ñ)×0Ñ0°%·/±/×2HÑ2Hôô —‘ §¡× 6Ñ 6× =Ñ =Ó>×DÑDÓF×LÑLÓNð ×%Ñ%×,Ñ,Ô2ð !Ÿ?™?×5Ñ5Ð9IÑIˆLØ)Ò:¨lˆJä>CÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ñ Ø—‘Ø  ‘O U§_¡_×%;Ñ%;È
ð  õ ð —‘Ø  ‘O U§_¡_×%;Ñ%;È
ð  ô ð œ[×5Ñ5×9Ñ9Ò9Ü×!Ñ! *×";Ñ";×"BÑ"BÀ1Ñ"EÀ|ÕTà(¬K×,DÑ,D×,MÑ,MÒM™ÐST�Ü×*Ñ*Ø×-Ñ-×4Ñ4°QÑ7¸Àvôð �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô ˜ °Ó5ˆBØˆ~Ü*,¯(©(°9Ó*=×*BÑ*BÀ2Ç8Á8Ã:Ç?Á?ÓCTÓ*U�
Ô'ä�E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñUJ	ùò8 Hs   È/Tr”  r)  s   @r#   r˜  r˜    sN   ø„ ð ñ#ó ð#òò
EôNò)ò
3ò'ð 4?×3KÑ3K×3OÑ3O÷ Rr%   r˜  ÚMistralConfigc                   óx   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	e
j                  j                  fd„Zˆ xZS )ÚMistralLoaderc                  ó   — y)NÚMistralForCausalLMr&   r|   s    r#   rR   zMistralLoader.architecture_name	  rË  r%   c                 óè  — |j                   j                  }|j                   j                  }t        |j                   d|«      }||k(  rd }t        |j                   dd«      }| j	                  |j                   d«      \  }}}t        |j                   dd «      }	|	r…|	j
                  dk(  rt        j                  |	j                  «      }

€<t        d|	j
                  ›dd	j                  t        j                  «       «      ›�«      ‚|	j                  }|	j                  }nt        j                  j                   }
d }d }t"        j$                  j'                  ||t        j(                  j*                  d
d
d
dd||||||
|||j                   j,                  ¬«      }| j/                  |j0                  |j2                  |
¬«       | j5                  |j0                  j6                  |j8                  «       |S )Nr  ry  r   r  rH  rI  rJ  rK  r<   TF)rÑ   rÐ   r®  r°  r·  r¸  rÂ   rÃ   r  r  ry  r¬   rM  rN  rÎ  rc  )r?   rh  ri  rQ   rÄ   rQ  rR  rL   rS  r   rN   rP   rT  rU  r   r¢   r£   r
   rg  rÕ   ræ  rV  rÎ  rÞ   rß   rb   r­   rà   rá   )r9   rb   r   rÂ  r  ry  rÂ   rÃ   r¿   rH  r¬   rM  rN  re   s                 r#   r�   zMistralLoader.get_model_spec	  sÇ  € Ø—\‘\×3Ñ3ˆ
à—L‘L×4Ñ4ˆ	Ü˜uŸ|™|Ð-BÀIÓNˆØ˜9Ò$ØˆLä  §¡Ð/?ÀÓCˆàAE×AWÑAWØ�L‰L˜&óB
Ñ>ÐÐ2°Jô & e§l¡lÐ4IÈ4ÓPÐÙØ"×/Ñ/°5Ò8Ü4×8Ñ8Ð9L×9TÑ9TÓU�
ØÐ!Ý)ð ,×8Ó8ØŸ	™	Ô"9×">Ñ">Ó"@ÔAð	óð ð  3×=Ñ=ÐØ,×1Ñ1‰Jä$×1Ñ1×5Ñ5ˆJØ#ÐØˆJä×;Ñ;×GÑGØØÜ"×-Ñ-×3Ñ3ØØØØØ#Ø 3Ø"7Ø"Ø%Ø)Ø!Ø-Ø!Ø—\‘\×*Ñ*ð# Hó 
ˆð( 	×Ñ˜Ÿ™ u§{¡{¸zÐÔJØ�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zMistralLoader.get_vocabularyR	  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zMistralLoader.set_vocabulary[	  rt  r%   c                 ó    — |j                   |_         |j                  |_        |j                  |_        |j                  j                  |_        y r   r  r—   s       r#   rƒ   zMistralLoader.set_config^	  r  r%   c                 ó&   — |j                   |_        y r   rÕ  rÖ  s      r#   r    zMistralLoader.set_layer_normd	  r×  r%   c                 ó�  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        |j                  |j                  «      D �]Ê  \  }}| j	                  |j                  j
                  |j                  «       | j	                  |j                  j
                  |j                  «       t        d«      D �cg c]  }t        j                   «       ‘Œ }}| j#                  |d   |j$                  j&                  |¬«       | j#                  |d   |j$                  j(                  |¬«       | j#                  |d   |j$                  j*                  |¬«       |t        j,                  j.                  k(  r.t1        j2                  |j                  j4                  d   |«       nO|t        j,                  j6                  k(  rdnd}t1        j8                  |j                  j4                  d   ||«       | j#                  |j                  j4                  d   |j$                  j:                  |¬«       | j#                  |j                  j<                  |j>                  j@                  |¬«       | j#                  |j                  jB                  |j>                  jD                  |¬«       | j#                  |j                  jF                  |j>                  jH                  |¬«       tK        |d«       tK        |d«       tM        jN                  «        �ŒÍ y c c}w rb  rd  rg  s	            r#   rÞ   zMistralLoader.set_decoderg	  s¡  € Ø %ˆÔØ×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó +	ÑˆJ˜Ø×ÑØ×)Ñ)×4Ñ4°e×6KÑ6Kôð ×ÑØ—‘×)Ñ)¨5×+IÑ+Iôô ?DÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð œ[×5Ñ5×9Ñ9Ò9Ü×!Ñ! *×";Ñ";×"BÑ"BÀ1Ñ"EÀ|ÕTà(¬K×,DÑ,D×,MÑ,MÒM™ÐST�Ü×*Ñ*Ø×-Ñ-×4Ñ4°QÑ7¸Àvôð �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñW+	ùò Hri  rj  r)  s   @r#   r¼  r¼  	  sE   ø„ àñ$ó ð$ò8ôtò)ò>ò'ð 4?×3KÑ3K×3OÑ3O÷ 0r%   r¼  ÚQwen2Configc                   óx   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	e
j                  j                  fd„Zˆ xZS )ÚQwen2Loaderc                  ó   — y)NÚQwen2ForCausalLMr&   r|   s    r#   rR   zQwen2Loader.architecture_nameœ	  râ  r%   c                 ó�  — |j                   j                  }|j                   j                  }t        |j                   d|«      }||k(  rd }| j	                  |j                   d«      \  }}}t        |j                   dd «      }|r‡d }	|j
                  dk(  rt        j                  |j                  «      }	|	€<t        d|j
                  ›ddj                  t        j                  «       «      ›�«      ‚|j                  }
|j                  }nt        j                  j                   }	d }
d }t"        j$                  j'                  ||t        j(                  j*                  dddd	d
|||||	|
|¬«      }| j-                  |j.                  |j0                  |	«       | j3                  |j.                  j4                  |j6                  «       |S )Nr  r  rH  rI  rJ  rK  r<   Tr   FrL  )r?   rh  ri  rQ   rÄ   rQ  rR  rL   rS  r   rN   rP   rT  rU  r   r¢   r£   r
   rg  rÕ   ræ  rV  rÞ   rß   rb   r­   rà   rá   )r9   rb   r   rÂ  r  rÂ   rÃ   r¿   rH  r¬   rM  rN  re   s                r#   r�   zQwen2Loader.get_model_spec 	  s¦  € Ø—\‘\×3Ñ3ˆ
à—L‘L×4Ñ4ˆ	Ü˜uŸ|™|Ð-BÀIÓNˆØ˜9Ò$ØˆLàAE×AWÑAWØ�L‰L˜&óB
Ñ>ÐÐ2°Jô
 & e§l¡lÐ4IÈ4ÓPÐÙØˆJØ"×/Ñ/°5Ò8Ü4×8Ñ8Ð9L×9TÑ9TÓU�
ØÐ!Ý)ð ,×8Ó8ØŸ	™	Ô"9×">Ñ">Ó"@ÔAð	óð ð  3×=Ñ=ÐØ,×1Ñ1‰Jä$×1Ñ1×5Ñ5ˆJØ#ÐØˆJä×;Ñ;×GÑGØØÜ"×-Ñ-×3Ñ3ØØØØØ#Ø 3Ø"7Ø"Ø%Ø!Ø-Ø!ð Hó 
ˆð$ 	×Ñ˜Ÿ™ u§{¡{°JÔ?Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zQwen2Loader.get_vocabularyØ	  sV   ø€ Ü‘Ñ'¨¨yÓ9ˆà—L‘L×+Ñ+¬c°&«kÑ9ˆ	Ü�yÓ!ò 	/ˆAØ�M‰M˜/¨AÑ-Õ.ð	/àˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zQwen2Loader.set_vocabularyà	  rt  r%   c                 óì   — |j                   �|j                   n|j                  |_         |j                  |_        |j                  �|j                  nd|_        |j                  j
                  |_        y r^  ©rð   r^  rñ   rò   r?   r  r  r—   s       r#   rƒ   zQwen2Loader.set_configã	  ón   € ð ×"Ñ"Ð.ð ×Òà×$Ñ$ð 	Ôð
 %×.Ñ.ˆÔà#,×#6Ñ#6Ð#BˆI×ÒÈð 	Ôð %*§L¡L×$=Ñ$=ˆÕ!r%   c                 ó&   — |j                   |_        y r   rÕ  rÖ  s      r#   r    zQwen2Loader.set_layer_normï	  r×  r%   c                 ó�  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        |j                  |j                  «      D �]Ê  \  }}| j	                  |j                  j
                  |j                  «       | j	                  |j                  j
                  |j                  «       t        d«      D �cg c]  }t        j                   «       ‘Œ }}| j#                  |d   |j$                  j&                  |¬«       | j#                  |d   |j$                  j(                  |¬«       | j#                  |d   |j$                  j*                  |¬«       |t        j,                  j.                  k(  r.t1        j2                  |j                  j4                  d   |«       nO|t        j,                  j6                  k(  rdnd}t1        j8                  |j                  j4                  d   ||«       | j#                  |j                  j4                  d   |j$                  j:                  |¬«       | j#                  |j                  j<                  |j>                  j@                  |¬«       | j#                  |j                  jB                  |j>                  jD                  |¬«       | j#                  |j                  jF                  |j>                  jH                  |¬«       tK        |d«       tK        |d«       tM        jN                  «        �ŒÍ y c c}w rb  rd  rg  s	            r#   rÞ   zQwen2Loader.set_decoderò	  s¡  € Ø %ˆÔØ×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó -	ÑˆJ˜Ø×ÑØ×)Ñ)×4Ñ4°e×6KÑ6Kôð ×ÑØ—‘×)Ñ)¨5×+IÑ+Iôô ?DÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð œ[×5Ñ5×9Ñ9Ò9Ü×!Ñ! *×";Ñ";×"BÑ"BÀ1Ñ"EÀ|ÕTà(¬K×,DÑ,D×,MÑ,MÒM™ÐST�Ü×*Ñ*Ø×-Ñ-×4Ñ4°QÑ7¸Àvôð �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñ[-	ùò Hri  rj  r)  s   @r#   rÇ  rÇ  š	  sE   ø„ àñ"ó ð"ò6ôpò)ò
>ò'ð 4?×3KÑ3K×3OÑ3O÷ 2r%   rÇ  ÚQwen3Configc                   óx   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	e
j                  j                  fd„Zˆ xZS )ÚQwen3Loaderc                  ó   — y)NÚQwen3ForCausalLMr&   r|   s    r#   rR   zQwen3Loader.architecture_name)
  râ  r%   c                 ó  — |j                   j                  }|j                   j                  }t        |j                   d|«      }t        |j                   d|j                   j                  |z  «      }||k(  rd }| j                  |j                   d«      \  }}}t        |j                   dd «      }	|	r‡d }
|	j                  dk(  rt        j                  |	j                  «      }
|
€<t        d|	j                  ›ddj                  t        j                  «       «      ›�«      ‚|	j                  }|	j                  }nt        j                   j"                  }
d }d }t$        j&                  j)                  ||t        j*                  j,                  d	d	d	|j                   j.                  d
|||||d	|
||¬«      }| j1                  |j2                  |j4                  |
«       | j7                  |j2                  j8                  |j:                  «       |S )Nr  rÎ  rw  rH  rI  rJ  rK  r<   TF)rÑ   rÐ   r®  r°  r·  r¸  rÂ   rÃ   r  r  rÎ  r  r¬   rM  rN  )r?   rh  ri  rQ   rl  rÄ   rQ  rR  rL   rS  r   rN   rP   rT  rU  r   r¢   r£   r
   rg  rÕ   ræ  rV  rÎ  rÞ   rß   rb   r­   rà   rá   )r9   rb   r   rÂ  r  rÎ  rÂ   rÃ   r¿   rH  r¬   rM  rN  re   s                 r#   r�   zQwen3Loader.get_model_spec-
  sÜ  € Ø—\‘\×3Ñ3ˆ
Ø—L‘L×4Ñ4ˆ	Ü˜uŸ|™|Ð-BÀIÓNˆÜØ�L‰L˜* e§l¡l×&>Ñ&>À)Ñ&Kó
ˆð ˜9Ò$ØˆLàAE×AWÑAWØ�L‰L˜)óB
Ñ>ÐÐ2°Jô & e§l¡lÐ4IÈ4ÓPÐÙØˆJØ"×/Ñ/°5Ò8Ü4×8Ñ8Ð9L×9TÑ9TÓU�
ØÐ!Ý)ð ,×8Ó8ØŸ	™	Ô"9×">Ñ">Ó"@ÔAð	óð ð  3×=Ñ=ÐØ,×1Ñ1‰Jä$×1Ñ1×5Ñ5ˆJØ#ÐØˆJä×;Ñ;×GÑGØØÜ"×-Ñ-×3Ñ3ØØØØ—|‘|×,Ñ,Ø#Ø 3Ø"7Ø"Ø%ØØØ!Ø-Ø!ð# Hó 
ˆð( 	×Ñ˜Ÿ™ u§{¡{°JÔ?Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zQwen3Loader.get_vocabularyi
  óV   ø€ Ü‘Ñ'¨¨yÓ9ˆØ—L‘L×+Ñ+¬c°&«kÑ9ˆ	Ü�yÓ!ò 	/ˆAØ�M‰M˜/¨AÑ-Õ.ð	/àˆr%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zQwen3Loader.set_vocabularyp
  rt  r%   c                 óì   — |j                   �|j                   n|j                  |_         |j                  |_        |j                  �|j                  nd|_        |j                  j
                  |_        y r^  rÎ  r—   s       r#   rƒ   zQwen3Loader.set_configs
  rÏ  r%   c                 ó&   — |j                   |_        y r   rÕ  rÖ  s      r#   r    zQwen3Loader.set_layer_norm
  r×  r%   c                 ó�  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        t        |j                  |j                  «      «      D �]A  \  }\  }}| j	                  |j                  j
                  |j                  «       | j	                  |j                  j
                  |j                  «       | j	                  |j                  j                  |j                   j                  «       | j	                  |j                  j"                  |j                   j"                  «       t%        d«      D �cg c]  }t'        j(                  «       ‘Œ }}| j+                  |d   |j                   j,                  |¬«       | j+                  |d   |j                   j.                  |¬«       | j+                  |d   |j                   j0                  |¬«       |t&        j2                  j4                  k(  r.t7        j8                  |j                  j:                  d   |«       nO|t&        j2                  j<                  k(  rdnd}	t7        j>                  |j                  j:                  d   ||	«       | j+                  |j                  j:                  d   |j                   j@                  |¬«       | j+                  |j                  jB                  |jD                  jF                  |¬«       | j+                  |j                  jH                  |jD                  jJ                  |¬«       | j+                  |j                  jL                  |jD                  jN                  |¬«       tQ        |d«       tQ        |d«       tS        jT                  «        �ŒD y c c}w rb  )+r!  r¯   r$  r&  r    r   r&  ro  rû   rü   rý   rù   rù  r  rû  r’  rÿ   r“  r  r   r  r­   r  r  r  r¢   r£   r   r  r   re  rf  r'  r  r   r(  rÃ  r  r  r  r)  r*  r+  )
r9   re   rŸ   r¬   Ú	layer_idxr  rü   r’   r  rh  s
             r#   rÞ   zQwen3Loader.set_decoder‚
  s  € Ø %ˆÔØ×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä.7¼¸D¿J¹JÈÏÉÓ8VÓ.Wó 4	Ñ*ˆIÑ*˜
 EØ×ÑØ×)Ñ)×4Ñ4°e×6KÑ6Kôð ×ÑØ—‘×)Ñ)¨5×+IÑ+Iôð ×ÑØ×)Ñ)×0Ñ0°%·/±/×2HÑ2Hôð ×ÑØ×)Ñ)×0Ñ0°%·/±/×2HÑ2Hôô ?DÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð �O‰OØ˜Q‘ §¡×!7Ñ!7ÀJð ô ð œ[×5Ñ5×9Ñ9Ò9Ü×!Ñ! *×";Ñ";×"BÑ"BÀ1Ñ"EÀ|ÕTà(¬K×,DÑ,D×,MÑ,MÒM™ÐST�Ü×*Ñ*Ø×-Ñ-×4Ñ4°QÑ7¸Àvôð �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñi4	ùò Hs   Å(Orj  r)  s   @r#   rÔ  rÔ  '
  sE   ø„ àñ"ó ð"ò:ôxò)ò
>ò'ð 4?×3KÑ3K×3OÑ3O÷ 9r%   rÔ  ÚMixFormerSequentialConfigc                   óF   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	ˆ xZ
S )ÚMixFormerSequentialLoaderc                  ó   — yrô  r&   r|   s    r#   rR   z+MixFormerSequentialLoader.architecture_nameÀ
  rö  r%   c           
      óÈ  — t         j                  j                  |j                  j                  |j                  j
                  dt        |j                  j                     |j                  j                  ddd¬«      }| j                  |j                  |j                  «       | j                  |j                  j                  |j                  d   j                  «       |S )NTF©r   rÂ  rÐ   rÑ   r·  r¸  r¹  rº  r  )r
   rg  rÕ   r?   rˆ  r‰  rÚ   rÛ   r·  rÞ   rß   rý   r­   rà   r   rm  s      r#   r�   z(MixFormerSequentialLoader.get_model_specÄ
  s©   € Ü×;Ñ;×GÑGØ—|‘|×+Ñ+Ø—l‘l×)Ñ)ØÜ-¨e¯l©l×.NÑ.NÑOØ—|‘|×.Ñ.Ø#Ø"Ø"ð Hó 	
ˆð 	×Ñ˜Ÿ™ u§|¡|Ô4Ø�‰˜Ÿ™×/Ñ/°·±¸bÑ1A×1HÑ1HÔIØˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   z(MixFormerSequentialLoader.get_vocabularyÔ
  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   z(MixFormerSequentialLoader.set_vocabularyÝ
  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   z$MixFormerSequentialLoader.set_configà
  rw  r%   c                 ó$  — d|_         | j                  |j                  |d   j                  «       | j	                  |j
                  |d   j                  «       t        |j                  |dd «      D �]  \  }}| j	                  |j                  |j                  «       | j                  |j                  j                  d   |j                  j                  «       | j                  |j                  j                  d   |j                  j                  «       | j                  |j                   j"                  |j$                  j&                  «       | j                  |j                   j(                  |j$                  j*                  «       �Œ y )NFr   r  r‹   )r!  r¯   r$  r—  r    r   Úlnrû   rü   rº  r­   rù   r   Úmixerr  r  r  r  r   r  r  r  r¢  s        r#   rÞ   z%MixFormerSequentialLoader.set_decoderå
  s  € Ø %ˆÔØ×Ñ˜DŸO™O¨V°A©Y¯]©]Ô;Ø×Ñ˜DŸO™O¨V°B©Z¯]©]Ô;ä!$ T§Z¡Z°¸¸"°Ó!>ó 	DÑˆJ˜Ø×Ñ 
× <Ñ <¸e¿h¹hÔGØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×AQÑAQÔRØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×AUÑAUÔVØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y·]±]ÔCØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y·]±]ÖCñ	Dr%   ræ  r)  s   @r#   rá  rá  ¾
  s/   ø„ àñ&ó ð&òô ò)ò/ö

Dr%   rá  Ú	PhiConfigc                   óF   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	ˆ xZ
S )Ú	PhiLoaderc                  ó   — yrô  r&   r|   s    r#   rR   zPhiLoader.architecture_nameô
  rö  r%   c           
      ó6  — t         j                  j                  |j                  j                  |j                  j
                  dt        |j                  j                     |j                  j                  ddd¬«      }| j                  |j                  |j                  «       | j                  |j                  j                  |j                  j                  «       | j!                  |j                  j"                  |j                  j$                  «       |S )NTFrä  )r
   rg  rÕ   r?   rˆ  r‰  rÚ   rÛ   r·  rÞ   rß   rŠ  r­   rà   rá   r   r    r   ré  rm  s      r#   r�   zPhiLoader.get_model_specø
  sÊ   € Ü×;Ñ;×GÑGØ—|‘|×+Ñ+Ø—l‘l×)Ñ)ØÜ-¨e¯l©l×.NÑ.NÑOØ—|‘|×.Ñ.Ø#Ø"Ø"ð Hó 	
ˆð 	×Ñ˜Ÿ™ u×'8Ñ'8Ô9Ø�‰˜Ÿ™×/Ñ/°·±×1EÑ1EÔFØ×Ñ˜DŸL™L×3Ñ3°U·]±]×5EÑ5EÔFØˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zPhiLoader.get_vocabulary	  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zPhiLoader.set_vocabulary  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zPhiLoader.set_config  rw  r%   c                 óî  — d|_         | j                  |j                  |j                  j                  «       t        |j                  |j                  «      D �]  \  }}| j                  |j                  |j                  «       | j                  |j                  j                  d   |j                  j                  «       | j                  |j                  j                  d   |j                  j                   «       | j                  |j"                  j$                  |j&                  j(                  «       | j                  |j"                  j*                  |j&                  j,                  «       �Œ y r•  )r!  r¯   r$  Úembdr—  rû   rü   rš  r    rº  ré  r­   rù   r   rê  r  r  r  r  r   r  r  r  r¢  s        r#   rÞ   zPhiLoader.set_decoder  s÷   € Ø %ˆÔØ×Ñ˜DŸO™O¨V¯[©[¯_©_Ô=ä!$ T§Z¡Z°·±Ó!:ó 	DÑˆJ˜Ø×Ñ 
× <Ñ <¸e¿h¹hÔGØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×AQÑAQÔRØ�O‰O˜J×5Ñ5×<Ñ<¸QÑ?ÀÇÁ×AUÑAUÔVØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y·]±]ÔCØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y·]±]ÖCñ	Dr%   ræ  r)  s   @r#   rí  rí  ò
  s/   ø„ àñ&ó ð&òô"ò)ò/ö
	Dr%   rí  Ú
Phi3Configc                   ó~   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ej                  j                  fd„Zˆ xZS )	Ú
Phi3Loaderc                  ó   — yrô  r&   r|   s    r#   rR   zPhi3Loader.architecture_name(  rö  r%   c                 óÖ  — |j                   j                  }|j                   j                  }t        |j                   d|«      }||k(  rd }t        |j                   dd«      }t        |j                   dd«      }t        |j                   dd «      }|rat        j                  |d   «      }|j                  dd«      }	|€9t        d	|d   ›d
dj                  t        j                  «       «      ›�«      ‚d }d}	t        |j                   dd «      }
|
r‡d }|
j                  dk(  rt        j                  |
j                  «      }|€<t        d|
j                  ›ddj                  t        j                  «       «      ›�«      ‚|
j                  }|
j                  }nt        j                  j                   }d }d }t"        j$                  j'                  ||t        j(                  j*                  ddddd||	t        |j                   dd«      ||||||¬«      }| j-                  |j.                  |j0                  |«       | j3                  |j.                  j4                  |j6                  «       |S )Nr  Ú original_max_position_embeddingsr   Úmax_position_embeddingsr¸   r¹   r¾   r‹   r¼   r½   r<   rH  rI  rJ  rK  TFr¿   r  )rÑ   rÐ   r®  r°  r·  r¸  rÂ   rÃ   r  rú  rû  r  r¬   rM  rN  )r?   rh  ri  rQ   rÀ   rL   r   rN   rP   rQ  rR  rS  rT  rU  r   r¢   r£   r
   rg  rÕ   ræ  rV  rÞ   rß   rb   r­   rà   rá   )r9   rb   r   rÂ  r  rú  rû  r¸   rÂ   rÃ   rH  r¬   rM  rN  re   s                  r#   r�   zPhi3Loader.get_model_spec,  sH  € Ø—\‘\×3Ñ3ˆ
à—L‘L×4Ñ4ˆ	Ü˜uŸ|™|Ð-BÀIÓNˆØ˜9Ò$ØˆLä+2Ø�L‰LÐ<¸aó,
Ð(ô #*¨%¯,©,Ð8QÐSTÓ"UÐÜ˜uŸ|™|¨^¸TÓBˆÙÜ"9×"=Ñ"=¸lÈ6Ñ>RÓ"SÐØ$0×$4Ñ$4°X¸qÓ$AÐ!à"Ð*Ý)ð $ FÓ+¨T¯Y©YÔ7N×7SÑ7SÓ7UÔ-VðXóð ð #'ÐØ$%Ð!ô & e§l¡lÐ4IÈ4ÓPÐÙØˆJØ"×/Ñ/°5Ò8Ü4×8Ñ8Ð9L×9TÑ9TÓU�
ØÐ!Ý)ð ,×8Ó8ØŸ	™	Ô"9×">Ñ">Ó"@ÔAð	óð ð  3×=Ñ=ÐØ,×1Ñ1‰Jä$×1Ñ1×5Ñ5ˆJØ#ÐØˆJä×;Ñ;×GÑGØØÜ"×-Ñ-×3Ñ3ØØØØØ#Ø 3Ø"7Ü §¡¨l¸EÓBØ-MØ$;Ø%Ø!Ø-Ø!ð# Hó 
ˆð( 	×Ñ˜Ÿ™ u§{¡{°JÔ?Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zPhi3Loader.get_vocabularyu  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zPhi3Loader.set_vocabulary~  rt  r%   c                 ój   — |j                   |_         |j                  |_        |j                  |_        y r   rv  r—   s       r#   rƒ   zPhi3Loader.set_config�  rw  r%   c                 ó&   — |j                   |_        y r   rÕ  rÖ  s      r#   r    zPhi3Loader.set_layer_norm†  r×  r%   c                 ó¬   — t        j                  |t         j                  ¬«      |_        t        j                  |t         j                  ¬«      |_        y )N)rA   )rE   Útensorr€  Úrotary_scaling_long_factorÚrotary_scaling_short_factor)r9   re   r  r  s       r#   Úset_rotary_embeddingsz Phi3Loader.set_rotary_embeddings‰  s:   € ô +0¯,©,Ø&¬e¯m©mô+
ˆÔ'ô ,1¯<©<Ø'¬u¯}©}ô,
ˆÕ(r%   c                 óJ  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        |j                  |j                  «      D �]¬  \  }}| j	                  |j                  j
                  |j                  «       | j	                  |j                  j
                  |j                  «       | j                  |j                  j                  d   |j                   j"                  |¬«       | j                  |j                  j                  d   |j                   j$                  |¬«       |j                   j&                  j(                  �y|j                   j&                  j*                  �Y| j-                  |j                  |j                   j&                  j(                  |j                   j&                  j*                  «       |t.        j0                  j2                  k(  rl|j4                  j6                  j8                  j;                  dd¬«      \  }}||j                  j<                  _        ||j                  j>                  _        �n>|j4                  j6                  j@                  j;                  dd¬«      \  }}	|j4                  j6                  jB                  j;                  dd¬«      \  }
}|j4                  j6                  jD                  j;                  dd¬«      \  }}||j                  j<                  _        |
|j                  j<                  _#        ||j                  j<                  _$        |	|j                  j>                  _        ||j                  j>                  _#        ||j                  j>                  _$        | j                  |j                  jJ                  |j4                  jL                  |¬«       tO        |d«       tO        |d«       tQ        jR                  «        �Œ¯ y )	NFr   rc  r‹   r  r×  rÿ   r   )*r!  r¯   r$  r&  r    r   r&  rû   rü   rý   rù   rù  r  rû  r­   r   rÿ   rß  r'  Ú
rotary_embÚlong_factorÚshort_factorr  r   r¢   r£   r   Úgate_up_projrš   rà  r  rÃ  r¤   r¥   r§   r¦   r¨   r  r  r)  r*  r+  )r9   re   rŸ   r¬   r  rü   r(  r  Úgate_qweightÚ
up_qweightÚgate_scalesÚ	up_scalesÚgate_qzerosÚ	up_qzeross                 r#   rÞ   zPhi3Loader.set_decoder“  s)  € Ø %ˆÔØ×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó 7	ÑˆJ˜Ø×ÑØ×)Ñ)×4Ñ4°e×6KÑ6Kôð ×ÑØ—‘×)Ñ)¨5×+IÑ+Iôð �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×(Ñ(Ø%ð ô ð
 �O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð —‘×*Ñ*×6Ñ6ÐBØ—O‘O×.Ñ.×;Ñ;ÐGà×*Ñ*Ø×-Ñ-Ø—O‘O×.Ñ.×:Ñ:Ø—O‘O×.Ñ.×;Ñ;ôð œ[×5Ñ5×9Ñ9Ò9Ø%*§Y¡Y×%;Ñ%;×%BÑ%B×%HÑ%HÈÐPQÐ%HÓ%RÑ"�	˜7Ø1:�
—‘×'Ñ'Ô.Ø7>�
—‘×-Ñ-Ö4ð ,1¯9©9×+AÑ+A×+IÑ+I×+OÑ+OØ˜1ð ,Pó ,Ñ(�˜jð */¯©×)?Ñ)?×)FÑ)F×)LÑ)LÈQÐTUÐ)LÓ)VÑ&�˜YØ).¯©×)?Ñ)?×)FÑ)F×)LÑ)LÈQÐTUÐ)LÓ)VÑ&�˜Yà1=�
—‘×'Ñ'Ô.Ø7B�
—‘×'Ñ'Ô4Ø6A�
—‘×'Ñ'Ô3à7A�
—‘×-Ñ-Ô4Ø=F�
—‘×-Ñ-Ô:Ø<E�
—‘×-Ñ-Ô9à�O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLño7	r%   )rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   r    r  r   r¢   r£   rÞ   r(  r)  s   @r#   r÷  r÷  &  sK   ø„ àñ&ó ð&òGôRò)ò/ò
'ò
ð 4?×3KÑ3K×3OÑ3O÷ <r%   r÷  ÚRWConfigc                   óT   ‡ — e Zd Zed„ «       Zd„ Zd„ Zˆ fd„Zd„ Zd„ Z	d„ Z
d	d„Zˆ xZS )
ÚRWLoaderc                  ó   — yrô  r&   r|   s    r#   rR   zRWLoader.architecture_nameÔ  rö  r%   c                 ó¶   — |j                   j                  | _        |j                   j                  | _        t        |j                   dd «      | _        d| _        y )NÚ	n_head_kvÚnum_kv)r?   rˆ  Ú_num_layersr‰  Ú
_num_headsrQ   Ú_num_heads_kvÚ_num_kv_attrr€   s     r#   Úget_falcon_speczRWLoader.get_falcon_specØ  sB   € Ø Ÿ<™<×/Ñ/ˆÔØŸ,™,×-Ñ-ˆŒÜ$ U§\¡\°;ÀÓEˆÔØ$ˆÕr%   c                 óT  — | j                  |«       t        |j                  dd«      rd}n| j                  }t        j
                  j                  | j                  | j                  dt        j                  j                  |j                  j                  dd|j                  j                  rdnd d|j                  j                  |dk(  |¬«      }| j                  |j                   |j"                  «       | j%                  |j                   j&                  |j(                  «       |S )NÚmulti_queryFr‹   Tr   )
rÐ   rÑ   rä  rå  Úscale_alibir·  r¸  r¹  rº  r  )r  rQ   r?   r  r
   rg  rÕ   r  r  r   ræ  rú  rä  ÚrotaryÚparallel_attnrÞ   rß   rŠ  r­   rà   rá   )r9   rb   r  re   s       r#   r�   zRWLoader.get_model_specÞ  sê   € Ø×Ñ˜UÔ#ä�5—<‘< °Ô6Ø‰Là×-Ñ-ˆLä×;Ñ;×GÑGØ×ÑØ�O‰OØÜ"×-Ñ-×2Ñ2Ø—,‘,×$Ñ$Ø)-ØØ!ŸL™L×/Ò/‘q°TØ#Ø#Ÿl™l×8Ñ8Ø*¨aÑ/Ø%ð Hó 
ˆð 	×Ñ˜Ÿ™ u×'8Ñ'8Ô9Ø�‰˜Ÿ™×/Ñ/°·±Ô?Øˆr%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zRWLoader.get_vocabularyù  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zRWLoader.set_vocabulary  rt  r%   c                 ój   — |j                   |_        |j                   |_         |j                   |_        y r   )rñ   rð   rò   r—   s       r#   rƒ   zRWLoader.set_config  rw  r%   c                 óÚ  — d|_         | j                  |j                  |j                  «       | j	                  |j
                  |j                  «       t        |j                  |j                  «      D �]t  \  }}t        |d«      rM| j	                  |j                  |j                  «       | j	                  |j                  |j                  «       n“t        |d«      r'| j	                  |j                  |j                   «       n`| j	                  |j"                  j
                  |j                   «       | j	                  |j$                  j
                  |j&                  «       t)        |j"                  | j*                  «      }|dk(  r>| j-                  |j"                  j.                  d   |j"                  j0                  «       nn| j3                  |j"                  j.                  d   |j"                  j0                  |j"                  j4                  ||j"                  j4                  k  r|nd «       | j-                  |j"                  j.                  d   |j"                  j6                  «       | j-                  |j$                  j8                  |j:                  j<                  «       | j-                  |j$                  j>                  |j:                  j@                  «       �Œw y )NFÚln_attnrº  r‹   r   )!r!  r¯   r$  rì  r    r   r™  rû   rü   rš  rS   r÷  r%  rú  Úln_mlprº  rù  rù   r  rû  rQ   r  r­   r   rü  rî  rÂ  rþ  r  r   rÿ  r  r   )r9   re   rŸ   r  rü   r  s         r#   rÞ   zRWLoader.set_decoder
  s1  € Ø %ˆÔØ×Ñ˜DŸO™O¨V×-CÑ-CÔDØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!:ó !	NÑˆJ˜Ü�u˜iÔ(Ø×#Ñ# J×$?Ñ$?ÀÇÁÔOØ×#Ñ# J×$HÑ$HÈ%Ï,É,ÕWÜ˜Ð%8Ô9Ø×#Ñ# J×$@Ñ$@À%×BWÑBWÕXà×#Ñ#Ø×-Ñ-×8Ñ8¸%×:OÑ:Oôð ×#Ñ#Ø—N‘N×-Ñ-¨u×/MÑ/Môô ˜U×1Ñ1°4×3DÑ3DÓEˆFØ˜Š{Ø—‘Ø×-Ñ-×4Ñ4°QÑ7Ø×(Ñ(×8Ñ8õð
 ×#Ñ#Ø×-Ñ-×4Ñ4°QÑ7Ø×(Ñ(×8Ñ8Ø×(Ñ(×2Ñ2Ø$ u×';Ñ';×'EÑ'EÒE‘FÈ4ô	ð �O‰OØ×)Ñ)×0Ñ0°Ñ3°U×5IÑ5I×5OÑ5Oôð �O‰O˜JŸN™N×3Ñ3°U·Y±Y×5LÑ5LÔMØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5LÑ5LÖMñC!	Nr%   c                 óè  — |j                   }|€S|j                  |dd|j                  d   «      }|j                  dd«      }|j                  d|j                  d   «      }n­|j                  d   ||dz  z   z  }|j                  d||z  dz   ||j                  d   «      }|j	                  ||z  ddgd¬«      \  }}}	t        j                  |j                  ||z  d«      |j                  ||z  d«      |	j                  ||z  d«      g«      }||_         |j                  �Ñ|j                  }
|€7|
j                  |dd«      }
|
j                  dd«      }
|
j                  d«      }
n„|
j                  d||z  dz   «      }
|
j	                  ||z  ddgd¬«      \  }}}	t        j                  |j                  ||z  «      |j                  ||z  «      |	j                  ||z  «      g«      }
|
|_        y y )Nr  r  r   r‹   r  r×  )rš   rÛ  r:  r«   ÚsplitrE   r¿  rœ   )r9   re   rŸ   rÂ  r  rš   rÎ  rÏ  rÐ  rÑ  rœ   s              r#   rî  zRWLoader.set_qkv_linear2  sô  € Ø—‘ˆàˆ>Ø—^‘^ I¨q°"°f·l±lÀ2Ñ6FÓGˆFØ×%Ñ% a¨Ó+ˆFØ—^‘^ B¨¯©°RÑ(8Ó9‰Fà—|‘| A‘¨9°vÀ±zÑ+AÑBˆHØ—^‘^Ø�I Ñ'¨!Ñ+¨X°v·|±|ÀBÑ7GóˆFð —l‘l I°Ñ$7¸¸AÐ#>ÀA�lÓF‰GˆAˆq�!Ü—Y‘Yà—I‘I˜i¨(Ñ2°BÓ7Ø—I‘I˜f xÑ/°Ó4Ø—I‘I˜f xÑ/°Ó4ðóˆFð ˆŒà�;‰;Ð"Ø—;‘;ˆDàˆ~Ø—|‘| I¨q°"Ó5�Ø—~‘~ a¨Ó+�Ø—|‘| BÓ'‘à—|‘| B¨	°VÑ(;¸aÑ(?ÀÓJ�ØŸ*™* i°6Ñ&9¸1¸aÐ%@Àa˜*ÓH‘��1�aÜ—y‘yàŸ	™	 )¨hÑ"6Ó7ØŸ	™	 &¨8Ñ"3Ó4ØŸ	™	 &¨8Ñ"3Ó4ðó�ð ˆD�Ið% #r%   r   )rK   rt   ru   rÅ   rR   r  r�   r„   r…   rƒ   rÞ   rî  r(  r)  s   @r#   r  r  Ò  s:   ø„ àñ&ó ð&ò%òô6ò)ò/ò
&N÷P)r%   r  ÚFalconConfigc                   ó   — e Zd Zd„ Zy)ÚFalconLoaderc                 ó¶   — |j                   j                  | _        |j                   j                  | _        t        |j                   dd «      | _        d| _        y )NÚnum_kv_heads)r?   rh  r  ri  r  rQ   r  r  r€   s     r#   r  zFalconLoader.get_falcon_spec`  sB   € Ø Ÿ<™<×9Ñ9ˆÔØŸ,™,×:Ñ:ˆŒÜ$ U§\¡\°>À4ÓHˆÔØ*ˆÕr%   N)rK   rt   ru   r  r&   r%   r#   r+  r+  ^  s   „ ó+r%   r+  ÚDistilBertConfigc                   ó.   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zy)ÚDistilBertLoaderc                  ó   — y)NÚDistilBertModelr&   r|   s    r#   rR   z"DistilBertLoader.architecture_namei  r©  r%   c                 óº  — t        j                  |j                  j                  |j                  j                  dt
        |j                  j                     d¬«      }t        j                  |«      }d|j                  _	        | j                  |j                  j                  d   |j                  j                  «       | j                  |j                  j                  |j                  j                  «       | j!                  |j                  j"                  |j                  j$                  «       t'        |j                  j(                  |j*                  j(                  «      D �]é  \  }}t-        d«      D �cg c]  }t/        j0                  «       ‘Œ }}| j3                  |d   |j4                  j6                  «       | j3                  |d   |j4                  j8                  «       | j3                  |d   |j4                  j:                  «       t=        j>                  |j@                  jB                  d   |«       | j3                  |j@                  jB                  d   |j4                  jD                  «       | j!                  |j@                  jF                  |jH                  «       | j3                  |jJ                  jL                  |jJ                  jN                  «       | j3                  |jJ                  jP                  |jJ                  jR                  «       | j!                  |jJ                  jF                  |jT                  «       �Œì |S c c}w )NFTrÏ   r   r  r‹   r  )+r
   ÚTransformerEncoderSpecr?   rø  rù  rÚ   rÑ   ÚTransformerEncoderModelSpecrÝ   r!  r¯   r$  rì  rµ   r"  Úposition_embeddingsr    rÒ   Ú	LayerNormrû   rü   rŠ  r  r   r  r­   r  Úq_linÚk_linÚv_linr   r  rù   r   Úout_linr   Úsa_layer_normr  r  Úlin1r  Úlin2Úoutput_layer_norm©r9   rb   Úencoder_specre   r  rü   r’   r  s           r#   r�   zDistilBertLoader.get_model_specm  sw  € Ü'×>Ñ>Ø�L‰L×!Ñ!Ø�L‰L× Ñ ØÜ-¨e¯l©l×.EÑ.EÑFØ $ô
ˆô  ×;Ñ;Øó
ˆð ).ˆ�‰Ô%à×ÑØ�L‰L×#Ñ# AÑ&¨×(8Ñ(8×(HÑ(Hô	
ð 	×#Ñ#Ø�L‰L×+Ñ+¨U×-=Ñ-=×-QÑ-Qô	
ð 	×ÑØ�L‰L×,Ñ,¨e×.>Ñ.>×.HÑ.Hô	
ô "% T§\¡\×%7Ñ%7¸×9JÑ9J×9PÑ9PÓ!Qó 	TÑˆJ˜Ü>CÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰O˜L¨™O¨U¯_©_×-BÑ-BÔCØ�O‰O˜L¨™O¨U¯_©_×-BÑ-BÔCØ�O‰O˜L¨™O¨U¯_©_×-BÑ-BÔCÜ×Ñ˜j×7Ñ7×>Ñ>¸qÑAÀ<ÔPà�O‰OØ×)Ñ)×0Ñ0°Ñ3°U·_±_×5LÑ5Lôð ×ÑØ×)Ñ)×4Ñ4°e×6IÑ6Iôð �O‰O˜JŸN™N×3Ñ3°U·Y±Y·^±^ÔDØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y·^±^ÔDØ×Ñ 
§¡× 9Ñ 9¸5×;RÑ;RÖSð!	Tð$ ˆùò# Hs   Å=Mc                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zDistilBertLoader.set_vocabulary™  rt  r%   c                 ó4   — |j                   |_         d|_        y )Ngê-�™—q=)rò   r  r—   s       r#   rƒ   zDistilBertLoader.set_configœ  s   € Ø$×.Ñ.ˆÔØ$)ˆÕ!r%   N)rK   rt   ru   rÅ   rR   r�   r…   rƒ   r&   r%   r#   r0  r0  g  s$   „ àñ!ó ð!ò*òX)ó*r%   r0  Ú
BertConfigc                   ó@   ‡ — e Zd Zed„ «       Zd„ Zˆ fd„Zd„ Zd„ Zˆ xZ	S )Ú
BertLoaderc                  ó   — y)NÚ	BertModelr&   r|   s    r#   rR   zBertLoader.architecture_name£  s   € àr%   c           	      óÀ  — |j                   j                  dk(  sJ ‚t        j                  |j                   j                  |j                   j
                  dt        |j                   j                     ddt        j                  j                  ¬«      }t        j                  |dt        j                  j                  ¬«      }d|j                  _        | j!                  |j                  j"                  d   |j"                  j$                  «       | j!                  |j                  j"                  d   |j"                  j&                  «       | j)                  |j                  j*                  |j"                  j,                  «       | j/                  |j                  j0                  |j"                  j2                  «       | j5                  |j6                  |j8                  j:                  «       t=        |j                  j>                  |j                  j>                  «      D �]/  \  }}tA        d	«      D �cg c]  }t        jB                  «       ‘Œ }}| j5                  |d   |jD                  jF                  jH                  «       | j5                  |d   |jD                  jF                  jJ                  «       | j5                  |d   |jD                  jF                  jL                  «       tO        jP                  |jR                  jT                  d   |«       | j5                  |jR                  jT                  d   |jD                  jV                  j:                  «       | j/                  |jR                  jX                  |jD                  jV                  j2                  «       | j5                  |jZ                  j\                  |j^                  j:                  «       | j5                  |jZ                  j`                  |jV                  j:                  «       | j/                  |jZ                  jX                  |jV                  j2                  «       �Œ2 |S c c}w ©
NÚabsoluteFTr  )rÐ   rÑ   rÒ   Únum_source_embeddingsÚembeddings_merge)Úpooling_layerÚpooling_activationr   r‹   r  )1r?   Úposition_embedding_typer
   r4  rh  ri  rÚ   rí  r   ÚEmbeddingsMergeÚADDr5  ræ  ÚTanhrÝ   r!  r¯   r$  rì  Útoken_type_embeddingsrµ   r"  r6  r    rÒ   r7  r­   Úpooler_denseÚpoolerrþ  rû   rü   r  r  r  r9   ÚqueryrŽ   Úvaluer   r  rù   r   Úoutputr   r  r  Úintermediater  r@  s           r#   r�   zBertLoader.get_model_spec§  s+  € Ø�|‰|×3Ñ3°zÒAÐAÐAä'×>Ñ>Ø�L‰L×*Ñ*Ø�L‰L×,Ñ,ØÜ-¨e¯l©l×.EÑ.EÑFØ $Ø"#Ü(×8Ñ8×<Ñ<ô
ˆô  ×;Ñ;ØØÜ*×5Ñ5×:Ñ:ô
ˆð ).ˆ�‰Ô%à×ÑØ�L‰L×#Ñ# AÑ&¨×(8Ñ(8×(HÑ(Hô	
ð 	×ÑØ�L‰L×#Ñ# AÑ&¨×(8Ñ(8×(NÑ(Nô	
ð 	×#Ñ#Ø�L‰L×+Ñ+¨U×-=Ñ-=×-QÑ-Qô	
ð 	×ÑØ�L‰L×,Ñ,¨e×.>Ñ.>×.HÑ.Hô	
ð 	�‰˜×)Ñ)¨5¯<©<×+=Ñ+=Ô>ä!$ T§\¡\×%7Ñ%7¸¿¹×9LÑ9LÓ!Mó 	SÑˆJ˜Ü>CÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-GÑ-GÔHØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-EÑ-EÔFØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-GÑ-GÔHÜ×Ñ˜j×7Ñ7×>Ñ>¸qÑAÀ<ÔPà�O‰OØ×)Ñ)×0Ñ0°Ñ3°U·_±_×5KÑ5K×5QÑ5Qôð ×ÑØ×)Ñ)×4Ñ4°e·o±o×6LÑ6L×6VÑ6Vôð �O‰O˜JŸN™N×3Ñ3°U×5GÑ5G×5MÑ5MÔNØ�O‰O˜JŸN™N×3Ñ3°U·\±\×5GÑ5GÔHØ×Ñ 
§¡× 9Ñ 9¸5¿<¹<×;QÑ;QÖRð!	Sð$ ˆùò# Hs   È:Qc                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zBertLoader.get_vocabularyß  r’  r%   c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zBertLoader.set_vocabularyè  rt  r%   c                 ó\   — |j                   |_         |j                  j                  |_        y r   ©rò   r?   Úlayer_norm_epsr  r—   s       r#   rƒ   zBertLoader.set_configë  ó"   € Ø$×.Ñ.ˆÔØ$)§L¡L×$?Ñ$?ˆÕ!r%   )
rK   rt   ru   rÅ   rR   r�   r„   r…   rƒ   r(  r)  s   @r#   rF  rF  ¡  s+   ø„ àñó ðò6ôpò)ö@r%   rF  ÚXLMRobertaConfigc                   ó4   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy)ÚXLMRobertaLoaderc                  ó   — y)NÚ#XLMRobertaForSequenceClassificationr&   r|   s    r#   rR   z"XLMRobertaLoader.architecture_nameò  s   € à4r%   c           	      ór	  — |j                   j                  dk(  sJ ‚t        j                  |j                   j                  |j                   j
                  dt        |j                   j                     ddt        j                  j                  ¬«      }|j                  j                  €d}nd}t        j                  ||t        j                  j                  ¬«      }d|j                   _        | j%                  |j                   j&                  d   |j                  j&                  j(                  «       | j%                  |j                   j&                  d   |j                  j&                  j*                  «       | j-                  |j                   j.                  |j                  j&                  j0                  «       | j3                  |j                   j4                  |j                  j&                  j6                  «       |r:| j9                  |j:                  |j                  j                  j<                  «       t?        |j                   j@                  |j                  j                   j@                  «      D �]/  \  }}tC        d	«      D �cg c]  }t        jD                  «       ‘Œ }}| j9                  |d   |jF                  jH                  jJ                  «       | j9                  |d   |jF                  jH                  jL                  «       | j9                  |d   |jF                  jH                  jN                  «       tQ        jR                  |jT                  jV                  d   |«       | j9                  |jT                  jV                  d   |jF                  jX                  j<                  «       | j3                  |jT                  jZ                  |jF                  jX                  j6                  «       | j9                  |j\                  j^                  |j`                  j<                  «       | j9                  |j\                  jb                  |jX                  j<                  «       | j3                  |j\                  jZ                  |jX                  j6                  «       �Œ2 |S c c}w rJ  )2r?   rP  r
   r4  rh  ri  rÚ   rí  r   rQ  rR  ÚrobertarV  r5  ræ  rS  rÝ   r!  r¯   r$  rì  rT  rµ   r"  r6  r    rÒ   r7  r­   rU  rþ  rû   rü   r  r  r  r9   rW  rŽ   rX  r   r  rù   r   rY  r   r  r  rZ  r  ©	r9   rb   rA  rN  re   r  rü   r’   r  s	            r#   r�   zXLMRobertaLoader.get_model_specö  se  € Ø�|‰|×3Ñ3°zÒAÐAÐAä'×>Ñ>Ø�L‰L×*Ñ*Ø�L‰L×,Ñ,ØÜ-¨e¯l©l×.EÑ.EÑFØ $Ø"#Ü(×8Ñ8×<Ñ<ô
ˆð �=‰=×ÑÐ'Ø!‰Mà ˆMä×;Ñ;ØØ'Ü*×5Ñ5×:Ñ:ô
ˆð ).ˆ�‰Ô%à×ÑØ�L‰L×#Ñ# AÑ&¨¯©×(@Ñ(@×(PÑ(Pô	
ð 	×ÑØ�L‰L×#Ñ# AÑ&¨¯©×(@Ñ(@×(VÑ(Vô	
ð 	×#Ñ#Ø�L‰L×+Ñ+Ø�M‰M×$Ñ$×8Ñ8ô	
ð 	×ÑØ�L‰L×,Ñ,¨e¯m©m×.FÑ.F×.PÑ.Pô	
ñ Ø�O‰O˜D×-Ñ-¨u¯}©}×/CÑ/C×/IÑ/IÔJä!$ T§\¡\×%7Ñ%7¸¿¹×9NÑ9N×9TÑ9TÓ!Uó 	SÑˆJ˜Ü>CÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-GÑ-GÔHØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-EÑ-EÔFØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-GÑ-GÔHÜ×Ñ˜j×7Ñ7×>Ñ>¸qÑAÀ<ÔPà�O‰OØ×)Ñ)×0Ñ0°Ñ3°U·_±_×5KÑ5K×5QÑ5Qôð ×ÑØ×)Ñ)×4Ñ4°e·o±o×6LÑ6L×6VÑ6Vôð �O‰O˜JŸN™N×3Ñ3°U×5GÑ5G×5MÑ5MÔNØ�O‰O˜JŸN™N×3Ñ3°U·\±\×5GÑ5GÔHØ×Ñ 
§¡× 9Ñ 9¸5¿<¹<×;QÑ;QÖRð!	Sð$ ˆùò# Hs   ÊR4c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zXLMRobertaLoader.set_vocabulary4  rt  r%   c                 ó\   — |j                   |_         |j                  j                  |_        y r   r^  r—   s       r#   rƒ   zXLMRobertaLoader.set_config7  r`  r%   c                 óz   — |j                   |_        t        |dd«      }|dkD  r|j                  |dz   d  |_        y y ©NÚpadding_idxr   r‹   r²   r´   s       r#   rµ   z'XLMRobertaLoader.set_position_encodings;  ó=   € ØŸ™ˆŒÜ˜ °Ó2ˆØ�AŠ:Ø!Ÿ^™^¨F°Q©J¨LÐ9ˆD�Nð r%   N©	rK   rt   ru   rÅ   rR   r�   r…   rƒ   rµ   r&   r%   r#   rc  rc  ð  s*   „ àñ5ó ð5ò<ò|)ò@ó:r%   rc  ÚRobertaConfigc                   ó4   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy)ÚRobertaLoaderc                  ó   — y)NÚRobertaModelr&   r|   s    r#   rR   zRobertaLoader.architecture_nameD  s   € àr%   c           	      óæ  — |j                   j                  dk(  sJ ‚t        j                  |j                   j                  |j                   j
                  dt        |j                   j                     ddt        j                  j                  ¬«      }|j                  €d}nd}t        j                  ||t        j                  j                  ¬«      }d|j                  _        | j#                  |j                  j$                  d   |j$                  j&                  «       | j#                  |j                  j$                  d   |j$                  j(                  «       | j+                  |j                  j,                  |j$                  j.                  «       | j1                  |j                  j2                  |j$                  j4                  «       |r0| j7                  |j8                  |j                  j:                  «       t=        |j                  j>                  |j                  j>                  «      D �]/  \  }}tA        d	«      D �cg c]  }t        jB                  «       ‘Œ }}| j7                  |d   |jD                  jF                  jH                  «       | j7                  |d   |jD                  jF                  jJ                  «       | j7                  |d   |jD                  jF                  jL                  «       tO        jP                  |jR                  jT                  d   |«       | j7                  |jR                  jT                  d   |jD                  jV                  j:                  «       | j1                  |jR                  jX                  |jD                  jV                  j4                  «       | j7                  |jZ                  j\                  |j^                  j:                  «       | j7                  |jZ                  j`                  |jV                  j:                  «       | j1                  |jZ                  jX                  |jV                  j4                  «       �Œ2 |S c c}w rJ  ©1r?   rP  r
   r4  rh  ri  rÚ   rí  r   rQ  rR  rV  r5  ræ  rS  rÝ   r!  r¯   r$  rì  rT  rµ   r"  r6  r    rÒ   r7  r­   rU  rþ  rû   rü   r  r  r  r9   rW  rŽ   rX  r   r  rù   r   rY  r   r  r  rZ  r  rh  s	            r#   r�   zRobertaLoader.get_model_specH  óC  € Ø�|‰|×3Ñ3°zÒAÐAÐAä'×>Ñ>Ø�L‰L×*Ñ*Ø�L‰L×,Ñ,ØÜ-¨e¯l©l×.EÑ.EÑFØ $Ø"#Ü(×8Ñ8×<Ñ<ô
ˆð �<‰<ÐØ!‰Mà ˆMä×;Ñ;ØØ'Ü*×5Ñ5×:Ñ:ô
ˆð ).ˆ�‰Ô%à×ÑØ�L‰L×#Ñ# AÑ&¨×(8Ñ(8×(HÑ(Hô	
ð 	×ÑØ�L‰L×#Ñ# AÑ&¨×(8Ñ(8×(NÑ(Nô	
ð 	×#Ñ#Ø�L‰L×+Ñ+Ø×Ñ×0Ñ0ô	
ð 	×ÑØ�L‰L×,Ñ,¨e×.>Ñ.>×.HÑ.Hô	
ñ Ø�O‰O˜D×-Ñ-¨u¯|©|×/AÑ/AÔBä!$ T§\¡\×%7Ñ%7¸¿¹×9LÑ9LÓ!Mó 	SÑˆJ˜Ü>CÀA»hÖG¸œK×2Ñ2Õ4ÐGˆLÐGØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-GÑ-GÔHØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-EÑ-EÔFØ�O‰O˜L¨™O¨U¯_©_×-AÑ-A×-GÑ-GÔHÜ×Ñ˜j×7Ñ7×>Ñ>¸qÑAÀ<ÔPà�O‰OØ×)Ñ)×0Ñ0°Ñ3°U·_±_×5KÑ5K×5QÑ5Qôð ×ÑØ×)Ñ)×4Ñ4°e·o±o×6LÑ6L×6VÑ6Vôð �O‰O˜JŸN™N×3Ñ3°U×5GÑ5G×5MÑ5MÔNØ�O‰O˜JŸN™N×3Ñ3°U·\±\×5GÑ5GÔHØ×Ñ 
§¡× 9Ñ 9¸5¿<¹<×;QÑ;QÖRð!	Sð$ ˆùò# Hó   ÉQ.c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zRobertaLoader.set_vocabulary†  rt  r%   c                 ó\   — |j                   |_         |j                  j                  |_        y r   r^  r—   s       r#   rƒ   zRobertaLoader.set_config‰  r`  r%   c                 óz   — |j                   |_        t        |dd«      }|dkD  r|j                  |dz   d  |_        y y rl  r²   r´   s       r#   rµ   z$RobertaLoader.set_position_encodings�  rn  r%   Nro  r&   r%   r#   rr  rr  B  s*   „ àñó ðò<ò|)ò@ó:r%   rr  ÚCamembertConfigc                   ó4   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy)ÚCamembertLoaderc                  ó   — y)NÚCamembertModelr&   r|   s    r#   rR   z!CamembertLoader.architecture_name–  rd  r%   c           	      óæ  — |j                   j                  dk(  sJ ‚t        j                  |j                   j                  |j                   j
                  dt        |j                   j                     ddt        j                  j                  ¬«      }|j                  €d}nd}t        j                  ||t        j                  j                  ¬«      }d|j                  _        | j#                  |j                  j$                  d   |j$                  j&                  «       | j#                  |j                  j$                  d   |j$                  j(                  «       | j+                  |j                  j,                  |j$                  j.                  «       | j1                  |j                  j2                  |j$                  j4                  «       |r0| j7                  |j8                  |j                  j:                  «       t=        |j                  j>                  |j                  j>                  «      D �]/  \  }}tA        d	«      D �cg c]  }t        jB                  «       ‘Œ }}| j7                  |d   |jD                  jF                  jH                  «       | j7                  |d   |jD                  jF                  jJ                  «       | j7                  |d   |jD                  jF                  jL                  «       tO        jP                  |jR                  jT                  d   |«       | j7                  |jR                  jT                  d   |jD                  jV                  j:                  «       | j1                  |jR                  jX                  |jD                  jV                  j4                  «       | j7                  |jZ                  j\                  |j^                  j:                  «       | j7                  |jZ                  j`                  |jV                  j:                  «       | j1                  |jZ                  jX                  |jV                  j4                  «       �Œ2 |S c c}w rJ  rv  rh  s	            r#   r�   zCamembertLoader.get_model_specš  rw  rx  c                 ó&   — |j                  |«       y r   rr  r”   s      r#   r…   zCamembertLoader.set_vocabularyØ  rt  r%   c                 ó\   — |j                   |_         |j                  j                  |_        y r   r^  r—   s       r#   rƒ   zCamembertLoader.set_configÛ  r`  r%   c                 óz   — |j                   |_        t        |dd«      }|dkD  r|j                  |dz   d  |_        y y rl  r²   r´   s       r#   rµ   z&CamembertLoader.set_position_encodingsß  rn  r%   Nro  r&   r%   r#   r~  r~  ”  s*   „ àñ ó ð ò<ò|)ò@ó:r%   r~  c            	      óX  — t        j                  t         j                  ¬«      } | j                  ddd¬«       | j                  dd¬«       | j                  d	d
d¬«       | j                  dd¬«       | j                  ddd¬«       | j                  ddd¬«       t	        j
                  | «       | j                  «       }t        |j                  |j                  |j                  |j                  dv |j                  |j                  |j                  ¬«      }|j                  |«       y )N)Úformatter_classz--modelTzaName of the pretrained model to download, or path to a directory containing the pretrained model.)ÚrequiredÚhelpz--activation_scaleszÕPath to the pre-computed activation scales. Models may use them to rescale some weights to smooth the intermediate activations and improve the quantization accuracy. See https://github.com/mit-han-lab/smoothquant.)rˆ  z--copy_filesú+zWList of filenames to copy from the Hugging Face model to the converted model directory.)Únargsrˆ  z
--revisionz<Revision of the model to download from the Hugging Face Hub.z--low_cpu_mem_usageÚ
store_truezNEnable the flag low_cpu_mem_usage when loading the model with from_pretrained.)Úactionrˆ  z--trust_remote_codez*Allow converting models using custom code.)rV   Úint8_float16)r+   r,   r-   r.   r/   r0   )ÚargparseÚArgumentParserÚArgumentDefaultsHelpFormatterÚadd_argumentr   Údeclare_argumentsÚ
parse_argsr)   rb   r+   r,   Úquantizationr.   r/   r0   Úconvert_from_args)ÚparserÚargsÚ	converters      r#   Úmainr™  æ  sG  € Ü×$Ñ$Ü ×>Ñ>ô€Fð ×ÑØØðFð	 ô ð ×ÑØð:ð ô ð ×ÑØØðð	 ô ð ×ÑØØKð ô ð ×ÑØØØ]ð ô ð
 ×ÑØØØ9ð ô ô ×Ñ Ô'Ø×ÑÓ€DÜ%Ø�
‰
Ø×0Ñ0Ø—?‘?Ø×)Ñ)Ð-HÐHØ—‘Ø×0Ñ0Ø×0Ñ0ô€Ið ×Ñ Õ%r%   Ú__main__))r‹   r   )r  r   )r  é   ©r  r   ©r  r‹   ©r  r  ©r  r  ©r  rÍ  ))r  r  rœ  rž  rŸ  r   )r  r›  )rŸ  ©rÍ  é   ©r›  r‹   )r›  r›  )r›  r¢  )r�  )rÍ  r  )rÍ  r  r¡  r£  )r›  r  )r›  rÍ  )r›  r¤  ))r¤  r¤  ©r¢  r   )r¢  r  )r¢  r}  )r}  r  )r}  r›  ©r}  r¢  ©é	   r   )r§  rÍ  )r§  r}  )r§  é
   )r¨  r   )r¨  r‹   )r¨  r  )r¨  r  )r¨  r¤  )r¨  é   ©r©  r  ©r©  rÍ  )
)r›  r  )r›  r§  )r}  r   )r}  rÍ  r¥  )r}  r}  r¦  )r§  r¢  )r§  r§  )r¨  r›  )r«  )é   r‹   )r¬  é   )r¬  r¬  ©é   rÍ  )é   r   )r°  rÍ  )r°  r§  )é   r­  ©r±  r¬  )é   r¢  )r³  r¨  )r³  r¯  ©é   r   )rµ  r  )rµ  r§  )rµ  r¬  )é   r­  ))é   r¯  r®  )r¯  r¯  ©r°  r‹   r´  )é   rÍ  )	)r§  é   rª  r«  )r©  r±  )é   r¢  )r»  r©  )r»  r±  )r¹  r  )r¹  r¯  ))r¨  r­  )r·  r±  )r°  r©  )r°  r­  )r°  r·  )r±  r¯  )r±  r°  )r³  rÍ  )r³  r©  )r³  rº  ©rº  r©  )r¶  r  )r¶  r  )r»  r  )r»  r§  )r»  r­  )r¹  r›  )r¹  r¢  )r¹  r·  )é   r›  )é   r‹   )r¾  r­  )é   r¯  )
r¤  )r¨  r±  )r­  r³  )r·  r­  r¸  r²  r¼  )r¶  rÍ  )é   r‹   )r½  r¤  )zopenai/whisper-tiny.enzopenai/whisper-tinyzopenai/whisper-base.enzopenai/whisper-basezopenai/whisper-small.enzopenai/whisper-smallzopenai/whisper-medium.enzopenai/whisper-mediumzopenai/whisper-largezopenai/whisper-large-v2zopenai/whisper-large-v3ÚT5GemmaConfigc                   ó˜   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Ze	j                  j                  fd„Ze	j                  j                  fd„Zy)	ÚT5GemmaLoaderc                  ó   — y)NÚT5GemmaForConditionalGenerationr&   r|   s    r#   rR   zT5GemmaLoader.architecture_nameª  r\  r%   c                 ó\   — |j                   j                  dz   j                  «       |_        y ©Nr  ©rš   rY  rZ  r›   rÖ  s      r#   r    zT5GemmaLoader.set_layer_norm®  ó#   € Ø ×'Ñ'×,Ñ,¨sÑ2×9Ñ9Ó;ˆ�
r%   c                 óR  — |j                   j                  }|j                   j                  }t        |j                   dd«      }|j                  }t        |d|«      }||k(  rd }t        j                  |j                  |j                  dt        |j                     dd|j                  dt        |dd«      |d||j                  ¬«      }|j                  }t        |d|«      }	|	|k(  rd }	t        j                  |j                  |j                  dt        |j                     ddd|j                  dt        |dd«      |dd|	|j                  ¬	«      }
t        j                  ||
«      }| j                  |j                  |j                  j                  |«       | j                  |j                  |j                  j                  |t         j"                  j$                  «       | j'                  |j                  j(                  |j                  j                  j*                  «       |S )
Nry  i   r  TFr¿   r  )rÐ   rÑ   r®  r°  r·  r¸  r  ry  r8  r  rÎ  )rÐ   rÑ   r®  r°  Úwith_encoder_attentionr·  r¸  r  ry  r8  Ú external_pre_post_encoder_layersr  rÎ  )r?   rÝ   rß   rQ   ri  r
   r4  rh  rÚ   r  rÎ  ÚTransformerDecoderSpecrÔ   rÜ   rb   rÞ   r   r¢   r£   r­   rà   r&  )r9   rb   Úencoder_configÚdecoder_configry  Úencoder_num_headsÚencoder_num_heads_kvrÝ   Údecoder_num_headsÚdecoder_num_heads_kvrß   re   s               r#   r�   zT5GemmaLoader.get_model_spec±  sú  € ØŸ™×-Ñ-ˆØŸ™×-Ñ-ˆÜ  §¡Ð/?ÀÓFˆà*×>Ñ>ÐÜ&ØÐ1Ð3Dó 
Ðð  Ð#4Ò4Ø#'Ð ä"×9Ñ9Ø×,Ñ,Ø×.Ñ.ØÜ-¨n×.NÑ.NÑOØØØ%×.Ñ.Ø#Ü °¸eÓDØ)Ø $Ø-Ø#×,Ñ,ô
ˆð  +×>Ñ>ÐÜ&ØÐ1Ð3Dó 
Ðð  Ð#4Ò4Ø#'Ð ä"×9Ñ9Ø×,Ñ,Ø×.Ñ.ØÜ-¨n×.NÑ.NÑOØØØ#'Ø%×.Ñ.Ø#Ü °¸eÓDØ)Ø $Ø-1Ø-Ø#×,Ñ,ô
ˆô$  ×/Ñ/°¸ÓAˆà×Ñ˜Ÿ™ u§{¡{×':Ñ':¸NÔKà×ÑØ�L‰LØ�K‰K×ÑØÜ×$Ñ$×(Ñ(ô		
ð 	�‰˜Ÿ™×/Ñ/°·±×1DÑ1D×1QÑ1QÔRØˆr%   c                 óH   — |j                  |«       |j                  |«       y r   rë   r”   s      r#   r…   zT5GemmaLoader.set_vocabularyõ  rî   r%   c                 óv  — |j                   |_         |j                  |_        |j                  |_        t        |j                  d«      r&|j                  j
                  j                  |_        n9t        |j                  d«      r|j                  j                  |_        nd|_        |j                   |_        y )NrÝ   r  g�íµ ÷Æ°>)	rð   rñ   rò   rS   r?   rÝ   r  r  rõ   r—   s       r#   rƒ   zT5GemmaLoader.set_configù  sˆ   € Ø$×.Ñ.ˆÔØ$×.Ñ.ˆÔØ$×.Ñ.ˆÔä�5—<‘< Ô+Ø(-¯©×(<Ñ(<×(IÑ(IˆFÕ%Ü�U—\‘\ >Ô2Ø(-¯©×(AÑ(AˆFÕ%à(,ˆFÔ%à%.×%8Ñ%8ˆÕ"r%   c                 óÀ  — d|_         t        |j                  t        «      r|j                  d   n|j                  }| j	                  ||j
                  «       |j                  dz  |_        | j                  |j                  |j                  «       |}t        t        |j                  |j                  «      «      D �]˜  \  }\  }}	| j                  |j                  |	j                   «       | j                  |j"                  |	j$                  «       t'        d«      D �
cg c]  }
t)        j*                  «       ‘Œ }}
| j-                  |d   |	j.                  j0                  |¬«       | j-                  |d   |	j.                  j2                  |¬«       | j-                  |d   |	j.                  j4                  |¬«       t7        j8                  |j:                  j<                  d   |«       | j-                  |j:                  j<                  d   |	j.                  j>                  |¬«       | j                  |j@                  |	jB                  «       | j                  |jD                  |	jF                  «       | j-                  |jH                  jJ                  |	jL                  jN                  |¬«       | j-                  |jH                  jP                  |	jL                  jR                  |¬«       | j-                  |jH                  jT                  |	jL                  jV                  |¬«       tY        |	d«       tY        |	d	«       t[        j\                  «        �Œ› y c c}
w )
NTr   r  r  rc  r‹   r  rÿ   r   )/r!  r©   r$  r%  r¯   r&  rl  r  r    r   r&  ro  rû   rü   rý   r÷  Úpre_self_attn_layernormrú  Úpost_self_attn_layernormr  r   r  r­   rÿ   r  r  r  r   r  rù   r   r'  r>  r?  r@  rA  r  r  r   r(  rÃ  r  r  r  r)  r*  r+  )r9   re   rÝ   rÎ  r¬   Úencoder_emb_specrŸ   rN  r  rü   r’   Úqkv_split_layerss               r#   rÜ   zT5GemmaLoader.set_encoder  sÒ  € ð !%ˆÔô #-¨T¯_©_¼dÔ"CˆD�O‰O˜AÒÈÏÉð 	ð 	×ÑÐ,¨g×.BÑ.BÔCØ2@×2LÑ2LÈcÑ2QÐÔ/Ø×Ñ˜DŸO™O¨W¯\©\Ô:àˆÜ&/´°D·J±JÀÇÁÓ0NÓ&Oó 1	Ñ"ˆAÑ"�
˜EØ×ÑØ×+Ñ+¨U×-JÑ-Jôð ×ÑØ×4Ñ4°e×6TÑ6Tôô
 CHÈÃ(ÖK¸Q¤× 6Ñ 6Õ 8ÐKÐÐKØ�O‰OØ  Ñ# U§_¡_×%;Ñ%;È
ð ô ð �O‰OØ  Ñ# U§_¡_×%;Ñ%;È
ð ô ð �O‰OØ  Ñ# U§_¡_×%;Ñ%;È
ð ô ô ×Ñ˜j×7Ñ7×>Ñ>¸qÑAÐCSÔTØ�O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð ×ÑØ×5Ñ5°u×7VÑ7Vôð ×ÑØ×6Ñ6¸×8XÑ8Xôð
 �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô
 �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñc1	ùò  Ls   Ä!Mc                 ó˜	  — d|_         d|_        | j                  |j                  |j                  «       |j
                  dz  |j                  _        | j                  |j                  |j                  «       t        t        |j                  |j                  «      «      D �]  \  }\  }}| j                  |j                  |j                  «       | j                  |j                   |j"                  «       t%        d«      D �cg c]  }t'        j(                  «       ‘Œ }	}| j+                  |	d   |j,                  j.                  |¬«       | j+                  |	d   |j,                  j0                  |¬«       | j+                  |	d   |j,                  j2                  |¬«       t5        j6                  |j8                  j:                  d   |	«       | j+                  |j8                  j:                  d   |j,                  j<                  |¬«       | j                  |j>                  |j@                  «       | j                  |jB                  |jD                  «       | j+                  |jF                  j:                  d   |jH                  j.                  |¬«       t%        d«      D �cg c]  }t'        j(                  «       ‘Œ }
}| j+                  |
d   |jH                  j0                  |¬«       | j+                  |
d   |jH                  j2                  |¬«       t5        j6                  |jF                  j:                  d   |
«       | j+                  |jF                  j:                  d   |jH                  j<                  |¬«       | j                  |jJ                  |jL                  «       | j                  |jN                  |jP                  «       | j+                  |jR                  jT                  |jV                  jX                  |¬«       | j+                  |jR                  jZ                  |jV                  j\                  |¬«       | j+                  |jR                  j^                  |jV                  j`                  |¬«       tc        |d	«       tc        |d
«       tc        |d«       te        jf                  «        �Œ y c c}w c c}w )NTFr  r  r   rc  r‹   r  rÿ   Ú
cross_attnr   )4r!  r5  r¯   r$  r&  rl  r  r    r   r&  ro  rû   rü   rý   r÷  r×  rú  rØ  r  r   r  r­   rÿ   r  r  r  r   r  rù   r   r'  Ú)external_pre_encoder_attention_layer_normÚpre_cross_attn_layernormÚ*external_post_encoder_attention_layer_normÚpost_cross_attn_layernormr  rÜ  r>  r?  r@  rA  r  r  r   r(  rÃ  r  r  r  r)  r*  r+  )r9   re   rŸ   rÏ  r¬   rN  r  rü   r’   rÚ  Úkv_split_layerss              r#   rÞ   zT5GemmaLoader.set_decoderH  s  € ð !%ˆÔØ).ˆÔ&à×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ1?×1KÑ1KÈSÑ1Pˆ�‰Ô.Ø×Ñ˜DŸO™O¨V¯[©[Ô9ä&/´°D·J±JÀÇÁÓ0NÓ&Oó Y	Ñ"ˆAÑ"�
˜Eà×ÑØ×+Ñ+¨U×-JÑ-Jôð ×ÑØ×4Ñ4°e×6TÑ6Tôô
 CHÈÃ(ÖK¸Q¤× 6Ñ 6Õ 8ÐKÐÐKØ�O‰OØ  Ñ# U§_¡_×%;Ñ%;È
ð ô ð �O‰OØ  Ñ# U§_¡_×%;Ñ%;È
ð ô ð �O‰OØ  Ñ# U§_¡_×%;Ñ%;È
ð ô ô ×Ñ˜j×7Ñ7×>Ñ>¸qÑAÐCSÔTØ�O‰OØ×)Ñ)×0Ñ0°Ñ3Ø—‘×&Ñ&Ø%ð ô ð ×ÑØ×DÑDØ×.Ñ.ôð
 ×ÑØ×EÑEØ×/Ñ/ôð �O‰OØ×$Ñ$×+Ñ+¨AÑ.Ø× Ñ ×'Ñ'Ø%ð ô ô BGÀqÃÖJ¸Aœ{×5Ñ5Õ7ÐJˆOÐJØ�O‰OØ Ñ"Ø× Ñ ×'Ñ'Ø%ð ô ð
 �O‰OØ Ñ"Ø× Ñ ×'Ñ'Ø%ð ô ô
 ×Ñ˜j×2Ñ2×9Ñ9¸!Ñ<¸oÔNð �O‰OØ×$Ñ$×+Ñ+¨AÑ.Ø× Ñ ×'Ñ'Ø%ð ô ð ×ÑØ×5Ñ5°u×7VÑ7Vôð ×ÑØ×6Ñ6¸×8XÑ8Xôð
 �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô
 �E˜;Ô'Ü�E˜<Ô(Ü�E˜5Ô!Ü�J‰JŽLñsY	ùò  LùòH Ks   ÄSÊ'SN)rK   rt   ru   rÅ   rR   r    r�   r…   rƒ   r   r¢   r£   rÜ   rÞ   r&   r%   r#   rÃ  rÃ  ¨  sZ   „ àñ1ó ð1ò<òBòH0ò9ð 9D×8PÑ8P×8TÑ8Tó?ðD 8C×7OÑ7O×7SÑ7Sôcr%   rÃ  ÚT5Gemma2Configc                   ó¼   ‡ — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zˆ fd„Z	d„ Z
d„ Zej                  j                  fd	„Zej                  j                  fd
„Zd„ Zˆ xZS )ÚT5Gemma2Loaderc                  ó   — y)NÚ T5Gemma2ForConditionalGenerationr&   r|   s    r#   rR   z T5Gemma2Loader.architecture_name°  s   € à1r%   c           
      óÄ  — |j                   }t        |d|«      }||k(  rd }|j                  }t        |di «      xs i }|j                  di «      j                  dt        |dd«      «      }t	        di d|j
                  “d|“dd	“d
t        |j                     “dd	“dd	“d|“dd“dt        j                  j                  “dd“d|“dt        |dd«      “d|“d|“dd	“dd	“ŽS )Nr  r¢  r|  r¿   rw  r   rÂ  rÐ   TrÑ   r®  r°  r·  r¸  FrÂ   rÃ   r‹   r  ry  r   r  rÎ  r  r8  r&   )ri  rQ   rÎ  rL   Údictrh  rÚ   r  r   rW  ÚLinear)r9   Úside_configrÂ  r  rÎ  r©  Úglobal_thetas          r#   Ú_side_kwargszT5Gemma2Loader._side_kwargs´  sD  € Ø×3Ñ3ˆ	Ü˜{Ð,AÀ9ÓMˆØ˜9Ò$ØˆLØ×'Ñ'ˆÜ˜kÐ+<¸bÓAÒGÀRˆØ"—‘Ð'7¸Ó<×@Ñ@Øœ' +¨|¸YÓGó
ˆô ò 
Ø"×4Ò4ð
áð
ñ ð
ô .¨k×.KÑ.KÒLð	
ñ
 ð
ñ ð
ñ  ð
ñ $ð
ô !/× @Ñ @× GÒ Gð
ñ #$ð
ñ %ð
ô # ;Ð0@À!ÔDð
ñ &ð
ñ ð
ñ ð
ñ  !%ð!
ð 	
r%   c                 óF  — t        |dd «      }|sy t        |di «      xs i }|j                  di «      j                  dd«      }|j                  di «      j                  dd«      }t        |dd	«      }|j                  di «      }|j                  d
d«      }	|j                  dd«      }
t        ||«      D ]ê  \  }}|j                  }|dk(  r‚t	        j
                  d«      j                  |«      |_        t	        j
                  d«      j                  d	«      |_        |	dk(  sŒot	        j
                  d«      j                  |
«      |_	        Œ™t	        j
                  d«      j                  |«      |_        t	        j
                  d«      j                  |«      |_        Œì y )Nrz  r¢  r|  r¿   rw  r}  r  ry  r   rº   r»   r¾   r  r€  rp  r   )
rQ   rL   rû   rù   rÙ  rA   r¹   r  ry  rÃ   )r9   rê  r‘  rz  r©  rë  Úlocal_thetary  Úfull_attn_paramsÚfull_rope_typeÚfull_rope_factorr„  r  rœ  s                 r#   Ú_apply_layer_typesz!T5Gemma2Loader._apply_layer_typesÑ  s|  € Ü˜k¨=¸$Ó?ˆÙØÜ˜kÐ+<¸bÓAÒGÀRˆØ"—‘Ð'7¸Ó<×@Ñ@Ø˜)ó
ˆð "—o‘oÐ&9¸2Ó>×BÑBÀ<ÐQWÓXˆÜ  Ð.>ÀÓBˆØ&Ÿ?™?Ð+;¸RÓ@ÐØ)×-Ñ-¨k¸9ÓEˆØ+×/Ñ/°¸#Ó>ÐÜ&)¨+°{Ó&Cò 	MÑ"ˆJ˜
Ø×,Ñ,ˆDØÐ-Ò-Ü#%§8¡8¨IÓ#6×#;Ñ#;¸LÓ#I�Ô Ü&(§h¡h¨wÓ&7×&<Ñ&<¸QÓ&?�Ô#Ø! XÓ-Ü13·±¸)Ó1D×1IÑ1IØ(ó2�DÕ.ô $&§8¡8¨IÓ#6×#;Ñ#;¸KÓ#H�Ô Ü&(§h¡h¨wÓ&7×&<Ñ&<¸^Ó&L�Õ#ñ	Mr%   c                 ó¼  — |j                   j                  j                  }|j                   j                  }t	        j
                  di | j                  |«      ¤Ž}t	        j                  di | j                  |«      ¤dddœ¤Ž}t	        j                  ||«      }| j                  |j                  |j                  j                  j                  «       | j                  ||j                  j                  «       | j                  |j                  |j                  j                  «       | j                  ||j                  j                  «       t        |j                   d«      r2| j#                  |j                  j$                  |j                   «       |S | j#                  |j                  j$                  |j                  j                  j&                  «       |S )NT)rË  Úmerged_encoder_attentionrš   r&   )r?   rÝ   rv  rß   r
   r4  rì  rÍ  rÔ   rÜ   rb   r…  rò  rü   rÞ   rS   rá   r­   rà   r&  )r9   rb   rÎ  rÏ  rÝ   rß   re   s          r#   r�   zT5Gemma2Loader.get_model_specë  sc  € ØŸ™×-Ñ-×9Ñ9ˆØŸ™×-Ñ-ˆä"×9Ñ9ñ 
Ø×Ñ Ó/ñ
ˆô #×9Ñ9ñ 
Ø×Ñ Ó/ð
à#'Ø%)ó
ˆô
  ×/Ñ/°¸ÓAˆà×Ñ˜Ÿ™ u§{¡{×':Ñ':×'EÑ'EÔFØ×Ñ °·±×0BÑ0BÔCà×Ñ˜Ÿ™ u§{¡{×':Ñ':Ô;Ø×Ñ °·±×0BÑ0BÔCä�5—=‘= (Ô+Ø�O‰O˜DŸL™L×3Ñ3°U·]±]ÔCð ˆð �O‰O˜DŸL™L×3Ñ3°U·[±[×5HÑ5H×5UÑ5UÔVØˆr%   c                 óH   — |j                  |«       |j                  |«       y r   rë   r”   s      r#   r…   zT5Gemma2Loader.set_vocabulary  rî   r%   c                 ó´   •— t         ‰| �  ||«      }|j                  j                  t	        |«      z
  }t        |«      D ]  }|j                  d|z  «       Œ |S r�  r�  r�  s         €r#   r„   zT5Gemma2Loader.get_vocabulary	  rÙ  r%   c                 óò   — t        |dd «      |_        t        |dd «      |_        t        |dd «      |_        t        |dd «      |_        |j
                  j                  j                  j                  |_	        y )Nrð   rñ   rò   )
rQ   rð   rñ   rò   rõ   r?   rÝ   rv  r  r  r—   s       r#   rƒ   zT5Gemma2Loader.set_config  sd   € Ü" 9¨k¸4Ó@ˆÔÜ" 9¨k¸4Ó@ˆÔÜ" 9¨k¸4Ó@ˆÔÜ%,¨Y¸ÀTÓ%JˆÔ"Ø$)§L¡L×$8Ñ$8×$DÑ$D×$QÑ$QˆÕ!r%   c                 ó¸  — t        |j                  t        «      r|j                  d   n|j                  }| j                  ||j                  «       | j                  |j                  |j                  «       t        |j                  dd «      }|�t        |«      nd|_
        t        |j                  |j                  «      D �]”  \  }}| j                  |j                  |j                  «       | j                  |j                   |j"                  «       | j%                  |j&                  |«       | j                  |j(                  |j*                  «       | j                  |j,                  |j.                  «       | j1                  |j2                  j4                  |j6                  j8                  «       | j1                  |j2                  j:                  |j6                  j<                  «       | j1                  |j2                  j>                  |j6                  j@                  «       tC        |d«       tC        |d«       tE        jF                  «        �Œ— y )Nr   r  Frÿ   r   )$r©   r$  r%  r¯   r&  r    r   r&  rQ   rZ  r!  rû   rü   rý   r÷  r×  rú  rØ  Ú_set_self_attentionrù   r>  r?  r@  rA  r­   r  r  r   r(  rÃ  r  r  r  r)  r*  r+  )r9   re   rÝ   rÙ  r  r  rü   s          r#   rÜ   zT5Gemma2Loader.set_encoder  sÀ  € ä",¨T¯_©_¼dÔ"CˆD�O‰O˜AÒÈÏÉð 	ð 	×ÑÐ,¨g×.BÑ.BÔCØ×Ñ˜DŸO™O¨W¯\©\Ô:Ü˜g×2Ñ2°MÀ4ÓHˆØ6AÐ6M¤ kÔ 2ÐSXˆÔä!$ T§Z¡Z°·±Ó!@ó 	ÑˆJ˜Ø×ÑØ×+Ñ+¨U×-JÑ-Jôð ×ÑØ×4Ñ4°e×6TÑ6Tôð ×$Ñ$ Z×%>Ñ%>ÀÔFØ×ÑØ×5Ñ5°u×7VÑ7Vôð ×ÑØ×6Ñ6¸×8XÑ8Xôð �O‰O˜JŸN™N×3Ñ3°U·Y±Y×5HÑ5HÔIØ�O‰O˜JŸN™N×9Ñ9¸5¿9¹9×;LÑ;LÔMØ�O‰O˜JŸN™N×3Ñ3°U·Y±Y×5HÑ5HÔIÜ�E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñ'	r%   c                 óÎ  — t        |j                  dd «      }|�t        |«      nd|_        d|_        | j                  |j                  |j                  «       | j                  |j                  |j                  «       t        |j                  |j                  «      D �]>  \  }}|j                  }| j                  |j                  |j                  «       | j                  |j                   |j"                  «       t%        d«      D �cg c]  }t'        j(                  «       ‘Œ }	}| j+                  |	d   |j,                  j.                  |¬«       | j+                  |	d   |j,                  j0                  |¬«       t3        j4                  |j6                  |	«       | j9                  |||¬«       | j                  |j:                  |j<                  «       | j                  |j>                  |j@                  «       | j+                  |jB                  jD                  |jF                  jH                  |¬«       | j+                  |jB                  jJ                  |jF                  jL                  |¬«       | j+                  |jB                  jN                  |jF                  jP                  |¬«       tS        |d«       tS        |d«       tU        jV                  «        �ŒA y c c}w )	Nr  Fr  r   rc  r‹   rÿ   r   ),rQ   r&  rZ  r!  r5  r¯   r$  r    r   r&  rû   rü   rý   rù   r÷  r×  rú  rØ  r  r   r  r­   rÿ   r  r  r   r  Ú	memory_kvrù  r>  r?  r@  rA  r  r  r   r(  rÃ  r  r  r  r)  r*  r+  )
r9   re   rŸ   r¬   r  r  rü   Ú	attn_specr’   Úkv_splits
             r#   rÞ   zT5Gemma2Loader.set_decoder5  sQ  € Ü˜f×1Ñ1°=À$ÓGˆØ6AÐ6M¤ kÔ 2ÐSXˆÔØ).ˆÔ&Ø×Ñ˜DŸO™O¨V×-@Ñ-@ÔAØ×Ñ˜DŸO™O¨V¯[©[Ô9ä!$ T§Z¡Z°·±Ó!?ó #	ÑˆJ˜Ø"×1Ñ1ˆIØ×ÑØ×+Ñ+¨U×-JÑ-Jôð ×ÑØ×4Ñ4°e×6TÑ6Tôô ;@À»(ÖC°Qœ×.Ñ.Õ0ÐCˆHÐCØ�O‰O˜H Q™K¨¯©×)?Ñ)?ÈJˆOÔWØ�O‰O˜H Q™K¨¯©×)?Ñ)?ÈJˆOÔWÜ×Ñ˜i×1Ñ1°8Ô<à×$Ñ$ Y°À*Ð$ÔMà×ÑØ×5Ñ5°u×7VÑ7Vôð ×ÑØ×6Ñ6¸×8XÑ8Xôð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ð �O‰OØ—‘×-Ñ-¨u¯y©y×/@Ñ/@ÈZð ô ð �O‰OØ—‘×'Ñ'¨¯©×)<Ñ)<Èð ô ô �E˜;Ô'Ü�E˜5Ô!Ü�J‰JŽLñG#	ùò Ds   ÄK"c                 óÔ  — t        d«      D �cg c]  }t        j                  «       ‘Œ }}| j                  |d   |j                  j
                  |¬«       | j                  |d   |j                  j                  |¬«       | j                  |d   |j                  j                  |¬«       t        j                  |j                  d   |«       | j                  |j                  d   |j                  j                  |¬«       | j                  |j                  |j                  j                  «       | j                  |j                  |j                  j                  «       y c c}w )Nr  r   rc  r‹   r  )r  r   r  r­   rÿ   r  r  r  r   r  r   r'  r    r’  r“  )r9   rü  rü   r¬   r’   Ú	qkv_splits         r#   rù  z"T5Gemma2Loader._set_self_attentiona  s  € ô
 8=¸Q³xÖ@°!”[×+Ñ+Õ-Ð@ˆ	Ð@Ø�‰˜	 !™ e§o¡o×&<Ñ&<ÈˆÔTØ�‰˜	 !™ e§o¡o×&<Ñ&<ÈˆÔTØ�‰˜	 !™ e§o¡o×&<Ñ&<ÈˆÔTÜ×Ñ˜)×*Ñ*¨1Ñ-¨yÔ9Ø�‰Ø×Ñ˜QÑ §¡×!7Ñ!7ÀJð 	ô 	
ð 	×Ñ˜I×,Ñ,¨e¯o©o×.DÑ.DÔEØ×Ñ˜I×,Ñ,¨e¯o©o×.DÑ.DÕEùò As   ŽE%c                 ó\   — |j                   j                  dz   j                  «       |_        y rÇ  rÈ  rÖ  s      r#   r    zT5Gemma2Loader.set_layer_normq  rÉ  r%   )rK   rt   ru   rÅ   rR   rì  rò  r�   r…   r„   rƒ   rÜ   r   r¢   r£   rÞ   rù  r    r(  r)  s   @r#   rä  rä  ®  sm   ø„ àñ2ó ð2ò
ò:Mò4ò40ôòRòð< 4?×3KÑ3K×3OÑ3Oó *ðZ ,7×+CÑ+C×+GÑ+GóFö <r%   rä  )XrÆ   rŽ  r*  r  rm   Útypingr   r   r¶  rÙ  rp   rE   rG   ÚImportErrorÚctranslate2.convertersr   Ú ctranslate2.converters.converterr   Úctranslate2.specsr   r   r	   r
   r   r   r   ræ  rú  rç  ÚGELUSigmoidÚRELUrV  rÚ   rW  ré  ÚSurX  rÀ   r¢   re  ÚAWQ_GEMVrR  r    r'   r)   ÚABCrz   rÊ   r,  rA  rQ  rY  ra  r‚  r¦  r±  rÈ  ré  r  r1  rd  rª  rÚ  rß  rò  r
  r3  rD  rn  r˜  r¼  rÇ  rÔ  rá  rí  r÷  r  r+  r0  rF  rc  rr  r~  r™  rK   r  rÃ  rä  r&   r%   r#   ú<module>r     sI  ðÛ 
Û Û 	Û Û 	ç !ã ð	ÛÛÛõ )Ý 6÷÷ ñ ð ×"Ñ"×'Ñ'Ø×'Ñ'×0Ñ0Ø×&Ñ&×/Ñ/Ø×)Ñ)×.Ñ.Ø$×/Ñ/×8Ñ8Ø×(Ñ(×4Ñ4Ø×"Ñ"×'Ñ'Ø×"Ñ"×(Ñ(Ø×#Ñ#×)Ñ)ñ
Ð ð ×.Ñ.×5Ñ5Ø
×
*Ñ
*×
-Ñ
-Ø×.Ñ.×5Ñ5Ø×0Ñ0×3Ñ3ñ	Ð ð ×$Ñ$×-Ñ-Ø×$Ñ$×-Ñ-ñÐ ð
 €òôA˜Iô AôHWF�#—'‘'ô WFñt �Óô@V�ó @Vó ð@VñF �Ó ô47�Zó 47ó !ð47ñn �Ó ô�:ó ó !ðñB �Óô=�*ó =ó  ð=ñ" �Ó!ô	9�Jó 	9ó "ð	9ñ �ÓôC�
ó Có ðCñL Ð#Ó$ô/G˜+ó /Gó %ð/Gñd �Óô%G�ó %Gó ð%GñP �Óô5G�ó 5Gó ð5Gñp �Ó!ôVG�Kó VGó "ðVGñr �Ó!ôLN�Kó LNó "ðLNñ^ �Ó!ôc �Jó c ó "ðc ñL Ð!Ó"ôK@�Zó K@ó #ðK@ñ\ Ð%Ó&ôq$˜ó q$ó 'ðq$ñh �Óôy'ˆ{ó y'ó ðy'ñx �Óô-�ó -ó ð-ñ �ÓôJ�+ó Jó  ðJñZ �Óô41�ó 41ó ð41ñn �Óô\�+ó \ó  ð\ñ~ �Ó ôd�;ó dó !ðdñN �ÓôQ�+ó Qó  ðQñh Ð#Ó$Ù�Ó ôR�;ó Ró !ó %ðRñj Ð#Ó$Ù�Ó ô@�;ó @ó !ó %ð@ñF �Ó!ôD�Kó Dó "ðDñN �ÓôI�+ó Ió  ðIñX �ÓôS�+ó Só  ðSñl Ð,Ó-ô0D ó 0Dó .ð0Dñf �Óô0D�ó 0Dó ð0Dñf �Óôh�ó hó ðhñV �ÓôHˆ{ó Hó ðHñV �Ó ô+�8ó +ó !ð+ñ Ð#Ó$ô6*�{ó 6*ó %ð6*ñr �ÓôK@�ó K@ó ðK@ñ\ Ð#Ó$ôN:�{ó N:ó %ðN:ñb �Ó!ôN:�Kó N:ó "ðN:ñb Ð"Ó#ôN:�kó N:ó $ðN:òb7&ðt ˆzÒÙ„Fò	ò LÚFò	ò ò*ò!ò( Vò
ò ò2 ñc}Ð ñB �Ó!ôB�Kó Bó "ðBñJ Ð!Ó"ôC<�[ó C<ó #ñC<øðA} ò 	Úð	ús   ¢U ÕUÕU