
     tj                      % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKrS SK r \(       a  S S	K J!r!  S
\RD                  ;  a?  \RF                  RI                  S\%" \" \&5      RN                  RN                  S-  5      5        S SK(r(S SK)J*r*J+r+   S SK,J-r-  S SK.J/r0J1r2  S SK3J4r4  S SK5J6r6  Sr7Sr8\Rv                  " S5      r<\" SSS9r= " S  S!\
5      r> " S" S#\
5      r? " S$ S%5      r@ " S& S'\@5      rA " S( S)\@5      rB " S* S+\(R                  5      rD\E" \ S,5      (       aN  \ R                  rG\R                  \DR                  \G'   \R                  \DR                  \G'   \G\DR                  S-'   O\ R                  \DR                  S-'   S1S. jrLS2S/ jrMS3S0 jrNg! \9 a!    Sr0Sr2Sr7Sr-S\:S'   Sr4S\:S'   Sr6S\:S'   Sr8 GNf = f)4    )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                  ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
SentencePieceTokenTypes=   r                   N)__name__
__module____qualname____firstlineno__NORMALUNKNOWNCONTROLUSER_DEFINEDUNUSEDBYTE__static_attributes__r)       //mnt/workspace/git/llama.cpp/conversion/base.pyr"   r"   =   s     FGGLFDr5   r"   c                      \ rS rSrSrSrSrg)	ModelTypeF   r   r$   r)   N)r*   r+   r,   r-   TEXTMMPROJr4   r)   r5   r6   r8   r8   F   s    DFr5   r8   c                  j   \ rS rSr% \R
                  0 \R                  0 0rS\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S	\S'   S	\S'   S	\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S '   S!\S"'   S#\S$'   S%r	S	\S&'   S%r
S	\S''   S%rS	\S('   S%rS	\S)'   S%rS	\S*'   S%rS	\S+'   S%S%S%S,S,S-S-S%S%S,S,S%S%S,S%S%S..                             SOS/ jjr\SPS0 j5       rSQSRS1 jjrSSSTS2 jjr\SUS3 j5       rSVS4 jrSWS5 jrS6 r\SXS7 j5       rSYS8 jrSZS[S9 jjrS\S]S: jjrS^S_S; jjrS< rS`S= jrSaS> jr SbS? jr!\ScS@ j5       r"SdSA jr#SB r$SC r%SD r&SE r'SeSF jr(SG r)SH r*\SfSI j5       r+\SgSJ j5       r,\ShSK j5       r-\SL 5       r.\\R
                  4SiSM jj5       r/SNr0g,)j	ModelBaseK   z+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supports_mtp_exportmtp_onlyno_mtpNr   )rE   rG   eagerrR   rP   split_max_tensorssplit_max_sizerI   small_first_shardrK   rU   r\   r]   rV   fuse_gate_up_exps	fp8_as_q8c               ^   [        U 5      [        L d$  [        U 5      [        L d  [        U 5      [        L a"  [	        [        U 5      R
                  < S35      eU R                  (       a  [        (       d  [        [        5      eXl
        X l        X0l        X@l        U(       a  [        R                  R                   O[        R                  R"                  U l        XPl        U(       + =(       d    US LU l        Xl        Xl        UU l        UU l        UU l        0 U l        0 U l        Uc*  [        R9                  U R                  U R                  5      OUU l        U R=                  US9U l        Xpl         Xl!        Xl"        SU l#        SU l$        UU l%        [M        5       U l'        U R                  [        RP                  RR                  :X  Ga  U RU                  5        H  u  nnURW                  5       S:  a  M  URX                  [Z        R\                  :X  a6  [        RP                  R^                  U l        [`        Rc                  S5          OURX                  [Z        Rd                  :X  d  M  [        RP                  Rf                  U l        [`        Rc                  S5          O6   [        RP                  Rf                  U l        [`        Rc                  S5        [        Rh                  " S [        Rj                  U Rl                     U R$                  U R&                  XXS9U l7        Xl8        g )	Nz$ should not be directly instantiated)rU   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archrF   rG   rb   rc   rI   rd   )9typer=   	TextModelMmprojModel	TypeErrorr*   r[   _mistral_common_installedImportError_mistral_import_error_msgr@   rB   rC   rE   gguf
GGUFEndianBIGLITTLErF   rG   rH   rI   rU   r]   rV   re   _gate_exp_buffer_up_exp_bufferload_hparamsrK   index_tensorsrM   rR   rP   rT   	_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_NAMESrW   rN   r\   )selfr@   rB   rC   rE   rG   ra   rR   rP   rb   rc   rI   rd   rK   rU   r\   r]   rV   re   rf   _tensors                         r6   __init__ModelBase.__init__v   sp    :"T
i'T
k)tDz2255YZ[[!!*C*C788"
"*0=,,4??CYCY*IA"4D"@	"43V0 0!23513Y`Yhy--dnnd>T>TUnu!//CU/V!2$'#*-% ::++333!--/	6::<!#<<5>>1!%!3!3!?!?DJKK cd\\U]]2!%!3!3!>!>DJKK ab 0 "//::
cd  ??4;P;PQUQ`Q`;amqm{m{  LP  L^  L^=Nw~e 8_4r5   c                b    UR                   UR                  pCU U U 3nUR                  U5      $ N)stemsuffix	with_name)clsrh   prefixr   r   new_names         r6   add_prefix_to_filename ModelBase.add_prefix_to_filename   s2    yy$++fXdVF8,~~h''r5   c                   ^  [        U 4S jU 5       S 5      nUb  T R                  U   $ U(       a  g [        SU 35      e)Nc              3  J   >#    U  H  oTR                   ;   d  M  Uv   M     g 7fr   )rK   ).0kr   s     r6   	<genexpr>(ModelBase.find_hparam.<locals>.<genexpr>   s     9t!DLL'8AAts   #	#could not find any of: )nextrK   KeyError)r   keysoptionalkeys   `   r6   find_hparamModelBase.find_hparam   sB    9t94@?<<$$0788r5   c           
     	  ^ 0 nUb  Sn[         R                  SU 35        [        R                  R                  R                  U5      nUR                  5        H.  u  pVU4S jnU R                  XW45      =n(       d  M&  Uu  pXU	'   M0     U$ U R                  (       d  SOSn[        R                  U R                  US5      n[        U5      S:  nU(       d!  [        R                  U R                  SS	5      n[        5       n[        5       nU R                  (       Gd  U(       a  S
OSnUS-  nU R                  U-  nUR                  5       (       a  [         R                  SU S35        [        USSS9 n[         R"                  " U5      nUR%                  S5      mTb  ['        T[(        5      (       d  [+        SU< 35      eUR-                  TR/                  5       5        [(        R1                  TR3                  5       S 5      n[5        UR/                  5       5      nS S S 5        O0 mO0 mU GHn  n[         R                  SU S35        U(       aB  [7        [8        [:           [        R                  R=                  U R                  U-  5      5      nOA[>        R@                  " [B        R"                  " [E        U R                  U-  5      SSSS95      nU nUc   eUR/                  5        H  nURG                  U5        U(       aB  UU   nU RH                  (       a  U4S jnOH[J        RL                  URN                     nUU4S jnO#UU   nU RH                  (       a  U4S jnOU4S jnU R                  XW45      =n(       d  M  Uu  pXU	'   M     S S S 5        GMq     [        U5      S:  a  [        URQ                  U5      5      S:  a  [5        URS                  U5      5      n[5        URS                  U5      5      n[5        [        U4S jU 5       5      5      n[        U5      S:X  a   [        U5      S:  a  [+        SU SU 35      e[+        SU SU 35      eU$ ! , (       d  f       GNE= f! , (       d  f       GMV  = f) NTz(Using remote model with HuggingFace id: c                ,    [         R                  U 5      $ r   )LazyTorchTensorfrom_remote_tensor)rs    r6   <lambda>)ModelBase.index_tensors.<locals>.<lambda>   s    ?3U3UVW3Xr5   modelconsolidated.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                ,    [         R                  U 5      $ r   )r   from_local_tensordatas    r6   r   r     s    9Z9Z[_9`r5   c                    [         R                  " U R                  5       5      R                  U5      R	                  U R
                  5      $ r   )r   
from_numpy
mmap_bytesviewreshapeshape)r   r   s     r6   r   r     sG    eFVFVW[WfWfWhFiFnFnotFuF}F}  C  I  I  GJr5   c                ,    [         R                  U 5      $ r   )r   
from_eagerr   s    r6   r   r     s    ?Y?YZ^?_r5   c                    U $ r   r)   r   s    r6   r   r     s    tr5   c              3  <   >#    U  H  oT;   d  M
  TU   v   M     g 7fr   r)   )r   nr   s     r6   r   *ModelBase.index_tensors.<locals>.<genexpr>  s     *]'QR\_=:a='s   	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   rq   utilitySafetensorRemoteget_list_tensors_hf_modelitemsfilter_tensorsr[   r=   get_model_part_namesr@   lenr|   is_fileopenjsonloadget
isinstancedict
ValueErrorupdater   fromkeysvaluessortedr   r
   r   SafetensorsLocal
contextlibnullcontextr   straddrH   r   _dtype_str_mapr   symmetric_difference
difference)r   rU   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                                @r6   rx   ModelBase.index_tensors   s   35)!NKKBCUBVWX!\\::TTUghN'5';';'=#$1X //0@AA5A"'KE%)EN	 (> N $ 6 6N ) > >t~~vWe f
":2"77Y_`J,/E,/E%%%0>,DWJ-'J*4J!!##CJ<qQR*cG<,0IIaLE!&<!8J!)J1M1M(+H)WXX+22:??3DE15z?P?P?RTX1YI!'	(8!9J =<  
J#IKK5i[BC>#.0M0Mdnn_hNh0ij ,,UZZDNNY<V8Wfkrv  FJ  .K  L
!---&OO-D+//5%9CD9I9937'`H$3$B$B4::$NE37u  (JH-7-=
993='_H3='CH $ 3 3T4D EEuE&+)-# .  $> &'!+*??@WXY\]] !8!C!CD[!\]6AABYZ[ &s*]'*]'] ^u:?s='9A'=$'J=/ Z99@	&C D D % &99@	 B77<g&? @ @ s =<* s    8B+Q'B-Q9Q9'
Q69
R		c                    U R                  5       S:*  =(       a6    [        [        U R                  5       R                  5       5      S-
  5      S:  $ )Nr         ?ư>)numelabsfloatsum)scales    r6   _scale_is_trivialModelBase._scale_is_trivial#  s;    {{}!Rc%0A0A0C*Ds*J&Kd&RRr5   c                   U R                  U5      (       dn  UR                  5       R                  5       R                  5       n[        R                  SU SUR                   S35        U R                  R                  X5        g g )N  + z (per-tensor scale, shape []))	r	  r  numpyflattenr   r   sizerN   
add_tensor)r   
scale_namer  	scale_f32s       r6   _write_scale_tensorModelBase._write_scale_tensor'  sk    %%e,,++-557IKK$zl*EinnEUUWXY''
> -r5   c                   [         R                  " USSS9(       dd  [         R                  " U[         R                  S9n[        R                  SU S[        U5       S35        U R                  R                  X5        g g )Nr  r  )atolr   r  z (per-expert scale, shape [r  )	npallclosearrayfloat32r   r   r   rN   r  )r   r  scales
scale_valss       r6   _write_scales_tensorModelBase._write_scales_tensor-  s`    {{63T2&

;JKK$zl*Ec&k]RTUV''
? 3r5   c                Z  ^ ^^^^^^^^  T R                   (       a"  [        S T R                   5       5      (       d  g / n0 nT R                  R	                  S5      =m (       Gam  [        T [        5      (       GaW  T R	                  S5      nSHS jmSISJS jjmSKU U 4S jjmSLU 4S jjmUS:X  a  T R                  R                  5        Hq  nUR                  S5      (       d  M  UR                  S5      nT R                  U   nT R                  U   nXg4U4S jjT R                  U'   UR                  U5        Ms     GOUS:X  Ga  T R	                  S5      mT R                  R                  5        GH  nUR                  S5      (       a  UR                  S5      nT R                  U   nT R                  U   nXgT4U4S jjT R                  U'   UR                  U5        T R                  (       a  T R                  R                  U5        UR                  S5      (       a  UR                  U5        UR                  S5      (       a  UR                  U5        UR                  S5      (       a  UR                  S5      S-   nT R                  U   nT R                  U   nXgT4U4S jjT R                  U'   UR                  U5        T R                  (       a  T R                  R                  U5        UR                  S5      (       d  GM  UR                  U5        GM     GOUS:X  a  T R                  R                  5        H  nUR                  S5      (       d  M  UR                  S5      nT R                  US-      n	T R                  US-      n
T R                  US-      nT R                  US-      nXX4U4S jjX(S -   '   US! Vs/ s H  nX-   PM	     sn-  nM     GOUS":X  Ga  T S#   nT S$   nUS%:H  =(       d>    US&:H  =(       a2    [        U5      =(       a     [        S' UR!                  5        5       5      n[#        U5      S(:  a  U(       d  [%        S)5      e['        UR!                  5       5      S*   S+   nUS,:X  d  US-:X  d  US.:X  GaI  UR	                  S/S 5      mUR	                  S05      nUS1:X  d  US2:X  d   eUR	                  S
5      b   eUS,:H  =(       a/    UR	                  S35      S4:H  =(       a    UR	                  S5      S5:H  nT R                  R                  5        H  nUR                  S5      (       d  M  UR                  S5      nT R                  U   nT R                  U   nXg4UU4S6 jjT R                  U'   UR                  U5        T R                  (       d  M  U(       d  M  T R                  R                  U5        M     GOUS7:X  Gao  UR	                  S05      S8:X  d   eUR	                  S3S	5      S	:X  d   eUR	                  S5      mUR	                  S
5      m[        T[(        5      (       d   e[        T[(        5      (       d   eT R                  R                  5        H  nUR                  S95      (       d  M  UR                  S:5      nT R                  U   nT R                  US-      nT R                  US;-      nT R                  R	                  US<-   S= 5      nUUUU4UUU4S> jjX('   US? Vs/ s H  oU-   PM	     sn-  nUS<-   T R                  ;   d  M  UR                  US<-   5        M     GOzU(       a  GOq[%        S@U< SAU< SB35      eUSC:X  GaD  T R                  R                  5        GH$  nUR                  S5      (       a  UR                  S5      nUT R                  ;  a  UR                  U5        MN  T R                  U   nT R                  U   nSDnT R                  (       a2  U" 5       R*                  [,        R.                  [,        R0                  4;   nXg4U4SE jjT R                  U'   UR                  U5        U(       a  T R                  R                  U5        UR                  SF5      (       d  GM  UR                  U5        GM'     OUb  [%        SGU< 35      eU H"  nUT R                  ;   d  M  T R                  U	 M$     UR3                  5        H  u  nnUT R                  U'   M     g s  snf s  snf )MNc              3  B   #    U  H  oR                  S 5      v   M     g7f)).weight_scalez.weight_scale_invN)endswith)r   r   s     r6   r   *ModelBase.dequant_model.<locals>.<genexpr>5  s     %ubt]^jj1W&X&Xbts   quantization_configquant_methodweightc           	        U R                  [        R                  5      n U R                  n[        R                  " / SQ[        R                  S9R                  S/S [        [        U5      5       5       Q75      nU R                  S5      R                  S/UQ75      U-	  nUS-  nUR                  5       S-
  R                  US   S-  /USS  Q75      nXAR                  5       -  $ )N)r   r$   r&   r(   r  r&   c              3  &   #    U  H  nS v   M	     g7f)r   Nr)   )r   r   s     r6   r   BModelBase.dequant_model.<locals>.dequant_bitnet.<locals>.<genexpr>B  s     Sv_uZ[TU_us   r   r%   r   )r   r   uint8r   r   r   ranger   	unsqueezeexpandr  )r(  r  
orig_shapeshiftr   s        r6   dequant_bitnet/ModelBase.dequant_model.<locals>.dequant_bitnet>  s    U[[1#\\
\EMMqNwSv_dehiset_uSvNwx''*1112Bz2BCuLax

q(11:a=13D2VzRSRT~2VW kkm++r5   c                   UR                  5       nUb_  UR                  [        U5      -
  n[        U5       H  u  pEUR	                  XSU-   5      nM     U[        S U R                   5       5         nUR                  U R                  :  a-  UR                  S5      nUR                  U R                  :  a  M-  U R                  5       U-  $ )Nc              3  :   #    U  H  n[        S U5      v   M     g7f)r   N)slice)r   r  s     r6   r   BModelBase.dequant_model.<locals>.dequant_simple.<locals>.<genexpr>R  s     'P<4a<s   )r  ndimr   	enumeraterepeat_interleavetupler   r.  )r(  r  
block_size
dim_offsetir  s         r6   dequant_simple/ModelBase.dequant_model.<locals>.dequant_simpleJ  s    )!&c*o!=J#,Z#8 % 7 71n M $9 "%'P6<<'P"PQE jj6;;.!OOB/E jj6;;. ||~--r5   c           	     B  > TS   nUS;   d   eUR                   UR                   :X  d   eSU-  S-
  nS nS nUR                   R                  S-  nUS;   Ga  X-  n	[        R                  " [	        [        SX5      5      [        R                  S9R                  S5      n
TR                  (       a  [        R                  U
5      n
[        R                  " UR                  S5      R                  S	S	U	5      U
R                  S5      5      R                  US:X  a  [        R                  O[        R                  5      n[        R                   " Xu5      R#                  UR$                  5      n[        R                   " [        R                  " UR                  S5      R                  S	U	S	5      U
R                  S	5      5      R                  US:X  a  [        R                  O[        R                  5      U5      nOUS
:X  a  ['        S5      eUc   eUc   eUR#                  UR$                  S   UR$                  S   -  UR$                  S   5      nTR)                  SS5      S:X  a  US-  nX0   R+                  5       XgU    -
  R+                  5       -  R,                  $ )Nbits)r$   r%   r&      r$   r   rD  )r$   r&   rD  r   r  r8  r%   z03-bit gptq dequantization is not yet implementedcheckpoint_formatgptq)r   itemsizer   r   listr-  int32r.  rH   r   r   bitwise_right_shiftr/  toint16int8bitwise_andr   r   NotImplementedErrorr   r  T)g_idxqweightqzerosr  rC  maxqr(  zerospack_dtype_bitspack_factorwfquant_configr   s              r6   dequant_gptq-ModelBase.dequant_model.<locals>.dequant_gptq[  s8   #F+|+++}}444T	Q")--"8"81"<9$"1"9Kd5O+J&KSXS^S^_iijklByy,77;!55((+222r;GQ b	uzzB  "--e:BB6<<PE"..11#--a077KLLL, "DAIU[[5::FF QY-.`aa)))(((Q&,,q/(I6<<XY?[  ##$7@FJQJE++-,1F0M0M0OORRRr5   num_bitsrX   
group_sizec                  > U R                   [        R                  :X  d   e[        UR	                  5       5      n[        U5      S:X  d   eSU-  S-
  n[        R                  " SSUS-
  -
  U[        R                  S9nTR                  (       a  [        R                  U5      nUc	  SUS-
  -  n	O[        UR                  5      S:X  d   eUR                  S5      UR                  SSS5      -	  U-  n	U	R                  SUR                  S   5      n	U	S US   2S S 24   R                  S5      n	U R                  S5      UR                  SSS5      -	  U-  n
U
R                  US   S5      n
U
S S 2S US   24   n
U
R                  US   U
R                  S   U-   S-
  U-  U5      n
X-
  n
XR                  S5      R                  5       -  R                  U5      $ )Nr$   r   r       r  r8  )r   r   rI  r<  tolistr   arangerH   r   r   r   r.  r   r  )wr  shape_tensor
zero_pointr\  r]  r   maskshiftsoffsetunpackedr   s              r6   dequant_packed/ModelBase.dequant_model.<locals>.dequant_packed  s   ww%++---l11345zQ&X*ax!|)<hekkZ99,77?F%8a<0Fz//0A555(22152q9QQUYYF#^^B
0@0@0CDF $IU1XIqL1;;B?F KKOv~~aB/GG4O#++E!Hb9 $AyayL1 $++E!Hx~~b7IJ7VYZ7Z_i6ikuv#, ??2#6#<#<#>>GGNNr5   bitnetr#  _scalec                *   > T" U " 5       U" 5       5      $ r   r)   )rb  sr2  s     r6   r   )ModelBase.dequant_model.<locals>.<lambda>  s    >Z[Z]_`_bKcr5   fp8weight_block_size
_scale_invc                ,   > T" U " 5       U" 5       U5      $ r   r)   rb  rn  bsr@  s      r6   r   ro        ZhijilnonqsuZvr5   z.activation_scale_activation_scalez.qscale_weightqscale_weightc                ,   > T" U " 5       U" 5       U5      $ r   r)   rt  s      r6   r   ro    rv  r5   z.qscale_actrF  .qweight.g_idx.qzeros.scalesc                B   > T" U " 5       U" 5       U" 5       U" 5       5      $ r   r)   )gzrb  rn  rZ  s       r6   r   ro    s    < !QS!#qsLr5   .weight)r{  r|  rz  r}  compressed-tensorsformatconfig_groupsnvfp4-pack-quantizedmixed-precisionc              3  x   #    U  H0  n[        U[        5      (       d  M  UR                  S 5      S:H  v   M2     g7fr  r  Nr   r   r   r   r  s     r6   r   r%    s-     v!blmnptbuEAEE(O/EE   ::r   z>Can't handle multiple config groups for compressed-tensors yetr   weightszfloat-quantizedzint-quantizedznaive-quantizedblock_structurestrategychannelblockrj   r  rD  c                ,   > T" U " 5       U" 5       T5      $ r   r)   )rb  rn  r=  r@  s     r6   r   ro    s    ~^_^acdcfhrOsr5   zpack-quantizedgroup.weight_packed_packed_shape_zero_pointc                     g r   r)   r)   r5   r6   r   ro    s    cgr5   c                F   > T" U " 5       U" 5       U" 5       U" 5       TT5      $ r   r)   )rb  r  r   rd  ri  r]  r\  s       r6   r   ro    s"    ]k$%C%':<S]^"r5   )r  r  rl  zQuant format z for method z is not yet supportedmodeloptFc                ,   > T" U " 5       U" 5       S 5      $ r   r)   )rb  rn  r@  s     r6   r   ro  *  s    >Z[Z]_`_bdhKir5   ).input_scale.k_scale.v_scalez#Quant method is not yet supported: )r(  r   r  r   returnr   r   )r(  r   r  r   r=  zSequence[int] | Noner  r   )
rQ  r   rR  r   rS  r   r  r   r  r   )rb  r   r  r   rc  r   rd  zTensor | Noner\  rX   r]  rX   )ry   anyrM   rK   r   r   r   r   r$  removesuffixappendr{   r}   r   rD   allr   r   rO  r<  rX   r   r   float8_e4m3fnfloat8_e5m2r   )!r   tensors_to_removenew_tensorsr'  r   weight_namerb  rn  	base_namerQ  rR  rS  r  r   quant_formatgroupsnvfp4_compressed_tensorsweight_configr  is_fp8r  r   rd  is_fp8_weightvaluer=  r2  rZ  ri  r@  r]  r\  rY  s!   `                        @@@@@@@@r6   dequant_modelModelBase.dequant_model3  sq   >>#%ubfbtbt%u"u"u')79 LL,,-BCCLCT`bfIgIg'++N;L
,."(S (ST OD x' ..335D}}_55&*&7&7&A ..{; ..t4CD:c**;7)006 6 &)--.AB
 ..335D}}\22&*&7&7&E ..{; ..t4CDj:v**;7)006?? 1155kB}}%899)006}}%899)006}}%566&*&7&7&H8&S ..{; ..t4CDj:v**;7)006?? 1155kB}}]33)006/ 60 ' ..335D}}Z00$($5$5j$A	 $ 2 29x3G H"&"4"4Y5K"L!%!3!3I	4I!J!%!3!3I	4I!J%*  $	$9:
 *&.& &M&. ) 6* !55+H5%o6 $:: w#'88 wVwvv}}vv	 ) v;?+C-.noo %fmmo 6q 9) D#448W[gk|[|!.!2!23Dd!KJ,00<H#y0H4GGG(,,\:BBB$(99 ?)--f5@?)--j9Q> 
 !% 2 2 7 7 9==99*.*;*;H*EK $ 2 2; ?A $ 2 24 8AGH>sD..{;-44T:#66 $ 5 5 9 9+ F !: "%55(,,Z8GCCC(,,VU;uDDD,00<H!.!2!2<!@J%h4444%j#6666 $ 2 2 7 7 9==)9::(,(9(9)(DI $ 2 24 8A$($6$6y87K$LE$($6$6y87K$LE)-););)?)?	M@Y[g)hJ)*%uQ[ !" !" (2
 .Ih1iIhAa-Ih1ii- )M 9d>P>PP 1 8 8]9R S !: .-l=M\ZfYii~.  A  A+ !..335D}}_55&*&7&7&A&d.@.@@-44T:$ ..{; ..t4(-??,-CII%:M:MuO`O`9a,aMCD:i**;7)006( 1155kB}}%MNN)006! 6" )),OP\O_*`aa%Dt)))&&t, & ',,.KD%',Dt$ /C.z 2js   d#d(c                    Uu  p#UR                  S5      (       a  UR                  SS5      nSU;   a  UR                  SS5      nX#4$ )Ne_score_correction_biasze_score_correction.biaslanguage_model.r   )r$  replace)r   itemr   gens       r6   r   ModelBase.filter_tensors:  sL    	==233<< 9;TUD$<< 126Dyr5   c              #  f   #    U R                   R                  5        H  u  pX" 5       4v   M     g 7fr   )rM   r   )r   r   r  s      r6   r   ModelBase.get_tensorsF  s,     ++113ID+ 4s   /1c                    U[         R                  U R                     ;  a  [        SU< SU R                  < 35      e[         R                  U   nSU;   a  Uc   eUR                  US9nXC-   $ )NzMissing z for MODEL_TENSORS of {bid}bid)rq   MODEL_TENSORSrW   r   TENSOR_NAMESr  )r   r   r  r   r   s        r6   format_tensor_nameModelBase.format_tensor_nameJ  sp    d((99xw.DT__DWXYY%%c*d??"?;;3;'D}r5   c                    U[         R                  U R                     ;  a  g[         R                  U   nSU;   a  Uc  gUR	                  US9nOUb  gXU-   :H  $ )NFr  r  )rq   r  rW   r  r  )r   r   r   r  r   key_names         r6   match_model_tensor_name!ModelBase.match_model_tensor_nameS  sb    d((99))#.h{3/H6)**r5   c                \    U R                   R                  XS9nUc  [        SU< 35      eU$ )N)r   try_suffixeszCan not map tensor )rZ   get_namer   )r   r   r  r   s       r6   map_tensor_nameModelBase.map_tensor_name`  s7    ??+++P24(;<<r5   c                    [        S5      e)Nz7set_gguf_parameters() must be implemented in subclassesrO  r   s    r6   set_gguf_parametersModelBase.set_gguf_parametersf  s    !"[\\r5   c                v   U R                  U5      nU R                  (       Ga  UGb  U R                  U[        R                  R
                  U5      (       a  XR                  U'   O>U R                  U[        R                  R                  U5      (       a  XR                  U'   X0R                  ;   a  X0R                  ;   a  U R                  R                  U5      nU R                  R                  U5      n[        R                  " XV/SS9nU R                  [        R                  R                  U5      n[        R                  SU 35        X4/$ U R                  U[        R                  R
                  U5      (       d0  U R                  U[        R                  R                  U5      (       a  / $ XA4/$ )Nr   r   z&Fused gate_exps and up_exps for layer )r  re   r  rq   MODEL_TENSORFFN_GATE_EXPru   
FFN_UP_EXPrv   popr   catr  FFN_GATE_UP_EXPr   r   )	r   r   r   r  r   	gate_dataup_data
fused_data
fused_names	            r6   modify_tensorsModelBase.modify_tensorsi  sr   ''- !!!co++Hd6G6G6T6TVYZZ-7%%c*--h8I8I8T8TVYZZ+5##C( +++7J7J0J 1155c:	--11#6"YY	';C
!44T5F5F5V5VX[\
DSEJK#011 ++Hd6G6G6T6TVYZZ++Hd6G6G6R6RTWXX	&''r5   c                    AAU R                   (       a/  XR                  ;   a   US:  a  [        R                  R                  $ g)Nr$   F)r{   r}   rq   GGMLQuantizationTypeQ8_0)r   r   r   r  n_dimss        r6   tensor_force_quantModelBase.tensor_force_quant  s4    c??t'<'<<1,,111r5   c                    g)Nr)   r)   r  s    r6   generate_extra_tensors ModelBase.generate_extra_tensors  s    r5   c                   U R                   S   nUR                   S   nU R                  X#S5      n[        R                  " US-  US-	  /SS9R                  X#S5      nUR	                  [        R
                  5      R                  5       R                  X#5      S	-  nUS
S
2S
S
2S
S24   US
S
2S
S
2SS
24   S-  -  R                  [        R
                  5      R                  5       nUS-  nUR                  X(S5      n	UR                  X(SS5      R                  X(S5      n
[        R                  " X/SS9R                  X(S-  5      nXUS-  /4$ )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   rD     r&   r8  r        Nr_  axis$   @   )
r   r   r   stackr   r,  r  rK  r  concatenate)r(  r  out_featuresn_blocksrb  valsd_ueqsn_super	d_grouped
qs_groupedraws               r6   _nvfp4_packModelBase._nvfp4_pack  s;    ||A;;q> NN<15{{AHa1f-26>>|WYZ zz%++&,,.66|NQUU1a!8nQ12X! 3488EKKM a-LL:	ZZq!<DD\\^_
nni42>FF|_aUab7R<000r5   c                p   U R                  U5      nU R                  X#5      u  px[        R                  SU SU S35        U R                  R                  Xg[        R                  R                  S9  U R                  UR                  SS5      U5        U R                  UR                  SS5      U5        g )N	Repacked z with shape z and quantization NVFP4	raw_dtyper  .scaler  )r  r  r   r   rN   r  rq   r  NVFP4r  r  )	r   r   r(  r  scale2input_scaler   r  r   s	            r6   _repack_nvfp4ModelBase._repack_nvfp4  s    ''-%%f4
izeW<STU##HT=V=V=\=\#]  !1!1)X!FO  !1!1)^!LkZr5   c           
        0 n0 n0 n0 nU R                  SS/SS9=(       d    Sn/ nU R                  R                  5        GH  nUR                  S5      (       d  M  UR	                  SS5      nUR	                  SS5      n	UR	                  SS	5      n
XR                  ;  a  Mc  [
        R                  U R                  U   " 5       5      n[
        R                  U R                  U   " 5       5      nUR                  S
:  a  M  [
        R                  U R                  R                  U	S 5      " 5       5      n[
        R                  U R                  R                  U
S 5      " 5       5      nUR                  Xx/5        XR                  ;   a  UR                  U	5        XR                  ;   a  UR                  U
5        [        R                  " SU5      nU(       Gag  [        UR                  S5      5      nUR                  S
5      n[        R                  " SU5      nU(       a  [        UR                  S5      5      OSnUU4nU R                  X5      u  nnUU;  a  / UU'   / UU'   / UU'   UUU'   UU   R                  UUR!                  5       45        UU   R                  U[#        UR#                  5       R%                  5       5      45        UU   R                  U[#        UR#                  5       R%                  5       5      45        US:  a-  ['        UU   5      U:  a  U R)                  UXX4UU5        GM  GM  GM  U R+                  X{XU5        GM     [-        UR                  5       5       H  u  nnU R)                  UU4XX4UU5        M     U H  nU R                  R/                  US 5        M!     [-        U R                  R                  5       5       H(  nUR                  S5      (       d  M  U R                  U	 M*     g )Nnum_local_expertsnum_expertsTr   r   r  r#  .weight_scale_2r  r$   c                 .    [         R                  " S5      $ Nr  r   r   r)   r5   r6   r   3ModelBase._generate_nvfp4_tensors.<locals>.<lambda>  s    Z_ZfZfgjZkr5   c                 .    [         R                  " S5      $ r  r  r)   r5   r6   r   r    s    didpdpqtdur5   z8\.experts\.(\d+)\.(gate_proj|up_proj|down_proj)\.weight$r   z\.layers\.(\d+)\.)r  r  )r   rM   r   r$  r  r   to_eagerr9  r   extendr  researchrX   r  r  copyr  r  r   _flush_nvfp4_expertsr  rH  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                          r6   _generate_nvfp4_tensors!ModelBase._generate_nvfp4_tensors  s   MOHJNP:<$$&9=%ITX$Y^]^	 &&++-D==++iAJ,,y2CDK#||I~F!3!33$--d.@.@.F.HIF#,,T-?-?
-K-MNE zzA~$--d.@.@.D.D[Rk.l.noF)2243E3E3I3IJZ\u3v3xyK OOT./000,#5#55 01 		UW[\A
O	GGAJ			"6=-2c%++a.)I&!--f<
Um+)+M#&)+M#&/1',).M#&c"))9chhj*ABc"))9eFLLN<N<N<P6Q*RS#C(//E+BSBSBUBYBYB[<\0]^ q=Ss);%<	%I--c=Qdux  {D  E &J= ""4Li .n #=#5#5#78NC%%sI&6Viz}  @I  J 9 D""4.  ++0023D}}566&&t, 4r5   c                0   UR                  U5      nUR                  U5      n	UR                  U5      n
UR                  U5      nUR                  S S9  [        R                  " U Vs/ s H  oS   PM	     snSS9nSU SU S3nU R	                  U5      n[
        R                  S	U S
[        U5       SUS    SUS    S3	5        U R                  R                  X[        R                  R                  S9  U	R                  S S9  U R                  UR                  SS5      U	 Vs/ s H  nUS   PM
     sn5        U
R                  S S9  U R                  UR                  SS5      U
 Vs/ s H  nUS   PM
     sn5        AAg s  snf s  snf s  snf )Nc                    U S   $ Nr   r)   xs    r6   r   0ModelBase._flush_nvfp4_experts.<locals>.<lambda>  s    1Q4r5   )r   r   r   r  zmodel.layers.z.mlp.experts.r  r  z with shape [, z] and quantization NVFP4r  c                    U S   $ r'  r)   r(  s    r6   r   r*    s    !A$r5   r  c                    U S   $ r'  r)   r(  s    r6   r   r*    s    !r5   r  )r  sortr  r  r  r   r   r   rN   r  rq   r  r  r  r  )r   r   r  r  r  r  r  r!  expertsr  input_scalesr   emergedmerged_namer   rn  s                    r6   r  ModelBase._flush_nvfp4_experts  s   ##C(""3'*..s3!!#&(1AQ41:%cU-	{'J''4izs7|nBuQxjPRSXYZS[R\\tuv##H@Y@Y@_@_#`'!!("2"29h"GX^I_X^ST!A$X^I_`n-!!("2"29n"M^jOk^jYZPQRSPT^jOklV 2 J` Pls   )F	*F
0F
c                D  ^ ^^ T R                   R                  S5      =(       d    0 nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      =(       d    0 nUR                  S5      =(       d    0 nT R                  S-  nU(       a  U(       Gd,  UR                  5       (       Ga  [	        USS	S
9 n[
        R                  " U5      n	U	R                  S5      =(       d    0 n
U	R                  S5      =(       d    0 nUR                  S5      =(       d    SR                  5       nUc!  UT R                   R                  S0 5      S'   UnU
R                  SU5      nU
R                  SU5      nU
R                  SU5      nU
R                  SU5      =(       d    0 nU
R                  SU5      =(       d    0 nS S S 5        US:H  =(       aJ    US:H  =(       d>    US:H  =(       a2    [        U5      =(       a     [        S UR                  5        5       5      nUS:w  a1  U(       a  SnO'[        S UR                  5        5       5      (       a  SnUS:H  T l        US:H  T l        T R                  (       Ga  U(       Gag  S n[        T R                   R#                  5       5       GH<  nUR%                  S5      (       aM  UR'                  S5      nUT R                   ;  a*  T R                   R)                  U5      T R                   U'   Me  Mg  UR%                  S5      (       aT  UR+                  SS5      nUT R                   ;  a0  U" T R                   R)                  U5      5      T R                   U'   M  M  UR%                  S5      (       d  M  UR+                  SS5      nUT R                   ;  d  GM  U" T R                   R)                  U5      5      T R                   U'   GM?     T R-                  5         T R/                  5         T R0                  R2                  (       aA  [5        S T R0                  R2                  R                  5        5       5      [7        S5      -   nO[7        S5      n[9        T R;                  5       T R=                  5       5       GHm  u  nnUR%                  S 5      (       a  M  UR>                  nUR>                  [@        RB                  [@        RD                  4;  a  URG                  [@        RD                  5      nS mURI                  S!5       H%  nURK                  5       (       d  M  [M        U5      m  O   T RO                  UUT5       GH  u  mnURQ                  5       n[7        URR                  5      nT RU                  UTTU5      nUS"::  d  TR%                  S#5      (       a  [V        RX                  RZ                  nUS$L Gae  [        UUU 4S% j[V        R\                  R^                  [V        R\                  R`                  [V        R\                  Rb                  [V        R\                  Rd                  [V        R\                  Rf                  [V        R\                  Rh                  [V        R\                  Rj                  [V        R\                  Rl                  [V        R\                  Rn                  [V        R\                  Rp                  [V        R\                  Rr                  [V        R\                  Rt                  [V        R\                  Rv                  [V        R\                  Rx                  [V        R\                  Rz                  [V        R\                  R|                  [V        R\                  R~                  [V        R\                  R                  [V        R\                  R                  [V        R\                  R                  [V        R\                  R                  [V        R\                  R                  4 5       5      (       d	  TS&S  S';  a  [V        RX                  RZ                  nUS$L Ga  [        UUU 4S( j[V        R\                  R                  [V        R\                  R                  [V        R\                  R                  [V        R\                  R                  [V        R\                  R                  [V        R\                  R                  4 5       5      (       a\  T R                  [V        R                  R                  [V        R                  R                  4;   a  [V        RX                  R                  n[        U[        5      (       Ga  T R                  [V        R                  R                  :X  a  [V        RX                  RZ                  nGOrT R                  [V        R                  R                  :X  a  [V        RX                  R                  nGO.T R                  [V        R                  R                  :X  a  [V        RX                  R                  nOT R                  [V        R                  R                  :X  a  [V        RX                  R                  nOT R                  [V        R                  R                  :X  a  [V        RX                  R                  nOeT R                  [V        R                  R                  :X  a  [V        RX                  R                  nO"[        S)T R                  R                   35      e [V        R                  R                  UU5      nUR>                  [        R                  :X  a!  [V        R                  " URR                  U5      OURR                  nS,S-R                  S. [        U5       5       5       S/3n[        R                  S0U S13T S23-   S3U S4UR                   S5U 35        T R                  R                  TUUS69  GM     GMp     g ! , (       d  f       G
NS= f! [V        R                   a\  n[        R                  S*US+5        [V        RX                  R                  n[V        R                  R                  UU5      n S nAGNGS nAff = f)7Nr&  
quant_algor'  r  r  quantized_layerszhf_quant_config.jsonr   r   r   quantizationproducerr   r   r  r  r  c              3  x   #    U  H0  n[        U[        5      (       d  M  UR                  S 5      S:H  v   M2     g7fr  r  r  s     r6   r   ,ModelBase.prepare_tensors.<locals>.<genexpr>2  s/     tG\!`jklnr`s=AEE(O'==G\r  r  c              3     #    U  HE  n[        U[        5      (       d  M  [        UR                  S 5      5      R	                  S5      v   MG     g7f)r6  r  N)r   r   r   r   r$  )r   vs     r6   r   r;  7  s=     vI^Ablmnptbu?S|,-66w??I^s
   A0Amxfp4c                   ^  U 4S jnU$ )Nc                 ^   > [         R                  T" 5       5      R                  5       n SU -  $ r  )r   r  r  )r  r  s    r6   r   >ModelBase.prepare_tensors.<locals>.inverse_scale.<locals>.loadD  s(     / 8 8 ? E E G"U{*r5   r)   )r  r   s   ` r6   inverse_scale0ModelBase.prepare_tensors.<locals>.inverse_scaleC  s    +  Kr5   r  r  z.weight_global_scaler  z.input_global_scaler  c              3  <   #    U  H  u  p[        U5      v   M     g 7fr   )r   )r   r   rn  s      r6   r   r;  ]  s     S2R$!s1vv2Rs   z.weight,zvision_encoder.weight,)z.attention.masked_biasz.attention.biasz.rotary_emb.inv_freq.r   z_norm.weightFc              3  J   >#    U  H  nTR                  TUT5      v   M     g 7fr   r  r   r   r  r   r   s     r6   r   r;    s.      $C 44XsCHH$    #i)r  z.lora_az.lora_bc              3  J   >#    U  H  nTR                  TUT5      v   M     g 7fr   rG  rH  s     r6   r   r;    s.      
/  003DD rI  zUnknown file type: z%s, %szfalling back to F16{r+  c              3  8   #    U  H  n[        U5      v   M     g 7fr   )r   )r   r   s     r6   r   r;    s     *K?a3q66?s   }z%-rn  , z --> z
, shape = r  )hrK   r   r@   r   r   r   r   lower
setdefaultrD   r  r   r  ry   rz   rH  rM   r   r$  r  r  r  r#  r  rZ   mappingmaxr   r   r  r   r   r   r   r  rK  split	isdecimalrX   r  r  r   r  rq   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_RrB   r~   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   rN   r  )r   r&  r6  r'  r  quant_groupsquant_layersquant_config_filer   hf_quant_configrY  r9  producer_namer  rB  r   r  r  r  max_name_lenr   	old_dtypepartr   r  
data_qtyper1  r   	shape_strr  r   s   `                            @@r6   prepare_tensorsModelBase.prepare_tensors  s	   "ll../DEK(,,\:
*..~>*..x8*..?E2*../ABHb NN-CC,4E4M4M4O4O'w?1"&))A,.22>BHb*..z:@b!)f!5!; B B D'YfDLL++,A2F~V#0L)--lJG
+//M+//,G+//NTRT+//0BLQWUW @  $03G#G $
22 u00 u\"ut|GZGZG\tt	 	!  '$
vI\I\I^vvv$
#w.%0
 >>>'  !!3!3!8!8!:;D}}%566&*&7&7	&B&d.@.@@>B>P>P>T>TUY>ZD..{; A'=>>&*ll3IK\&]&d.@.@@>KDL^L^LbLbcgLh>iD..{; A'<==+/<<8M~+^(+43E3EECPQUQcQcQgQghlQmCnD../?@ < ((* ??""S$//2I2I2P2P2RSSVYZdVeeL78L %d&A&A&CTEUEUEW XD*}}bcc"((I u}}'EE']]5==9
 C

3>>##d)C (
 *.)<)<Zs)S$* "'')TZZ?C?V?VW[]egjlr?s
 Q;("3"3N"C"C!%!:!:!>!>J &  !--:: --@@ --66 --99 --88 --<< --<< --99 --99 --?? --?? --AA --:: --:: --<< --<< --@@ --@@ --:: --:: --:: --::1$  :  },MM!%!:!:!>!>J&3 
/ ))44))>>))00))66))22))22 
/ 
, 
, zz**77**77& 
 &*%>%>%B%B
 j$//zzT%7%7%?%??%)%>%>%B%B
t'9'9'D'DD%)%>%>%B%B
t'9'9'E'EE%)%>%>%C%C
t'9'9'E'EE%)%>%>%C%C
t'9'9'F'FF%)%>%>%D%D
t'9'9'F'FF%)%>%>%D%D
(+>tzz>O)PQQB;;//jAD UYT^T^bdbjbjTj88ZPptpzpz !*K8E?*K!K LBO	 L>3
!nDEQykQVWaWfWfVggqr{q|}~  ++Hdj+QE *T% !YG @?T  BNN8Q0EF!%!:!:!>!>J;;//jADBs&   Dp3 p/
p,/rArrc                j    U R                   R                  [        R                  R                  5        g r   )rN   add_typerq   GGUFTypeMODELr  s    r6   set_typeModelBase.set_type  s     !!$--"5"56r5   c                   U R                   R                  5       u  p#pE[        R                  R	                  U R
                  U R                  U R                  U5      U l        U R                  (       a  U R                  U R                  l
        U R                  R                  c%  U R                  R                  U R                  l
        U R                  [        R                  R                  [        R                  R                  [        R                  R                   4;   aa  U R"                  (       a   [        R                  R$                  U l        O0U R&                  (       a  [        R                  R(                  U l        U R                  R*                  c,  US:  a&  [        R*                  " X#XE5      U R                  l        U R-                  5         [.        R1                  S5        U R                  R3                  U R                   5        [.        R1                  S5        U R5                  5         [.        R1                  S5        U R                   R7                  [        R8                  5        g )Nr   zSet meta modelzSet model parameterszSet model quantization version)rN   get_total_parameter_countrq   Metadatar   rR   rT   rP   rS   rU   r   r@   rB   r~   rv  r   r   ry   MOSTLY_NVFP4rz   MOSTLY_MXFP4_MOE
size_labelr  r   r   set_gguf_meta_modelr  add_quantization_versionGGML_QUANT_VERSION)r   
vocab_onlytotal_paramsshared_paramsexpert_paramsexpert_counts         r6   prepare_metadataModelBase.prepare_metadata  s   CGCSCSCmCmCo@]**4+A+A4CVCVX\XgXgiuv ""!%!8!8DMM ==%!%!4!4DMM::$,,44d6H6H6S6SUYUgUgUsUstt~~!//<<
!//@@
 ==##+q0@'+|Ta'pDMM$$%))$*:*:;*+  "4511$2I2IJr5   c                    [        S5      e)Nz/write_vocab() must be implemented in subclassesr  r  s    r6   write_vocabModelBase.write_vocab  s    !"STTr5   c                "   U R                  5         U R                  SS9  U R                  R                  U R                  S9  U R                  R                  5         U R                  R                  SS9  U R                  R                  5         g )NFr  rh   T)progress)r  r  rN   write_header_to_filerC   write_kv_data_to_filewrite_tensors_to_filecloser  s    r6   writeModelBase.write   su    /--4>>-B..0...= r5   c                    / n[         R                  " U 5       HD  nUR                  U5      (       d  M  UR                  U5      (       d  M3  UR	                  U5        MF     UR                  5         U$ r   )oslistdir
startswithr$  r  r.  )r@   r   r   r   filenames        r6   r   ModelBase.get_model_part_names  s[     "


9-H""6**x/@/@/H/H!!(+ . 	r5   c                   U(       a/  [        U S-  SSS9 n[        R                  " U5      nS S S 5        U$  [        R                  " U SS9R                  5       nSW;   a  US   US'   SU;   a  US   US'   SU;   a  US   S   US'   SU;   a  US   US'   SU;   a  US   US'   U$ ! , (       d  f       W$ = f! [         a  n[        R                  SU  SU 35        U S	-  R                  5       (       d  [        U 5      nUb  Us S nA$ [        R                  S
5        [        U S	-  SSS9 n[        R                  " U5      nS S S 5         S nAM  ! , (       d  f        S nAGN
= fS nAff = f)Nzparams.jsonr   r   r   Ftrust_remote_codez!Failed to load model config from : config.jsonz"Trying to load config.json instead
llm_configtext_config	lm_configthinker_configlanguage_configlfm)r   r   r   r   from_pretrainedto_dict	Exceptionr   r~  r   load_hparams_non_hf)r@   r[   r   configr1  s        r6   rw   ModelBase.load_hparams  st   i-/wG11 HM	&  //	US[[]F 6!$*<$8F=!& $*;$7F=!v%$*+;$<]$KF=!&$*+<$=F=!F?$*5MF=!A HGM  	&NN>ykA3OP-6688,Y7%!MNN?@i-/wG11 HGGGG	&sM   B&#B8 &
B58
E-AE(E-
#E(-EE(
E%	E(%E((E-c                .   ^ ^ T(       d   eSU U4S jjnU$ )Nc                   > U R                   [        R                  R                  :X  a  [        R                  O[        R
                  nT H  nU TR                  U   U'   M     U $ r   )rW   rq   
MODEL_ARCHr;   r8   r:   r?   )modelcls
model_typer   r   namess      r6   func ModelBase.register.<locals>.func<  sR    -5-@-@DOODZDZ-Z))`i`n`nJ7?"":.t4 Or5   )r  r   r  r   r)   )r   r  r  s   `` r6   registerModelBase.register8  s    u	 	
 r5   c                    U R                   R                  5        H_  u  p[        R                  UR                   S35        [        UR                  5       5       H  n[        R                  SU 35        M     Ma     g )Nz models:z  - )r?   r   r   errorr   r   r   )r   r  model_classesr   s       r6   print_registered_models!ModelBase.print_registered_modelsC  sa    ),););)A)A)C%JLLJOO,H56}1134tD6]+ 5 *Dr5   c                f     U R                   U   U   $ ! [         a    [        SU< S35      S ef = f)NzArchitecture z not supported!)r?   r   rO  )r   ri   r  s      r6   from_model_architecture!ModelBase.from_model_architectureJ  sF    	Y%%j1$77 	Y%dX_&MNTXX	Ys    0)r{   r}   ru   rz   ry   rv   r@   rT   r\   rI   rF   rC   rB   re   rN   rK   rE   rH   rS   rR   rP   rM   rU   r]   rV   rG   )&r@   r   rB   rA   rC   r   rE   rD   rG   rD   ra   rD   rR   rQ   rP   rO   rb   rX   rc   rX   rI   rD   rd   rD   rK   dict[str, Any] | NonerU   rO   r\   rD   r]   rD   rV   rQ   re   rD   rf   rD   )rh   r   r   r   r  r   Fr   Iterable[str]r   rD   r  r   r   )rU   rO   r  rL   )r  r   r  rD   )r  r   r  r   )r  r   r  zlist[float]r  z tuple[str, Callable[[], Tensor]]r  z'tuple[str, Callable[[], Tensor]] | None)r  zIterator[tuple[str, Tensor]])Nr  )r   gguf.MODEL_TENSORr  
int | Noner   r   r  r   )r  )
r   r   r   r  r  r  r   r   r  rD   ))r  z.bias)r   r   r  zSequence[str]r  r   )r   r   r   r   r  r  r  Iterable[tuple[str, Tensor]])
r   r   r   r   r  r  r  rX   r  z gguf.GGMLQuantizationType | bool)r  r  )r(  r   r  r   r  ztuple[np.ndarray, list[int]])
r   r   r(  r   r  r   r  r   r  r   r  rD   )r@   r   r   r   r   r   r  z	list[str])r@   r   r[   rD   )r  r   r  zCallable[[AnyModel], AnyModel])ri   r   r  r   )1r*   r+   r,   r-   r8   r:   r;   r?   __annotations__r[   r\   r]   r^   r_   r`   r   classmethodr   r   rx   staticmethodr	  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r#  r  r  r  r  r  r  r   rw   r  r  r  r4   r)   r5   r6   r=   r=   K   s   "CN? 
 OO
JM22  """"!!   "" $t#49+T905'5
 !&%HdFDmr',E26QU*+1V[+0SWz~AF=B15+0#(B_ $B_59B_$/B_DNB_ %(B_ >AB_ PTB_ %)	B_ <Q	B_ nx	B_
 ;?B_ 7;B_ $/B_ %)B_ !B_H ( (
9Yv S S?@E-N 	 	+](6 1 10[J-X*BRH7!KFU!   " "H   , , =F^^ Y Yr5   r=   c                  .  ^  \ rS rSr% \R
                  rS\S'   U 4S jr\	S 5       r
\	SU 4S jj5       rS rS U 4S jjrS	 rS
 rS!S jrS"S jrS#S jrS$S jrS$S jrS$S jrS rS rS%S jrS rS rS rS&S jrS$S jrS rS rS r S r!S r"Sr#U =r$$ )'rk   iR  r   hf_archc                X  > [         TU ]  " U0 UD6  U R                  (       d&  [        U R                  U R
                  5      U l        OSU l        SU R                  ;   a"  0 U R                  EU R                  S   EU l        U R                  / SQ5      U l        [        R                  " U R                  U R                  5      U l        U R                  R                  SU R                  R                  S5      5      =(       d    0 U l        U R                  / SQSS9nU R                  / S	QSS9nU R                  / S
QSS9nU R                  S/SS9nSU R                  ;  a  SU R                  ;  a  Ub  SU0U R                  S'   SU R                  ;  a  Ub  X0R                  S'   SU R                  ;  a,  U R                  R                  S5      =nb  XpR                  S'   SU R                  ;  a  Ub  XPR                  S'   SU R                  ;  a  Ub  X`R                  S'   g g g g g )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_typerj   r  )superr   r[   get_model_architecturerK   r  r  r   rY   rq   get_tensor_name_maprW   rZ   r   r  )	r   argskwargsr  r  r  r  r  	__class__s	           r6   r   TextModel.__init__V  s+   $)&)%%1$,,PDLDLDLL(JdllJdll=.IJDL++,fg224??DDTDTU#||//0A4<<CSCSTbCcdjhj%%  'G  RV%  W
++  -S  ^b+  c $ 0 01fqu 0 v+/+;+;=_<`ko+;+p( 4#7#77<OW[WkWk<k+=IK[<\$$%894#7#77J<R5?$$\2$"6"66I]I]IaIabhIi<iI;v4=$$[1&d.B.BBG\Gh@U$$%<=19M9MMRrR~Kk$$%GH SM =l7r5   c                V    SU R                   ;  a  [        SU R                  < 35      eg )NrW   z"Missing property 'model_arch' for )__dict__rm   r*   )r   s    r6   __init_subclass__TextModel.__init_subclass__x  s-     s||+@@PQRR ,r5   c                $  > Uu  p#UR                  S5      (       df  SU;   d`  SU;   dZ  SU;   dT  SU;   dN  SU;   dH  SU;   dB  SU;   d<  S	U;   d6  S
U;   d0  SU;   d*  SU;   d$  SU;   d  SU;   d  SU;   d  SU;   d  SU;   d  SU;   a  g [        TU ]	  U5      $ )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patch_merge_mlp.zmodel.connector.)r  r   r   r   r  r   r  r  s       r6   r   TextModel.filter_tensors  s    	 ??  c  d  d$	T(9X=MQZ^bQb$D(84';$+>4'+Bd+J"d*.>$.F D(,=,E"d*.@D.HL^bfLfw%d++r5   c                $    U R                  5         g r   )_set_vocab_gpt2r  s    r6   	set_vocabTextModel.set_vocab  s    r5   c           
       > [         TU ]  US9  U R                  R                  5       S   nU R                  R
                  R                  S5      S   nU R                  R                  5       (       Ga  U(       d  [        R                  " U R                  R
                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  X2S:  a  SOS S9nOj[        R                  " U R                  R
                  U R                  R                  U R                  R                  U R                  R                  S S SS9nU R                  U S	3-  U l        OGU R                  R                   [        R"                  " U R                  R
                  U5      -  U l        [$        R'                  S
5        U R)                  5         g )Nr  r   r   r$   LoRA)r  vocabr  output_typer  .ggufzSet model tokenizer)r   r  rN   r  rB   r   	partitionrC   is_dirrq   naming_conventionrS   basenamefinetuneversionr  parentfill_templated_filenamer   r   r  )r   r  r  r  fname_defaultr  s        r6   r  TextModel.prepare_metadata  s    J 7''AACAF::??44S9!< >>  ""%)%;%;DMM<N<NPTP]P]PfPfhlhuhuh~h~  AE  AN  AN  AV  AV  X\  Xe  Xe  Xp  Xp  r}  cd  Td  JP  jn  &o%)%;%;DMM<N<NPTP]P]PfPfhlhuhuh~h~  AE  AN  AN  AV  AV  cg  uy  FM  &N "^^u.EEDN "^^22T5Q5QRVR`R`ReRegr5ssDN)*r5   c                   U R                   R                  U R                  5        U R                  / SQSS9=nb3  U R                   R	                  U5        [
        R                  SU 35        U R                  / SQSS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  / SQSS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  / S	QSS9=nb3  U R                   R                  U5        [
        R                  S
U 35        U R                  SS/SS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  R                  S5      SL a0  U R                   R                  S5        [
        R                  S5        U R                  R                  SU R                  5      nUR                  S5      =nGbd  UR                  S5      n[        R                   R"                  n	US:X  aU  UbR  [        R                   R$                  n	U R                   R'                  U	5        U R                   R)                  U5        GOUS:X  Ga?  UGb;  [        R                   R*                  n	U R                   R'                  U	5        U R                   R)                  U5        U R                   R-                  US   5        UR                  S5      =n
b  U R                   R/                  U
5        UR                  SUR                  S5      5      =nb  U R                   R1                  U5        UR                  S5      =nb  U R                   R3                  U5        UR                  S5      =nb  U R                   R5                  U5        OvUS:X  d  US:X  a6  [        R                   R6                  n	U R                   R'                  U	5        O4US:X  a  O-UR9                  5       S:X  a  O[
        R;                  S U 35        [
        R                  S!U	R<                   35        S"U R                  ;   ay  U R                  S"   n[?        U5      S#:  a"  URA                  S$5        [?        U5      S#:  a  M"  U R                   RC                  US S# 5        [
        R                  S%US S#  35        UR                  S&5      =nb3  U R                   RE                  U5        [
        R                  S'U 35        U R                  R                  S(0 5      R                  S&5      =nb3  U R                   RG                  U5        [
        R                  S)U 35        U R                  S*S+/SS9=nb3  U R                   RI                  U5        [
        R                  S,U 35        U R                  / S-QSS9=nb3  U R                   RK                  U5        [
        R                  S.U 35        U R                  / S/QSS9=nb3  U R                   RM                  U5        [
        R                  S0U 35        U R                  / S1QSS9=nb3  U R                   RO                  U5        [
        R                  S2U 35        U R                  R                  S35      =nb3  U R                   RQ                  U5        [
        R                  S4U 35        U R                  R                  S55      =nb3  U R                   RS                  U5        [
        R                  S6U 35        U R                  / S7QSS9=nb  US8:X  a4  U R                   RU                  [        RV                  RX                  5        OUS9:X  a4  U R                   RU                  [        RV                  RZ                  5        OHUS::X  a4  U R                   RU                  [        RV                  R\                  5        O[_        S;U 35      e[
        R                  S<U 35        U R                  R                  S=5      =nb6  U R                   Ra                  U5        U R                   Rc                  U5        U R                   Re                  U Rf                  5        [
        R                  S>U Rf                   35        g )?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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	  n_routed_expertsz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softmaxsqrtsoftplusz0Unsupported expert score gating function value: z%gguf: expert score gating function = head_dimzgguf: file type = )4rN   add_block_countrY   r   add_context_lengthr   r   add_embedding_lengthadd_feed_forward_lengthadd_head_countadd_head_count_kvrK   r   add_causal_attentionr  rq   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LONGROPErP  r~  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SOFTMAXSQRTSOFTPLUSr   add_key_lengthadd_value_lengthadd_file_typerB   )r   r,  r2  n_ffr9  	n_head_kvrope_paramsr  rope_factorrope_gguf_typeyarn_ext_factoryarn_attn_factoryarn_beta_fastyarn_beta_slowrJ  r  r  	f_rms_eps
f_norm_epsr  n_experts_usedn_expert_groupsn_group_usedrX  r_  s                            r6   r  TextModel.set_gguf_parameters  s   (()9)9:%%  'S  ^b%  c  cE  p//6KK1%9:&&'GRV&WWFd11&9KK3F8<=$$  &Q  \`$  a  aD  n44T:KK6tf=>&&'S^b&ccFp++F3KK-fX67))+@,*OZ^)__Il..y9KK7	{CD<<K(E111%8KK89 **../?AUAUV$55IB%//(3K!1166NH$)@!%!5!5!<!<  66~F  88Ef$)@!%!5!5!:!:  66~F  88E  >>{Km?no'27M'NNO[$$EEoV(38JKOO\iLj(kk$x$$FFGWX&1ook&BBNO$$DD^T&1ook&BBNO$$DD^Td"i:&=!%!5!5!>!>  66~Fi'"h.!4YK@AKK4^5H5H4IJKd222 00AMm$q($$Q' m$q(88r9JKKK0r1B0CDE%//,77JD//
;KK-j\:; $ 4 4 8 89Lb Q U UVb ccp334DEKK12B1CDE))>:*FQU)VVIc33I>KK3I;?@**+cnr*ssJ  A//
;KK5j\BC))*bmq)rrI--i8KK/	{;<"../p{.  A  AN  N22>BKK5n5EFG#||//	::OG33ODKK66GHI LL,,\::LG88FKK;L>JK**  ,j  uy*  z  zJ  GY&  778Q8Q8Y8YZy(  778Q8Q8Y8YZ~-  778Q8Q8^8^_ #ST^S_!`aaKK?
|LM((44HA++H5--h7&&tzz2(56r5   c                ,   [        U R                  R                  5      S:w  a  [        S5      eU R	                  SS9  U R                  R                  U R                  S9  U R                  R                  5         U R                  R                  5         g )Nr   z)Splitting the vocabulary is not supportedTr  r  )	r   rN   r   r   r  r  rC   r  r  r  s    r6   r  TextModel.write_vocab!  sw    t''(A-HII.--4>>-B..0 r5   c                   [        U[        [        45      (       a  UR                  SS9nO5[        U[        5      (       a  UR                  5       R                  SS9nOUnUS;   nU=(       d)    UR                  S5      =(       a    UR                  S5      nU=(       d)    UR                  S5      =(       a    UR                  S5      nU=(       d)    UR                  S5      =(       a    UR                  S	5      nU$ )
Nr   r   )z<pad>z<mask>z<2mass>z[@BOS@]z<||>u   <｜u   ｜>z<unused>)r   bytes	bytearraydecode
memoryviewtobytesr  r$  )r   token
token_textseems_specials       r6   does_token_look_special!TextModel.does_token_look_special*  s    eeY/00w7Jz**///AJJ # '
 

 &d**?*?*E*c*J]J]^bJc%h**?*?*G*gJL_L_`fLg &h**?*?	*J*gzObObcfOgr5   c                   / n/ nSSK Jn  UR                  U R                  5      nU R                  R                  S[        UR                  5      5      n[        UR                  R                  5       5      U:  d   eU R                  U5      nUR                  R                  5        VVs0 s H  u  pxX_M	     n	nnUR                  5       n
UR                  n[        U5       GH  nX;  a@  UR                  SU S35        UR                  [         R"                  R$                  5        MI  X   nX;   Ga  X   R&                  (       dS  UnUR)                  UR+                  USS95      nX:w  a-  [,        R/                  [1        U5       S[1        U5       S	35        X   R2                  (       d  U R5                  U5      (       a*  UR                  [         R"                  R6                  5        OtUR9                  S
R)                  S5      S5      nUR                  [         R"                  R:                  5        O)UR                  [         R"                  R<                  5        UR                  U5        GM     XU4$ s  snnf )Nr   AutoTokenizer
vocab_size[PAD]Fadd_special_tokens  is encoded and decoded back to  using AutoTokenizer   ▁r   rO  )transformersr  r  r@   rK   r   r   r  rS  r   get_vocab_base_prer   get_added_vocabadded_tokens_decoderr-  r  rq   	TokenTyper2   
normalizedr  encoder   r   reprspecialr  r0   r  r1   r.   )r   tokenstoktypesr  	tokenizerr  tokpreencoded_tokid_reverse_vocabadded_vocabr  r?  r  previous_tokens                  r6   get_vocab_baseTextModel.get_vocab_baseB  s
    .!11$..A	\\%%lC	4HI
9??))+,z999((3BK//BWBWBYZBY.>k)BYZ//1(==z"A%QCqk* 5 56*-' 02==). ) 0 01A1A%\a1A1b c)2"KK4+?*@@`aefkal`m  nB  )C  D+.66$:V:VW\:]:] (>(>? !&o.D.DW.Ms S (C(CDOODNN$9$9:e$1 #4 ''? [s   ,I>c                N	   SnUR                  U5      n[        [        U5      R                  5       5      R                  5       n[        R                  SU 35        [        R                  SU 35        S nUS:X  a  SnUS:X  a  SnUS:X  a  SnUS	:X  a  SnUS
:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS :X  a  S!nUS":X  a  S#nUS$:X  a  S%nUS&:X  a  S'nUS(:X  a  S)nUS*:X  a  S+nUS,:X  a  S-nUS.:X  a  S/nUS0:X  a  S1nUS2:X  a  S3nUS4:X  a  S5nUS6:X  a  S!nUS7:X  a  S8nUS9:X  a  S:nUS;:X  a  S<nUS=:X  a  S>nUS?:X  a  S@nUSA:X  a  SnUS2:X  a  SBnUSC:X  a  SDnUSE:X  a  SFnUS,:X  a  SGnUSH:X  a  SInUSJ:X  a  SnUSK:X  a  SLnUSM:X  a  SNnUSO:X  a  SPnUSQ:X  a  SRnUSS:X  a  STnUSU:X  a  SVnUSW:X  a  SXnUSY:X  a  SZnUS[:X  a  S\nUS]:X  a  S^nUS_:X  a  S`nUSa:X  a  SbnUSc:X  a  SdnUSe:X  a  SfnUSg:X  a  ShnUSi:X  a  SjnUSk:X  a  SlnUSm:X  a  SnnUSo:X  a  SpnUSq:X  a  SrnUSs:X  a  StnUSu:X  a  SvnUSw:X  a  SxnUSy:X  a  SznUS{:X  a  S|nUS}:X  a  S~nUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  S#nUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUGc
  [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  SU 35        [        R                  S5        [        R                  S5        [        S5      e[        R                  S[        U5       35        [        R                  SU 35        U$ )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@972da7b59cec44d1f0a490a86c96df53859e486e481563e5dddac155013d87aclaguna
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   debugr~  rO  r  )r   r  chktxtchktokchkhshress         r6   r  TextModel.get_vocab_base_prer  s]    d!!&)F**,-779xx()xx()
 WWCWWCWWCWWCWWCWWCWWCWW!CWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWW CWW"CWWCWWCWWCWW"CWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWW CWWCWWCWW CWWCWWCWWCWWCWWCWWCWWCWW CWWCWWCWWCWWCWWCWWCWWCWW$CWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWW#CWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWW+CWW,CWWCWWC;NN4 NNstNNRSNNOPNNklNN[\NN}~NNXYNN4 NN\&23NNstNN4 %&jkk+DI;78xx()
r5   c                :    U R                   R                  S5        g )Nnone)rN   add_tokenizer_modelr  s    r6   _set_vocab_noneTextModel._set_vocab_none  s    ,,V4r5   c                v   U R                  5       u  pnU R                  R                  S5        U R                  R                  U5        U R                  R	                  U5        U R                  R                  U5        [        R                  " U R                  SS9nUR                  U R                  5        g )Ngpt2Tload_merges
r  rN   rQ  add_tokenizer_preadd_token_listadd_token_typesrq   SpecialVocabr@   add_to_gguf)r   r  r  r  special_vocabs        r6   r  TextModel._set_vocab_gpt2  s    #'#6#6#8 &,,V4**62''/((2))$..dK!!$"2"23r5   c                v   U R                  5       u  pnU R                  R                  S5        U R                  R                  S5        U R                  R	                  U5        U R                  R                  U5        [        R                  " U R                  SS9nUR                  U R                  5        g )N
whitespaceTrV  rX  )r   r  r  r   r^  s        r6   _set_vocab_whitespaceTextModel._set_vocab_whitespace  s    "113!,,\:**<8''/((2))$..dK!!$"2"23r5   c                   SSK Jn  UR                  U R                  SS9nU R                  R                  S[        UR                  5      5      n[        UR                  R                  5       5      U:  d   eUR                  R                  5        VVs0 s H  u  pEXT_M	     nnnUR                   H  nUS-   XbR                  U   '   M     UR                  5       nUR                  n	/ n
/ n[        U5       GH	  nX;  a@  U
R!                  SU S35        UR!                  ["        R$                  R&                  5        MI  Xl   nX;   a}  X   R(                  (       d  U R+                  U5      (       a*  UR!                  ["        R$                  R,                  5        OSUR!                  ["        R$                  R.                  5        O)UR!                  ["        R$                  R0                  5        U
R!                  U5        GM     U R3                  U5      nU R4                  R7                  S	5        U R4                  R9                  U5        U R4                  R;                  U
5        U R4                  R=                  U5        ["        R>                  " U R                  SS
9nURA                  U R4                  5        g s  snnf )Nr   r  Tr  r  u   r  r  	hybriddnarV  )!r  r  r  r@   rK   r   r   r  rS  r   r   kmersdna_token_to_idr  r  r-  r  rq   r  r2   r  r  r0   r1   r.   r  rN   rQ  rY  rZ  r[  r\  r]  )r   r  r  r  r  r  r  kmerr  r  r  r  r?  r  r  r^  s                   r6   _set_vocab_hybriddnaTextModel._set_vocab_hybriddna  s   .!11$..TX1Y	\\%%lC	4HI
9??))+,z999BK//BWBWBYZBY.>k)BYZ OOD=AH_M33D9: $//1(== z"A%QCqk* 5 56*-'+.66$:V:VW\:]:] (>(>? (C(CDOODNN$9$9:e$ # ((3,,[9**62''/((2))$..dK!!$"2"23C [s   J?c           	        SSK Jn  U R                  nU R                  n/ n/ nSSKJn  UR                  USS9nUS   n[        UR                  5       R                  5       5      U:  d   eU R                  U5      n	/ n
0 nUR                  nUR                  5        H~  u  pXUR                  U5      '   [        U5      S:X  a  M)  UR                  XUS9n[        U5      S	:X  d   eU
R!                  S
R#                  [%        UR                  U5      5      5        M     UR&                  n0 UEUER                  5        VVs0 s H	  u  nnUU_M     nnn[)        U5       H  nUU;  a@  UR!                  SU S35        UR!                  [*        R,                  R.                  5        MI  UU   U;   a?  UR!                  UU   5        UR!                  [*        R,                  R0                  5        M  UR!                  UU   5        UR!                  [*        R,                  R2                  5        M     U R4                  R7                  S5        U R4                  R9                  U	5        U R4                  R;                  U5        U R4                  R=                  U5        [*        R>                  " USS9nU
Ul         [        URB                  5      S:X  a>  URE                  SUR&                  S   5        URE                  SUR&                  S   5        URE                  SUR&                  S   5        URG                  U R4                  5        g s  snnf )Nr   )	QwenModelr   r  Tr  r  )max_rankr$   rO  r  r  rU  FrV  bos<|endoftext|>eosunk)$qwenrl  r@   rK   r  r  r  rS  	get_vocabr   r  mergeable_ranksr   token_bytes_to_stringr   bper  r  mapspecial_tokensr-  rq   r  r2   r0   r.   rN   rQ  rY  rZ  r[  r\  mergesspecial_token_ids_set_special_tokenr]  )r   rl  r@   rK   r  r  r  r  r  r  ry  r  rt  r  rankr2  r  r  r  r  r?  r^  s                         r6   _set_vocab_qwenTextModel._set_vocab_qwen  s   #NN	,, .!11)t1T	\*
9&&(//12Z???((3#33*002KE<@)11%895zQ]]?D]IFv;!###MM#((3y'F'F#OPQ 3  ..C[eC[{C[CaCaCcdCc/?{C{*Ccdz"A%QCqk* 5 56q![0mA./ 6 67mA./ 5 56 # 	,,V4**62''/((2)))G%}../14,,UI4L4L_4]^,,UI4L4L_4]^((	0H0H0YZ!!$"2"235 es   Mc                   U R                  5       u  p#nU R                  R                  S5        U R                  R                  S5        U R                  R	                  U5        U R                  R                  U5        U R                  R                  U5        [        R                  " U R                  [        U5      S9nUR                  U R                  5        g Nllamadefault)n_vocab)_create_vocab_sentencepiecerN   rQ  rY  rZ  add_token_scoresr[  rq   r\  r@   r   r]  )r   r]  r  scoresr  r^  s         r6   _set_vocab_sentencepiece"TextModel._set_vocab_sentencepiece*  s    #'#C#C#E ,,W5**95''/))&1((2))$..#f+N!!$"2"23r5   c           
     
   SSK Jn  U R                  S-  nUR                  5       (       d  [	        SU 35      eU" 5       nUR                  [        U5      5        U R                  SS/SS9=(       d    UR                  5       n[        U5       Vs/ s H  nS	U S
3R                  S5      PM     nnS/U-  n[        R                  /U-  n[        UR                  5       5       GH  n	X:  a   [        R                  SU	 SUS-
   35          OUR                  U	5      n
U
R                  S5      nUR!                  U	5      n[        R"                  nUR%                  U	5      (       a  [        R&                  nOtUR)                  U	5      (       a  [        R*                  nOMUR-                  U	5      (       a  [        R                  nO&UR/                  U	5      (       a  [        R0                  nXU	'   XU	'   XU	'   GM     U R                  S-  nUR                  5       (       a  [3        USSS9 n[4        R6                  " U5      nU HV  nUU   n	X:  a   [        R                  SU	 SUS-
   35        M-  UR                  S5      Xi'   SXy'   [        R8                  X'   MX     S S S 5        U R                  S-  nUR                  5       (       Gat  [3        USSS9 n[4        R6                  " U5      nUR;                  S0 5      nUR=                  5        GH#  u  n	n[?        U	5      n	US   nX:  a   [        R                  SU	 SUS-
   35        M<  X   [        R                  :w  aH  Xi   UR                  S5      :w  a1  [        R                  SU	 SXi   RA                  S5      < SU< 35        UR;                  S5      (       d  U RC                  U5      (       a  [        R*                  X'   O3URE                  SRA                  S5      S5      n[        R8                  X'   SXy'   UR                  S5      Xi'   GM&     S S S 5        U[G        U5      :  a  U[G        U5      -
  n[        RI                  SU SU S
35        [        SUS-   5       HP  nURK                  [M        S	U S
3SS95        URK                  S5        URK                  [        R                  5        MR     XgU4$ s  snf ! , (       d  f       GNM= f! , (       d  f       N= f) Nr   )SentencePieceProcessorztokenizer.modelzFile not found: vocab_size_per_layer_inputr  Tr
  r  r  r   g     zignore tokens from z: id is out of range, max=r   zadded_tokens.jsonr   r   zignore token      @tokenizer_config.jsonr  contentzreplacing token r  z -> r  r  rO  Padding vocab with  token(s) - [PAD1] through [PAD)'sentencepiecer  r@   r   FileNotFoundErrorLoadFromFiler   r   r  r-  r  r"   r2   r   r~  	IdToPieceGetScorer.   	IsUnknownr/   	IsControlr0   IsUnusedIsByter3   r   r   r   r1   r   r   rX   r  r  r  r   rI  r  r  )r   r  tokenizer_pathr  r  r?  r  r  r  token_idpiecetextscoretoktypeadded_tokens_filer   added_tokens_jsonr   tokenizer_config_filetokenizer_config_jsonr  
token_datar  	pad_counts                           r6   r  %TextModel._create_vocab_sentencepiece6  s   8*;;%%''#&6~6F$GHH*,	s>23%%('
  &  4 '113 	
 EJ*DUVDUqaS{11':DUV'j:56==>Ki2245H%!4XJ>XYcfgYgXhij''1E<<(D&&x0E-44G""8,,199$$X..199##H--188!!(++166#8$8!(X+ 6. !NN-@@$$&&'w?1$(IIaL!,C05H-xj@Z[ehi[iZj'kl '*zz'':F$'.F$)@)M)MH& - @ !%1H H ((**+S7Cq(,		!%'<'@'@AWY['\$,@,F,F,H(Hj"8}H!+I!6E-xj@Z[ehi[iZj'kl )-D-K-KK!+u||G/DD"NN-=hZr&JZJaJabiJjImmqrwqz+{|!~~i00D4P4PQV4W4W-D-L-L* %o.D.DW.Ms S-D-Q-Q*'.F$',||G'<F$! -I D* F#"S[0ILL.yk9XYbXccdef1i!m,ed1#QK'BCg& 7 > >? -
 x''Q W: @? DCs    S+A3S$E!S6$
S36
Tc                   [         R                  " U R                  5      n/ n/ n/ nUR                  5        H9  u  pVnUR	                  U5        UR	                  U5        UR	                  U5        M;     [        U5      UR                  :X  d   eU R                  R                  S5        U R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        [         R                  " U R                  [        U5      S9nUR                  U R                  5        g r  )rq   LlamaHfVocabr@   
all_tokensr  r   r  rN   rQ  rY  rZ  r  r[  r\  r]  )	r   r  r  r  r  r  r  r  r^  s	            r6   _set_vocab_llama_hfTextModel._set_vocab_llama_hf  s   !!$..1$)$4$4$6 DMM$MM% OOG$ %7
 6{e.....,,W5**95''/))&1((2))$..#f+N!!$"2"23r5   c           	        U R                   S-  R                  5       (       d   eU R                  R                  SS5      nSR	                  S5      /n[
        R                  R                  /n[        U R                   S-  SSS9 nUR                  5       nU GH  nUR                  S5      n[        U5      S	:  d   e[        R                  " SR                  US
S 5      5      [        US   5      p[!        U["        5      (       a  UR	                  S5      OUn[!        U[$        5      (       d   e[        U5      U	:X  d   e['        U5      SS n
UR)                  U
R	                  S5      5        UR)                  [
        R                  R*                  5        GM     S S S 5        U[        U5      -
  nUS:  d   e[-        [        U5      U5       HP  nUR)                  SU S3R	                  S5      5        UR)                  [
        R                  R.                  5        MR     U R0                  R3                  S5        U R0                  R5                  U5        U R0                  R7                  U5        [
        R8                  " U R                   SS9nUR:                  co  [=        [>        5      R@                  R@                  S-  S-  S-  nUR                  5       (       a%  [        USSS9 nURC                  5       nS S S 5        OSnWUl        URE                  SS5        SURF                  S'   SURF                  S'   URI                  U R0                  5        g ! , (       d  f       GN= f! , (       d  f       Ns= f)Nzrwkv_vocab_v20230424.txtr  i   z<s>r   r   r   rO  r%   r   r8  r$   r   r  r  rwkvFrV  models	templateszllama-cpp-rwkv-world.jinjaz
rwkv-worldeoti  rn  rp  )%r@   r   rK   r   r  rq   r  r0   r   	readlinesrT  r   astliteral_evalr  rX   r   r   r  r  r  r.   r-  r2   rN   rQ  rZ  r[  r\  chat_templater   __file__r&  readr{  rz  r]  )r   r  r  r  r   lineslinepartsr  	token_lenr  	remainderr?  r^  template_pathtemplates                   r6   _set_vocab_rwkv_worldTextModel._set_vocab_rwkv_world  s   !;;DDFFFF\\%%lE:
$||G45#~~556$..#==sWUYZKKME

35zQ&#&#3#3CHHU1R[4I#JCPUVXPYNy1;E31G1GW-U!%////5zY..."&u+a"3
j//89 5 56  V V,	A~~s6{J/AMMD1+,,W56OODNN112 0 	,,V4''/((2))$..eL&&. N11888CkQTppM$$&&-w?1 vvxH @? (*2M'((412''.12''.!!$"2"23I VU2 @?s   DM0M1
M.1
M?c           	        [        [        R                  S   5      S-  SU S3-  n[        R	                  S[
        R                  R                  U[
        R                  " 5       5       S35        [        R                  " US5      nUS:X  a  S	OS
nUR                  [        R                  R                  R                  5      nU(       d   eU R                  R                  [!        UR"                  S   5      R%                  S5      5        UR                  [        R                  R                  R&                  5      nU R                  R)                  U(       a'  [!        UR"                  S   5      R%                  S5      OU5        UR                  [        R                  R                  R*                  5      nU(       d   eU R                  R-                  UR.                   Vs/ s H  n[!        UR"                  U   5      PM     snS U 5        US:X  a  UR                  [        R                  R                  R0                  5      nU(       d   eU R                  R3                  UR.                   Vs/ s H"  ovR"                  U   R5                  5       S   PM$     snS U 5        UR                  [        R                  R                  R6                  5      nU(       d   eU R                  R9                  UR.                   Vs/ s H"  ovR"                  U   R5                  5       S   PM$     snS U 5        US:w  a  UR                  [        R                  R                  R:                  5      nU(       d   eU R                  R=                  UR.                   Vs/ s H  n[!        UR"                  U   5      PM     sn5        UR                  [        R                  R                  R>                  5      =nb9  U R                  RA                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RB                  5      =nb9  U R                  RE                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RF                  5      =nb9  U R                  RI                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RJ                  5      =nb9  U R                  RM                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RN                  5      =nb9  U R                  RQ                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RR                  5      =nb:  U R                  RU                  UR"                  S   R5                  5       S   5        g g s  snf s  snf s  snf s  snf )Nr   r  zggml-vocab-r  zUsing tokenizer from 'r   r   zgpt-neoxr  r  r8  r   z	llama-spm)+r   sysrh   r   r~  r  relpathgetcwdrq   
GGUFReader	get_fieldKeys	Tokenizerr  rN   rQ  r  r  r  PRErY  LISTrZ  r   SCORESr  r`  
TOKEN_TYPEr[  MERGESadd_token_mergesBOS_IDadd_bos_token_id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   rP   r  r  vocab_readerdefault_prefieldr?  s           r6   _set_vocab_builtinTextModel._set_vocab_builtin  s   chhqk*X5+j\QV8WW/PRPYPYP[0\/]]^_`~s;)Z7eY&&tyy':':'@'@Au,,U5;;r?-C-J-J7-ST&&tyy':':'>'>?**UZ5R+A+H+H+Q`kl&&tyy':':'?'?@u''

(S
1u{{1~)>
(ST_U_(`a$ **499+>+>+E+EFEL5--SXS]S].^S]a{{1~/D/D/Fq/IS].^_j`j.kl&&tyy':':'E'EFu((ejj)Yj++a.*?*?*A!*Dj)YZe[e)fg$ **499+>+>+E+EFEL5--ejj.YjuU[[^/Dj.YZ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,G,GHHEU..u{{2/E/E/G/JK!++DII,?,?,G,GHHEU..u{{2/E/E/G/JK V5 )T
 /_ *Z
 /Zs   )"Y):)Y.)Y3$"Y8c                   S nU R                   S-  nUR                  5       (       aR  [        USS9 n[        R                  " U5      nS S S 5        W H#  nUS   R                  S5      (       d  M  US   n  O   [        R                  R                  [        R                  R                  [        R                  R                  S.nUGb  [        U R                   U-  S-  SS9 n[        R                  " U5      nS S S 5        WR                  S	5      (       a  [        R                  R                  nOUR                  S
5      (       a  [        R                  R                  nOWUR                  S5      (       a  [        R                  R                  nO&UR                  S5      =o;   a  Xi   nO[        S5      eU R                  R                  U5        g g ! , (       d  f       GN= f! , (       d  f       N= f)Nzmodules.jsonr   r   rj   Poolingrh   )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$  rq   PoolingTypeMEANCLSLASTr   rO  rN   add_pooling_type)
r   pooling_pathmodule_pathr   modulesmodmode_mappingpoolingpooling_typer  s
             r6   _try_set_pooling_typeTextModel._try_set_pooling_type   s   nn~5  kG4))A, 5v;''	22#&v;L  $$))##''))..
 #dnn|3mCgVZ[))A, W{{566#//44566#//33566#//44")++n"==,N+9)*\]]--l; $ 54 WVs   G%G,
G),
G:c                   SSK Jn  UR                  U R                  5      n[        R
                  " U R                  SS9nU R                  5       u  pEnU R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        UR                  SUR                  5       S   5        UR                  SUR                  5       S	   5        UR                  S
UR                  5       S   5        UR                  SUR                  5       S   5        UR                  U R                  5        g )Nr   r  TrV  rU  rp  ro  r  <|user|>rq  rn  r  r  r  r@   rq   r\  r  rN   rQ  rY  rZ  r[  r{  r  r]  r   r  r  r^  r  r  r  s          r6   _set_vocab_glmedgeTextModel._set_vocab_glmedge"  s   .!11$..A	))$..dK#'#6#6#8 &,,V4**62''/((2((	0I0I0KO0\]((	0I0I0KJ0WX((	0I0I0KO0\]((	0I0I0KO0\]!!$"2"23r5   c                   SSK Jn  UR                  U R                  5      n[        R
                  " U R                  SS9nU R                  5       u  pEnU R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        UR                  SUR                  5       S   5        UR                  SUR                  5       S	   5        UR                  S
UR                  5       S   5        UR                  SUR                  5       S   5        UR                  U R                  5        g )Nr   r  TrV  rU  rn  z[gMASK]r  r  rq  ro  eomz<|observation|>r  r  s          r6   _set_vocab_glmTextModel._set_vocab_glm1  s!   .!11$..A	))$..dK#'#6#6#8 &,,V4**62''/((2 	((	0I0I0KI0VW((	0I0I0KJ0WX((	0I0I0KO0\]((	0I0I0KL]0^_!!$"2"23r5   c                &   / n/ nSSK Jn  UR                  U R                  SS9n[	        USUR                  5       5      nU R                  R                  S[        U5      5      n[        UR                  5       5      U:  d   eU R                  U5      nUR                  5        VV	s0 s H  u  pX_M	     n
nn	UR                  5       nUR                  n[        U5       GHo  nX;  a@  UR!                  SU S35        UR!                  ["        R$                  R&                  5        MI  X   nX;   a  X   R(                  (       dS  UnUR+                  UR-                  US	S
95      nX:w  a-  [.        R1                  [3        U5       S[3        U5       S35        X   R4                  (       d  U R7                  U5      (       a*  UR!                  ["        R$                  R8                  5        OSUR!                  ["        R$                  R:                  5        O)UR!                  ["        R$                  R<                  5        UR!                  U5        GMr     U R>                  RA                  S5        U R>                  RC                  U5        U R>                  RE                  U5        U R>                  RG                  U5        ["        RH                  " U R                  SS9nURK                  SS5        URM                  U R>                  5        g s  sn	nf )Nr   r  Tr  r  r  r  r  Fr  r  r  rU  rV  rn  i[P )'r  r  r  r@   getattrrs  rK   r   r   rS  r   r  r   r  r  r-  r  rq   r  r2   r  r  r  r   r   r  r  r  r0   r1   r.   rN   rQ  rY  rZ  r[  r\  r{  r]  )r   r  r  r  r  r  r  r  r  r  r  r  r  r?  r  r  r^  s                    r6   _set_vocab_interns1TextModel._set_vocab_interns1B  su    .!11$..TX1Y		7I,?,?,AB\\%%lCJ?
5<<>"Z///((3BG++-P-.>k)-P//1(==z"A%QCqk* 5 56*-' 02==). ) 0 01A1A%\a1A1b c)2"KK4+?*@@`aefkal`m  nB  )C  D+.66$:V:VW\:]:] (>(>? (C(CDOODNN$9$9:e$+ #. 	,,V4**62''/((2))$..dK((7!!$"2"23G Qs   (Lc                   SSK Jn  [        (       d  [        [        5      e[        U R                  5      n[        R                  SUR                   SUR                   S35        U R                  R                  UR                  5        / n/ n/ nUR                  5        H9  u  pgnUR                  U5        UR                  U5        UR                  U5        M;     [!        U5      UR                  :X  d!   S[!        U5       SUR                   S35       eUR                  ["        R$                  :X  aD  U R                  R'                  S	5        U R                  R)                  UR+                  5       5        [        R                  S
UR,                   SUR.                   SUR0                   SUR2                   S3	5        U R                  R5                  UR,                  5        U R                  R7                  UR.                  5        U R                  R9                  UR0                  5        U R                  R;                  UR2                  5        U R                  R=                  U5        U R                  R?                  U5        U R                  RA                  U5        U R                  RC                  UR                  5        U R                  RE                  S5        U R                  RG                  S5        U R                  S-  n	U RH                  (       aO  U	RK                  5       (       a:  [        R                  S5        [M        U	SSS9 n
U
RO                  5       nS S S 5        OU RH                  (       a  U RP                  (       di  [S        [T        5      RV                  RV                  S-  nU RH                  (       a  [        R                  S5        URY                  X,U RH                  5      nO[        R                  S5        S nWb  U R                  R[                  U5        g g ! , (       d  f       N.= f)Nr   )MistralModelzConverting tokenizer z	 of size rE  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  rn   ro   rp   r   r@   r   r   tokenizer_typer  rN   rQ  gguf_tokenizer_modelr  r  r   r   r  rY  r  extract_vocab_merges_from_modelbos_ideos_idunk_idpad_idr  r  r  r  rZ  r  r[  add_vocab_sizer  r  r[   r   r   r  r\   r   r  r&  get_community_chat_templateadd_chat_template)r   r  r  r  r  r  r  r  r  local_template_file_pathr   r  template_dirs                r6   _set_vocab_mistralTextModel._set_vocab_mistrals  si   )((788T^^,#E$8$8#95CSCSBTTUV	
 	,,U-G-GH$)$4$4$6 DMM$MM% OOG$ %7
 6{e... 	
CK=(9%:J:J9K1M	
. #7#>#>>..x8--557 	9%,,r%,,WYZ_ZfZfYggijojvjviwwxy	
 	))%,,7))%,,7))%,,7))%,,7''/))&1((2''(8(89**40**51#'>>4I#I !!&>&F&F&H&H KKHI.gF!668 GF''t/[/[>0077:MML %%m $??UYUkUklHKK  \  ]H..x8  ! GFs   P55
Qc                
   U R                   S-  nU R                   S-  nUR                  5       (       d  [        SU 35      e[        USSS9 n[        R
                  " U5      nS S S 5        / n/ n/ n[        USSS9 n[        U5       GH  u  pU	R                  5       (       d  M  [        R                  " U	5      n
U
S   R                  S5      n[        U
S   5      n[        U
5      S	:  a  U
S	   OS
nUR                  U5        UR                  U5        US:X  a+  UR                  [        R                  R                  5        M  US:X  a+  UR                  [        R                  R                   5        M  US:X  a,  UR                  [        R                  R"                  5        GM!  U
S   nUR%                  S5      (       aB  UR'                  S5      (       a,  UR                  [        R                  R                   5        GM~  UR                  [        R                  R(                  5        GM     S S S 5        U R*                  S   nU[        U5      :  a  U[        U5      -
  n[,        R/                  SU SU S35        [1        SUS-   5       HZ  nUR                  [3        SU S3SS95        UR                  S5        UR                  [        R                  R4                  5        M\     U R6                  R9                  S5        U R6                  R;                  S5        U R6                  R=                  U5        U R6                  R?                  U5        U R6                  RA                  U5        SW;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RE                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RG                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RI                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RK                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RM                  U5        U R6                  RO                  S5        U R6                  RQ                  S5        g ! , (       d  f       GN= f! , (       d  f       GN= f)Nztokenizer.jsonlr  z PLaMo tokenizer file not found: r   r   r   r   r   r$   r.   r/   r0   r3   z<|plamo:r  r  r  r  r  r  r  plamo2r  	bos_token	eos_token	pad_token	sep_token	unk_tokenr&   F))r@   r   r  r   r   r   r:  striploadsr  r  r   r  rq   r  r/   r0   r3   r  r$  r.   rK   r   rI  r-  r  r2   rN   rQ  rY  rZ  r  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  r  r  line_numr  r  r  r  token_type_str	token_strr  r  r?  r  s                      r6   _set_vocab_plamoTextModel._set_vocab_plamo  s]   #~~0AA $1H H#++--#&FG[F\$]^^ 'w?1#yy| @ &g>!"+A,::<<!%D!1J&qM009E!*Q-0E69*o6IZ]xNMM%(MM%(%2 (>(>?'94 (>(>?'61 (;(;<$.qM	$//
;;	@R@RSW@X@X$OODNN,B,BC$OODNN,A,AB- #/ ?2 \\,/
F#"S[0ILL.yk9XYbXccdef1i!m,ed1#QK'BCg& 5 56 -
 	,,X6**95''/))&1((2**/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7 	))!,--e4G @? ?>s   T"=%T4&FT4"
T14
U)rY   rC   r  rK   r  rZ   r  r  )r  zstr | bytesr  rD   )r  z tuple[list[str], list[int], str])r  r   )r  None)T)rP   z Literal['gpt-neox', 'llama-spm']r  rX   )%r*   r+   r,   r-   r8   r:   r  r  r   r  r	  r   r  r  r  r  r  r  r  rR  r  rb  ri  r}  r  r  r  r  r  r  r  r  r  r  r'  r4   __classcell__r  s   @r6   rk   rk   R  s    JL lD S S , , 8p7d!0*(`}@
544'4R64p
4X(t4,+4Z+LZ <D44"/4bI9VL5 L5r5   rk   c                  H  ^  \ rS rSr% \R
                  r\R                  R
                  r	S\
S'   S\
S'   / SQrSrS\
S'   S	rS\
S
'   SrS\
S'   SrS\
S'   U 4S jr\SU 4S jj5       rSS jrSS jrS rSU 4S jjrS rS rSS S jjrSS S jjrSS!S jjrU 4S jrSrU =r$ )"rl   i	  rJ   preprocessor_configglobal_config)r  r  r  r  depthlayersencoder_layersvt_num_hidden_layersTrD   has_vision_encoderFhas_audio_encoderNr  hparams_visionhparams_audioc                  > [         TU ]  " U0 UD6  U R                  [        R                  R
                  :w  a  [        S5      eU R                  (       d  SU R                  ;  a  0 U R                  S'   SU R                  ;  a  0 U R                  S'   0 U R                  EU R                  S   EnUR                  SUR                  SS5      5      U l
        OMU R                  R                  5        VVs0 s H  u  pEUS;  d  M  XE_M     nnnUR                  SS5      U l
        U R                  S:  d   S	5       eSS KnUR                  U R                  5      U l        U R                  5       U l        U R#                  5       U l        U R                   c  U R$                  c  ['        S
5      eU R                   =(       d    U R$                  =(       d    U R                  U l        U R(                  =(       a    U R*                  nU(       a  SOU R-                  U R.                  S5      U l        [        R2                  " [        R                  R
                  U R0                  5      U l        0 U l        U R8                  S-  nUR;                  5       (       aN  [=        USSS9 n	[>        R@                  " U	5      n
SU
;   a	  0 U
EU
S   En
0 U R6                  EU
EU l        S S S 5        U R8                  S-  nUR;                  5       (       aO  [=        USSS9 n	[>        R@                  " U	5      n
SU
;   a	  0 U
EU
S   En
0 U R6                  EU
EU l        S S S 5        g g s  snnf ! , (       d  f       N= f! , (       d  f       g = f)NzGMmprojModel must be subclassed with model_arch = gguf.MODEL_ARCH.MMPROJr  audio_configr1  r2  r   )vision_encoderaudio_encoderr   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   rW   rq   r  r;   rm   r[   rK   r   n_embd_textr   r  deepcopyr.  get_vision_configr5  get_audio_configr6  r   r4  r3  r   n_block_keysrY   r  rZ   r-  r@   r   r   r   r   )r   r  r  r  r   r=  r  have_multiple_encoderspreprocessor_config_pathr   cfgprocessor_config_pathr  s               r6   r   MmprojModel.__init__	  s+   $)&)??doo444eff %%DLL0.0]+T\\1/1^,IT\\IT\\--HIK*}koohXY>Z[D "&!3!3!5!5Be9e!5    +ua8D!#B%BB# 	!]]4<<8"446!224&4+=+=+EPQQ **Pd.@.@PDLL "&!7!7!SD<S<S"83d>N>NtO`O`bf>g224??3I3I4K[K[\ $&  $(>>4N#N #++--.gF!iil#s*./C
 ,Od.F.F+N#+N( G !%1H H ((**+S7Cqiil$+/0C
 ,Od.F.F+N#+N( DC +Y> GF DCs$   6MM$;M!;M2!
M/2
N c                8   > Uu  p#SU;   a  g [         TU ]  U5      $ )Nr  )r   r   r  s       r6   r   MmprojModel.filter_tensorsc	  s'    	 $w%d++r5   c                b    U R                   (       d  SOSnU R                  R                  U5      $ )Nvision_configr9  )r[   r.  r   )r   config_names     r6   r@  MmprojModel.get_vision_configm	  s)    -1-C-CoIY!!%%k22r5   c                `    SU R                   ;   a  SOSnU R                  R                  U5      $ )Nwhisper_configr8  )rK   r.  r   )r   mm_config_keys     r6   rA  MmprojModel.get_audio_configq	  s-    ,<,L(R`!!%%m44r5   c                j    U R                   R                  [        R                  R                  5        g r   )rN   r  rq   r  r;   r  s    r6   r  MmprojModel.set_typeu	  s     !!$--"6"67r5   c           
     B  > [         TU ]  US9  U R                  R                  R	                  S5      S   nU R
                  R                  5       (       a  [        R                  " U R                  R                  U R                  R                  U R                  R                  U R                  R                  S US S9nU R
                  SU S3-  U l        g U R
                  R                  [        R                  " U R
                  R                  U5      -  U l        g )Nr  r   r$   r  zmmproj-r  )r   r  rB   r   r   rC   r!  rq   r"  rS   r#  r$  r%  r&  r'  )r   r  r  r(  r  s       r6   r  MmprojModel.prepare_metadatax	  s     J 7::??44S9!<>>  ""!%!7!78J8JDMMLbLbdhdqdqdzdz  }A  }J  }J  }R  }R  _c  q|  IM  "NM!^^e.LLDN!^^22T5Q5QRVR`R`ReRegr5ssDNr5   c                   U R                   R                  U R                  5        U R                  (       Ga  U R                   R	                  S5        U R                   R                  U R                  5        U R                  S/5      U l        U R                   R                  U R                  5        U R                   R                  U R                  S/5      5        U R                   R                  U R                  / SQ5      5        U R                   R                  U R                  SS/5      5        U R                   R                  U R                  U R                  5      5        U R                   R                  U R                  / SQ5      5        U R                   (       a  ["        OU R$                  S   nU R                   (       a  [&        OU R$                  S	   nU R                   R)                  U5        U R                   R+                  U5        U R,                  (       a  U R                   R/                  S5        U R                   R1                  U R                  5        U R                   R3                  U R5                  S
/5      5        U R                   R7                  U R5                  S/5      5        U R                   R9                  U R5                  U R                  5      5        U R                   R;                  U R5                  S/5      5        U R                  (       d  U R,                  (       d  [=        S5      eg g )NT
image_size
patch_size)r1  widthvt_hidden_sizer5  vt_intermediate_size)r8  	num_headsheadsvt_num_attention_heads
image_mean	image_stdr1  r8  z4MmprojModel must have either vision or audio encoder)rN   r  rB   r3  add_clip_has_vision_encoderadd_vision_projection_dimr>  find_vparamrW  add_vision_image_sizeadd_vision_patch_sizeadd_vision_embedding_lengthadd_vision_feed_forward_lengthadd_vision_block_countrB  add_vision_head_countr[   _MISTRAL_COMMON_DATASET_MEANr-  _MISTRAL_COMMON_DATASET_STDadd_vision_image_meanadd_vision_image_stdr4  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      r6   r  MmprojModel.set_gguf_parameters	  s   &&tzz2"""88>66t7G7GH #..~>DO224??C2243C3C\N3ST889I9IJt9uv;;D<L<LNacyMz<{|33D4D4DTEVEV4WX2243C3C  EL  4M  N :>9O9O5UYUmUmnzU{J7;7M7M3SWSkSklwSxI22:>11)<!!77=55d6F6FG 778H8H-8YZ::4;K;KM`La;bc2243C3CDDUDU3VW11$2B2BDYCZ2[\&&t/E/ESTT 0F&r5   c                    [        S5      e)Nz*MmprojModel does not support vocab writing)r   r  s    r6   r  MmprojModel.write_vocab	  s    EFFr5   c                X    U R                   c   eU R                  U R                   X5      $ r   )r5  _find_paramr   r   r   s      r6   rc  MmprojModel.find_vparam	  s-    ""... 3 3TDDr5   c                X    U R                   c   eU R                  U R                   X5      $ r   )r6  ry  rz  s      r6   rq  MmprojModel.find_aparam	  s-    !!--- 2 2DCCr5   c                l   ^ [        U4S jU 5       S 5      nUb  TU   $ U(       a  g [        SU 35      e)Nc              3  6   >#    U  H  oT;   d  M
  Uv   M     g 7fr   r)   )r   r   objs     r6   r   *MmprojModel._find_param.<locals>.<genexpr>	  s     0t!CxAAts   		r   )r   r   )r   r  r   r   r   s    `   r6   ry  MmprojModel._find_param	  s<    0t0$7?s8O0788r5   c                   > SU;   d  SU;   a\  U R                   [        R                  R                  :X  a  [        R                  R
                  $ [        R                  R                  $ [        TU ]!  XX45      $ )Nz.patch_embd.weightz.patch_merger.weight)	rB   rq   r~   r   r  ru  rV  r   r  )r   r   r   r  r  r  s        r6   r  MmprojModel.tensor_force_quant	  sn    8+/E/Q48JJ$BTBTB_B_4_4,,00  Ceie~e~  fC  fC  Cw)$#FFr5   )
rY   rC   r.  rK   r6  r5  rW  r>  r-  rZ   r  )r  r  r  r  r  )r  rJ   r   r  r   rD   r  r   )r*   r+   r,   r-   r8   r;   r  rq   r  rW   r  rB  r3  r4  r5  r6  r   r  r   r@  rA  r  r  r  r  rc  rq  ry  r  r4   r*  r+  s   @r6   rl   rl   	  s    !!J''J''!! KL###t# -1N)0+/M(/EON , ,358	t"UHGED9G Gr5   rl   c                     \ rS rSr% \R
                  rS\S'   S\S'   \R                  \	R                  \R                  \	R                  \R                  \	R                  \R                  \	R                  0rS\S'   \R                  \	R                  \R                  \	R                  \R                  \	R                  \R                  \	R                  \R                  \	R                  \R                   \	R                   \R"                  \	R"                  \R$                  \	R$                  \R                  \	R                  \R&                  \	R                  \R(                  \	R                  \R*                  \	R                  0rS\S'   \R                  \R                  \R                  \R                  \R                  \R                   \R"                  \R                  \R$                  \R&                  \R(                  \R*                  S	.rS
\S'   SS jr\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)r   i	  torch.dtyper   z
torch.Sizer   zdict[torch.dtype, type]
_dtype_map_dtype_byteswap_map)F64rV  rw  ru  I64I32I16U8I8BOOLF8_E4M3F8_E5M2zdict[str, torch.dtype]r   c                    U R                   U R                     n[        R                  " [        R                  R	                  XR
                  5      U 4S S9$ )Nc                "    U R                  5       $ r   )r  rn  s    r6   r   'LazyTorchTensor.numpy.<locals>.<lambda>	  s
    AGGIr5   metar  r  )r  r   rq   LazyNumpyTensormeta_with_dtype_and_shaper   )r   r   s     r6   r  LazyTorchTensor.numpy	  sG    

+##%%??zzR%
 	
r5   c                ,    [         R                  " X!SS9$ )Nr  )r  r   device)r   empty)r   r   r   s      r6   r  )LazyTorchTensor.meta_with_dtype_and_shape	  s    {{6BBr5   c                    U R                   UR                  5          n[        UR                  5       5      nU " U R	                  X#5      U4S S9n[        [        R                  U5      $ )Nc                P    [        U R                  5       5      S:X  a  U S   $ U S S  $ )Nr   .)r   	get_shaper  s    r6   r   8LazyTorchTensor.from_safetensors_slice.<locals>.<lambda>
  sV    pstutt  uB  qC  GH  qHfghkfl  gR  NO  PQ  NR  gRr5   r  )r   	get_dtyper<  r  r  r   r   r   )r   st_slicer   r   rH   s        r6   from_safetensors_slice&LazyTorchTensor.from_safetensors_slice
  sb    ""8#5#5#78!&x'9'9';!<55eC8+  ]R  SELL$''r5   c                   ^ ^ SU 4S jjmT R                   UR                     nUR                  nT " T R                  X#5      U4U4S jS9n[	        [
        R                  U5      $ )Nc                  > SS jnTR                   U R                     nTR                  U   n[        R                  " U" U R                  5       U5      5      R                  U5      R                  U R                  5      $ )Nc                j    [         R                  S:X  a  U R                  U5      R                  SS9n U $ NbigF)inplacer  	byteorderr   byteswapr   r   s     r6   byteswap_tensorOLazyTorchTensor.from_local_tensor.<locals>.load_tensor.<locals>.byteswap_tensor
  s/    ==E)#[[/888GFr5   r   
np.ndarrayr   rj   r  r  )	r   r   r  r   r   r   r   r   r   )r   r  r   numpy_dtyper   s       r6   load_tensor6LazyTorchTensor.from_local_tensor.<locals>.load_tensor
  sm    
 &&v||4E11%8K##OF4E4E4G$UV[[\abjjkqkwkwxxr5   c                   > T" U 5      $ r   r)   )r   r  s    r6   r   3LazyTorchTensor.from_local_tensor.<locals>.<lambda>
  s    _jkl_mr5   r  )r   gguf.utility.LocalTensorr  r   )r   r   r   r  r   r   r   )r   tr   r   rH   r  s   `    @r6   r   !LazyTorchTensor.from_local_tensor

  sU    	y ""177+55eC1$UmnELL$''r5   c                   ^^^^ SS jmU R                   UR                     mU R                  T   mUR                  mU R	                  TT5      nU " X!4UUUU4S jS9n[        [        R                  U5      $ )Nc                j    [         R                  S:X  a  U R                  U5      R                  SS9n U $ r  r  r  s     r6   r  ;LazyTorchTensor.from_remote_tensor.<locals>.byteswap_tensor
  s/    }}%U+44U4CMr5   c           	        > [         R                  " T" [        R                  " U R	                  5       TS9T5      5      R                  T5      R                  T5      $ )Nr  )r   r   r  
frombufferr   r   r   )r   r  r   r  r   s    r6   r   4LazyTorchTensor.from_remote_tensor.<locals>.<lambda>%
  s~    EDTDTUdegererstsysys{  DO  fP  R]  V^  E_  Ed  Ed  ej  Ek  Es  Es  ty  Ezr5   r  r  )r   r   r  r   r  r   r   r   )r   r   r  rH   r  r   r  r   s       @@@@r6   r   "LazyTorchTensor.from_remote_tensor
  st    	
 ""=#6#67--e4##,,UE:#3  ;z  {ELL$''r5   r)   Nc                    AUc  0 nU[         R                  R                  L a%  [        U5      (       d   eUS   R                  5       $ U R	                  U5      " U0 UD6$ r'  )r   r   r  r   _wrap_fn)r   r  typesr  r  s        r6   __torch_function__"LazyTorchTensor.__torch_function__(
  sX    >F5<<%%%t9997==?"||D!42622r5   )r  zgguf.LazyNumpyTensor)r   r  r   ztuple[int, ...]r  r   )r  r   r  r   )r  r  r  r   )r   zgguf.utility.RemoteTensor)r)   N) r*   r+   r,   r-   r   r   _tensor_typer  r   r  r  r,  int64r  float64r   rI  rL  rM  rD   r  r  r  r   r  r  r  r  r   r   r  r4   r)   r5   r6   r   r   	  s   <<L 	rzzrzzRXXRXX	+J'  	rzzrzz

rzzRXXRXXRXX

BGGRXX

BHHRXX28840 , }}}}}}{{{{{{kkjj

&&$$.N* $
 C C ( ( ( ( ( ( 
3 
3r5   r   float8_e8m0fnuF8_E8M0c           	     d   [         R                  U SS5      n[        U5      S:w  a  g [        R                  R                  XS   -  5       nUR                  5        Vs0 s H  o3[        X#   R                  5      _M     nnS S S 5        SW;   a  [        U5      $ g s  snf ! , (       d  f       N%= f)Nr   r   r   r   zflow_lm.bos_emb)
r=   r   r   rq   r   r   r   r<  r   _load_hparams_pockettts)r@   r   r  r   shapess        r6   r  r  A
  s    //	7NSJ
:!		&	&ya='@	AT<@IIKHKDdj..//KH 
B F"&v.. I 
B	As   B!!B B!B!!
B/c                    [         R                  S5        U S   u  p[        S U  5       5      n[        S U  5       5      nU S   S   nS/SUUU S	   S   S
US-  USU ;   a  SOS-   SSUUU S   S   US-  S.S.$ )NzIgguf: detected pocket-tts checkpoint, deriving hparams from tensor shapesz flow_lm.conditioner.embed.weightc              3  b   #    U  H%  n[         R                  " S U5      (       d  M!  Sv   M'     g7f)z0flow_lm\.transformer\.layers\.\d+\.norm1\.weightr   Nr  	fullmatchr   r   s     r6   r   *_load_hparams_pockettts.<locals>.<genexpr>R
  s!     r",,7jlp*q!!    /	/c              3  b   #    U  H%  n[         R                  " S U5      (       d  M!  Sv   M'     g7f)zBmimi\.encoder_transformer\.transformer\.layers\.\d+\.norm1\.weightr   Nr  r  s     r6   r   r  S
  s+       G&$BLL9~  AE  -FAA&r  z:mimi.encoder_transformer.transformer.layers.0.norm1.weightr   PocketTTSModel	pocketttsz+flow_lm.transformer.layers.0.linear1.weighti   r  zflow_lm.bos_before_voicer$   r   g     @gh㈵>z<mimi.encoder_transformer.transformer.layers.0.linear1.weight)r  r1  r5  r8  )architecturesr  r  r1  r5  r+  r8  r  r  rM  r8  )r   r   r  )r  r  r2  r  	n_layer_an_embd_as         r6   r  r  O
  s    
KK[\?@OGrrrG  G&  G  GIRSTUVH*+!$#$QRSTU#'%| &@F&JPQR!*#!'(f!ghi!j#+r>	
 r5   c                   U R                  S0 5      nU R                  S0 5      nS nU R                  S5      =nb  [        U5      S:  a  US   nOSU ;   a  U S   R                  SS5      S-   nU[        R                  :X  a  US	;   a  U$ U[        R                  :X  a  UR                  S5      b	  US   S   nO.U[        R                  :X  a  UR                  S5      b  US   S   nUc  [        S
5      eU$ )Nr  rK  r  r   ssm_cfglayerMambaForCausalLM)StepVLForConditionalGenerationSarashina2VisionForCausalLM"Exaone4_5_ForConditionalGenerationStep3p7ForConditionalGenerationz#Failed to detect model architecture)r   r   r8   r:   r;   r   )rK   r  r  rK  ri   archess         r6   r  r  m
  s    ++mR0KKK4MD++o..;Faay	g	y!%%gw7-G
 Y^^#  1{  ){ Y^^#(H(T?+A.	y''	'M,=,=o,N,Z_-a0|>??Kr5   )r@   r   r  r  )r  zdict[str, tuple[int, ...]]r  rJ   )rK   rJ   r  r8   r  r   )O
__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   environrh   insertr   r  r&  rq   
gguf.vocabr   r   %mistral_common.tokens.tokenizers.baser   +mistral_common.tokens.tokenizers.multimodalr   rj  r   rk  'mistral_common.tokens.tokenizers.tekkenr   .mistral_common.tokens.tokenizers.sentencepiecer   rn   rp   ro   r  	getLoggerr   r   r"   r8   r=   rk   rl   LazyBaser   hasattrr  _torch_float8_e8m0r,  r  r  r   r  r  r  r)   r5   r6   <module>r     s   # 
    	 	 
    u u u  #  "**$HHOOAs4>0077)CDE  9F UB !% " 
		<	( :%67g  
DY DYN x5	 x5v%pG) pGfs3dmm s3l 5"##--57XXO12>@hhO''(:;0BO""9- 16O""9-<IR  #F "F % c J"&C&	C s   G #G98G9