
    #;7j                      U d dl mZ d dlZd dlZ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
 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mZmZmZ d dlmZ d dlmZ d dlZd dl Z erd d	l m!Z! d
ej"        vr:ej#        $                    d e% ee&          j'        j'        dz                       d dl(Z(d dl)m*Z*m+Z+ 	 d dl,m-Z- d dl.m/Z0m1Z2 d dl3m4Z4 d dl5m6Z6 dZ7dZ8n(# e9$ r  dZ0dZ2dZ7dZ-de:d<   dZ4de:d<   dZ6de:d<   dZ8Y nw xY w ej;        d          Z< edd          Z= G d  d!e
          Z> G d" d#e
          Z? G d$ d%          Z@ G d& d'e@          ZA G d( d)e@          ZB G d* d+e(jC                  ZDd2d1ZEdS )3    )annotationsN)IntEnum)Path)sha256)
TYPE_CHECKINGAnyCallableContextManagerIterableIteratorLiteralSequenceTypeVarcast)chain)
AutoConfig)TensorNO_LOCAL_GGUF   zgguf-py)MistralTokenizerTypeMistralVocab)TokenizerVersion)DATASET_MEANDATASET_STD)
Tekkenizer)SentencePieceTokenizerT )g3<4'?gwgM?gy{ ?)gB91?gwt.?g	U?Fr   r   r   r   z}Mistral format requires `mistral-common` to be installed. Please run `pip install mistral-common[image,audio]` to install it.z
hf-to-ggufAnyModeltype[ModelBase])boundc                  &    e Zd ZdZdZdZdZdZdZdS )SentencePieceTokenTypesr                  N)	__name__
__module____qualname__NORMALUNKNOWNCONTROLUSER_DEFINEDUNUSEDBYTE     5/home/rurouni/src/llama.cpp-master/conversion/base.pyr"   r"   =   s,        FGGLFDDDr2   r"   c                      e Zd ZdZdZdS )	ModelTyper   r#   N)r(   r)   r*   TEXTMMPROJr1   r2   r3   r5   r5   F   s        DFFFr2   r5   c                     e Zd ZU ej        i ej        i iZded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d ed!<   d"ed#<   d$Zded%<   d$Z	ded&<   d$Z
ded'<   d$Zded(<   d$Zded)<   d$d$d$d*d*d+d+d$d$d*d*d$d$d*d$d$d,d}d4Zed~d9            Zddd>Zddd?ZeddB            ZddDZddGZdH ZeddL            ZddNZdddUZdddWZddd[Zd\ Zdd_ZddcZdddZeddg            Z ddjZ!dk Z"dl Z#dm Z$dn Z%ddpZ&dq Z'dr Z(eddt            Z)eddu            Z*eddx            Z+edy             Z,eej        fdd|            Z-d*S )	ModelBasez+dict[ModelType, dict[str, type[ModelBase]]]_model_classesr   	dir_modelgguf.LlamaFileTypeftype	fname_outboolis_big_endianzgguf.GGUFEndian	endianessuse_temp_filelazydry_rundict[str, Any]hparamsdict[str, Callable[[], Tensor]]model_tensorszgguf.GGUFWritergguf_writer
str | None
model_namePath | Nonemetadata_overridezgguf.Metadatametadatadir_model_cardremote_hf_model_idtarget_model_dirzgguf.MODEL_ARCH
model_archintblock_countzgguf.TensorNameMap
tensor_mapFis_mistral_format'disable_mistral_community_chat_template#sentence_transformers_dense_modulesmtp_onlyno_mtpNr   )r@   rB   eagerrM   rK   split_max_tensorssplit_max_sizerD   small_first_shardrF   rP   rW   rX   rQ   fuse_gate_up_exps	fp8_as_q8r[   r\   r]   r^   dict[str, Any] | Noner_   r`   c          
        t          |           t          u s,t          |           t          u st          |           t          u r$t	          t          |           j        d          | j        rt          st          t                    || _
        || _        || _        || _        |rt          j        j        nt          j        j        | _        || _        | p|d u| _        || _        || _        || _        || _        || _        i | _        i | _        |%t                              | j
        | j                  n|| _        |                     |          | _        || _         || _!        || _"        d| _#        d| _$        || _%        tM                      | _'        | j        t          j(        j)        k    r| *                                D ]\  }}|+                                dk     r|j,        tZ          j.        k    r2t          j(        j/        | _        t`          1                    d            nx|j,        tZ          j2        k    r2t          j(        j3        | _        t`          1                    d            n1t          j(        j3        | _        t`          1                    d           t          j4        d t          j5        | j6                 | j        | j        |	|
||          | _7        || _8        d S )	Nz$ should not be directly instantiated)rP   Fr#   zAheuristics detected bfloat16 tensor dtype, setting --outtype bf16z?heuristics detected float16 tensor dtype, setting --outtype f16zEheuristics unable to detect tensor dtype, defaulting to --outtype f16)patharchrA   rB   r\   r]   rD   r^   )9typer9   	TextModelMmprojModel	TypeErrorr(   rV   _mistral_common_installedImportError_mistral_import_error_msgr;   r=   r>   r@   gguf
GGUFEndianBIGLITTLErA   rB   rC   rD   rP   rX   rQ   r_   _gate_exp_buffer_up_exp_bufferload_hparamsrF   index_tensorsrH   rM   rK   rO   	_is_nvfp4	_is_mxfp4
_fp8_as_q8set_fp8_dequantizedLlamaFileTypeGUESSEDget_tensorsdimdtypetorchbfloat16MOSTLY_BF16loggerinfofloat16
MOSTLY_F16
GGUFWriterMODEL_ARCH_NAMESrR   rI   rW   )selfr;   r=   r>   r@   rB   r[   rM   rK   r\   r]   rD   r^   rF   rP   rW   rX   rQ   r_   r`   _tensors                         r3   __init__zModelBase.__init__t   s    ::""T

i''T

k))tDzz2ZZZ[[[! 	9*C 	97888"
"*0=Y,,4?CY*IA"4D"@	"43V0 0!23513Y`Yhy--dnd>TUUUnu!//CU/VV!2$'#*-%% :+333!--// e e	6::<<!##<5>11!%!3!?DJKK cdddE\U]22!%!3!>DJKK abbbE 3
 "/:
cddd  ?4;PQUQ`;amqm{  LP  L^=N_mw~  Sde e e 8_444r2   rc   prefixstrreturnc                X    |j         |j        }}| | | }|                    |          S N)stemsuffix	with_name)clsrc   r   r   r   new_names         r3   add_prefix_to_filenamez ModelBase.add_prefix_to_filename   s6    y$+f,d,F,,~~h'''r2   keysIterable[str]optionalr   c                     t           fd|D             d           }| j        |         S |rd S t          d|           )Nc              3  .   K   | ]}|j         v |V  d S r   )rF   ).0kr   s     r3   	<genexpr>z(ModelBase.find_hparam.<locals>.<genexpr>   s/      99!qDL'8'8A'8'8'8'899r2   could not find any of: )nextrF   KeyError)r   r   r   keys   `   r3   find_hparamzModelBase.find_hparam   s]    9999t9994@@?<$$ 	4777888r2   c           	     d	   i }|d}t                               d|            t          j        j                            |          }|                                D ]-\  }}|fd}|                     ||f          x}r
|\  }	}
|
||	<   .|S | j        sdnd}t          
                    | j        |d          }t          |          dk    }|s!t          
                    | j        dd	          }t                      }t                      }| j        s=|rd
nd}|dz  }| j        |z  }|                                rt                               d| d           t          |dd          5 }t!          j        |          }|                    d          t'          t(                    st+          d|          |                                                               t(                                                              d           }t5          |                                          }d d d            n# 1 swxY w Y   ni ni |D ]e}t                               d| d           |rFt7          t8          t:                   t          j                            | j        |z                      }n?t?          j         tC          j        tE          | j        |z            ddd                    }|5 }|J |                                D ]}|#                    |           |r3||         }| j$        r|fd}n8tJ          j&        |j'                 }||fd}n||         }| j$        r|fd}n|fd}|                     ||f          x}r
|\  }	}
|
||	<   	 d d d            n# 1 swxY w Y   gt          |          dk    rt          |(                    |                    dk    rt5          |)                    |                    }t5          |)                    |                    }t5          t          fd|D                                 }t          |          dk    r(t          |          dk    rt+          d| d|           t+          d| d|           |S ) NTz(Using remote model with HuggingFace id: c                6    t                               |           S r   )LazyTorchTensorfrom_remote_tensor)rs    r3   <lambda>z)ModelBase.index_tensors.<locals>.<lambda>   s    ?3U3UVW3X3X r2   modelconsolidatedz.safetensorsr   pytorch_modelz.binzmodel.safetensorszpytorch_model.binz.index.jsonz%gguf: loading model weight map from ''r   utf-8encoding
weight_mapzCan't load 'weight_map' from zgguf: indexing model part 'cpu)map_locationmmapweights_onlyc                6    t                               |           S r   )r   from_local_tensordatas    r3   r   z)ModelBase.index_tensors.<locals>.<lambda>  s    9Z9Z[_9`9` r2   c                    t          j        |                                                               |                              | j                  S r   )r~   
from_numpy
mmap_bytesviewreshapeshape)r   r}   s     r3   r   z)ModelBase.index_tensors.<locals>.<lambda>  sO    eFVW[WfWfWhWhFiFiFnFnotFuFuF}F}  C  I  GJ  GJ r2   c                6    t                               |           S r   )r   
from_eagerr   s    r3   r   z)ModelBase.index_tensors.<locals>.<lambda>
  s    ?Y?YZ^?_?_ r2   c                    | S r   r1   r   s    r3   r   z)ModelBase.index_tensors.<locals>.<lambda>  s    t r2   c              3  0   K   | ]}|v |         V  d S r   r1   )r   nr   s     r3   r   z*ModelBase.index_tensors.<locals>.<genexpr>  s,      *]*]QQR\__:a=____*]*]r2   z#Missing or incomplete model files: z
Missing tensors: zOMismatch between weight map and model parts for tensor names:
Missing tensors: z
Extra tensors: )*r   r   rl   utilitySafetensorRemoteget_list_tensors_hf_modelitemsfilter_tensorsrV   r9   get_model_part_namesr;   lenrw   is_fileopenjsonloadget
isinstancedict
ValueErrorupdater   fromkeysvaluessortedr   r
   r   SafetensorsLocal
contextlibnullcontextr~   r   addrC   r   _dtype_str_mapr}   symmetric_difference
difference)r   rP   tensorsis_safetensorsremote_tensorsnameremote_tensordata_gentitemtnametgenr   
part_namestensor_names_from_indextensor_names_from_parts
index_name
index_filefindex	part_dict	part_namectx
model_partr   r}   
data_torchmissingextramissing_filesr   s                                @r3   rs   zModelBase.index_tensors   s   35)!NKKWCUWWXXX!\:TTUghhN'5';';'='= * *#m$1XXX //x0@AAA5 *"'KE4%)GENN $ 6JN ) > >t~vWe f f
":2 	a"77Y_``J,/EE,/EE% 	0>W,,DWJ-'J*4J!!##  QJQQQRRR*cG<<< :,0IaLLE!&<!8!8J!)J1M1M)()W)W)WXXX+22:??3D3DEEE15z?P?P?R?RTX1Y1YI!'	(8(8!9!9J: : : : : : : : : : : : : : :  

J# 	. 	.IKKBiBBBCCC L>#.0M0Mdn_hNh0i0ijj ,UZDNY<V8W8Wfkrv  FJ  .K  .K  .K  L  L .
!---&OO-- . .D+//555% D9CD9I9 J37'`'`'`HH$3$B4:$NE37u  (J  (J  (JHH-7-=
9 D3='_'_'_HH3='C'C'CH $ 3 3T84D E EEu .&+t)-#.. . . . . . . . . . . . . . .. &''!++*??@WXXYY\]]] !8!C!CD[!\!\]]6AABYZZ[[ &s*]*]*]*]'*]*]*]']'] ^ ^u::??s='9'9A'='=$ &C= &C &C9@&C &C D D D % &?9@&? &?7<&? &? @ @ @ s&   -CIII>B#N..N2	5N2	scaler   c                    |                                  dk    oFt          t          |                                                                           dz
            dk     S )Nr         ?ư>)numelabsfloatsum)r   s    r3   _scale_is_trivialzModelBase._scale_is_trivial!  sH    {{}}!Rc%0A0A0C0C*D*Ds*J&K&Kd&RRr2   
scale_namec                &   |                      |          s{|                                                                                                }t                              d| d|j         d           | j                            ||           d S d S )N  + z (per-tensor scale, shape []))	r   r   numpyflattenr   r   sizerI   
add_tensor)r   r   r   	scale_f32s       r3   _write_scale_tensorzModelBase._write_scale_tensor%  s    %%e,, 	?++--5577IKKXzXXinXXXYYY''
I>>>>>	? 	?r2   scaleslist[float]c                
   t          j        |dd          skt          j        |t           j                  }t                              d| dt          |           d           | j                            ||           d S d S )Nr   r   )atolr}   r  z (per-expert scale, shape [r  )	npallclosearrayfloat32r   r   r   rI   r  )r   r   r	  
scale_valss       r3   _write_scales_tensorzModelBase._write_scales_tensor+  s    {63T222 	@&
;;;JKKUzUUc&kkUUUVVV''
J?????	@ 	@r2   c                &     j         r t          d  j        D                       sd S g }i } j                            d          xrt          t                    r                    d          }dWddXdYddZ fdd[ fd|dk    r j                                        D ]k}|                    d          rT|	                    d          } j        |         } j        |         }||ffd	 j        |<   |
                    |           ln6|dk    r̉                    d           j                                        D ]}|                    d          rv|	                    d          } j        |         } j        |         }||ffd 	 j        |<   |
                    |            j        r j                            |           |                    d!          r|
                    |           |                    d"          r|
                    |           |                    d#          ry|	                    d$          dz   } j        |         } j        |         }||ffd%	 j        |<   |
                    |            j        r j                            |           |                    d&          r|
                    |           nc|d'k    r j                                        D ]}|                    d(          rv|	                    d(           j        d)z            } j        d(z            }	 j        d*z            }
 j        d+z            }||
|	|ffd,	|d-z   <   |fd.d/D             z  }n|d0k    rud1         }d2         }|d3k    p?|d4k    o9t          |          o*t          d5 |                                D                       }t#          |          d6k    r|st%          d7          t'          |                                          d8         d9         }|d:k    s|d;k    s|d<k    r3|                    d=d           |                    d>          }|d?k    s|d@k    sJ |                    d          J |d:k    o1|                    dA          dBk    o|                    d          dCk    } j                                        D ]}|                    d          rx|	                    d          } j        |         } j        |         }||ffdD	 j        |<   |
                    |            j        r|r j                            |           n|dEk    rg|                    d>          dFk    sJ |                    dAd          dk    sJ |                    d          |                    d          t          t(                    sJ t          t(                    sJ  j                                        D ]}|                    dG          r|	                    dH           j        |         } j        dz            } j        dIz            } j                            dJz   dK           }||||ffdL	|<   |fdMdND             z  }dJz    j        v r|
                    dJz              nR|rnNt%          dO|dP|dQ          |dRk    r j                                        D ]}|                    d          r|	                    d          }| j        vr|
                    |           L j        |         } j        |         }dS} j        r' |            j        t,          j        t,          j        fv }||ffdT	 j        |<   |
                    |           |r j                            |           |                    dU          r|
                    |           n|t%          dV|          |D ]}| j        v r j        |= |                                D ]\  }}| j        |<   d S )\Nc              3  @   K   | ]}|                     d           V  dS )).weight_scalez.weight_scale_invN)endswith)r   r   s     r3   r   z*ModelBase.dequant_model.<locals>.<genexpr>3  s0      %u%u]^ajj1W&X&X%u%u%u%u%u%ur2   quantization_configquant_methodweightr   r   r   c           	        |                      t          j                  } | j        }t          j        g dt          j                                      dgd t          t          |                    D             R           }|                     d          	                    dg|R           |z	  }|dz  }|
                                dz
                      |d         dz  g|dd          R           }||
                                z  S )N)r   r#   r%   r'   r  r%   c              3     K   | ]}d V  dS )r   Nr1   )r   r   s     r3   r   zBModelBase.dequant_model.<locals>.dequant_bitnet.<locals>.<genexpr>@  s$      SvSvZ[TUSvSvSvSvSvSvr2   r   r$   r   )r   r~   uint8r   r   r   ranger   	unsqueezeexpandr   )r  r   
orig_shapeshiftr   s        r3   dequant_bitnetz/ModelBase.dequant_model.<locals>.dequant_bitnet<  s    U[11#\
\\\EEEMMqNwSvSv_dehisetet_u_uSvSvSvNwNwxx''**1112Bz2B2BCCuLax

q(11:a=13D2VzRSRTRT~2V2VWW ekkmm++r2   
block_sizeSequence[int] | Nonec                   |                                 }|i|j        t          |          z
  }t          |          D ]\  }}|                    |||z             }|t          d | j        D                                }|j        | j        k     r%|                    d          }|j        | j        k     %|                                  |z  S )Nc              3  6   K   | ]}t          d |          V  dS )r   N)slice)r   r  s     r3   r   zBModelBase.dequant_model.<locals>.dequant_simple.<locals>.<genexpr>P  s*      'P'P4a'P'P'P'P'P'Pr2   )r   ndimr   	enumeraterepeat_interleavetupler   r  )r  r   r$  
dim_offsetir  s         r3   dequant_simplez/ModelBase.dequant_model.<locals>.dequant_simpleH  s    )!&c*oo!=J#,Z#8#8 N N4 % 7 7j1n M M!%'P'P6<'P'P'P"P"PQE j6;..!OOB//E j6;.. ||~~--r2   g_idxqweightqzerosr	  c           	     R   d         }|dv sJ |j         |j         k    sJ d|z  dz
  }d }d }|j         j        dz  }|dv r||z  }	t          j        t	          t          d||                    t          j                                      d          }
j        rt          
                    |
          }
t          j        |                    d                              d	d	|	          |
                    d                                        |dk    rt          j        nt          j                  }t          j        ||                              |j                  }t          j        t          j        |                    d                              d	|	d	          |
                    d	                                        |dk    rt          j        nt          j                  |          }n|d
k    rt'          d          |J |J |                    |j        d         |j        d         z  |j        d                   }                    dd          dk    r|dz  }||                                          |||          z
                                  z  j        S )Nbits)r#   r$   r%      r#   r   r6  )r#   r%   r6  r   r  r)  r$   z03-bit gptq dequantization is not yet implementedcheckpoint_formatgptq)r}   itemsizer~   r   listr  int32r  rC   r   r   bitwise_right_shiftr   toint16int8bitwise_andr   r   NotImplementedErrorr   r   T)r1  r2  r3  r	  r5  maxqr  zerospack_dtype_bitspack_factorwfquant_configr   s              r3   dequant_gptqz-ModelBase.dequant_model.<locals>.dequant_gptqY  s}   #F+|++++}4444T	Q")-"81"<9$$"1T"9Kd5OT+J+J&K&KSXS^___iijkllBy <,77;;!5((++222r;GGQ  b		uzBB  "-eT::BB6<PPE".1#--a0077KLLLL,,  "DAIIU[[5:FF FF QYY-.`aaa)))(((Q&,q/(I6<XY?[[  ##$7@@FJJQJEu++--%,1F0M0M0O0OORRr2   wshape_tensor
zero_pointTensor | Nonenum_bitsrS   
group_sizec                    | j         t          j        k    sJ t          |                                          }t          |          dk    sJ d|z  dz
  }t          j        dd|dz
  z
  |t          j                  }j        rt          	                    |          }|	d|dz
  z  }	nt          |j
                  dk    sJ |                    d          |                    ddd          z	  |z  }	|	                    d|j
        d                   }	|	d |d         d d f                             d          }	|                     d          |                    ddd          z	  |z  }
|
                    |d         d          }
|
d d d |d         f         }
|
                    |d         |
j
        d         |z   dz
  |z  |          }
|
|	z
  }
|
|                    d                                          z                      |          S )Nr#   r   r       r  r)  )r}   r~   r;  r-  tolistr   arangerC   r   r   r   r  r   r   )rJ  r   rK  rL  rN  rO  r   maskshiftsoffsetunpackedr   s              r3   dequant_packedz/ModelBase.dequant_model.<locals>.dequant_packed  s	   w%+----l1133445zzQX*ax!|)<hekZZZ9 @,77??F%8a<0FFz/00A5555(221552q9Q9QQUYYF#^^B
0@0CDDF $IU1XIqqqL1;;B??F KKOOv~~aB/G/GG4O#++E!Hb99 $AAAyayL1 $++E!Hx~b7IJ7VYZ7Z_i6ikuvv#f, 5??2#6#6#<#<#>#>>GGNNNr2   bitnetr  _scalec                <      |              |                      S r   r1   )rJ  sr#  s     r3   r   z)ModelBase.dequant_model.<locals>.<lambda>  s'    >>Z[Z[Z]Z]_`_`_b_bKcKc r2   fp8weight_block_size
_scale_invc                >      |              |            |          S r   r1   rJ  r\  bsr0  s      r3   r   z)ModelBase.dequant_model.<locals>.<lambda>  ,    ZhZhijijililnononqnqsuZvZv r2   z.activation_scale_activation_scalez.qscale_weightqscale_weightc                >      |              |            |          S r   r1   ra  s      r3   r   z)ModelBase.dequant_model.<locals>.<lambda>  rc  r2   z.qscale_actr8  .qweight.g_idx.qzeros.scalesc                `      |              |             |             |                      S r   r1   )gzrJ  r\  rI  s       r3   r   z)ModelBase.dequant_model.<locals>.<lambda>  s6    << !QQSS!!##qqssL L r2   .weightc                    g | ]}|z   S r1   r1   r   r   	base_names     r3   
<listcomp>z+ModelBase.dequant_model.<locals>.<listcomp>  s-     . . . ! &M. . .r2   )rh  ri  rg  rj  compressed-tensorsformatconfig_groupsnvfp4-pack-quantizedmixed-precisionc              3  r   K   | ]2}t          |t                    |                    d           dk    V  3dS rt  rv  Nr   r   r   r   rl  s     r3   r   z*ModelBase.dequant_model.<locals>.<genexpr>  sD      vv!blmnptbubuvAEE(OO/EEvvvvvvr2   r   z>Can't handle multiple config groups for compressed-tensors yetr   weightszfloat-quantizedzint-quantizedznaive-quantizedblock_structurestrategychannelblockre   r   r6  c                >      |              |                      S r   r1   )rJ  r\  r$  r0  s     r3   r   z)ModelBase.dequant_model.<locals>.<lambda>  s*    ~~^_^_^a^acdcdcfcfhrOsOs r2   zpack-quantizedgroup.weight_packed_packed_shape_zero_pointc                     d S r   r1   r1   r2   r3   r   z)ModelBase.dequant_model.<locals>.<lambda>  s    cg r2   c                d      |              |             |             |                      S r   r1   )rJ  r   r   rL  rX  rO  rN  s       r3   r   z)ModelBase.dequant_model.<locals>.<lambda>  s=    ]k]k$%ACC%%''::<<S]^" ^" r2   c                    g | ]}|z   S r1   r1   rp  s     r3   rr  z+ModelBase.dequant_model.<locals>.<listcomp>  s    1i1i1iA)a-1i1i1ir2   )r  r  rZ  zQuant format z for method z is not yet supportedmodeloptFc                >      |              |            d           S r   r1   )rJ  r\  r0  s     r3   r   z)ModelBase.dequant_model.<locals>.<lambda>(  s*    >>Z[Z[Z]Z]_`_`_b_bdhKiKi r2   ).input_scale.k_scale.v_scalez#Quant method is not yet supported: )r  r   r   r   r   r   r   )r  r   r   r   r$  r%  r   r   )
r1  r   r2  r   r3  r   r	  r   r   r   )rJ  r   r   r   rK  r   rL  rM  rN  rS   rO  rS   )rt   anyrH   rF   r   r   r   r   r  removesuffixappendrv   rx   r   r?   allr   r   rA  r-  rS   r}   r~   float8_e4m3fnfloat8_e5m2r   ) r   tensors_to_removenew_tensorsr  r   weight_namerJ  r\  r1  r2  r3  r	  quant_formatgroupsnvfp4_compressed_tensorsweight_configr~  is_fp8r   r   rL  is_fp8_weightvaluerq  r$  r#  rI  rX  r0  rO  rN  rH  s    `                      @@@@@@@@@r3   dequant_modelzModelBase.dequant_model1  s
   > 	#%u%ubfbt%u%u%u"u"u 	F')79 L,,-BCCCL v	bT`bfIgIg v	b'++N;;L
, 
, 
, 
,. . . . ."(S (S (S (S (S (S (ST O  O  O  O  O  OD x'' .3355 7 7D}}_55 7&*&7&7&A&A .{; .t4CD:c:c:c:c:c*;7)006667 &&)--.ABB
 .3355 7 7D}}\22 C&*&7&7&E&E .{; .t4CDj:v:v:v:v:v*;7)00666? C 155kBBB}}%899 7)00666}}%899 7)00666}}%566 C&*&7&7&H&H8&S .{; .t4CDj:v:v:v:v:v*;7)00666? C 155kBBB}}]33 7)00666/70 '' .3355  D}}Z00 $($5$5j$A$A	 $ 29x3G H"&"4Y5K"L!%!3I	4I!J!%!3I	4I!J%*f6      $I	$9:
 * . . . .&. . . )* !555+H5%o6 $:: w#'88 wVwvvv}}vvvvv	 ) v;;??+C?-.nooo %fmmoo 6 6q 9) D#4448W8W[gk|[|[|!.!2!23Dd!K!KJ,00<<H#y00H4G4G4GG(,,\::BBB$(99 ?)--f55@?)--j99Q> 
 !% 2 7 7 9 9 G G==99 G*.*;*;H*E*EK $ 2; ?A $ 24 8AGHA>s>s>s>s>s>sD.{;-44T:::# G6 G $ 5 9 9+ F F FG "%555(,,Z88GCCCC(,,VU;;uDDDD,00<<H!.!2!2<!@!@J%h44444%j#66666 $ 2 7 7 9 9 T T==)9:: T(,(9(9)(D(DI $ 24 8A$($6y87K$LE$($6y87K$LE)-);)?)?	M@Y[g[g)h)hJ)*%uQ[ !" !" !" !" !" !" !" (	2
 .1i1i1i1iIh1i1i1ii- )M 9d>PPP 1 8 8]9R S S ST . A-.l..Zf...  A  A  A++ !.3355 7 7D}}_55 C&*&7&7&A&A&d.@@@-44T:::$ .{; .t4(-? b,-ACCI%:MuO`9a,aMCD:i:i:i:i:i*;7)00666( C 155kBBB}}%MNN 7)00666!7" ))*`P\*`*`aaa% 	- 	-Dt)))&t,&,,.. 	- 	-KD%',Dt$$	- 	-r2   item tuple[str, Callable[[], Tensor]]'tuple[str, Callable[[], Tensor]] | Nonec                    |\  }}|                     d          r|                    dd          }d|v r|                    dd          }||fS )Ne_score_correction_biasze_score_correction.biaslanguage_model.r   )r  replace)r   r  r   gens       r3   r   zModelBase.filter_tensors8  s_    	c==233 	V<< 9;TUUD$$<< 1266DSyr2   Iterator[tuple[str, Tensor]]c              #  d   K   | j                                         D ]\  }}| |            fV  d S r   )rH   r   )r   r   r  s      r3   r{   zModelBase.get_tensorsD  sK      +1133 	 	ID#+	 	r2   rn  r   gguf.MODEL_TENSORbid
int | Noner   c                    |t           j        | j                 vrt          d|d| j                  t           j        |         }d|v r|J |                    |          }||z   S )NzMissing z for MODEL_TENSORS of {bid}r  )rl   MODEL_TENSORSrR   r   TENSOR_NAMESrt  )r   r   r  r   r   s        r3   format_tensor_namezModelBase.format_tensor_nameH  st    d(999XXXT_XXYYY%c*d?????;;3;''Df}r2   r   c                    |t           j        | j                 vrdS t           j        |         }d|v r|dS |                    |          }n|dS |||z   k    S )NFr  r  )rl   r  rR   r  rt  )r   r   r   r  r   key_names         r3   match_model_tensor_namez!ModelBase.match_model_tensor_nameQ  sm    d(9995)#.h{u3//HHu6)**r2   rn  z.biastry_suffixesSequence[str]c                f    | j                             ||          }|t          d|          |S )N)r   r  zCan not map tensor )rU   get_namer   )r   r   r  r   s       r3   map_tensor_namezModelBase.map_tensor_name^  s>    ?++<+PP;4;;<<<r2   c                     t          d          )Nz7set_gguf_parameters() must be implemented in subclassesrA  r   s    r3   set_gguf_parameterszModelBase.set_gguf_parametersd  s    !"[\\\r2   r   Iterable[tuple[str, Tensor]]c                   |                      |          }| j        rW|T|                     |t          j        j        |          r|| j        |<   n0|                     |t          j        j        |          r
|| j        |<   || j        v r|| j        v r| j        	                    |          }| j        	                    |          }t          j        ||gd          }|                     t          j        j        |          }t                              d|            ||fgS |                     |t          j        j        |          s&|                     |t          j        j        |          rg S ||fgS )Nr   r|   z&Fused gate_exps and up_exps for layer )r  r_   r  rl   MODEL_TENSORFFN_GATE_EXPrp   
FFN_UP_EXPrq   popr~   catr  FFN_GATE_UP_EXPr   r   )	r   r   r   r  r   	gate_dataup_data
fused_data
fused_names	            r3   modify_tensorszModelBase.modify_tensorsg  s   ''-- ! 	co++Hd6G6TVYZZ 6-7%c**--h8I8TVYZZ 6+5#C( d+++t7J0J0J 155c::	-11#66"Y	7';CCC
!44T5F5VX[\\
JSJJKKK#Z011 ++Hd6G6TVYZZ ++Hd6G6RTWXX	:&''r2   r   n_dims gguf.GGMLQuantizationType | boolc                X    ~~| j         r || j        v r|dk    rt          j        j        S dS )Nr#   F)rv   rx   rl   GGMLQuantizationTypeQ8_0)r   r   r   r  r  s        r3   tensor_force_quantzModelBase.tensor_force_quant  s7    c? 	2tt'<<<1,11ur2   c                    dS )Nr1   r1   r  s    r3   generate_extra_tensorsz ModelBase.generate_extra_tensors  s    rr2   r  tuple[np.ndarray, list[int]]c                   | j         d         }|j         d         }|                     ||d          }t          j        |dz  |dz	  gd                              ||d          }|                    t          j                                                                      ||          d	z  }|d
d
d
d
d
df         |d
d
d
d
dd
f         dz  z                      t          j                                                  }|dz  }|                    ||d          }	|                    ||dd                              ||d          }
t          j	        |	|
gd                              ||dz            }|||dz  gfS )a  Repack NVFP4 ModelOpt tensors into ggml super-block layout.
        Preserves original E4M3 scale bits as UE4M3 (strip sign bit).
        The per-tensor scale2 factor is stored as a separate tensor and applied at inference time via ggml_mul().
        Returns (raw_data, logical_shape).r   r   r6     r%   r)  r        NrQ  axis$   @   )
r   r   r~   stackr   r  r  r=  r  concatenate)r  r   out_featuresn_blocksrJ  valsd_ueqsn_super	d_grouped
qs_groupedraws               r3   _nvfp4_packzModelBase._nvfp4_pack  s    |A;q> NN<155{AHa1f-2666>>|XWYZZ zz%+&&,,..66|XNNQUU111aaa!8nQQQ122X! 3488EEKKMM a-LLw::	ZZgq!<<DD\SZ\^__
ni42>>>FF|U\_aUabb\7R<000r2   scale2input_scalec                   |                      |          }|                     ||          \  }}t                              d| d| d           | j                            ||t          j        j                   | 	                    |
                    dd          |           | 	                    |
                    dd          |           d S )N	Repacked z with shape z and quantization NVFP4	raw_dtypern  .scaler  )r  r  r   r   rI   r  rl   r  NVFP4r  r  )	r   r   r  r   r  r  r   r  r   s	            r3   _repack_nvfp4zModelBase._repack_nvfp4  s    ''--%%fe44
UTTTeTTTUUU##HcT=V=\#]]]  !1!1)X!F!FOOO  !1!1)^!L!LkZZZZZr2   c           
        i }i }i }i }|                      ddgd          pd}g }| j                                        D ]u}|                    d          s|                    dd          }|                    dd          }	|                    dd	          }
|| j        vret
                               | j        |                               }t
                               | j        |                               }|j        d
k     rt
                               | j                            |	d                                 }t
                               | j                            |
d                                 }|	                    ||g           |	| j        v r|
                    |	           |
| j        v r|
                    |
           t          j        d|          }|rt          |                    d                    }|                    d
          }t          j        d|          }|r"t          |                    d                    nd}||f}|                     ||          \  }}||vrg ||<   g ||<   g ||<   |||<   ||         
                    ||                                f           ||         
                    |t#          |                                                                          f           ||         
                    |t#          |                                                                          f           |dk    r4t'          ||                   |k    r|                     |||||||           \|                     |||||           wt-          |                                          D ]"\  }}|                     ||f||||||           #|D ]}| j                            |d            t-          | j                                                  D ]}|                    d          r| j        |=  d S )Nnum_local_expertsnum_expertsTr   r   rn  r  .weight_scale_2r  r#   c                 *    t          j        d          S Nr   r~   r   r1   r2   r3   r   z3ModelBase._generate_nvfp4_tensors.<locals>.<lambda>  s    Z_ZfgjZkZk r2   c                 *    t          j        d          S r  r  r1   r2   r3   r   z3ModelBase._generate_nvfp4_tensors.<locals>.<lambda>  s    didpqtdudu r2   z8\.experts\.(\d+)\.(gate_proj|up_proj|down_proj)\.weight$r   z\.layers\.(\d+)\.)r  r  )r   rH   r   r  r  r   to_eagerr*  r   extendr  researchrS   r  r  copyr   r   r   _flush_nvfp4_expertsr  r:  r  )r   expert_blocksexpert_scalesexpert_input_scalesexpert_shapes	n_expertsconsumedr   r   scale2_nameinput_scale_namer  r   r  r  m	expert_id	proj_typebid_mr  r   r  r   s                          r3   _generate_nvfp4_tensorsz!ModelBase._generate_nvfp4_tensors  s   MOHJNP:<$$&9=%ITX$YY^]^	 &++-- 4	M 4	MD==++ iAAJ,,y2CDDK#||I~FF!333$--.Fd.@.F.H.HIIF#,,-KT-?
-K-M-MNNE zA~~$--.ld.@.D.D[RkRk.l.l.n.nooF)223v43E3I3IJZ\u\u3v3v3x3xyyK OOT:.///d000,,,4#555 0111 	UW[\\A M

OO	GGAJJ		"6==-29c%++a..)))I&!--fe<<
Um++)+M#&)+M#&/1',).M#&c"))9chhjj*ABBBc"))9eFLLNN<N<N<P<P6Q6Q*RSSS#C(//E+BSBSBUBUBYBYB[B[<\<\0]^^^ q==Ss);%<%<	%I%I--c=-Qdfsux  {D  E  E  E""4LLLL #=#5#5#7#788 	J 	JNC%%sI&6}Vikxz}  @I  J  J  J  J  	/ 	/D""4.... +002233 	- 	-D}}566 -&t,	- 	-r2   c                `   |                     |          }|                     |          }	|                     |          }
|                     |          }|                    d            t          j        d |D             d          }d| d| d}|                     |          }t
                              d	| d
t          |           d|d          d|d          d	           | j        	                    ||t          j        j                   |	                    d            |                     |                    dd          d |	D                        |
                    d            |                     |                    dd          d |
D                        ~~d S )Nc                    | d         S Nr   r1   xs    r3   r   z0ModelBase._flush_nvfp4_experts.<locals>.<lambda>  s
    1Q4 r2   )r   c                    g | ]
}|d          S r   r1   )r   es     r3   rr  z2ModelBase._flush_nvfp4_experts.<locals>.<listcomp>  s    111A1Q4111r2   r   r  zmodel.layers.z.mlp.experts.rn  r  z with shape [, r   z] and quantization NVFP4r  c                    | d         S r  r1   r  s    r3   r   z0ModelBase._flush_nvfp4_experts.<locals>.<lambda>	  s
    !A$ r2   r  c                    g | ]
}|d          S r  r1   r   r\  s     r3   rr  z2ModelBase._flush_nvfp4_experts.<locals>.<listcomp>
  s    I_I_I_ST!A$I_I_I_r2   c                    | d         S r  r1   r  s    r3   r   z0ModelBase._flush_nvfp4_experts.<locals>.<lambda>  s
    ! r2   r  c                    g | ]
}|d          S r  r1   r  s     r3   rr  z2ModelBase._flush_nvfp4_experts.<locals>.<listcomp>  s     OkOkOkYZPQRSPTOkOkOkr2   )r  sortr  r  r  r   r   r   rI   r  rl   r  r  r  r  )r   r   r  r  r  r  r  r  expertsr	  input_scalesr   mergedmerged_namer   s                  r3   r  zModelBase._flush_nvfp4_experts  s   ##C((""3''*..s33!!#&&(((11111:::JcJJ	JJJ''44uuus7||uuuQxuuSXYZS[uuuvvv##Hf@Y@_#```'''!!("2"29h"G"GI_I_X^I_I_I_```nn---!!("2"29n"M"MOkOk^jOkOkOklllVVVr2   c                     j                             d          pi }|                    d          }|                    d          }|                    d          }|                    d          pi }|                    d          pi } j        dz  }|r|s>|                                r)t	          |dd	
          5 }t          j        |          }	|	                    d          pi }
|	                    d          pi }|                    d          pd                                }| | j                             di           d<   |}|
                    d|          }|
                    d|          }|
                    d|          }|
                    d|          pi }|
                    d|          pi }d d d            n# 1 swxY w Y   |dk    oE|dk    p?|dk    o9t          |          o*t          d |                                D                       }|dk    r2|rd}n-t          d |                                D                       rd}|dk     _        |dk     _         j        rZ|rCd }t           j                                                  D ]}|                    d          rA|                    d          }| j        vr" j                            |           j        |<   Y|                    d          rK|                    dd          }| j        vr+ | j                            |                     j        |<   |                    d          rJ|                    dd          }| j        vr+ | j                            |                     j        |<                                                                        j        j        rFt5          d  j        j                                        D                       t7          d          z   }nt7          d          }t9                                                                                      D ]\  }}|                    d           r|j        }|j        t@          j!        t@          j"        fvr|#                    t@          j"                  }d |$                    d!          D ]'}|%                                rtM          |           n( '                    ||          D ]H\  }|(                                }t7          |j)                  } *                    ||          }|d"k    s                    d#          rtV          j,        j-        }|d$u rt           fd%tV          j.        j/        tV          j.        j0        tV          j.        j1        tV          j.        j2        tV          j.        j3        tV          j.        j4        tV          j.        j5        tV          j.        j6        tV          j.        j7        tV          j.        j8        tV          j.        j9        tV          j.        j:        tV          j.        j;        tV          j.        j<        tV          j.        j=        tV          j.        j>        tV          j.        j?        tV          j.        j@        tV          j.        jA        tV          j.        jB        tV          j.        jC        tV          j.        jD        fD                       sd&d          d'vrtV          j,        j-        }|d$u rt           fd(tV          j.        jE        tV          j.        jF        tV          j.        jG        tV          j.        jH        tV          j.        jI        tV          j.        jJ        fD                       r: jK        tV          jL        jM        tV          jL        jN        fv rtV          j,        jO        }t          |t                    r$ jK        tV          jL        jQ        k    rtV          j,        j-        }n jK        tV          jL        jR        k    rtV          j,        jO        }n̉ jK        tV          jL        jS        k    rtV          j,        jT        }n jK        tV          jL        jU        k    rtV          j,        jV        }nt jK        tV          jL        jM        k    rtV          j,        jW        }nH jK        tV          jL        jN        k    rtV          j,        jX        }nt          d) jK        jZ                   	 tV          j[        \                    ||          }ni# tV          j]        $ rW}t          _                    d*|d+           tV          j,        jO        }tV          j[        \                    ||          }Y d }~nd }~ww xY w|j        t          ja        k    rtW          jb        |j)        |          n|j)        }d,d-c                    d. t          |          D                        d/}t          e                    d0| d1 d2z   d3| d4|jZ         d5|             jf        g                    ||6           Jd S )7Nr  
quant_algor  rt  ru  quantized_layerszhf_quant_config.jsonr   r   r   quantizationproducerr   r   rs  rv  rw  c              3  r   K   | ]2}t          |t                    |                    d           dk    V  3dS ry  rz  r{  s     r3   r   z,ModelBase.prepare_tensors.<locals>.<genexpr>0  sD      tt!`jklnr`s`stAEE(OO'==ttttttr2   r  c              3     K   | ]N}t          |t                    t          |                    d                                         d          V  OdS )r$  r  N)r   r   r   r   r  )r   vs     r3   r   z,ModelBase.prepare_tensors.<locals>.<genexpr>5  sV      vvAblmnptbubuvS|,,--66w??vvvvvvr2   mxfp4c                      fd}|S )Nc                 v    t                                                                                      } d| z  S r  )r   r  r   )r   r  s    r3   r   z>ModelBase.prepare_tensors.<locals>.inverse_scale.<locals>.loadB  s2     / 8 8 ? ? E E G G"U{*r2   r1   )r  r   s   ` r3   inverse_scalez0ModelBase.prepare_tensors.<locals>.inverse_scaleA  s#    + + + + +  Kr2   r  r  z.weight_global_scaler  z.input_global_scaler  c              3  :   K   | ]\  }}t          |          V  d S r   )r   )r   r   r\  s      r3   r   z,ModelBase.prepare_tensors.<locals>.<genexpr>[  s,      SS$!Qs1vvSSSSSSr2   z.weight,zvision_encoder.weight,)z.attention.masked_biasz.attention.biasz.rotary_emb.inv_freq.r   z_norm.weightFc              3  F   K   | ]}                     |          V  d S r   r  r   r   r  r   r   s     r3   r   z,ModelBase.prepare_tensors.<locals>.<genexpr>  sI         44XsCHH     r2   i)rn  z.lora_az.lora_bc              3  F   K   | ]}                     |          V  d S r   r2  r3  s     r3   r   z,ModelBase.prepare_tensors.<locals>.<genexpr>  sI       
/ 
/ 003DD
/ 
/ 
/ 
/ 
/ 
/r2   zUnknown file type: z%s, %szfalling back to F16{r  c              3  4   K   | ]}t          |          V  d S r   )r   )r   r   s     r3   r   z,ModelBase.prepare_tensors.<locals>.<genexpr>  s(      *K*Ka3q66*K*K*K*K*K*Kr2   }z%-r\  , z --> z
, shape = r  )hrF   r   r;   r   r   r   r   lower
setdefaultr?   r  r   r  rt   ru   r:  rH   r   r  r  r  r  r  r  rU   mappingmaxr   r   r  r{   r}   r~   r   r  r=  split	isdecimalrS   r  r  r   r  rl   r  F32r  FFN_GATE_INPFFN_GATE_INP_SHEXPPOS_EMBDTOKEN_TYPES
SSM_CONV1DSHORTCONV_CONVTIME_MIX_FIRSTTIME_MIX_W1TIME_MIX_W2TIME_MIX_DECAY_W1TIME_MIX_DECAY_W2TIME_MIX_LERP_FUSEDPOSNET_NORM1POSNET_NORM2V_ENC_EMBD_POSA_ENC_EMBD_POSALTUP_CORRECT_COEFALTUP_PREDICT_COEFSSM_CONV1D_QSSM_CONV1D_KSSM_CONV1D_VINDEXER_PROJ
TOKEN_EMBDPER_LAYER_TOKEN_EMBDOUTPUTALTUP_ROUTERLAUREL_LLAUREL_Rr=   ry   MOSTLY_TQ1_0MOSTLY_TQ2_0F16r   ALL_F32r   r   BF16MOSTLY_Q8_0r  TQ1_0TQ2_0r   r   quantsquantize
QuantErrorr   warningr  r  quant_shape_from_byte_shapejoinreversedr   rI   r  )r   r  r$  r  r  quant_groupsquant_layersquant_config_filer   hf_quant_configrH  r'  producer_namer  r.  r   r  r	  r
  max_name_lenr   	old_dtypepartr   r  
data_qtyper  r   	shape_strr  r   s   `                            @@r3   prepare_tensorszModelBase.prepare_tensors  s
   "l../DEEK(,,\::
*..~>>*..x88*..??E2*../ABBHb N-CC 	X, 	X4E4M4M4O4O 	X'w??? X1"&)A,,.22>BBHb*..z::@b!)f!5!5!; B B D D'YfDL++,A2FF~V#0L)--lJGG
+//MM+//,GG+//NNTRT+//0BLQQWUWX X X X X X X X X X X X X X X  $03G#G $
22 u00 u\""utt|GZGZG\G\ttttt	 	!   ' %$

vvI\I\I^I^vvvvv %$
#w.%0
 > 	+' o      !!3!8!8!:!:;; o oD}}%566 o&*&7&7	&B&B&d.@@@>B>P>T>TUY>Z>ZD.{;'=>> o&*ll3IK\&]&]&d.@@@>KmDL^LbLbcgLhLh>i>iD.{;'<== o+/<<8M~+^+^(+43EEECP=QUQcQgQghlQmQmCnCnD./?@((*** ?" 	9SS$/2I2P2P2R2RSSSSSVYZdVeVeeLL788L %d&A&A&C&CTEUEUEWEW X X t	R t	RD*}}bcc "(I u}'EEE']]5=99
 C

3  >>## d))CE *.)<)<Zs)S)S bR bR$* "''))TZ?C?V?VW[]egjlr?s?s
 Q;;("3"3N"C"C;!%!:!>J &&       !-: -@ -6 -9 -8 -< -< -9 -9 -? -? -A -: -: -< -< -@ -@ -: -: -: -:1$     '<  },MMM!%!:!>J&&3 
/ 
/ 
/ 
/ 
/ 
/ )4)>)0)6)2)2 
/ 
/ 
/ 
, 
,& z*7*7&  
 &*%>%B
 j$// RzT%7%???%)%>%B

t'9'DDD%)%>%B

t'9'EEE%)%>%C

t'9'EEE%)%>%C

t'9'FFF%)%>%D

t'9'FFF%)%>%D

()Ptz)P)PQQQB;//jAADD B B BNN8Q0EFFF!%!:!>J;//jAADDDDDDB
 UYT^bdbjTjTj8ZPPPptpz P*K*K8E??*K*K*K!K!KOOO	 3L333nnnD}}y}}WaWf}}r{}}~~~ ++Hdj+QQQQEbR%t	R t	Rs,   D GGG= eg-Af??gc                X    | j                             t          j        j                   d S r   )rI   add_typerl   GGUFTypeMODELr  s    r3   set_typezModelBase.set_type  s$    !!$-"566666r2   
vocab_onlyc                   | j                                         \  }}}}t          j                            | j        | j        | j        |          | _        | j	        r| j	        | j        _
        | j        j
        | j        j
        | j        _
        | j        t          j        j        t          j        j        t          j        j        fv r;| j        rt          j        j        | _        n| j        rt          j        j        | _        | j        j        '|dk    r!t          j        ||||          | j        _        |                                  t.                              d           | j                            | j                    t.                              d           |                                  t.                              d           | j                             t          j                   d S )Nr   zSet meta modelzSet model parameterszSet model quantization version)rI   get_total_parameter_countrl   Metadatar   rM   rO   rK   rN   rP   r   r;   r=   ry   r`  r   r   rt   MOSTLY_NVFP4ru   MOSTLY_MXFP4_MOE
size_labelr{  r   r   set_gguf_meta_modelr  add_quantization_versionGGML_QUANT_VERSION)r   r|  total_paramsshared_paramsexpert_paramsexpert_counts         r3   prepare_metadatazModelBase.prepare_metadata  s   CGCSCmCmCoCo@m]L**4+A4CVX\Xgiuvv " 	9!%!8DM =%!%!4DM:$,4d6H6SUYUgUsttt~ A!/<

 A!/@
 =#+q0@0@'+|]Taco'p'pDM$$%%%))$*:;;;*+++  """455511$2IJJJJJr2   c                     t          d          )Nz/write_vocab() must be implemented in subclassesr  r  s    r3   write_vocabzModelBase.write_vocab  s    !"STTTr2   c                4   |                                   |                     d           | j                            | j                   | j                                         | j                            d           | j                                         d S )NFr|  rc   T)progress)rv  r  rI   write_header_to_filer>   write_kv_data_to_filewrite_tensors_to_filecloser  s    r3   writezModelBase.write  s    ///--4>-BBB..000...===     r2   	list[str]c                    g }t          j        |           D ]A}|                    |          r*|                    |          r|                    |           B|                                 |S r   )oslistdir
startswithr  r  r  )r;   r   r   r   filenames        r3   r   zModelBase.get_model_part_names  sv     "

9-- 	, 	,H""6** ,x/@/@/H/H ,!!(+++r2   c                   |rCt          | dz  dd          5 }t          j        |          }d d d            n# 1 swxY w Y   |S 	 t          j        | d                                          }n# t          $ r}t                              d|  d|            t                              d	           t          | d
z  dd          5 }t          j        |          }d d d            n# 1 swxY w Y   Y d }~nd }~ww xY wd|v r|d         |d<   d|v r|d         |d<   d|v r|d         d         |d<   d|v r|d         |d<   d|v r|d         |d<   |S )Nzparams.jsonr   r   r   Ftrust_remote_codez!Failed to load model config from : z"Trying to load config.json insteadconfig.json
llm_configtext_config	lm_configthinker_configlanguage_configlfm)	r   r   r   r   from_pretrainedto_dict	Exceptionr   rh  )r;   rV   r   configr  s        r3   rr   zModelBase.load_hparams  s    	i-/wGGG &11& & & & & & & & & & & & & & &M	&  /	USSS[[]]FF 	& 	& 	&NNOyOOAOOPPPNN?@@@i-/wGGG &11& & & & & & & & & & & & & & &	&
 6!!$*<$8F=!&  $*;$7F=!v%%$*+;$<]$KF=!&&$*+<$=F=!F??$*5MF=!sJ   9= =(A0 0
C?:AC:	C*C:*C.	.C:1C.	2C::C?namesCallable[[AnyModel], AnyModel]c                      sJ d fd}|S )Nmodelclsr   r   c                    | j         t          j        j        k    rt          j        nt          j        }D ]}| j        |         |<   | S r   )rR   rl   
MODEL_ARCHr7   r5   r6   r:   )r  
model_typer   r   r  s      r3   funcz ModelBase.register.<locals>.func6  sQ    -5-@DODZ-Z-Z))`i`nJ @ @7?":.t44Or2   )r  r   r   r   r1   )r   r  r  s   `` r3   registerzModelBase.register2  s7    u	 	 	 	 	 	 	
 r2   c                
   | j                                         D ]h\  }}t                              |j         d           t          |                                          D ]}t                              d|             id S )Nz models:z  - )r:   r   r   errorr   r   r   )r   r  model_classesr   s       r3   print_registered_modelsz!ModelBase.print_registered_models=  s    ),);)A)A)C)C 	, 	,%JLLJO555666}113344 , ,]D]]++++,	, 	,r2   rd   r   c                n    	 | j         |         |         S # t          $ r t          d|d          d w xY w)NzArchitecture z not supported!)r:   r   rA  )r   rd   r  s      r3   from_model_architecturez!ModelBase.from_model_architectureD  sW    	Y%j1$77 	Y 	Y 	Y%&Md&M&M&MNNTXX	Ys    4)&r;   r   r=   r<   r>   r   r@   r?   rB   r?   r[   r?   rM   rL   rK   rJ   r\   rS   r]   rS   rD   r?   r^   r?   rF   ra   rP   rJ   rW   r?   rX   r?   rQ   rL   r_   r?   r`   r?   )rc   r   r   r   r   r   Fr   r   r   r?   r   r   r   )rP   rJ   r   rG   )r   r   r   r?   )r   r   r   r   )r   r   r	  r
  r  r  r   r  )r   r  )Nrn  )r   r  r  r  r   r   r   r   )rn  )
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  rS   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   rV   r?   )r  r   r   r  )rd   r   r   r   ).r(   r)   r*   r5   r6   r7   r:   __annotations__rV   rW   rX   rY   rZ   r   classmethodr   r   rs   staticmethodr   r  r  r  r   r{   r  r  r  r  r  r  r  r  r  r  r  rv  r{  r  r  r  r   rr   r  r  r  r1   r2   r3   r9   r9   K   s        "CN    
 OOOOOOJJJMMM2222    """"""""!!!!   """" $####49+999905'5555 HFmr',E26QU*+1V[+0SWz~AF=B15+0#(B_ B_ B_ B_ B_ B_H ( ( ( [(
9 9 9 9 9Y Y Y Y Yv S S S \S? ? ? ?@ @ @ @E- E- E-N 	 	 	 [	       + + + + +    ] ] ]( ( ( (6       1 1 1 \10[ [ [ [J- J- J-X  *BR BR BRH7 7 7!K !K !K !KFU U U! ! !    \    \@    [ , , [, =F^ Y Y Y Y [Y Y Yr2   r9   c                      e Zd ZU ej        Zded<    fdZed             Z	ed, fd	            Z
d
 Zd- fdZd Zd Zd.dZd/dZd0dZd1dZd1dZd1dZd Zd Zd2dZd Zd Zd  Zd3d%Zd1d&Zd' Zd( Zd) Zd* Z d+ Z! xZ"S )4rf   r   hf_archc                    t                      j        |i | | j        s t          | j        | j                  | _        nd| _        d| j        v ri | j        | j        d         | _        |                     g d          | _        t          j
        | j        | j                  | _        | j                            d| j                            d                    pi | _        |                     g dd          }|                     g d	d          }|                     g d
d          }|                     dgd          }d| j        vrd| j        vr|d|i| j        d<   d| j        vr|
|| j        d<   d| j        vr&| j                            d          x}
|| j        d<   d| j        vr|
|| j        d<   d| j        vr||| j        d<   d S d S d S d S d S )Nr   r  )n_layersnum_hidden_layersn_layer
num_layersrope_parametersrope_scaling)global_rope_thetarope_global_thetarope_theta_global
rope_thetarotary_emb_baseTr  )local_rope_thetarope_local_thetarope_theta_localswa_rope_thetarope_local_base_freq)partial_rotary_factorrope_pctrope_percent original_max_position_embeddingsfull_attentionsliding_attentionr  	rope_typere   r  )superr   rV   get_model_architecturerF   r  r  r   rT   rl   get_tensor_name_maprR   rU   r   r  )	r   argskwargsr  r  r  r  r  	__class__s	           r3   r   zTextModel.__init__P  st   $)&)))% 	1$,PPDLLDLDL((JdlJdl=.IJDL++,f,f,fgg24?DDTUU#|//0A4<CSCSTbCcCcddjhj%%  'G  'G  'G  RV%  W  W
++  -S  -S  -S  ^b+  c  c $ 0 01f1f1fqu 0 v v+/+;+;=_<`ko+;+p+p( 4#777<OW[Wk<k<k+=IK[<\$%894#777J<R5?$\2$"666I]IaIabhIiIi<iI;v4=$[1&d.BBBG\Gh@U$%<=19MMMRrR~Kk$%GHHH 87<k<k NMR~R~r2   c                F    d| j         vrt          d| j                  d S )NrR   z"Missing property 'model_arch' for )__dict__rh   r(   )r   s    r3   __init_subclass__zTextModel.__init_subclass__r  s2     s|++QQQRRR ,+r2   r  r  r   r  c                    |\  }}|                     d          s@d|v s<d|v s8d|v s4d|v s0d|v s,d|v s(d|v s$d	|v s d
|v sd|v sd|v sd|v sd|v sd|v sd|v sd|v rd S t                                          |          S )N)
mlpzvit.zvpm.zsiglip2.z
conformer.zmerger.z
resampler.zsound_encoder.zsound_projection.zspeech_embeddings.zvisual.zvision.zaudio.ztalker.vision_audio_z
token2wav.z	code2wav.z
projector.pre_mm_projector_normimage_newlineview_seperatorpatch_embedpatch_embeddingzpatch_merger.zmodel.connector.)r  r  r   r   r  r   r  r  s       r3   r   zTextModel.filter_tensorsy  s    	c ??  c  d  d 	$$	T(9(9X=M=MQZ^bQbQb$$D(8(84'';$+>+>4''+Bd+J+J"d**.>$.F.F D((,=,E,E"d**.@D.H.H4ww%%d+++r2   c                .    |                                   d S r   )_set_vocab_gpt2r  s    r3   	set_vocabzTextModel.set_vocab  s    r2   r|  r?   c           
         t                                          |           | j                                        d         }| j        j                            d          d         }| j                                        r|sVt          j
        | j        j        | j        j        | j        j        | j        j        | j        j        ||dk     rdnd           }nCt          j
        | j        j        | j        j        | j        j        | j        j        d d d          }| j        | d	z  | _        n1| j        j        t          j        | j        j        |          z  | _        t$                              d
           |                                  d S )Nr  r   r   r#   LoRA)r  vocabr  output_typer  .ggufzSet model tokenizer)r  r  rI   r~  r=   r   	partitionr>   is_dirrl   naming_conventionrN   basenamefinetuneversionr  parentfill_templated_filenamer   r   r  )r   r|  r  r  fname_defaultr  s        r3   r  zTextModel.prepare_metadata  s     J 777'AACCAF:?44S99!< >  "" 	t N%)%;DM<NPTP]Pfhlhuh~  AE  AN  AV  X\  Xe  Xp  r}  T`  cd  Td  Td  JP  JP  jn  &o  &o  &o%)%;DM<NPTP]Pfhlhuh~  AE  AN  AV  cg  uy  FM  &N  &N  &N "^.E.E.EEDNN "^2T5QRVR`Regr5s5ssDN)***r2   c                   | j                             | j                   |                     g dd          x}7| j                             |           t
                              d|            |                     g dd          x}7| j                             |           t
                              d|            |                     g dd          x}7| j                             |           t
                              d|            |                     g d	d          x}7| j         	                    |           t
                              d
|            |                     ddgd          x}7| j         
                    |           t
                              d|            | j                            d          du r4| j                             d           t
                              d           | j                            d| j                  }|                    d          x}T|                    d          }t          j        j        }	|dk    rI|Gt          j        j        }	| j                             |	           | j                             |           n|dk    rA|>t          j        j        }	| j                             |	           | j                             |           | j                             |d                    |                    d          x}
| j                             |
           |                    d|                    d                    x}| j                             |           |                    d          x}| j                             |           |                    d          x}| j                             |           nu|dk    s|dk    r,t          j        j        }	| j                             |	           n=|dk    rn6|                                dk    rnt
                              d |            t
                              d!|	j                    d"| j        v r| j        d"         }t?          |          d#k     r(|                     d$           t?          |          d#k     (| j         !                    |d d#                    t
                              d%|d d#                     |                    d&          x}7| j         "                    |           t
                              d'|            | j                            d(i                               d&          x}7| j         #                    |           t
                              d)|            |                     d*d+gd          x}7| j         $                    |           t
                              d,|            |                     g d-d          x}7| j         %                    |           t
                              d.|            |                     d/d0gd          x}7| j         &                    |           t
                              d1|            |                     g d2d          x}7| j         '                    |           t
                              d3|            | j                            d4          x}7| j         (                    |           t
                              d5|            | j                            d6          x}7| j         )                    |           t
                              d7|            |                     g d8d          x}|d9k    r*| j         *                    t          j+        j,                   nB|d:k    r*| j         *                    t          j+        j-                   nt]          d;|           t
                              d<|            | j                            d=          x}4| j         /                    |           | j         0                    |           | j         1                    | j2                   t
                              d>| j2                    d S )?N)max_position_embeddingsn_ctxn_positions
max_lengthmax_sequence_lengthmodel_max_lengthTr  zgguf: context length = )hidden_sizen_embdr|   zgguf: embedding length = )prefix_dense_intermediate_sizeintermediate_sizen_inner
hidden_dimzgguf: feed forward length = )num_attention_headsn_headn_headszgguf: head count = num_key_value_heads
n_kv_headszgguf: key-value head count = 	is_causalFzgguf: causal attention = Falser  r  factorlinearyarnr  extrapolation_factorattention_factorattn_factor	beta_fast	beta_slowsulongropedynamicllama3zUnknown RoPE type: zgguf: rope scaling type = mrope_sectionr%   r   zgguf: mrope sections: r  zgguf: rope theta = r  zgguf: rope theta swa = rms_norm_epsnorm_epszgguf: rms norm epsilon = )layer_norm_epslayer_norm_epsilonnorm_epsilonzgguf: layer norm epsilon = r  r  zgguf: expert count = )num_experts_per_toknum_experts_per_tokentop_k_expertszgguf: experts used count = n_groupzgguf: expert groups count = 
topk_groupz!gguf: expert groups used count = )score_functionscoring_func
score_funcmoe_router_activationmoe_router_activation_funcexpert_selection_fnsigmoidsoftmaxz0Unsupported expert score gating function value: z%gguf: expert score gating function = head_dimzgguf: file type = )3rI   add_block_countrT   r   add_context_lengthr   r   add_embedding_lengthadd_feed_forward_lengthadd_head_countadd_head_count_kvrF   r   add_causal_attentionr  rl   RopeScalingTypeNONELINEARadd_rope_scaling_typeadd_rope_scaling_factorYARNadd_rope_scaling_orig_ctx_len add_rope_scaling_yarn_ext_factor!add_rope_scaling_yarn_attn_factoradd_rope_scaling_yarn_beta_fastadd_rope_scaling_yarn_beta_slowLONGROPEr:  rh  r   r   r  add_rope_dimension_sectionsadd_rope_freq_baseadd_rope_freq_base_swaadd_layer_norm_rms_epsadd_layer_norm_epsadd_expert_countadd_expert_used_countadd_expert_group_countadd_expert_group_used_countadd_expert_gating_funcExpertGatingFuncTypeSIGMOIDSOFTMAXr   add_key_lengthadd_value_lengthadd_file_typer=   )r   r  r  n_ffr  	n_head_kvrope_paramsr  rope_factorrope_gguf_typeyarn_ext_factoryarn_attn_factoryarn_beta_fastyarn_beta_slowr  r  r  	f_rms_eps
f_norm_epsr  n_experts_usedn_expert_groupsn_group_usedr,  r2  s                            r3   r  zTextModel.set_gguf_parameters  sC	   (()9:::%%  'S  'S  'S  ^b%  c  c  cE  p//666KK9%99:::&&'G'G'GRV&WWWFd11&999KK<F<<===$$%u%u%u  AE$  F  F  FD  S44T:::KK=t==>>>&&'S'S'S^b&cccFp++F333KK6f66777))+@,*OZ^)___Il..y999KKC	CCDDD<K((E1111%888KK8999 *../?AUVV$555IB%//(33K!16NH$$)@!%!5!< 66~FFF 88EEEEf$$)@!%!5!: 66~FFF 88EEE >>{Km?nooo'27M'N'NNO[$EEoVVV(38JKOO\iLjLj(k(kk$x$FFGWXXX&1ook&B&BBNO$DD^TTT&1ook&B&BBNO$DD^TTTd""i:&=&=!%!5!> 66~FFFFi''""h..@Y@@AAAKKJ^5HJJKKKd222 0AMm$$q(($$Q''' m$$q((88rr9JKKKKKDrr1BDDEEE%//,777JD//
;;;KK:j::;;; $ 4 8 89Lb Q Q U UVb c ccp334DEEEKKD2BDDEEE))>:*FQU)VVVIc33I>>>KK?I??@@@**+c+c+cnr*sssJ  A//
;;;KKBjBBCCC))+>*NY])^^^Ik--i888KK;	;;<<<"../p/p/p{.  A  A  AN  N22>BBBKKFnFFGGG#|//	:::OG33ODDDKKHHHIII L,,\:::LG88FFFKKJLJJKKK**  ,j  ,j  ,j  uy*  z  z  zJ  GY&& 778Q8YZZZZy(( 778Q8YZZZZ !`T^!`!`aaaKKL
LLMMM((444HA++H555--h777&&tz22255566666r2   c                .   t          | j        j                  dk    rt          d          |                     d           | j                            | j                   | j                                         | j                                         d S )Nr   z)Splitting the vocabulary is not supportedTr  r  )	r   rI   r   r   r  r  r>   r  r  r  s    r3   r  zTextModel.write_vocab  s    t'((A--HIII...--4>-BBB..000     r2   tokenstr | bytesc                   t          |t          t          f          r|                    d          }n@t          |t                    r)|                                                    d          }n|}|dv }|p)|                    d          o|                    d          }|p)|                    d          o|                    d          }|p)|                    d          o|                    d	          }|S )
Nr   r   )z<pad>z<mask>z<2mass>z[@BOS@]z<||>u   <｜u   ｜>z<unused>)r   bytes	bytearraydecode
memoryviewtobytesr  r  )r   re  
token_textseems_specials       r3   does_token_look_specialz!TextModel.does_token_look_special"  s   eeY/00 	w77JJz** 	///AAJJJ # '
 

 &d**?*?*E*E*c*J]J]^bJcJc%h**?*?*G*G*gJL_L_`fLgLg &h**?*?	*J*J*gzObObcfOgOgr2    tuple[list[str], list[int], str]c                    g }g }ddl m} |                    | j                  }| j                            dt          |j                            }t          |j        	                                          |k     sJ | 
                    |          }d |j                                        D             }|                                }|j        }	t          |          D ]}
|
|vr>|                    d|
 d           |                    t           j        j                   E||
         }||v r|	|
         j        sl|}|                    |                    |d                    }||k    r:t,                              t1          |           d	t1          |           d
           |	|
         j        s|                     |          r%|                    t           j        j                   nr|                    d                    d          d          }|                    t           j        j                   n$|                    t           j        j                   |                    |           |||fS )Nr   AutoTokenizer
vocab_sizec                    i | ]\  }}||	S r1   r1   r   encoded_tokid_s      r3   
<dictcomp>z,TextModel.get_vocab_base.<locals>.<dictcomp>E      ZZZ.>k3kZZZr2   [PAD]Fadd_special_tokens  is encoded and decoded back to  using AutoTokenizer   ▁r   r9  )transformersru  r  r;   rF   r   r   r  r=  r   get_vocab_base_prer   get_added_vocabadded_tokens_decoderr  r  rl   	TokenTyper/   
normalizedrl  encoder   r   reprspecialrq  r-   r  r.   r+   )r   tokenstoktypesru  	tokenizerrv  tokprereverse_vocabadded_vocabr  r/  re  previous_tokens                r3   get_vocab_basezTextModel.get_vocab_base:  s    ......!11$.AA	\%%lC	4H4HII
9?))++,,z9999((33ZZ)/BWBWBYBYZZZ//11(=z"" 	% 	%A%%kQkkk*** 56666*1-K'' 02= D). ) 0 01A1A%\a1A1b1b c c)U22"KK4+?+?  )C  )Caefkalal  )C  )C  )C  D  D  D+A.6 E$:V:VW\:]:] E (>???? !&o.D.DW.M.Ms S S (CDDDDOODN$9:::e$$$$x''r2   c                
   d}|                     |          }t          t          |                                                                                     }t                              d|            t                              d|            d }|dk    rd}|dk    rd}|dk    rd}|d	k    rd}|d
k    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|d k    rd!}|d"k    rd#}|d$k    rd%}|d&k    rd'}|d(k    rd)}|d*k    rd+}|d,k    rd-}|d.k    rd/}|d0k    rd1}|d2k    rd3}|d4k    rd5}|d6k    rd!}|d7k    rd8}|d9k    rd:}|d;k    rd<}|d=k    rd>}|d?k    rd@}|dAk    rd}|d2k    rdB}|dCk    rdD}|dEk    rdF}|d,k    rdG}|dHk    rdI}|dJk    rd}|dKk    rdL}|dMk    rdN}|dOk    rdP}|dQk    rdR}|dSk    rdT}|dUk    rdV}|dWk    rdX}|dYk    rdZ}|d[k    rd\}|d]k    rd^}|d_k    rd`}|dak    rdb}|dck    rdd}|dek    rdf}|dgk    rdh}|dik    rdj}|dkk    rdl}|dmk    rdn}|dok    rdp}|dqk    rdr}|dsk    rdt}|duk    rdv}|dwk    rdx}|dyk    rdz}|d{k    rd|}|d}k    rd~}|dk    rd}|dk    rd}|dk    rd}|dk    rd#}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|dk    rd}|Jt                              d           t                              d           t                              d           t                              d           t                              d           t                              d           t                              d           t                              d           t                              d           t                              d|            t                              d           t                              d           t          d          t                              dt          |                      t                              d|            |S )Nu  
 

 


 	 		 	
  
   
    
     
🚀 (normal) 😶‍🌫️ (multiple emojis concatenated) ✅ 🦙🦙 3 33 333 3333 33333 333333 3333333 33333333 3.3 3..3 3...3 កាន់តែពិសេសអាច😁 ?我想在apple工作1314151天～ ------======= нещо на Български ''''''```````""""......!!!!!!?????? I've been 'told he's there, 'RE you sure? 'M not sure I'll make it, 'D you like some tea? We'Ve a'lLzchktok: zchkhsh: @b6e8e1518dc4305be2fe39c313ed643381c4da5db34a98f6a04c093f8afbe99bzchatglm-bpe@81d72c7348a9f0ebe86f23298d37debe0a5e71149e29bd283904c02262b27516@a1336059768a55c99a734006ffb02203cd450fed003e9a71886c88acf24fdbc2glm4@9ca2dd618e8afaf09731a7cf6e2105b373ba6a1821559f258b272fe83e6eb902@cdf5f35325780597efd76153d4d1c16778f766173908894c04afc20108536267@1431a23e583c97432bc230bff598d103ddb5a1f89960c8f1d1051aaa944d0b35z
minerva-7b@7e57df22b1fe23a7b1e1c7f3dc4e3f96d43a4eb0836d0c6bdc3436d7b2f1c664hunyuan@bba3b3366b646dbdded5dbc42d59598b849371afc42f7beafa914afaa5b70aa6zhunyuan-dense@a6b57017d60e6edb4d88ecc2845188e0eb333a70357e45dcc9b53964a73bbae6z	falcon-h1@60476e1243776c4fb1b993dbd7a5f15ac22f83c80afdf425fa5ae01c8d44ef86@3eda48b4c4dc7de733d1a8b3e3b4a85243dbbf704da2ee9d42c6beced8897896@48f8e02c0359c0bbdd82f26909171fac1c18a457bb47573ed1fe3bbb2c1cfd4b@81212dc7cdb7e0c1074ca62c5aeab0d43c9f52b8a737be7b12a777c953027890zkimi-k2@d4540891389ea895b53b399da6ac824becc30f2fba0e9ddbb98f92e55ca0e97cqwen2@1444df51289cfa8063b96f0e62b1125440111bc79a52003ea14b6eac7016fd5fqwen35@66b8d4e19ab16c3bfd89bce5d785fb7e0155e8648708a1f42077cb9fe002c273zgrok-2@b3d1dd861f1d4c5c0d2569ce36baf3f90fe8a102db3de50dd71ff860d91be3dfz
jina-v2-de@0fe1cf6eda062318a1af7270f3331a85c539a01778ff948e24388e949c5282f4zgpt-2@9e454714343b69b99b71795c1d27a68c2a1d15dab111f4d353109f966af29da7lfm2@0ef9807a4087ebef797fc749390439009c3b9eda9ad1a097abbe738f486c01e5z	llama-bpe@049ecf7629871e3041641907f3de7c733e4dbfdc736f57d882ba0b0845599754zdeepseek-llm@347715f544604f9118bb75ed199f68779f423cabb20db6de6f31b908d04d7821zdeepseek-coder@8aeee3860c56296a157a1fe2fad249ec40aa59b1bb5709f4ade11c4e6fe652edfalcon@0876d13b50744004aa9aeae05e7b0647eac9d801b5ba4668afc01e709c15e19fzbert-bge@9d032fcbd5501f4a38150912590928bfb36091efb5df11b8e2124b0390e3fb1efalcon3@8e62295832751ca1e8f92f2226f403dea30dc5165e448b5bfa05af5340c64ec7zbert-bge-large@b6dc8df998e1cfbdc4eac8243701a65afe638679230920b50d6f17d81c098166mpt@35d91631860c815f952d711435f48d356ebac988362536bed955d43bfa436e34	starcoder@3ce83efda5659b07b1ad37ca97ca5797ea4285d9b9ab0dc679e4a720c9da7454@32d85c31273f8019248f2559fed492d929ea28b17e51d81d3bb36fff23ca72b3	stablelm2@6221ad2852e85ce96f791f476e0b390cf9b474c9e3d1362f53a24a06dc8220ffrefact@9c2227e4dd922002fb81bde4fc02b0483ca4f12911410dee2255e4987644e3f8z	command-r@d772b220ace2baec124bed8cfafce0ead7d6c38a4b65ef11261cf9d5d62246d1tiny_aya@52df12b4c8d4176e7481aab4b6e8454d1fd0a210a04a574f6d4e067d10e23c3e
cohere2moe@e636dc30a262dcc0d8c323492e32ae2b70728f4df7dfe9737d9f920a282b8aeaolmo@a8594e3edff7c29c003940395316294b2c623e09894deebbc65f33f1515df79edbrx@c7699093ba4255a91e702aa38a596aa81669f3525dae06c2953267dde580f448z
jina-v1-enz
jina-v2-en@171aeeedd6fb548d418a7461d053f11b6f1f1fc9b387bd66640d28a4b9f5c643z
jina-v2-es@27949a2493fc4a9f53f5b9b029c82689cfbe5d3a1929bb25e043089e28466de6@a023e9fdc5a11f034d3ef515b92350e56fb2af1f66c6b6811a4444ea9bf8763dzjina-v5-nano@c136ed14d01c2745d4f60a9596ae66800e2b61fa45643e72436041855ad4089dz	smaug-bpe@c7ea5862a53e4272c035c8238367063e2b270d51faa48c0f09e9d5b54746c360z	poro-chat@7967bfa498ade6b757b064f31e964dddbb80f8f9a4d68d4ba7998fcf281c531azjina-v2-code@7fc505bd3104ca1083b150b17d088b59534ede9bde81f0dd2090967d7fe52ceeviking@b53802fb28e26d645c3a310b34bfe07da813026ec7c7716883404d5e0f8b1901jais@bc5108ee1eb6a3d600cadd065f63190fbd0554dbc9e4bbd6a0d977970afc8d2azjais-2@7b3e7548e4308f52a76e8229e4e6cc831195d0d1df43aed21ac6c93da05fec5f	codeshell@63b97e4253352e6f357cc59ea5b583e3a680eaeaf2632188c2b952de2588485etekken@855059429035d75a914d1eda9f10a876752e281a054a7a3d421ef0533e5b6249smollm@3c30d3ad1d6b64202cd222813e7736c2db6e1bd6d67197090fc1211fbc612ae7bloom@bc01ce58980e1db43859146dc51b1758b3b88729b217a74792e9f8d43e479d21zgpt3-finnish@4e2b24cc4770243d65a2c9ec19770a72f08cffc161adbb73fcbb6b7dd45a0aaeexaone@fcace8b9cac38ce847670c970cd5892031a753a1ef381abd1d9af00f713da085zphi-2@60824e3c0d9401f89943cbb2fff727f0e2d4c545ba4df2d6e4f09a6db0f5b450	chameleon@8b5a93ed704057481f240da0be7e7dca721d7f8f4755263b6807227a2cbeae65zroberta-bpe@ad851be1dba641f2e3711822f816db2c265f788b37c63b4e1aeacb9ee92de8ebgigachat@d4c8f286ea6b520b3d495c4455483cfa2302c0cfcd4be05d781b6a8a0a7cdaf1megrez@877081d19cf6996e2c4ff0e1236341e9b7bde288f5311a56a937f0afbbb3aeb5zdeepseek-v3@b3f499bb4255f8ca19fccd664443283318f2fd2414d5e0b040fbdd0cc195d6c5zdeepseek-r1-qwen@ccc2ef013c104be7bae2965776d611e1d7a8a2a9c547dd93a682c9a9fc80352ezgpt-4o@7dec86086fcc38b66b7bc1575a160ae21cf705be7718b9d5598190d7c12db76fsuperbpe@1994ffd01900cfb37395608534236ecd63f2bd5995d6cb1004dda1af50240f15trillion@96a5f08be6259352137b512d4157e333e21df7edd3fcd152990608735a65b224
bailingmoe@d353350c764d8c3b39c763113960e4fb4919bea5fbf208a0e3b22e8469dc7406llama4@0e9433cbbb161f89e264eb32e8e64bfe69e834973ffca5d41d3948a604a3e2a3pixtral@d5f1dd6f980fec569fb218a81a7658ac45fc56b38c5a0adeb1c232fbe04ef5ecz
seed-coder@b0a6b1c0bd5998ebd9df08611efde34a4ff03faed45ae09c43e6b31ebd4b94cfza.x-4.0@f6791d196f87ce6b56a7d234be618e0d58f8cda3549416635b2bebcd22cd95c4zmidm-2.0@169bf0296a13c4d9b7672313f749eb36501d931022de052aad6e36f2bf34dd51@2085e1638f6c377a0aa4ead21b27bb4cb941bf800df86ed391011769c1758dfbexaone4@a1e163ecab2e718a4c829d1148b6e86824ec36163bb71941c3dca9cd5ac25756mellum@a0b64b4385f123663873756336c085744376d015ff328bb1d901598f63c44152zmodern-bert@49fc0303c9e0d2c2c565c510f64b2d9b271276acdcdadff733249eda9f7d59dfafmoe@9b1be57e70d20d9501b2b3186e792d81181ae36ada3903c26f9fea418cf87206bailingmoe2@53e325976a6e142379c19b09afcae354f2f496f147afa8f9e189a33fe4e3024ezgranite-docling@f4f37b6c8eb9ea29b3eac6bb8c8487c5ab7885f8d8022e67edc1c68ce8403e95z
minimax-m2@4a2e2abae11ca2b86d570fc5b44be4d5eb5e72cc8f22dd136a94b37da83ab665kormo@9d70134b369a70e5735009b6de918f7581b5211f7c074d1f89f753aea8248af1youtu@16389f0a1f51ee53e562ffd51c371dc508639ab0e4261502071836e50e223e91z
solar-open@6c81ce329e0802883b22eabab0d3fa48357337ef1ecb45443828bf1f6254833fz
exaone-moe@d30d75d9059f1aa2c19359de71047b3ae408c70875e8a3ccf8c5fba56c9d8af4@b4b8ca1f9769494fbd956ebc4c249de6131fb277a4a3345a7a92c7dd7a55808dz	joyai-llm@e4d54df1ebc1f2b91acd986c5b51aa50837d5faf7c7398e73c1f9e9ee5d19869kanana2@862f827721df956049dff5ca81a57f29e575280bc622e290d3bf4e35eca29015f2llmv2@62f6fb0a6fd5098caeabb19b07a5c1099cafc8b9c40eab6ea89ece4ec02fbc57z
sarvam-moe@f728162c1315c26e40249849799b4ba3fe584c32084b4795b03eb295e63cb5aftalkie@36f3066e97b7f3994b379aaacde306c1444c6ae84e81a5ae3cd2b7ed3b8c42d4minicpm5@f241072145675bf8322086f115aebad05e9f869557a238bf2150a2a417d1bf60zgranite-embed-multi-97m@789696f5946cc0fc59371f39f6097cafed196b3acded6140432f26bbb1ae1669zgranite-embed-multi-311m@9dcf830ee9990cdbf78cc523a5f7bd9ad8f3f9890c2d3581d2785ad10f07049dmellum2
zV**************************************************************************************z5** WARNING: The BPE pre-tokenizer was not recognized!z2**          There are 2 possible reasons for this:zN**          - the model has not been added to convert_hf_to_gguf_update.py yetz>**          - the pre-tokenization config has changed upstreamz`**          Check your model files and convert_hf_to_gguf_update.py and update them accordingly.z;** ref:     https://github.com/ggml-org/llama.cpp/pull/6920z**z** chkhsh:  zBBPE pre-tokenizer was not recognized - update get_vocab_base_pre()ztokenizer.ggml.pre: )	r  r   r   	hexdigestr   debugrh  rA  r  )r   r  chktxtchktokchkhshress         r3   r  zTextModel.get_vocab_base_prej  s    d!!&))F**,,--7799((()))((()))
 WWWCWWWCWWWCWWWCWWWCWWWCWWWCWWW!CWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWW CWWW"CWWWCWWWCWWWCWWW"CWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWW CWWWCWWWCWWW CWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWW CWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWW$CWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWW#CWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWWCWWW+CWWW,CWWWC;NN4   NNstttNNRSSSNNOPPPNNklllNN[\\\NN}~~~NNXYYYNN4   NN2&22333NNstttNN4   %&jkkk7DII77888((()))
r2   Nonec                :    | j                             d           d S )Nnone)rI   add_tokenizer_modelr  s    r3   _set_vocab_nonezTextModel._set_vocab_none  s    ,,V44444r2   c                p   |                                  \  }}}| j                            d           | j                            |           | j                            |           | j                            |           t          j        | j        d          }|	                    | j                   d S )Ngpt2Tload_merges
r  rI   r#  add_tokenizer_preadd_token_listadd_token_typesrl   SpecialVocabr;   add_to_gguf)r   r  r  r  special_vocabs        r3   r  zTextModel._set_vocab_gpt2  s    #'#6#6#8#8 &,,V444**6222''///((222)$.dKKK!!$"233333r2   c                p   |                                  \  }}}| j                            d           | j                            d           | j                            |           | j                            |           t          j        | j        d          }|	                    | j                   d S )N
whitespaceTr'  r)  )r   r  r  r   r/  s        r3   _set_vocab_whitespacezTextModel._set_vocab_whitespace  s    "1133!,,\:::**<888''///((222)$.dKKK!!$"233333r2   c                (   ddl m} |                    | j        d          }| j                            dt          |j                            }t          |j        	                                          |k     sJ d |j        
                                D             }|j        D ]}|dz   ||j        |         <   |                                }|j        }g }g }	t          |          D ]}
|
|vr>|                    d|
 d	           |	                    t"          j        j                   D||
         }||v rl||
         j        s|                     |          r%|	                    t"          j        j                   nI|	                    t"          j        j                   n$|	                    t"          j        j                   |                    |           |                     |          }| j                            d
           | j                            |           | j                            |           | j                            |	           t#          j        | j        d          }|                     | j                   d S )Nr   rt  Tr  rv  c                    i | ]\  }}||	S r1   r1   rx  s      r3   r{  z2TextModel._set_vocab_hybriddna.<locals>.<dictcomp>  r|  r2   u   r}  r~  	hybriddnar'  )!r  ru  r  r;   rF   r   r   r  r=  r   r   kmersdna_token_to_idr  r  r  r  rl   r  r/   r  rq  r-   r.   r+   r  rI   r#  r*  r+  r,  r-  r.  )r   ru  r  rv  r  kmerr  r  r  r  r/  re  r  r/  s                 r3   _set_vocab_hybriddnazTextModel._set_vocab_hybriddna  s   ......!11$.TX1YY	\%%lC	4H4HII
9?))++,,z9999ZZ)/BWBWBYBYZZZ O 	M 	MD=AH_M)3D9:://11(= z"" 	% 	%A%%kQkkk*** 56666*1-K''+A.6 E$:V:VW\:]:] E (>???? (CDDDDOODN$9:::e$$$$((33,,[999**6222''///((222)$.dKKK!!$"233333r2   c           	        ddl m} | j        }| j        }g }g }ddlm} |                    |d          }|d         }t          |                                	                                          |k     sJ | 
                    |          }	g }
i }|j        }|                                D ]\  }}|||                    |          <   t          |          dk    r1|                    |||          }t          |          d	k    sJ |
                    d
                    t%          |j        |                               |j        }d i ||                                D             }t)          |          D ]}||vr>|                    d| d           |                    t*          j        j                   D||         |v r@|                    ||                    |                    t*          j        j                   |                    ||                    |                    t*          j        j                   | j                            d           | j                            |	           | j                            |           | j                            |           t+          j        |d          }|
|_         t          |j!                  dk    rB|"                    d|j        d                    |"                    d|j        d                    |"                    d|j        d                    |#                    | j                   d S )Nr   )	QwenModelr   rt  Tr  rv  )max_rankr#   r9  c                    i | ]\  }}||	S r1   r1   rx  s      r3   r{  z-TextModel._set_vocab_qwen.<locals>.<dictcomp>  s    ddd/?{C{dddr2   r}  r~  r&  Fr'  bos<|endoftext|>eosunk)$qwenr;  r;   rF   r  ru  r  r=  	get_vocabr   r  mergeable_ranksr   token_bytes_to_stringr   bper  rj  mapspecial_tokensr  rl   r  r/   r-   r+   rI   r#  r*  r+  r,  r-  mergesspecial_token_ids_set_special_tokenr.  )r   r;  r;   rF   r  r  ru  r  rv  r  rI  r  rD  re  rankr!  r  r  r/  r/  s                       r3   _set_vocab_qwenzTextModel._set_vocab_qwen  s_   ######N	, ......!11)t1TT	\*
9&&((//1122Z????((33#3*0022 	R 	RKE4<@E)11%8895zzQ]]?ED]IIFv;;!####MM#((3y'F#O#OPPQQQQ  .ddC[eC[{C[CaCaCcCcdddz"" 		7 		7A%%kQkkk*** 56666q![00mA./// 67777mA./// 56666,,V444**6222''///((222))GGG%}.//144,,UI4L_4]^^^,,UI4L_4]^^^((	0H0YZZZ!!$"233333r2   Tc                   |                                  \  }}}| j                            d           | j                            d           | j                            |           | j                            |           | j                            |           t          j        | j	        t          |                    }|                    | j                   d S Nllamadefault)n_vocab)_create_vocab_sentencepiecerI   r#  r*  r+  add_token_scoresr,  rl   r-  r;   r   r.  )r   r.  r  scoresr  r/  s         r3   _set_vocab_sentencepiecez"TextModel._set_vocab_sentencepiece  s    #'#C#C#E#E ,,W555**9555''///))&111((222)$.#f++NNN!!$"233333r2   c           
     ~
   ddl m} | j        dz  }|                                st	          d|            |            }|                    t          |                     |                     ddgd          p|                                }d	 t          |          D             }d
g|z  }t          j        g|z  }t          |                                          D ]}||k    r%t                              d| d|dz
               n|                    |          }	|	                    d          }
|                    |          }t          j        }|                    |          rt          j        }ne|                    |          rt          j        }nC|                    |          rt          j        }n!|                    |          rt          j        }|
||<   |||<   |||<   | j        dz  }|                                rt3          |dd          5 }t5          j        |          }|D ]`}||         }||k    r$t                              d| d|dz
              4|                    d          ||<   d||<   t          j        ||<   a	 d d d            n# 1 swxY w Y   | j        dz  }|                                rt3          |dd          5 }t5          j        |          }|                    di           }|                                D ]G\  }}t?          |          }|d         }||k    r$t                              d| d|dz
              G||         t          j        k    r[||         |                    d          k    r<t                              d| d||                              d          d|           |                    d          s| !                    |          rt          j        ||<   n8|"                    d                     d          d          }t          j        ||<   d||<   |                    d          ||<   I	 d d d            n# 1 swxY w Y   |tG          |          k    r|tG          |          z
  }t          $                    d| d| d           t          d|dz             D ]^}|%                    tM          d | dd                     |%                    d           |%                    t          j                   _|||fS )!Nr   )SentencePieceProcessorztokenizer.modelzFile not found: vocab_size_per_layer_inputrv  Tr  c                @    g | ]}d | d                     d          S )r}  r~  r   )r  )r   r/  s     r3   rr  z9TextModel._create_vocab_sentencepiece.<locals>.<listcomp>;  s.    VVVq{a{{{11'::VVVr2   g     zignore tokens from z: id is out of range, max=r   r   zadded_tokens.jsonr   r   zignore token      @tokenizer_config.jsonr  contentzreplacing token r  z -> r  r  r9  Padding vocab with  token(s) - [PAD1] through [PADr~  r}  )'sentencepiecerX  r;   r   FileNotFoundErrorLoadFromFiler   r   rv  r  r"   r/   r   rh  	IdToPiecer  GetScorer+   	IsUnknownr,   	IsControlr-   IsUnusedIsByter0   r   r   r   r.   r   r   rS   rl  rq  r  r   r  r  rj  )r   rX  tokenizer_pathr  rv  r  rU  r  token_idpiecetextscoretoktypeadded_tokens_filer   added_tokens_jsonr   tokenizer_config_filetokenizer_config_jsonr  
token_datare  	pad_countr/  s                           r3   rS  z%TextModel._create_vocab_sentencepiece+  sK   888888*;;%%'' 	I#$G~$G$GHHH**,,	s>22333%%('
  &   4 '1133 	
 WVE*DUDUVVV'j:56=>Ki224455 	) 	)H:%%iXiiYcfgYgiijjj''11E<<((D&&x00E-4G""8,, 719$$X.. 719##H-- 718!!(++ 716#F8$F8!(HX N-@@$$&& 	N'w??? 
N1$(IaLL!, N NC05H:--'kx'k'k[ehi[i'k'klll '*zz'':':F8$'.F8$)@)MHX&&N
N 
N 
N 
N 
N 
N 
N 
N 
N 
N 
N 
N 
N 
N 
N !%1H H ((** 	=+S7CCC =q(,	!%'<'@'@AWY['\'\$,@,F,F,H,H = =(Hj"8}}H!+I!6E:--'kx'k'k[ehi[i'k'klll )-D-KKK!(+u||G/D/DDD"NN+{h+{+{&QYJZJaJabiJjJj+{+{rw+{+{|||!~~i00 RD4P4PQV4W4W R-D-L** %o.D.DW.M.Ms S S-D-Q*'.F8$',||G'<'<F8$$!== = = = = = = = = = = = = = =* F##"S[[0ILLeyeeYbeeefff1i!m,, @ @eK1KKK'BBBCCCg&&& 7 >????vx''s&   !A8J&&J*-J*"FQ77Q;>Q;c                   t          j        | j                  }g }g }g }|                                D ]E\  }}}|                    |           |                    |           |                    |           Ft          |          |j        k    sJ | j                            d           | j        	                    d           | j        
                    |           | j                            |           | j                            |           t          j        | j        t          |                    }|                    | j                   d S rO  )rl   LlamaHfVocabr;   
all_tokensr  r   rv  rI   r#  r*  r+  rT  r,  r-  r.  )	r   r  r  rU  r  rl  rm  rn  r/  s	            r3   _set_vocab_llama_hfzTextModel._set_vocab_llama_hf  sE   !$.11$)$4$4$6$6 	% 	% D%MM$MM%   OOG$$$$6{{e.....,,W555**9555''///))&111((222)$.#f++NNN!!$"233333r2   c           	     8   | j         dz                                  sJ | j                            dd          }d                    d          g}t
          j        j        g}t          | j         dz  dd          5 }|	                                }|D ],}|
                    d          }t          |          d	k    sJ t          j        d                    |d
d                             t          |d                   }	}t!          |t"                    r|                    d          n|}t!          |t$                    sJ t          |          |	k    sJ t'          |          dd         }
|                    |
                    d                     |                    t
          j        j                   .	 d d d            n# 1 swxY w Y   |t          |          z
  }|dk    sJ t-          t          |          |          D ]R}|                    d| d                    d                     |                    t
          j        j                   S| j                            d           | j                            |           | j                            |           t          j        | j         d          }|j        t=          t>                    j         j         dz  dz  dz  }|                                r?t          |dd          5 }|!                                }d d d            n# 1 swxY w Y   nd}||_        |"                    dd           d|j#        d<   d|j#        d<   |$                    | j                   d S )Nzrwkv_vocab_v20230424.txtrv  i   z<s>r   r   r   r9  r$   r   r)  r#   r   r}  r~  rwkvFr'  models	templateszllama-cpp-rwkv-world.jinjaz
rwkv-worldeoti  r>  r@  )%r;   r   rF   r   r  rl   r  r-   r   	readlinesr>  r   astliteral_evalrj  rS   r   r   rj  r  r  r+   r  r/   rI   r#  r+  r,  r-  chat_templater   __file__r  readrK  rJ  r.  )r   rv  r  r  r   lineslinepartsre  	token_lenro  	remainderr/  r/  template_pathtemplates                   r3   _set_vocab_rwkv_worldzTextModel._set_vocab_rwkv_world  s   !;;DDFFFFF\%%lE::
$||G445#~56$.#==sWUUU 	7YZKKMME 	7 	7

35zzQ#&#3CHHU1R4[4I4I#J#JCPUVXPYNNy1;E31G1GRW---U!%/////5zzY...."&u++ad"3
j//88999 56666	7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 V,	A~~~~s6{{J// 	3 	3AMM++++,,W55666OODN12222,,V444''///((222)$.eLLL&. NN188CkQTppM$$&& (-w??? (1 vvxxH( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (*2M'((44412'.12'.!!$"233333s%   <EGGG MMMrK    Literal['gpt-neox', 'llama-spm']rv  rS   c                
   t          t          j        d                   dz  d| dz  }t                              dt
          j                            |t          j                               d           t          j	        |d          }|dk    rd	nd
}|
                    t          j        j        j                  sJ | j                            t!          j        d                                       d                     |
                    t          j        j        j                  | j                            r-t!          j        d                                       d          n|           |
                    t          j        j        j                  sJ | j                            fdj        D             d |                    |dk    r`|
                    t          j        j        j                  sJ | j                            fdj        D             d |                    |
                    t          j        j        j                  sJ | j                            fdj        D             d |                    |dk    rX|
                    t          j        j        j                  sJ | j                            fdj        D                        |
                    t          j        j        j                  x=| j                            j        d                                          d                    |
                    t          j        j        j!                  x=| j        "                    j        d                                          d                    |
                    t          j        j        j#                  x=| j        $                    j        d                                          d                    |
                    t          j        j        j%                  x=| j        &                    j        d                                          d                    |
                    t          j        j        j'                  x=| j        (                    j        d                                          d                    |
                    t          j        j        j)                  x?| j        *                    j        d                                          d                    d S d S )Nr   r{  zggml-vocab-r  zUsing tokenizer from 'r   r   zgpt-neoxr  rQ  r)  r   c                D    g | ]}t          j        |                   S r1   rj  r  r   r/  fields     r3   rr  z0TextModel._set_vocab_builtin.<locals>.<listcomp>  s'    (S(S(S1u{1~)>)>(S(S(Sr2   z	llama-spmc                Z    g | ]'}j         |                                         d          (S r   r  rR  r  s     r3   rr  z0TextModel._set_vocab_builtin.<locals>.<listcomp>  s0    .^.^.^au{1~/D/D/F/Fq/I.^.^.^r2   c                Z    g | ]'}j         |                                         d          (S r  r  r  s     r3   rr  z0TextModel._set_vocab_builtin.<locals>.<listcomp>  s0    )Y)Y)Y%+a.*?*?*A*A!*D)Y)Y)Yr2   c                D    g | ]}t          j        |                   S r1   r  r  s     r3   rr  z0TextModel._set_vocab_builtin.<locals>.<listcomp>  s'    .Y.Y.YuU[^/D/D.Y.Y.Yr2   )+r   sysrc   r   rh  r  relpathgetcwdrl   
GGUFReader	get_fieldKeys	Tokenizerrz  rI   r#  rj  r  rl  PREr*  LISTr+  r   SCORESrT  
TOKEN_TYPEr,  MERGESadd_token_mergesBOS_IDadd_bos_token_idrR  EOS_IDadd_eos_token_idUNK_IDadd_unk_token_idPAD_IDadd_pad_token_idADD_BOSadd_add_bos_tokenADD_EOSadd_add_eos_token)r   rK   rv  ri  vocab_readerdefault_prer  s         @r3   _set_vocab_builtinzTextModel._set_vocab_builtin  s   chqk**X58Wj8W8W8WW_PRPYP[P[0\0\___```~s;;)Z77eeY&&ty':'@AAu,,U5;r?-C-C-J-J7-S-STTT&&ty':'>??**UZ+k5R+A+A+H+H+Q+Q+Q`klll&&ty':'?@@u''(S(S(S(S
(S(S(ST_U_T_(`aaa$$ **49+>+EFFELL5--.^.^.^.^SXS].^.^.^_j`j_j.klll&&ty':'EFFu(()Y)Y)Y)Yej)Y)Y)YZe[eZe)fggg$$ **49+>+EFFELL5--.Y.Y.Y.Yej.Y.Y.YZZZ!++DI,?,FGGGET--ek"o.D.D.F.Fq.IJJJ!++DI,?,FGGGET--ek"o.D.D.F.Fq.IJJJ!++DI,?,FGGGET--ek"o.D.D.F.Fq.IJJJ!++DI,?,FGGGET--ek"o.D.D.F.Fq.IJJJ!++DI,?,GHHHEU..u{2/E/E/G/G/JKKK!++DI,?,GHHHEU..u{2/E/E/G/G/JKKKKK VUr2   c                   d }| j         dz  }|                                rgt          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   |D ]'}|d                             d          r
|d         } n(t          j        j        t          j        j	        t          j        j
        d}|
t          | j         |z  dz  d          5 }t          j        |          }d d d            n# 1 swxY w Y   |                    d	          rt          j        j        }n|                    d
          rt          j        j	        }nX|                    d          rt          j        j
        }n1|                    d          x}	|v r	||	         }nt          d          | j                            |           d S d S )Nzmodules.jsonr   r   re   Poolingrc   )meanr   	lasttokenr  pooling_mode_mean_tokenspooling_mode_cls_tokenpooling_mode_lasttokenpooling_modez0Only MEAN, CLS, and LAST pooling types supported)r;   r   r   r   r   r  rl   PoolingTypeMEANCLSLASTr   rA  rI   add_pooling_type)
r   pooling_pathmodule_pathr   modulesmodmode_mappingpoolingpooling_typer  s
             r3   _try_set_pooling_typezTextModel._try_set_pooling_type  sJ   n~5   	kG444 ')A,,' ' ' ' ' ' ' ' ' ' ' ' ' ' '  v;''	22 #&v;LE
 $)#').
 
 #dn|3mCgVVV 'Z[)A,,' ' ' ' ' ' ' ' ' ' ' ' ' ' '{{566 	^#/4566 ^#/3566 ^#/4")++n"="==,,NN+L9)*\]]]--l;;;;; $#s#   AAAC;;C?C?c                    ddl m} |                    | j                  }t	          j        | j        d          }|                                 \  }}}| j                            d           | j        	                    |           | j        
                    |           | j                            |           |                    d|                                d                    |                    d|                                d	                    |                    d
|                                d                    |                    d|                                d                    |                    | j                   d S )Nr   rt  Tr'  r&  r@  r?  r}  <|user|>rA  r>  r  ru  r  r;   rl   r-  r  rI   r#  r*  r+  r,  rK  r  r.  r   ru  r  r/  r  r  r  s          r3   _set_vocab_glmedgezTextModel._set_vocab_glmedge  sm   ......!11$.AA	)$.dKKK#'#6#6#8#8 &,,V444**6222''///((222((	0I0I0K0KO0\]]]((	0I0I0K0KJ0WXXX((	0I0I0K0KO0\]]]((	0I0I0K0KO0\]]]!!$"233333r2   c                    ddl m} |                    | j                  }t	          j        | j        d          }|                                 \  }}}| j                            d           | j        	                    |           | j        
                    |           | j                            |           |                    d|                                d                    |                    d|                                d	                    |                    d
|                                d                    |                    d|                                d                    |                    | j                   d S )Nr   rt  Tr'  r&  r>  z[gMASK]r}  r  rA  r?  eomz<|observation|>r  r  s          r3   _set_vocab_glmzTextModel._set_vocab_glm&  sp   ......!11$.AA	)$.dKKK#'#6#6#8#8 &,,V444**6222''///((222 	((	0I0I0K0KI0VWWW((	0I0I0K0KJ0WXXX((	0I0I0K0KO0\]]]((	0I0I0K0KL]0^___!!$"233333r2   c                8   g }g }ddl m} |                    | j        d          }t	          |d|                                          }| j                            dt          |                    }t          |
                                          |k     sJ |                     |          }d |                                D             }|                                }	|j        }
t          |          D ]o}||vr>|                    d| d	           |                    t"          j        j                   E||         }||	v r|
|         j        sl|}|                    |                    |d
                    }||k    r:t.                              t3          |           dt3          |           d           |
|         j        s|                     |          r%|                    t"          j        j                   nI|                    t"          j        j                   n$|                    t"          j        j                   |                    |           q| j                             d           | j        !                    |           | j        "                    |           | j        #                    |           t#          j$        | j        d          }|%                    dd           |&                    | j                   d S )Nr   rt  Tr  r  rv  c                    i | ]\  }}||	S r1   r1   rx  s      r3   r{  z1TextModel._set_vocab_interns1.<locals>.<dictcomp>C  s    PPP.>k3kPPPr2   r}  r~  Fr  r  r  r&  r'  r>  i[P )'r  ru  r  r;   getattrrC  rF   r   r   r=  r   r  r   r  r  r  r  rl   r  r/   r  rl  r  r   r   r  r  rq  r-   r.   r+   rI   r#  r*  r+  r,  r-  rK  r.  )r   r  r  ru  r  r  rv  r  r  r  r  r/  re  r  r/  s                  r3   _set_vocab_interns1zTextModel._set_vocab_interns17  s    ......!11$.TX1YY		7I,?,?,A,ABB\%%lCJJ??
5<<>>""Z////((33PP%++--PPP//11(=z"" 	% 	%A%%kQkkk*** 56666*1-K'' 02= D). ) 0 01A1A%\a1A1b1b c c)U22"KK4+?+?  )C  )Caefkalal  )C  )C  )C  D  D  D+A.6 E$:V:VW\:]:] E (>???? (CDDDDOODN$9:::e$$$$,,V444**6222''///((222)$.dKKK((777!!$"233333r2   c                   ddl m} t          st          t                    t          | j                  }t                              d|j	         d|j
         d           | j                            |j                   g }g }g }|                                D ]E\  }}}|                    |           |                    |           |                    |           Ft!          |          |j
        k    s#J dt!          |           d|j
         d            |j	        t"          j        k    rF| j                            d	           | j                            |                                           t                              d
|j         d|j         d|j         d|j         d	           | j                            |j                   | j                            |j                   | j                            |j                   | j                            |j                   | j                            |           | j                            |           | j                             |           | j        !                    |j
                   | j        "                    d           | j        #                    d           | j        dz  }	| j$        rm|	%                                rYt                              d           tM          |	dd          5 }
|
'                                }d d d            n# 1 swxY w Y   n| j$        r| j(        s_tS          tT                    j+        j+        dz  }| j$        rt                              d           |,                    ||| j$                  }nt                              d           d }|| j        -                    |           d S d S )Nr   )MistralModelzConverting tokenizer z	 of size r0  ztoken count (z) != vocab size ()r  z+Setting bos, eos, unk and pad token IDs to r  TFzchat_template.jinjaz.Using an existing Mistral local chat template.r   r   r   zmodels/templates/zUsing a Mistral community chat template. These templates can be subject to errors in early days or weeks after a release. Mistral recommends to use `mistral-common` to perform tokenization and detokenization.zNot using a Mistral local or community chat template. Ensure to perform the tokenization and detokenization via `mistral-common`.).mistralr  ri   rj   rk   r   r;   r   r   tokenizer_typerv  rI   r#  gguf_tokenizer_modelrw  r  r   r   r  r*  r  extract_vocab_merges_from_modelbos_ideos_idunk_idpad_idr  r  r  r  r+  rT  r,  add_vocab_sizer  r  rV   r   r   r  rW   r   r  r  get_community_chat_templateadd_chat_template)r   r  r  r  rU  r  rl  rm  rn  local_template_file_pathr   r  template_dirs                r3   _set_vocab_mistralzTextModel._set_vocab_mistralh  s@   ))))))( 	97888T^,,VE$8VV5CSVVV	
 	
 	
 	,,U-GHHH$)$4$4$6$6 	% 	% D%MM$MM%   OOG$$$$6{{e....MCKKMM%:JMMM /.. #7#>>>..x888--5577   	y%,yy%,yyZ_Zfyyjojvyyy	
 	
 	
 	))%,777))%,777))%,777))%,777''///))&111((222''(8999**4000**5111#'>4I#I ! 	&>&F&F&H&H 	 KKHIII.gFFF $!6688$ $ $ $ $ $ $ $ $ $ $ $ $ $ $' 	t/[ 	>>07:MML % m   $??|UYUkllHHKK  \  ]  ]  ]H..x88888  s   M  MMc                
   | j         dz  }| j         dz  }|                                st          d|           t          |dd          5 }t	          j        |          }d d d            n# 1 swxY w Y   g }g }g }t          |dd          5 }t          |          D ]\  }}	|	                                rt	          j        |	          }
|
d         	                    d          }t          |
d                   }t          |
          d	k    r|
d	         nd
}|                    |           |                    |           |dk    r%|                    t          j        j                   |dk    r%|                    t          j        j                   |dk    r&|                    t          j        j                   (|
d         }|                    d          r;|                    d          r&|                    t          j        j                   |                    t          j        j                   	 d d d            n# 1 swxY w Y   | j        d         }|t          |          k    r|t          |          z
  }t,                              d| d| d           t1          d|dz             D ]c}|                    t3          d| dd                     |                    d           |                    t          j        j                   d| j                            d           | j                            d           | j                            |           | j                            |           | j                             |           d|v rP|d         H|!                    |d         	                    d                    }| j        "                    |           d|v rP|d         H|!                    |d         	                    d                    }| j        #                    |           d|v rP|d         H|!                    |d         	                    d                    }| j        $                    |           d|v rP|d         H|!                    |d         	                    d                    }| j        %                    |           d|v rP|d         H|!                    |d         	                    d                    }| j        &                    |           | j        '                    d           | j        (                    d           d S )Nztokenizer.jsonlr\  z PLaMo tokenizer file not found: r   r   r   r   r   r#   r+   r,   r-   r0   z<|plamo:rh  rv  r^  r_  r~  r}  r[  plamo2rQ  	bos_token	eos_token	pad_token	sep_token	unk_tokenr%   F))r;   r   ra  r   r   r   r+  striploadsr  r   r   r  rl   r  r,   r-   r0   r  r  r+   rF   r   r  r  rj  r/   rI   r#  r*  r+  rT  r,  r   r  r  r  add_sep_token_idr  add_eot_token_idadd_add_space_prefix)r   tokenizer_jsonl_pathtokenizer_config_pathr   tokenizer_configr  rU  r  line_numr  rs  re  rm  token_type_str	token_strrv  rt  r/  rj  s                      r3   _set_vocab_plamozTextModel._set_vocab_plamo  s   #~0AA $1H H#++-- 	_#$]G[$]$]^^^ 'w??? 	,1#y||	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, &g>>> 	C!"+A,, C C$::<< C!%D!1!1J&qM0099E!*Q-00E69*oo6I6IZ]]xNMM%(((MM%(((%22 (>????'944 (>????'611 (;<<<<$.qM	$//
;; C	@R@RSW@X@X C$OODN,BCCCC$OODN,ABBB-C	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C2 \,/
F##"S[[0ILLeyeeYbeeefff1i!m,, 7 7eK1KKK'BBBCCCg&&& 56666,,X666**9555''///))&111((222***/?/L/X||$4[$A$H$H$Q$QRRH--h777***/?/L/X||$4[$A$H$H$Q$QRRH--h777***/?/L/X||$4[$A$H$H$Q$QRRH--h777***/?/L/X||$4[$A$H$H$Q$QRRH--h777***/?/L/X||$4[$A$H$H$Q$QRRH--h777 	))!,,,--e44444s%   A..A25A2F6IIIr  r  )re  rf  r   r?   )r   rr  )r   r   )r   r   )T)rK   r  rv  rS   )#r(   r)   r*   r5   r6   r  r  r   r  r  r   r  r  r  r  rq  r  r  r$  r  r2  r9  rM  rV  rS  rx  r  r  r  r  r  r  r  r  __classcell__r  s   @r3   rf   rf   L  sP        JLLL l  l  l  l  lD S S [S , , , , , [,        8n7 n7 n7`! ! !   0*( *( *( *(`z z z zz	5 5 5 54 4 4 44 4 4 4'4 '4 '4R64 64 64p
4 
4 
4 
4X( X( X(t4 4 4,+4 +4 +4Z+L +L +L +LZ <  <  <  <D4 4 44 4 4"/4 /4 /4bI9 I9 I9VL5 L5 L5 L5 L5 L5 L5r2   rf   c                      e Zd ZU ej        Zej        j        Zde	d<   de	d<   g dZ
dZde	d<   dZde	d	<   d
Zde	d<   d
Zde	d<    fdZed$ fd            Zd%dZd%dZd Zd& fdZd Zd Zd'd(dZd'd(d Zd'd)d"Z fd#Z xZS )*rg   rE   preprocessor_configglobal_config)r  r  r  r  depthlayersencoder_layersvt_num_hidden_layersTr?   has_vision_encoderFhas_audio_encoderNra   hparams_visionhparams_audioc                    t                      j        |i | | j        t          j        j        k    rt          d          | j        sld| j        vr
i | j        d<   d| j        vr
i | j        d<   i | j        | j        d         }|	                    d|	                    dd                    | _
        n>d | j                                        D             }|	                    dd          | _
        | j
        dk    s
J d	            dd l}|                    | j                  | _        |                                 | _        |                                 | _        | j        | j        t'          d
          | j        p| j        p| j        | _        | j        o| j        }|rdn|                     | j        d          | _        t          j        t          j        j        | j                  | _        i | _        | j        dz  }|                                r^t=          |dd          5 }t?          j         |          }d|v ri ||d         }i | j        || _        d d d            n# 1 swxY w Y   | j        dz  }	|	                                rat=          |	dd          5 }t?          j         |          }d|v ri ||d         }i | j        || _        d d d            d S # 1 swxY w Y   d S d S )NzGMmprojModel must be subclassed with model_arch = gguf.MODEL_ARCH.MMPROJr  audio_configr  r  r   c                "    i | ]\  }}|d v	||S ))vision_encoderaudio_encoderr1   )r   r   r*  s      r3   r{  z(MmprojModel.__init__.<locals>.<dictcomp> 	  s0       ABe9e9e19e9e9er2   r|   zn_embd not found in hparamsz1vision_config / audio_config not found in hparams   Tzpreprocessor_config.jsonr   r   r   media_proc_cfgzprocessor_config.jsonimage_processor)!r  r   rR   rl   r  r7   rh   rV   rF   r   n_embd_textr   r  deepcopyr  get_vision_configr  get_audio_configr  r   r  r  r   n_block_keysrT   r  rU   r  r;   r   r   r   r   )r   r  r  r  r  have_multiple_encoderspreprocessor_config_pathr   cfgprocessor_config_pathr  s             r3   r   zMmprojModel.__init__	  s   $)&)))?do444efff % 	9DL00.0]+T\11/1^,IT\IT\--HIK*}koohXY>Z>Z[[D !%!3!3!5!5  K  +ua88D!###%B### 	!]]4<88"4466!2244&4+=+EPQQQ *Pd.@PDL "&!7!SD<S"8g33d>N>NtO`bf>g>g24?3I4K[\\ $&  $(>4N#N #++-- 
	O.gFFF 	O!ill#s**./C
 ,Od.F+N#+N(	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O !%1H H ((** 
	O+S7CCC 	Oqill$++/0C
 ,Od.F+N#+N(	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O
	O 
	Os$   -5I..I25I2)5K++K/2K/r  r  r   r  c                \    |\  }}d|v rd S t                                          |          S )Nr  )r  r   r  s       r3   r   zMmprojModel.filter_tensorsX	  s6    	c $$4ww%%d+++r2   c                L    | j         sdnd}| j                            |          S )Nvision_configr  )rV   r  r   )r   config_names     r3   r  zMmprojModel.get_vision_configb	  s+    -1-CYooIY!%%k222r2   c                P    d| j         v rdnd}| j                            |          S )Nwhisper_configr  )rF   r  r   )r   mm_config_keys     r3   r  zMmprojModel.get_audio_configf	  s1    ,<,L,L((R`!%%m444r2   c                X    | j                             t          j        j                   d S r   )rI   rx  rl   ry  r7   r  s    r3   r{  zMmprojModel.set_typej	  s$    !!$-"677777r2   r|  c           	        t                                          |           | j        j                            d          d         }| j                                        rXt          j        | j	        j        | j	        j
        | j	        j        | j	        j        d |d           }| j        d| dz  | _        d S | j        j        t          j        | j        j        |          z  | _        d S )Nr  r   r#   r  zmmproj-r  )r  r  r=   r   r  r>   r  rl   r  rN   r  r  r  r  r  )r   r|  r  r  r  s       r3   r  zMmprojModel.prepare_metadatam	  s      J 777:?44S99!<>  "" 	t!%!78JDMLbdhdqdz  }A  }J  }R  _c  q|  IM  "N  "N  "NM!^.L.L.L.LLDNNN!^2T5QRVR`Regr5s5ssDNNNr2   c                   | j                             | j                   | j        r| j                             d           | j                             | j                   |                     dg          | _        | j         	                    | j                   | j         
                    |                     dg                     | j                             |                     g d                     | j                             |                     ddg                     | j                             |                     | j                             | j                             |                     g d                     | j        rt"          n| j        d         }| j        rt&          n| j        d	         }| j                             |           | j                             |           | j        r| j                             d           | j                             | j                   | j                             |                     d
g                     | j                             |                     dg                     | j                             |                     | j                             | j                             |                     dg                     | j        s| j        st=          d          d S d S )NT
image_size
patch_size)r  widthvt_hidden_sizer
  vt_intermediate_size)r  	num_headsheadsvt_num_attention_heads
image_mean	image_stdr  r  z4MmprojModel must have either vision or audio encoder)rI   rU  r=   r  add_clip_has_vision_encoderadd_vision_projection_dimr  find_vparamr   add_vision_image_sizeadd_vision_patch_sizeadd_vision_embedding_lengthadd_vision_feed_forward_lengthadd_vision_block_countr  add_vision_head_countrV   _MISTRAL_COMMON_DATASET_MEANr  _MISTRAL_COMMON_DATASET_STDadd_vision_image_meanadd_vision_image_stdr  add_clip_has_audio_encoderadd_audio_projection_dimadd_audio_embedding_lengthfind_aparamadd_audio_feed_forward_lengthadd_audio_block_countadd_audio_head_countr   )r   r(  r)  s      r3   r  zMmprojModel.set_gguf_parametersx	  s   &&tz222" 	=88>>>66t7GHHH #..~>>DO224?CCC2243C3C\N3S3STTT889I9IJtJtJt9u9uvvv;;D<L<LNacyMz<{<{|||33D4D4DTEV4W4WXXX2243C3C  EL  EL  EL  4M  4M  N  N  N :>9O{55UYUmnzU{J7;7Mx33SWSklwSxI22:>>>11)<<<! 	]77===55d6FGGG 778H8H-8Y8YZZZ::4;K;KM`La;b;bccc2243C3CDDU3V3VWWW11$2B2BDYCZ2[2[\\\& 	Ut/E 	USTTT	U 	U 	U 	Ur2   c                     t          d          )Nz*MmprojModel does not support vocab writing)r   r  s    r3   r  zMmprojModel.write_vocab	  s    EFFFr2   r   r   r   r   c                L    | j         J |                     | j         ||          S r   )r  _find_paramr   r   r   s      r3   r,  zMmprojModel.find_vparam	  s,    "... 3T8DDDr2   c                L    | j         J |                     | j         ||          S r   )r  r@  rA  s      r3   r:  zMmprojModel.find_aparam	  s,    !--- 2D(CCCr2   objc                |    t          fd|D             d           }||         S |rd S t          d|           )Nc              3  $   K   | ]
}|v |V  d S r   r1   )r   r   rC  s     r3   r   z*MmprojModel._find_param.<locals>.<genexpr>	  s'      00!qCxxAxxxx00r2   r   )r   r   )r   rC  r   r   r   s    `   r3   r@  zMmprojModel._find_param	  sY    0000t000$77?s8O 	4777888r2   c                    d|v sd|v r<| j         t          j        j        k    rt          j        j        nt          j        j        S t                                          ||||          S )Nz.patch_embd.weightz.patch_merger.weight)	r=   rl   ry   r   r  r_  r@  r  r  )r   r   r   r  r  r  s        r3   r  zMmprojModel.tensor_force_quant	  sh    8++/E/Q/Q48J$BTB_4_4_4,00eie~  fC  Cww))$#vFFFr2   r  )r   ra   r  r  r  )rC  rE   r   r   r   r?   r   r   )r(   r)   r*   r5   r7   r  rl   r  rR   r  r  r  r  r  r  r   r  r   r  r  r{  r  r  r  r,  r:  r@  r  r  r  s   @r3   rg   rg   	  s        !J'J''''!!!! K  K  KL########## -1N0000+/M////EO EO EO EO EON , , , , , [,3 3 3 35 5 5 58 8 8	t 	t 	t 	t 	t 	t"U "U "UHG G GE E E E ED D D D D9 9 9 9 9G G G G G G G G Gr2   rg   c                     e Zd ZU ej        Zded<   ded<   ej        ej        ej	        ej	        ej
        ej
        ej        ej        iZded<   ej        ej        ej	        ej	        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej
        ej
        ej        ej
        ej        ej
        ej        ej
        iZded<   ej        ej	        ej        ej        ej        ej        ej        ej
        ej        ej        ej        ej        dZd	ed
<   ddZedd            Zedd            Zed d            Zed!d            Zed"d            ZdS )#r   torch.dtyper}   z
torch.Sizer   zdict[torch.dtype, type]
_dtype_map_dtype_byteswap_map)F64r@  ra  r_  I64I32I16U8I8BOOLF8_E4M3F8_E5M2zdict[str, torch.dtype]r   r   gguf.LazyNumpyTensorc                    | j         | j                 }t          j        t          j                            || j                  | fd           S )Nc                *    |                                  S r   )r  r\  s    r3   r   z'LazyTorchTensor.numpy.<locals>.<lambda>	  s    AGGII r2   metar  r  )rI  r}   rl   LazyNumpyTensormeta_with_dtype_and_shaper   )r   r}   s     r3   r  zLazyTorchTensor.numpy	  sM    
+#%??tzRR%%
 
 
 	
r2   tuple[int, ...]r   c                0    t          j        ||d          S )NrY  )r  r}   device)r~   empty)r   r}   r   s      r3   r[  z)LazyTorchTensor.meta_with_dtype_and_shape	  s    {U6BBBBr2   st_slicer   c                    | j         |                                         }t          |                                          } | |                     ||          |fd           }t          t          j        |          S )Nc                p    t          |                                           dk    r| d         n	| d d          S )Nr   .)r   	get_shaperW  s    r3   r   z8LazyTorchTensor.from_safetensors_slice.<locals>.<lambda>	  sp    pstutt  uB  uB  qC  qC  GH  qH  qHfghkflfl  NO  PQ  PQ  PQ  NR r2   rX  )r   	get_dtyper-  rc  r[  r   r~   r   )r   r`  r}   r   rC   s        r3   from_safetensors_slicez&LazyTorchTensor.from_safetensors_slice	  s    "8#5#5#7#78!&x'9'9';';!<!<s55eUCC8+  ]R  ]R  S  S  SEL$'''r2   tgguf.utility.LocalTensorc                     d fd j         |j                 }|j        }                       ||          |ffd          }t	          t
          j        |          S )	Nr   rg  r   r   c                    dd}j         | j                 }j        |         }t          j         ||                                 |                                        |                              | j                  S )Nr   
np.ndarrayr}   re   r   c                x    t           j        dk    r)|                     |                              d          } | S NbigF)inplacer  	byteorderr   byteswapr   r}   s     r3   byteswap_tensorzOLazyTorchTensor.from_local_tensor.<locals>.load_tensor.<locals>.byteswap_tensor
  s6    =E))#[[//888GGFr2   r   rj  r}   re   r   rj  )	r   r}   rJ  r~   r   r   r   r   r   )r   rs  r}   numpy_dtyper   s       r3   load_tensorz6LazyTorchTensor.from_local_tensor.<locals>.load_tensor
  s       
 &v|4E1%8K#OOF4E4E4G4G$U$UVV[[\abbjjkqkwxxxr2   c                     |           S r   r1   )r   rv  s    r3   r   z3LazyTorchTensor.from_local_tensor.<locals>.<lambda>
  s    _j_jkl_m_m r2   rX  )r   rg  r   r   )r   r}   r   r[  r   r~   r   )r   rf  r}   r   rC   rv  s   `    @r3   r   z!LazyTorchTensor.from_local_tensor	  s    	y 	y 	y 	y 	y 	y "17+s55eUCC1$UmUmUmUmnnnEL$'''r2   r   gguf.utility.RemoteTensorc                    d	d| j         |j                 | j                 |j        |                               } | ||ffd          }t          t          j        |          S )
Nr   rj  r}   re   r   c                x    t           j        dk    r)|                     |                              d          } | S rl  ro  rr  s     r3   rs  z;LazyTorchTensor.from_remote_tensor.<locals>.byteswap_tensor
  s6    }%%U++44U4CCMr2   c                    t          j         t          j        |                                                                                                                           S )Nr  )r~   r   r  
frombufferr   r   r   )r   rs  r}   ru  r   s    r3   r   z4LazyTorchTensor.from_remote_tensor.<locals>.<lambda>
  s    EDTUdUdegerstsysys{s{  DO  fP  fP  fP  R]  V^  V^  E_  E_  Ed  Ed  ej  Ek  Ek  Es  Es  ty  Ez  Ez r2   rX  rt  )r   r}   rJ  r   r[  r   r~   r   )r   r   rY  rC   rs  r}   ru  r   s       @@@@r3   r   z"LazyTorchTensor.from_remote_tensor
  s    	 	 	 	
 "=#67-e4#,,UE::sM#3  ;z  ;z  ;z  ;z  ;z  ;z  ;z  {  {  {EL$'''r2   r1   Nc                    ~|i }|t           j        j        u r+t          |          sJ |d                                         S  |                     |          |i |S r  )r~   r   r  r   _wrap_fn)r   r  typesr  r  s        r3   __torch_function__z"LazyTorchTensor.__torch_function__
  sc    >F5<%%%t9997==??"!s||D!!426222r2   )r   rT  )r}   rH  r   r\  r   r   )r`  r   r   r   )rf  rg  r   r   )r   rx  )r1   N)r(   r)   r*   r~   r   _tensor_typer  r   r  r  r  int64rI  float64r   r;  r>  r?  r?   r  r  rJ  r   r  r  r[  re  r   r   r  r1   r2   r3   r   r   	  s        <L 	rzrzRXRX	+J     	rzrz
rzRXRXRX
BGRX
BHRX284    , }}}{{{kj
&$. .N    $
 
 
 
 C C C [C ( ( ( [( ( ( ( [( ( ( ( [( 
3 
3 
3 [
3 
3 
3r2   r   rF   rE   r  r   r   c                *   |                      di           }|                      di           }d }|                      d          x}t          |          dk    r	|d         }n#d| v r| d                              dd          dz   }|t          j        k    r|d	v r|S |t          j        k    r$|                     d          |d         d         }n3|t          j        k    r#|                     d          |d         d         }|t          d
          |S )Nr  r  architecturesr   ssm_cfglayerMambaForCausalLM)StepVLForConditionalGenerationSarashina2VisionForCausalLM"Exaone4_5_ForConditionalGenerationStep3p7ForConditionalGenerationz#Failed to detect model architecture)r   r   r5   r6   r7   r   )rF   r  r  r  rd   archess         r3   r  r  +
  s+    ++mR00KKK44MD++o...;Faay	g		y!%%gw77-G
 Y^##  1{  ){  ){ Y^##(H(H(T?+A.	y'	'	'M,=,=o,N,N,Z_-a0|>???Kr2   )rF   rE   r  r5   r   r   )F
__future__r   r  loggingr   r   r  r  r  enumr   pathlibr   hashlibr   typingr   r   r	   r
   r   r   r   r   r   r   	itertoolsr   r  r   r  r  r~   r   environrc   insertr   r  r  rl   
gguf.vocabr   r   %mistral_common.tokens.tokenizers.baser   +mistral_common.tokens.tokenizers.multimodalr   r3  r   r4  'mistral_common.tokens.tokenizers.tekkenr   .mistral_common.tokens.tokenizers.sentencepiecer   ri   rk   rj   r  	getLoggerr   r   r"   r5   r9   rf   rg   LazyBaser   r  r1   r2   r3   <module>r     s   # " " " " " " 



       				 				 



                   u u u u u u u u u u u u u u u u u u u u u u u u       # # # # # #      "*$$HOOAss44>>07)CDDEEE  9 9 9 9 9 9 9 9FFFFFF U  U  U  U  U  U  U  UBBBBBB      !% "   #F "F %     J"&&&&&	C  
	<	(	( 7:%6777    g          
~Y ~Y ~Y ~Y ~Y ~Y ~Y ~YB s5 s5 s5 s5 s5	 s5 s5 s5l%pG pG pG pG pG) pG pG pGfs3 s3 s3 s3 s3dm s3 s3 s3l     s   :C "C>=C>