Ë
    èÍ:j‰  ã                   óŠ   — d dl Z d dlZd dlZd dlmZ d dlmZmZmZ  G d„ de«      Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zedk(  r e«        yy)é    N)Ú	Converter)Úcommon_specÚ
model_specÚtransformer_specc                   ó"   — e Zd ZdZdefd„Zd„ Zy)ÚOpenAIGPT2Converterz;Converts GPT-2 models from https://github.com/openai/gpt-2.Ú	model_dirc                 ó   — || _         y)zƒInitializes the OpenAI GPT-2 converter.

        Arguments:
          model_dir: Path to the OpenAI GPT-2 model directory.
        N)Ú
_model_dir)Úselfr	   s     úw/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/ctranslate2/converters/openai_gpt2.pyÚ__init__zOpenAIGPT2Converter.__init__   s   € ð $ˆ�ó    c                 ó²  — dd l }|j                  j                  | j                  «      }|j	                  «       j                  «       D �ci c]  }||j                  |«      “Œ }}t        t        j                  j                  | j                  d«      «      5 }t        j                  |«      }d d d «       t        t        j                  j                  | j                  d«      «      5 }t        j                  |«      }t        |j                  «       d„ ¬«      D �	�
cg c]  \  }	}
|	‘Œ	 }}	}
d d d «       t        j                   j#                  d   |d   dt$        j&                  j(                  ¬	«      }t+        |j,                  |d
«       d|_        d|_        d|_        |j5                  «       |S c c}w # 1 sw Y   �ŒxY wc c}
}	w # 1 sw Y   Œ¡xY w)Nr   zhparams.jsonzencoder.jsonc                 ó   — | d   S )Né   © )Úitems    r   ú<lambda>z+OpenAIGPT2Converter._load.<locals>.<lambda>#   s   € È4ÐPQÉ7€ r   )ÚkeyÚn_layerÚn_headT)Úpre_normÚ
activationÚmodelz<|endoftext|>)Ú
tensorflowÚtrainÚload_checkpointr   Úget_variable_to_shape_mapÚkeysÚ
get_tensorÚopenÚosÚpathÚjoinÚjsonÚloadÚsortedÚitemsr   ÚTransformerDecoderModelSpecÚfrom_configr   Ú
ActivationÚGELUTanhÚset_decoderÚdecoderÚ	unk_tokenÚ	bos_tokenÚ	eos_tokenÚregister_vocabulary)r   ÚtfÚreaderÚnameÚweightsÚhparams_fileÚhparamsÚ
vocab_fileÚvocabÚtokenÚindexÚspecs               r   Ú_loadzOpenAIGPT2Converter._load   s”  € Ûà—‘×)Ñ)¨$¯/©/Ó:ˆð ×8Ñ8Ó:×?Ñ?ÓAö
àð �&×#Ñ# DÓ)Ñ)ð
ˆð 
ô
 ”"—'‘'—,‘,˜tŸ™°Ó?Ó@ð 	.ÀLÜ—i‘i Ó-ˆG÷	.ä”"—'‘'—,‘,˜tŸ™°Ó?Ó@ð 	ÀJÜ—I‘I˜jÓ)ˆEô %+¨5¯;©;«=Ñ>RÔ$S÷á �E˜5ò ðˆEñ ÷	ô  ×;Ñ;×GÑGØ�IÑØ�HÑØÜ"×-Ñ-×6Ñ6ð	 Hó 
ˆô 	�D—L‘L '¨7Ô3Ø(ˆŒØ(ˆŒØ(ˆŒØ× Ñ  Ô'Øˆùò3
÷
	.ñ 	.üó÷	ð 	ús0   Á
F5ÂF:Ã)5GÄGÄ*GÆ:GÇGÇGN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r?   r   r   r   r   r   	   s   „ ÙEð$ #ó $ór   r   c                 óJ  — |d|z     | j                   _        |d|z     | j                  _        d| _        | j                   j                  | j
                  _        t        | j                  |d|z  «       t        | j                  «      D ]  \  }}t        ||d||fz  «       Œ y )Nz%s/wtez%s/wpeFz%s/ln_fz%s/h%d)Ú
embeddingsÚweightÚposition_encodingsÚ	encodingsÚscale_embeddingsÚ
projectionÚset_layer_normÚ
layer_normÚ	enumerateÚlayerÚ	set_layer)r>   r7   ÚscopeÚiÚ
layer_specs        r   r.   r.   4   s”   € Ø$ X°Ñ%5Ñ6€D‡O�OÔØ(/°¸5Ñ0@Ñ(A€D×ÑÔ%Ø!€DÔØ!Ÿ_™_×3Ñ3€D‡O�OÔÜ�4—?‘? G¨Y¸Ñ->Ô?Ü" 4§:¡:Ó.ò >‰ˆˆ:Ü�*˜g x°5¸!°*Ñ'<Õ=ñ>r   c                 ó8   — |d|z     | _         |d|z     | _        y )Nz%s/gú%s/b)ÚgammaÚbeta©r>   r7   rQ   s      r   rL   rL   >   s"   € Ø˜ %™Ñ(€D„JØ˜ ™Ñ'€D…Ir   c                 óp   — |d|z     j                  «       j                  «       | _        |d|z     | _        y )Nz%s/wrU   )ÚsqueezeÚ	transposerG   ÚbiasrX   s      r   Ú
set_linearr]   C   s4   € Ø˜& 5™.Ñ)×1Ñ1Ó3×=Ñ=Ó?€D„KØ˜ ™Ñ'€D…Ir   c                 óÀ  — t        | j                  j                  |d|z  «       t        | j                  j                  d   |d|z  «       t        | j                  j                  d   |d|z  «       t        | j
                  j                  |d|z  «       t        | j
                  j                  |d|z  «       t        | j
                  j                  |d|z  «       y )	Nz%s/ln_1r   z%s/attn/c_attnr   z%s/attn/c_projz%s/ln_2z%s/mlp/c_fcz%s/mlp/c_proj)rL   Úself_attentionrM   r]   ÚlinearÚffnÚlinear_0Úlinear_1rX   s      r   rP   rP   H   s¶   € Ü�4×&Ñ&×1Ñ1°7¸IÈÑ<MÔNÜˆt×"Ñ"×)Ñ)¨!Ñ,¨gÐ7GÈ%Ñ7OÔPÜˆt×"Ñ"×)Ñ)¨!Ñ,¨gÐ7GÈ%Ñ7OÔPÜ�4—8‘8×&Ñ&¨°¸UÑ1BÔCÜˆt�x‰x× Ñ  '¨=¸5Ñ+@ÔAÜˆt�x‰x× Ñ  '¨?¸UÑ+BÕCr   c                  ó
  — t        j                  t         j                  ¬«      } | j                  ddd¬«       t	        j
                  | «       | j                  «       }t        |j                  «      }|j                  |«       y )N)Úformatter_classz--model_dirTzPath to the model directory.)ÚrequiredÚhelp)
ÚargparseÚArgumentParserÚArgumentDefaultsHelpFormatterÚadd_argumentr   Údeclare_argumentsÚ
parse_argsr   r	   Úconvert_from_args)ÚparserÚargsÚ	converters      r   Úmainrr   Q   sr   € Ü×$Ñ$Ü ×>Ñ>ô€Fð ×ÑØ Ð+Ið ô ô ×Ñ Ô'Ø×ÑÓ€DÜ# D§N¡NÓ3€IØ×Ñ Õ%r   Ú__main__)rh   r&   r#   Ú ctranslate2.converters.converterr   Úctranslate2.specsr   r   r   r   r.   rL   r]   rP   rr   r@   r   r   r   ú<module>rv      sR   ðÛ Û Û 	å 6ß GÑ Gô(˜)ô (òV>ò(ò
(ò
Dò
&ð ˆzÒÙ…Fð r   