
    iV?                         S SK r S SKJr  S SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  SS	KJr   " S
 S\5      rg)    N)Optional)get_checkpoint_dtypeget_default_model_resource_dir)construct_transformer)	ModelArgs)	LlmConfig)TorchAOBaseTensor   )EagerModelBasec                   t    \ rS rSrSS\\   4S jjrS\R                  R                  4S jr
S rS rS	 rS
rg)Llama2Model   N
llm_configc                    U(       a  UO	[        5       U l        U R                  R                  R                  nU R                  R                  R                  nU R                  R                  R
                  nU R                  R                  R                  U l        U R                  R                  R                  U l	        U R                  R                  R                  U l        U R                  R                  R                  U l        U R                  R                  R                  U l        U R                  R                  R                  U l        U R                  R"                  R$                  U l        U R                  R"                  R(                  U l        U R                  R                  R,                  U l        U R*                  U R&                  :  d"   SU R*                   SU R&                   S35       eSn0 nU(       a  [.        R0                  " X%SS9nSU;   a  US   n0 nU(       a9  [3        US5       n[4        R6                  " UR9                  5       5      nS S S 5        0 n	U(       Ga  UR:                  (       ac  UR<                  S	:X  aS  [3        UR:                  S5       n[4        R0                  " U5      n
S S S 5        W
S   Ul        U
S
   Ul        U
S   Ul         URB                  nURE                  S5      (       a-  [.        R0                  " XSS9n	S	SK#J$n  URK                  U	5      n	O3URE                  S5      (       a  S	SK&J'n  U" U5      n	O[Q        SU 35      eURS                  U	5        S nU R                   bd  [3        U R                   S5       n[4        R0                  " U5      nS S S 5        URU                  5        VVs0 s H  u  nn[W        U5      U_M     nnnS nU R                  bd  [3        U R                  S5       n[4        R0                  " U5      nS S S 5        URU                  5        VVs0 s H  u  nn[W        U5      U_M     nnn[Y        S7U R&                  U R*                  SU R                  U R                  U R                  UUU R                  U(       a  UR<                  OS U(       a  UR>                  OS U(       a  UR@                  OS S.UD6nURZ                  (       a?  U R                  R                  R\                  R^                  nUS;  d   eUS;  a  SUl0        U R,                  (       aj  [c        S5        [c        S5        URU                  5        H5  u  nn[c        U SURe                  5        SURg                  5        35        M7     [c        S5        [.        Rh                  " S5         [k        U5      U l6        U(       a  [o        U5      U Rl                  l8        O[.        Rr                  U Rl                  l8        S S S 5        S[u        U5      ;   a:  [c        S5        SSK;J<n  U" U Rl                  5      nUR{                  5       U l6        GOaS[u        U5      ;   a8  [c        S 5        S	S!K>J?n  U" 5       R                  U Rl                  5      U l6        GOU R                  R                  R                  (       a,  [c        S"5        U R                  UU5        SS#KDJEn  U" U5        OU R                  R                  R                  (       a  [c        S$5        U R                  UU5        U R                  R                  R                  (       aT  U R                  R                  R                  nUR                  S%   U:X  d   eSS&KIJJn  U" U Rl                  UU5      U l6        SS#KDJEn  U" U5        U R                  R                  R                  (       a  SS'KLJMn  U R                  R                  R                  R                  S(5      n[        U5      S):X  d   e[W        US	   5      n[W        US   5      n[W        US   5      n U R                  R"                  R(                  UU-   :X  d   eU" U Rl                  UUUU S*9U l6        S+u  n!n"U(       a  U Rl                  R                  US,SS-9u  n!n"U Rl                  R                  5        H!  n#[        U#[        5      (       d  M  S,U#lT        M#     U!(       a@  U! V$s/ s H  n$U$RE                  S.5      (       d  M  U$PM     n%n$U%(       a  [Q        S/U% S035      eU"(       a  U R,                  (       a  [c        S1U" 35        OB[c        S25        U Rl                  R                  SS39  S4 n&U Rl                  R                  U&5        Ub  SS5KWJXn'  U'" U Rl                  U5      U l6        Ub  SS6KWJYn(  U(" U Rl                  U5      U l6        g g ! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       GN{= fs  snnf ! , (       d  f       GN = fs  snnf ! , (       d  f       GNA= fs  sn$f )8Nzmax_context_len(z) must be >= max_seq_len()cpuT)map_locationmmapmodelrr   
lora_alphatarget_modulesz.pt)convert_weightsz.safetensors) load_and_convert_unsloth_to_metaz'Unsupported adapter checkpoint format:    )max_seq_lenmax_context_lenmax_batch_sizeuse_kv_cacheuse_sdpa_with_kv_cache_opgenerate_full_logitsinput_prune_mapoutput_prune_mapenable_dynamic_shaper   r   r   )llama2stories110m)llama3llama3_1    z&============= weights ================z,{key} : {weights.numel()} : {weights.size()}z : z'============= /weights ================metaint8z$Using int8 weight-only quantization!r
   )WeightOnlyInt8QuantHandler8da4wz;Using int4 weight and int8 dynamic activation quantization!)Int8DynActInt4WeightQuantizerzUsing SPIN quantization.))sanitize_checkpoint_from_pre_quantizationzUsing QAT quantization.rank),transform_linear_for_lora_after_quantization)enable_attention_sink,   )moduleparams	sink_sizewindow_sizeeviction_batch_sizeNNF)strictassignz.weightzYThe provided checkpoint is missing the following weights that are expected by the model: z3. Please fix the fqn's in your checkpoint to match.zUnexpected keys: z6Checkpoint not provided, using default initialization.)devicec                 `    [        U SS 5      n[        U5      (       a  U R                  5         g g )Nreset_parameters)getattrcallabler?   )mr?   s     e/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/examples/models/llama/model.pyweight_reset*Llama2Model.__init__.<locals>.weight_reset   s/    #*1.@$#G ,--&&( .    )prune_input_vocab)prune_output_vocab )Zr   r   base
checkpointr6   lora_configr   r   use_sdpa_with_kv_cacher    debugr!   r$   r"   input_prune_map_pathr#   output_prune_map_pathexportmax_seq_lengthr   max_context_lengthr   verbosetorchloadopenjsonloadsreadadapter_config	lora_rankr   r   adapter_checkpointendswithtorchtune.modelsr   tune_to_meta0executorch.examples.models.llama.convert_weightsr   
ValueErrorupdateitemsintr   use_scaled_ropemodel_classvaluerope_scale_factorprintnumelsizer=   r   model_r   checkpoint_dtypefloat32strsource_transformation.quantizer,   convert_for_runtimetorchao.quantization.quant_apir.   _convert_for_runtimequantizationuse_spin_quant_transform_for_pre_quantization&source_transformation.pre_quantizationr/   use_qatuse_lora	lora_argssource_transformation.lorar1   use_attention_sink$source_transformation.attention_sinkr2   splitlenload_state_dict
parameters
isinstancer	   requires_gradto_emptyapply!source_transformation.prune_vocabrG   rH   ))selfr   checkpoint_pathparams_pathrL   r=   rK   r6   fr]   cfgadapter_checkpoint_pathr   r   r#   kvr"   
model_args
model_namekeyweightsr,   simple_quantizerr.   r/   r\   r1   r2   attention_sink_paramsr7   r8   r9   missing
unexpectedparamfqnmissing_weightsrD   rG   rH   s)                                            rC   __init__Llama2Model.__init__   s   (2*	//..99oo**11 oo**66 OO11>>)-)>)>)U)U&$(OO$9$9$N$N!$(OO$9$9$N$N!$(OO$9$9$I$I!%)__%:%:%K%K"??11@@#55HH,,44   D$4$44	ad2233LTM]M]L^^_`	a4
 
OtTJj #G,J k3'1AFFH- (  ))k.C.Cq.H+44c:a))A,C ;(+C%),\):&-01A-B*&1&D&D#&//66%*ZZ+t&" =%4%A%ABT%U"(11.AA &F+&" !=>U=VW  01%%1d00#6!#'99Q<  7 9I8N8N8PQ8Pfq!A	8PQ$$0d//5"&))A, 6 8G7L7L7NO7NVas1vqy7NOO ) !
(( 00**&*&D&D!%!:!:+-!%!:!:'2k##1<{--$9D;55$!
 !

  %%--99??J%>>>> !77/1
,<<:;@A * 0 0 2WS 1W\\^4DEF !3;< \\&!/
;DK/CJ/O,/4}}, " S))89S9$++F*>>@DKO,,OPT79NNDK __))88,-00ZH 6jA__))11+,00ZH##,, OO0099	!++F3y@@@ KKK 6jA??  33S$(OO$9$9$L$L$R$RSV$W!,-2221!45I3A67K"%&;A&>"???))<<	K@WWWW/{{!#'$7DK ) "&++"="= #> #GZ
 //1e%677*/E' 2 29"U'3S\\)=T3'"U"$s  uD  tE  Ex  y  <<-j\:;JK KK   .)
 KKl+ &L+DKKIDK 'M,T[[:JKDK (U (' ;:< 76  R 65 PH "!v #VsU   %h0h%h0ii
iAi #i2i2
h
h-0
h?
i 
i/returnc                     U R                   $ N)rm   r   s    rC   get_eager_modelLlama2Model.get_eager_model  s    {{rF   c                     U R                   (       a  U R                  5       $ [        R                  " / SQ/[        R                  S94$ )N)r   r
   r4   dtype)r   get_example_inputs_kvcache_sdparU   tensorlongr   s    rC   get_example_inputsLlama2Model.get_example_inputs  s=    7799 Kuzz rF   c                 R   U R                   (       aL  [        R                  " / SQ/[        R                  S9S[        R                  " S/[        R                  S904$ [        R                  " S//[        R                  S9S[        R                  " S/[        R                  S904$ )N)r
   r4      r   	input_posr   r   )r$   rU   r   r   r   s    rC   r   +Llama2Model.get_example_inputs_kvcache_sdpa  s    $$i[

;ellA3ejjAB  SE  5::"		 	rF   c                    U R                   R                  R                  (       d   S5       eU R                   R                  R                  R                  S;   d3   SU R                   R                  R                  R                   S35       eU R                   R                  R                  (       d   S5       eU R                   R
                  R                  (       d   S5       eSSKJn  U R                   R                  R                  UR                  S	   :X  d   e[        R                  [        R                  [        R                  S
.nU R                   R                  R                  R                  S:X  aG  SSKJn  U" U R                  UX@R                   R
                  R                  R                     S9U l        U" U R                  UU R                   R                  R                  X@R                   R
                  R                  R                     5      U l        Su  pgU R                   R                  R                   (       a  U R                   R                  R                   R#                  S5      u  nnSSKJn  US:X  d  US:X  d  US:X  a  S nO['        U5      nU" U R                  UX@R                   R
                  R                  R                     ['        U5      U5      U l        g g )Nzpreq_mode must be specified)r-   8da4w_output_8da8wzQuantization mode z" is not compatible with SpinQuant.z!preq_group_size must be specifiedz dtype_override must be specifiedr   )%transform_linear_for_pre_quantization
group_size)fp32fp16bf16r   ),transform_output_linear_for_pre_quantization)r5   rK   r   r:   r3   )(transform_embedding_for_pre_quantizationnoneNone0)r   rJ   	preq_moderh   preq_group_sizer   dtype_overriderx   r   quantization_argsrU   ro   float16bfloat16r   rm   preq_embedding_quantizer   r   re   )	r   rK   r   r   mappingr   embedding_bit_widthembedding_group_sizer   s	            rC   rw   +Llama2Model._transform_for_pre_quantization0  so   ##--L/LL-##--33 8
 
 	i   4 4 > > D DEEgh	i 
 ##33X5XX3$$33W5WW3	

 OO  00++L9:	
:
 MMMMNN
 ??))//3GG G{{%oo33BBHHIDK <KKOO  00OO))88>>?	
 5?1??77 $$<<BB3G#$
 %.'61'3.'+$'*+?'@$B--<<BBC'($DK% 8rF   )r$   r!   rO   r   r   r   rm   rP   r   r    rT   r   )__name__
__module____qualname____firstlineno__r   r   r   rU   nnModuler   r   r   rw   __static_attributes__rI   rF   rC   r   r      s<    rL8I#6 rLh $DrF   r   )rX   typingr   rU   %executorch.examples.models.checkpointr   r   2executorch.examples.models.llama.llama_transformerr   +executorch.examples.models.llama.model_argsr   1executorch.extension.llm.export.config.llm_configr   torchao.utilsr	   
model_baser   r   rI   rF   rC   <module>r      s5      
 U A G + 'Y. YrF   