
    bCi.W                     J   S SK r S SKJrJr  S SKrS SKJr  SSKJ	r	J
r
Jr  SSKJr  SSKJr  SSKJr  \" 5       (       a  S SKr\" \5      rS	S
SS.SSS.S.\	S\
S   0S\
S   0S.r\" \S   R/                  5       5      r " S S\5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      r " S# S$\5      r  " S% S&\5      r! " S' S(\5      r" " S) S*\5      r#\\\\\\\\ \!\"\"\#S+.r$S, r%   S2S-\\&   S.\\'   S/\&4S0 jjr(S3S1 jr)g)4    N)
NamedTupleOptional)tqdm   )GGUF_CONFIG_MAPPINGGGUF_TOKENIZER_MAPPING_gguf_parse_value)is_torch_available)is_gguf_available)
get_loggerversiontensor_countkv_count)r   r   r   	file_typequantization_version)r   r   )GGUFgeneral	tokenizertokenizer_config)ignoreconfigr   r   r   c                   H    \ rS rSr% \R
                  \S'   \\S'   \\S'   Sr	g)
GGUFTensor7   weightsnamemetadata N)
__name__
__module____qualname____firstlineno__npndarray__annotations__strdict__static_attributes__r       b/home/james-whalen/.local/lib/python3.13/site-packages/transformers/modeling_gguf_pytorch_utils.pyr   r   7   s    ZZ
INr)   r   c                   $    \ rS rSrSS jrS rSrg)TensorProcessor=   Nc                 $    U=(       d    0 U l         g Nr   )selfr   s     r*   __init__TensorProcessor.__init__>   s    lr)   c                     [        X0 5      $ r/   r   r1   r   r   kwargss       r*   processTensorProcessor.processA   s    ',,r)   r0   r/   )r   r    r!   r"   r2   r8   r(   r   r)   r*   r,   r,   =   s    #-r)   r,   c            	          ^  \ rS rSrS
U 4S jjrS r S
S\R                  S\S\	\   S\R                  4S jjr
S	rU =r$ )LlamaTensorProcessorE   c                     > [         TU ]  US9  g Nr0   superr2   r1   r   	__class__s     r*   r2   LlamaTensorProcessor.__init__F       'r)   c                 &   SU;   d  SU;   az  U R                   R                  S5      nU R                   R                  S5      nS XE4;   a  [        X0 5      $ SU;   a  U R                  XU5      nOSU;   a  U R                  XU5      n[        X0 5      $ )Nz.attn_k.z.attn_q.num_attention_headsnum_key_value_heads)r   getr   _reverse_permute_weights)r1   r   r   r7   	num_headsnum_kv_headss         r*   r8   LlamaTensorProcessor.processI   s    t!3(=>I;;??+@AL	00!'44T!77IVt#77LY',,r)   r   n_headrK   returnc                     Ub  X#:w  a  UnUR                   S   U-  S-  nUR                  " X$S/UR                   SS  Q76 nUR                  SS5      R                  UR                   5      $ )Nr      r   )shapereshapeswapaxes)r1   r   rM   rK   dimws         r*   rI   -LlamaTensorProcessor._reverse_permute_weightsV   sl    
 #(>!FmmA&(A-OOF?W]]12->?zz!Q''66r)   r   r/   )r   r    r!   r"   r2   r8   r#   r$   intr   rI   r(   __classcell__rB   s   @r*   r;   r;   E   sJ    (- OS
7zz
7+.
7>Fsm
7	
7 
7r)   r;   c                   j   ^  \ rS rSrS
U 4S jjrS rS\R                  S\\	\4   S\	S\4S jr
S	rU =r$ )Qwen2MoeTensorProcessorc   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2    Qwen2MoeTensorProcessor.__init__d   rD   r)   c                     SU;   aH  UR                  S5      nUR                  S5      nU(       a  U R                  XX$5        [        US 0 5      $ SU;   a  [        R                  " USS9n[        X0 5      $ )N_exptensor_key_mappingparsed_parametersffn_gate_inp_shexpr   axis)rH   _split_moe_expert_tensorr   r#   expand_dims)r1   r   r   r7   ra   rb   s         r*   r8   Qwen2MoeTensorProcessor.processg   sr    T>!',@!A &

+> ?!--g$c!'4444' nnW15G',,r)   r   rb   r   ra   c                     XC   nU R                   R                  SS5      n[        SU5       HM  nUR                  SSU S35      nX   n[        R
                  " [        R                  " U5      5      US   U'   MO     g )Nnum_experts<   r   mlp.experts..tensors)r   rH   rangereplacetorch
from_numpyr#   copy)	r1   r   rb   r   ra   	w_counteri	temp_name
exp_weights	            r*   rf   0Qwen2MoeTensorProcessor._split_moe_expert_tensort   su    
 "'KKOOM26	q)$A^|A3a5HII J6;6F6FrwwzGZ6[i(3 %r)   r   r/   )r   r    r!   r"   r2   r8   r#   r$   r'   r&   rf   r(   rX   rY   s   @r*   r[   r[   c   sI    (-
\zz
\6:39o
\MP
\fj
\ 
\r)   r[   c                      ^  \ rS rSrS
U 4S jjrS rS\R                  S\S\4S jr	S\R                  S\S\4S jr
S	rU =r$ )BloomTensorProcessor   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2   BloomTensorProcessor.__init__   rD   r)   c                     SU;   aI  U R                   S   nU R                   S   nSU;   a  U R                  XU5      nOU R                  XU5      n[        X0 5      $ )Nattn_qkvrM   hidden_sizeweight)r   _reverse_reshape_weights_reverse_reshape_biasr   )r1   r   r   r7   rJ   n_embeds         r*   r8   BloomTensorProcessor.process   s_    H-Ikk-0G477GT44WQ',,r)   r   rM   r   c                    [         R                  " USSS9u  pEnUR                  X#U-  U5      nUR                  X#U-  U5      nUR                  X#U-  U5      n[         R                  " XEU/SS9nUR                  US-  X2-  -  U5      $ )N   r   rd   r   )r#   array_splitrR   stack)r1   r   rM   r   qkvqkv_weightss           r*   r   -BloomTensorProcessor._reverse_reshape_weights   s     ..!!4aIIf/9IIf/9IIf/9hhayq1""6A:1B#CWMMr)   c                     [         R                  " US5      u  pEnUR                  X#U-  5      nUR                  X#U-  5      nUR                  X#U-  5      n[         R                  " XEU/SS9R	                  5       nU$ )Nr   r   rd   )r#   r   rR   r   flatten)r1   r   rM   r   q_biask_biasv_biasqkv_biass           r*   r   *BloomTensorProcessor._reverse_reshape_bias   su     "$!;6(9:6(9:6(9:88VV41=EEGr)   r   r/   )r   r    r!   r"   r2   r8   r#   r$   rW   r   r   r(   rX   rY   s   @r*   rz   rz      sS    (-
N

 
NC 
NRU 
N
RZZ 
 
s 
 
r)   rz   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )T5TensorProcessor   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2   T5TensorProcessor.__init__   rD   r)   c                     S nUR                  S5       H%  nUR                  5       (       d  M  [        U5      n  O   [        XSU05      $ )Nrm   bid)splitisdigitrW   r   )r1   r   r   r7   r   chunks         r*   r8   T5TensorProcessor.process   sC    ZZ_E}}%j % '%66r)   r   r/   r   r    r!   r"   r2   r8   r(   rX   rY   s   @r*   r   r      s    (7 7r)   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )GPT2TensorProcessor   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2   GPT2TensorProcessor.__init__   rD   r)   c                     SU;   d  SU;   d  SU;   d  SU;   a  UR                   nUS:X  aF  SnUR                  S0 5      n[        R                  " [        R
                  " U5      5      US   U'   S n[        X0 5      $ )	Nzattn_qkv.weightzffn_down.weightzffn_up.weightzattn_output.weightoutput.weightzlm_head.weightrb   rn   )TrH   rq   rr   r#   rs   r   )r1   r   r   r7   rb   s        r*   r8   GPT2TensorProcessor.process   s     % D($&#t+iiG ?" $D &

+> C161A1A"'''BR1Si(.D',,r)   r   r/   r   rY   s   @r*   r   r      s    (- -r)   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )MambaTensorProcessor   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2   MambaTensorProcessor.__init__   rD   r)   c                     SU;   a  [         R                  " USS9nSU;   a  [         R                  " U* 5      n[        X0 5      $ )Nzssm_conv1d.weightr   rd   ssm_a)r#   rg   logr   r6   s       r*   r8   MambaTensorProcessor.process   sB    $& nnW15Gd? ffgX&G',,r)   r   r/   r   rY   s   @r*   r   r      s    (	- 	-r)   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )NemotronTensorProcessor   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2    NemotronTensorProcessor.__init__   rD   r)   c                 0    SU;   a  US-
  n[        X0 5      $ Nznorm.weightr   r5   r6   s       r*   r8   NemotronTensorProcessor.process        D kG',,r)   r   r/   r   rY   s   @r*   r   r      s    (- -r)   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Gemma2TensorProcessor   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2   Gemma2TensorProcessor.__init__   rD   r)   c                 0    SU;   a  US-
  n[        X0 5      $ r   r5   r6   s       r*   r8   Gemma2TensorProcessor.process   r   r)   r   r/   r   rY   s   @r*   r   r      s    (
- -r)   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Lfm2TensorProcessor   c                     > [         TU ]  US9  g r>   r?   rA   s     r*   r2   Lfm2TensorProcessor.__init__   rD   r)   c                 P    SU;   a  [         R                  " USS9n[        X0 5      $ )Nzshortconv.conv.weightr   rd   )r#   rg   r   r6   s       r*   r8   Lfm2TensorProcessor.process   s'    "d*nnW15G',,r)   r   r/   r   rY   s   @r*   r   r      s    (- -r)   r   )llamaqwen2moeqwen3moebloomt5	t5encodergpt2mambanemotrongemma2gemma3lfm2c                     XR                   ;  a  / $ U R                   U   nUR                   Vs/ s H&  n[        UR                  U   UR                  5      PM(     sn$ s  snf r/   )fieldsdatar	   partstypes)readerfieldvalue_data_indexs       r*   
read_fieldr     sT    MM!	MM% EX]XbXbcXbekk+6DXbcccs   -A
model_type
num_layers	qual_namec           	         [        5       (       a  [        5       (       a	  SSKJnJn  O [
        R                  S5        [        S5      eUc  U R                  R                  OUnUc  U R                  R                  OUnUS:X  a  SnO#US:X  a  S	nOUS
:X  a  SnOUS:X  a  SnOUS:X  a  SnSnUR                  5        H  u  pxX:X  d  M  Un  O   Uc  [        SU S35      eU" Xb5      n	0 n
U R                  5       nU H  nUS;   a  SU;   a  [        R                  " SSU5      nUSpUR!                  S5      (       d  UR!                  S5      (       a  UR#                  SS5      u  pSU-   nU	R%                  U5      nUc  M  X<-   XU-   '   M     U R'                  5       =n(       a[  U HU  u  nn[)        UXU U S3S9nUR                  5        VVs0 s H  u  nnUU
;  d  M  UU_M     nnnU
R+                  U5        MW     U
$ s  snnf )a=  
GGUF uses this naming convention for their tensors from HF checkpoint:
`blk.N.BB.weight` and `blk.N.BB.bias`
where N signifies the block number of a layer, and BB signifies the
attention/mlp layer components.
See "Standardized tensor names" in
https://github.com/ggerganov/ggml/blob/master/docs/gguf.md for details.
r   )MODEL_ARCH_NAMESget_tensor_name_mapLoading a GGUF checkpoint in PyTorch, requires both PyTorch and GGUF>=0.10.0 to be installed. Please see https://pytorch.org/ and https://github.com/ggerganov/llama.cpp/tree/master/gguf-py for installation instructions.KPlease install torch and gguf>=0.10.0 to load a GGUF checkpoint in PyTorch.Ncoherez	command-r	qwen2_moer   	qwen3_moer   gemma3_textr   umt5r   zUnknown gguf model_type: z in gguf-py. This might because you're using an outdated version of gguf-py package, you can install `gguf` package from source refer to https://github.com/ggerganov/llama.cpp/tree/master/gguf-py#development)r   r   rl   zmlp.experts.\d+. z.weightz.biasrm   r   )r   )r   r
   ggufr   r   loggererrorImportErrorr   r   num_hidden_layersitemsNotImplementedError
state_dictresubendswithrsplitget_namenamed_childrenget_gguf_hf_weights_mapupdate)hf_modelr   r   r   r   r   archkeyr   name_mapgguf_to_hf_name_mapr   hf_namer   suffix	gguf_namer   childsub_mapr   r   s                        r*   r   r     s>    133>>A	
 ghh/9/A++zJ6@6H22jJX 
	{	"
	{	"
	}	$
	v	
D&,,.
D / |!'
| 4U U
 	
 #44H $$&J11n6Off0.'JGfI&&'*:*:7*C*C">>#q1LD6\F%%d+	2;2E./ $ "0022~2)KD%-eZZcYdeidjjkWlmG(/X11DW;Wtq!tGX&&w/	 *  Ys   H!Hc                 ,
  ^&^' [        5       (       a  [        5       (       a	  SSKJnJn  O [
        R                  S5        [        S5      eU" U 5      nUR                  n[        UR                  5       5      n[         Vs0 s H  o0 _M     n	n[        US5      S   n
[        US5      nSnSU
;   a	  S	U;   a  S	nOXS
U
;   d  SU
;   aJ  SU	S   S'   U(       a)  SUS   R                  5       ;   a  SnSU
;   a	  S/U	S   S'   OSU
;   a	  S/U	S   S'   S
nOU
nSU
;   a  SnOSU
;   a  SnSU
;   aX  1 Skm&Sm'[        U&4S jUR                   5       5      n[        U'4S jUR                   5       5      nXS   S'   U(       + U	S   S'   U
[         ;  a  U[         ;  a  [#        SU
 S35      eS S!/n[%        S" UR                   5       5      =(       d    X;   U	S   S#'   UR                  R'                  5        GHH  u  nnUR)                  X5      nUR+                  S$5      nUS   nS$R-                  US%S 5      nUR.                   Vs/ s H&  n[1        UR2                  U   UR4                  5      PM(     nn[7        U5      S%:X  a  US   n[9        U[:        5      (       a  U
U;   a  UR)                  X5      n[        R'                  5        HM  u  nnUU;   d  M  UUU   ;   d  M  UU   U   nUS&:X  a  M)  Ub  UU	U   U'   UU;   d  M<  UR=                  U5        MO     UU;   d  GM-  [
        R?                  S'U S(U 35        GMK     U	S   S)   S*:X  a  S+U	S   S)'   U	S   S)   S,:X  aP  U	S   S-   n[A        U5      U	S   S-'   S.U	S   S/'   [C        U5       VVs/ s H  u  nnUS:  d  M  UPM     snnU	S   S0'   S1U	S   ;  a5  U	S2   nS3U;   a  [7        US3   5      U	S   S1'   O[
        RE                  S45        U(       a  0 U	S5'   [G        U5      nU	RI                  S0 5      n[J        RI                  U
[L        5      n U " US69n![O        UR                  S7S89 H  n"U"RP                  n#U" U"R.                  U"RR                  5      n$U!RU                  U$U#UU	S99n%U%RV                  n$U%RP                  n#U#U;  a  M^  UU#   n#[X        RZ                  " [\        R^                  " U$5      5      U	S5   U#'   M     [7        U5      S:  a  [
        R?                  S:U 35        U	$ s  snf s  snf s  snnf );a  
Load a GGUF file and return a dictionary of parsed parameters containing tensors, the parsed
tokenizer and config attributes.

Args:
    gguf_checkpoint_path (`str`):
        The path the to GGUF file to load
    return_tensors (`bool`, defaults to `False`):
        Whether to read the tensors from the file and return them. Not doing so is faster
        and only loads the metadata in memory.
r   )
GGUFReader
dequantizer   r   zgeneral.architecturezgeneral.nameNr   mistralr   r   Tr   is_gated_actr   UMT5EncoderModelarchitecturesT5EncoderModelr   r   r   r   stablelm>   attn_k.biasattn_q.biasattn_v.biasffn_normc              3   T   >#    U  H  nT  H  o"UR                   ;   v   M     M     g 7fr/   r   ).0tensor	bias_nameattn_bias_names      r*   	<genexpr>'load_gguf_checkpoint.<locals>.<genexpr>  s$     mnF^lQZFKK/^l/ns   %(c              3   B   >#    U  H  nTUR                   ;   v   M     g 7fr/   r  )r  r  ffn_norm_names     r*   r  r    s     #^~VMV[[$@~s   use_qkv_biasuse_parallel_residualzGGUF model with architecture z is not supported yet.falconr   c              3   @   #    U  H  nS UR                   :g  v   M     g7f)r   Nr  )r  r  s     r*   r  r    s     HvOv{{*s   tie_word_embeddingsrm   r   z1Some keys were not parsed and added into account z | r   r   r   r   rG   Fblock_auto_adjust_ff_dimfull_attn_idxs
vocab_sizer   tokenszCan't find a way to retrieve missing config vocab_size from tokenizer parameters. This will use default value from model config class and cause unexpected behavior.rn   r0   z,Converting and de-quantizing GGUF tensors...)desc)r   r   ra   rb   z0Some keys of the GGUF file were not considered: )0r   r
   r   r
  r  r   r   r   r   listkeysGGUF_TO_TRANSFORMERS_MAPPINGr   loweranyrn   GGUF_SUPPORTED_ARCHITECTURES
ValueErrorallr   rp   r   joinr   r	   r   r   len
isinstancer&   removeinfomax	enumeratewarningr   rH   TENSOR_PROCESSORSr,   r   r   tensor_typer8   r   rq   rr   r#   rs   )(gguf_checkpoint_pathreturn_tensorsmodel_to_loadr
  r  r   r   reader_keysr   rb   architecture
model_nameupdated_architecturer   r!  
exceptionsgguf_keyr   r   prefix
config_keyr   r   	parameterparameter_renamesrenamed_config_keygguf_num_key_value_headsru   rK   tokenizer_parametersra   r   ProcessorClass	processorr  r   r   resultr  r  s(                                         @@r*   load_gguf_checkpointrP  k  s    133//A	
 ghh,-F]]Fv{{}%K(DE(D1B(DEf&<=a@LFN3J ,9
#:( 
	!<6:(#N3&JqM$7$7$99#) l*@R?S!(+O<l*@P?Q!(+O<#' +\!*	|	#*
 \!F"mfnnmm ##^v~~#^ ^6>(#N3CX?X(#$;<77<PXt<t8F\]^^ G$JHHHfLLf h 56
 "==..0%##LGs#qXXeABi(
]b]g]gh]gk"5;;{#;U[[I]ghu:?!HEeS!!le&;MM,EE,H,N,N,P(I(**z=Nv=V/V%6v%>z%J"%+%1GL%i01CD{*&&x0 -Q {"KKKH:UXY^X_`a7 1< "<0H<4A(#L1"<0F:#4X#>?T#U =@AY=Z(#$9:BG(#$>?
 &//G%H9
%H/!\L[\L\A%H9
(#$45 ,X660=++8;<PQY<Z8[h'5NNe
 '))$4]C"&&x4*..|_M"&1	6>>0^_F;;D f.@.@AG&&#5"3	 ' F nnG;;D--%d+D161A1A"'''BR1Si(.' `* ;!F{mTUa Fv iH9
s   ?T>-T
TT)NNr   )FN)*r   typingr   r   numpyr#   	tqdm.autor   integrationsr   r   r	   utilsr
   utils.import_utilsr   utils.loggingr   rq   r   r   r-  r+  r,  r0  r   r,   r;   r[   rz   r   r   r   r   r   r   r;  r   r&   rW   r   rP  r   r)   r*   <module>rX     s    
 '   
 & 1 % 	H	 !*"

 "-F\] "5kBC$&<=O&PQ    $$@$J$O$O$QR  - -7? 7<\o \<$? $N
7 
7-/ -4-? - -o -	-O 	--/ - "''!
"!'##  d !% $	OO O 	Odir)   