
    i	                     z    S SK r S SKJrJrJr  S\\\4   S\\\4   S\\\4   4S jrS\\\4   S\\\4   4S jrg)	    N)AnyDictMapping
state_dictkey_mapreturnc                 ~   ^ 0 nS[         S[         4U4S jjnU R                  5        H  nU" U5      nX   X%'   M     U$ )a  Convert a model state dictionary to fairseq2.

:param state_dict:
    The original model state dictionary.
:param key_map:
    A map of regex patterns to fairseq2 model keys.

:returns:
    A converted model state dictionary that is compatible with fairseq2.
old_keyr   c                 z   > TR                  5        H%  u  p[        R                  " XU 5      =o0:w  d  M#  Us  $    U $ )N)itemsresub)r
   old_patternreplacementnew_keyr   s       h/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/examples/models/llama/fairseq2.pyget_new_key-convert_model_state_dict.<locals>.get_new_key   s8    (/$K66+GDDP )8     )strkeys)r   r   new_state_dictr   r
   r   s    `    r   convert_model_state_dictr      sM     NS S  ??$g&","5 %
 r   
checkpointc                 6    SSSSSSSSS	S
SSS.n[        X5      $ )z<Convert a fairseq2 LLaMA checkpoint to the reference format.zlayers.\1.attention.wq.zlayers.\1.attention.wk.zlayers.\1.attention.wv.zlayers.\1.attention.wo.zlayers.\1.attention_norm.zlayers.\1.feed_forward.w1.zlayers.\1.feed_forward.w2.zlayers.\1.feed_forward.w3.zlayers.\1.ffn_norm.znorm.ztok_embeddings.zoutput.)z)decoder.layers.([0-9]+).self_attn.q_proj.z)decoder.layers.([0-9]+).self_attn.k_proj.z)decoder.layers.([0-9]+).self_attn.v_proj.z.decoder.layers.([0-9]+).self_attn.output_proj.z-decoder.layers.([0-9]+).self_attn_layer_norm.z&decoder.layers.([0-9]+).ffn.gate_proj.z(decoder.layers.([0-9]+).ffn.output_proj.z'decoder.layers.([0-9]+).ffn.inner_proj.z'decoder.layers.([0-9]+).ffn_layer_norm.zdecoder.layer_norm.zdecoder_frontend.embed.zfinal_proj.)r   )r   r   s     r   convert_to_llama_checkpointr   *   s=     7Q6P6P;U:V3P5R4Q4J ($6"G" $J88r   )r   typingr   r   r   r   r   r    r   r   <module>r      si    
 % %S#X)0c):	#s(^>9DcN 9tCH~ 9r   