
    3jh                    ~   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J	r	  S SK
JrJr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJr  S S	KJrJr  S SKrS
SKJr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*  \RV                  " \,5      r-Sr.\	 " S S5      5       r/\	 " S S5      5       r0 " S S\5      r1 " S S5      r2g)    )annotationsN)	dataclass)Enumauto)prod)Path)BufferedWriter)IOAnySequenceMappingascii_lettersdigits   )GGUF_DEFAULT_ALIGNMENT
GGUF_MAGICGGUF_VERSIONGGMLQuantizationType
GGUFEndianGGUFValueTypeKeysRopeScalingTypePoolingType	TokenTypeExpertGatingFuncType)quant_shape_from_byte_shapez{:s}-{:05d}-of-{:05d}.ggufc                  B    \ rS rSr% S\S'   S\S'   S\S'   SrS	\S
'   Srg)
TensorInfo)   Sequence[int]shaper   dtypeintnbytesNznp.ndarray[Any, Any] | Nonetensor )__name__
__module____qualname____firstlineno____annotations__r&   __static_attributes__r'       J/home/wildlama/miniconda3/lib/python3.13/site-packages/gguf/gguf_writer.pyr   r   )   s    K*.F'.r.   r   c                  8    \ rS rSr% S\S'   S\S'   SrS\S'   S	rg)
	GGUFValue1   r   valuer   typeNGGUFValueType | Nonesub_typer'   )r(   r)   r*   r+   r,   r6   r-   r'   r.   r/   r1   r1   1   s    J
%)H")r.   r1   c                  h    \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
Srg)WriterState8   r'   N)r(   r)   r*   r+   r   NO_FILEEMPTYHEADERKV_DATATI_DATAWEIGHTSr-   r'   r.   r/   r8   r8   8   s,    fGfEfFfGfGfGr.   r8   c                     \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   \R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                   S0rS\R&                  SSSS4               GS3S jjrGS4S jrGS5S jrGS6GS7S jjrGS8S  jrGS9S! jrGS6GS7S" jjrGS9S# jrGS9S$ jrGS6GS:S% jjrGS;S& jrGS;S' jrGS;S( jr GS;S) jr!GS;S* jr"GS;S+ jr#GS<S, jr$GS;S- jr%GS;S. jr&GS<S/ jr'GS=S0 jr(GS>S1 jr)GS?S2 jr*\+GS@S3 j5       r, GS6           GSAS4 jjr-  GSB           GSCS5 jjr.GS6GSDS6 jjr/GS6GSES7 jjr0SS8.GSFS9 jjr1GS9S: jr2GS9S; jr3GSGS< jr4GS9S= jr5GSHS> jr6GSIS? jr7GSJS@ jr8GSKSA jr9GSLSB jr:GSMSC jr;GSNSD jr<GSOSE jr=GSPSF jr>GSQSG jr?GSRSH jr@GSSSI jrAGSTSJ jrBGSUSK jrCGSVSL jrDGSWSM jrEGSXSN jrFGSYSO jrGGSZSP jrHGS[SQ jrIGS\SR jrJGS]SS jrKGS^ST jrLGS_SU jrMGS`SV jrNGS`SW jrOGS`SX jrPGSaSY jrQGSbSZ jrRGScS[ jrSGSdS\ jrTGSaS] jrUGSbS^ jrVGScS_ jrWGSdS` jrXGSeSa jrYGSfSb jrZGSgSc jr[GShSd jr\GSiSe jr]GSjSf jr^GSkSg jr_GSlSh jr`GSmSi jraGSnSj jrbGSeSk jrcGSfSl jrdGSgSm jreGShSn jrfGSiSo jrgGSjSp jrhGSkSq jriGSlSr jrjGSmSs jrkGSnSt jrlGSoSu jrmGSpSv jrnGSqSw jroGSrSx jrpGSsSy jrqGSsSz jrrGSsS{ jrsGSsS| jrtGSsS} jruGSsS~ jrvGSsS jrwGSsS jrxGSsS jryGSsS jrzGSsS jr{GStS jr|GSuS jr}GSsS jr~GSsS jrGSsS jrGSvS jrGSwS jrGSxS jrGSxS jrGSyS jrGSyS jrGSzS jrGS{S jrGS{S jrGSsS jrGSsS jrGSsS jrGSsS jrGSsS jrGSsS jrGS|S jrGSsS jrGSLS jrGS}S jrGS~S jrGSxS jrGSS jrGSS jrGS~S jrGS~S jrGS~S jrGS~S jrGS|S jrGS|S jrGS|S jrGS|S jrGS|S jrGS~S jrGSS jrGSS jrGSzS jrGSzS jrGS~S jrGS|S jrGSxS jrGSxS jrGS|S jrGSS jrGS|S jrGSS jrGSS jrGS~S jrGS~S jrGSrS jrGS|S jrGSxS jrGS~S jrGS~S jrGS~S jrGSxS jrGSS jrGSsS jrGSsS jrGSsS jrGSsS jrGSsS jrGS~S jrGSsS jrGSxS jrGSxS jrGS~S jrGS~S jrGSxS jrGS~S jrGSS jrGS|S jrGS|S jrGS|S jrGSS jrGS~S jrGSS jrGS~S jrGS~S jrGS~S jrGSxS jrGSS jrGS~S jrGS~S jrGS~S jrGS~S jrGS~S jrGSxS jrGSxS jrGSxS jrGSxS jrGSxS jrGSS jrGSxS jrGSS jrGSS jrGSS jrGSS jrGSS jrGSxS jrGSS jrGSwS jrGSwS jrGSwS jrGSwS jrGSwS jrGSwS jrGSS jrGSS jrGSS jrGSS jrGSS jrGSS jrGSS jrGSwS jrGSwS jrGSS jrGSS jrGSS jrGSS jrGSGS  jrGSxGS jrGSxGS jrGSxGS jrGSxGS jrGSxGS jrGSxGS jrGS~GS jrGSxGS jGr GSxGS	 jGrGSxGS
 jGrGSxGS jGrGSxGS jGrGSxGS jGrGSzGS jGrGSzGS jGrGSxGS jGrGSGS jGr	GSGS jGr
GSxGS jGrGSxGS jGrGSGS jGrGSGS jGrGSxGS jGrGSxGS jGrGSxGS jGrGSxGS jGrGSGS jGrGSxGS jGrGSxGS jGrGSxGS jGrGSxGS jGrGSxGS  jGrGS~GS! jGrGSxGS" jGrGSxGS# jGrGSxGS$ jGrGSxGS% jGrGSxGS& jGrGSxGS' jGrGSxGS( jGr GSxGS) jGr!GSGS* jGr"GSGS+ jGr#GSGS, jGr$GSGS- jGr%GSGS. jGr&GSGSGS/ jjGr'GS6GSGS0 jjGr(\+GSGS1 j5       Gr)GS2Gr*g(  
GGUFWriterA   zlist[BufferedWriter] | NonefoutPath | Nonepathz+tempfile.SpooledTemporaryFile[bytes] | None	temp_filezlist[dict[str, TensorInfo]]tensorszlist[dict[str, GGUFValue]]kv_datar8   stateBbHhIifQqd?Fr   c	                   S U l         U(       a  [        U5      OS U l        X l        X@l        [
        U l        X0l        S U l        0 /U l	        0 /U l
        XPl        X`l        Xpl        Xl        [        R!                  SR#                  U R                  [$        R&                  :X  a  SOS5      5        [(        R*                  U l        U R                  (       a  U R                  R/                  0 5        U R1                  5         g )Nz+gguf: This GGUF file is for {0} Endian onlyBigLittle)rC   r   rE   arch	endianessr   data_alignmentuse_temp_filerF   rG   rH   split_max_tensorssplit_max_sizedry_runsmall_first_shardloggerinfoformatr   BIGr8   r:   rI   appendadd_architecture)	selfrE   rX   r[   rY   r\   r]   r^   r_   s	            r/   __init__GGUFWriter.__init__V   s     	"&DJD		"4*tt!2,!2AHH^^z~~5E8
 	 !((
!!LL#r.   c                6   SnSnSnSnSnS nU R                    H  nUR                  5        H  u  pU	R                  n
UR                  S5      (       a  X4nM,  UR                  S5      (       aD  Ub  US   US S S-   :w  a  [        R                  S5            g/ U
S S QUS   R                  S   P7n
[        U
5      nS	U;   a2  [        U
5      S
:  a  U
SU;   a  SOS   nX;U-  -  nXL-  nUS-  nO	X+-  nOX+-  nX-  nM     M     US:  a  XE-  OSnUb  U* nXX<4$ )Nr   z.lora_az.lora_baz:can't measure LoRA size correctly, tensor order is unusual)r   r   r   r   r   z_exps.   z.bias)rG   itemsr"   endswithr`   warningr   len)rf   total_paramsshared_paramsexpert_params
expert_sumn_expert_tensorslast_lora_arG   namera   r"   sizeexpert_counts                r/   get_total_parameter_count$GGUFWriter.get_total_parameter_countq   sY   
59||G%mmo


==++#',K]]9--"*k!nSb	C.O'cd) G%* Gk!n.B.B2.F GE{t#5zQ',7d?R'K%,*>?"2
(A-(%-!)M$9 . $@ <La;O
6UV "(=L MGGr.   c                (   [        U R                  5      S:X  a  U/$ [        [        U R                  5      5       Vs/ s HH  o!R                  [        R                  UR                  US-   [        U R                  5      5      5      PMJ     sn$ s  snf Nr   )rr   rG   range	with_nameSHARD_NAME_FORMATrb   stem)rf   rE   rO   s      r/   format_shard_namesGGUFWriter.format_shard_names   s{    t||!6Mglmpquq}q}m~g  Agbc077		1q5#dllJ[\]g  A  	A  As   ABNc                   U R                   [        R                  L a   U R                  b  Ub  XR                  :X  a  g U R                   [        R
                  La  [        SU R                    35      eUb  Xl        U R                  bH  U R                  5       nU Vs/ s H  n[        US5      PM     snU l        [        R                  U l         g g s  snf )N/Expected output file to be not yet opened, got wb)	rI   r8   r;   rC   rE   r:   
ValueError
print_planopen)rf   rE   	filenamesfilenames       r/   open_output_fileGGUFWriter.open_output_file   s    ::***tyy/D$,Z^bkbkZk::[000Ntzzl[\\I99 )I>GHi(h-iHDI$**DJ !Hs   Cc                >   [         R                  S5        U R                  c   eU R                  U R                  5      n[	        U5      [	        U R
                  5      :X  d   e[        XR
                  5       H\  u  p#[         R                  U S[	        U5       S[        R                  [        S UR                  5        5       5      5       35        M^     U R                  (       a3  [         R                  S5        U H  n[        U5        M     [        5         U$ )NzWriting the following files:z: n_tensors = z, total_size = c              3  8   #    U  H  oR                   v   M     g 7fNr%   .0tis     r/   	<genexpr>(GGUFWriter.print_plan.<locals>.<genexpr>   s'       qW  FV  @Bqzqz  FV   zDry run, not writing files)r`   ra   rE   r   rr   rG   ziprA   format_n_bytes_to_strsumvaluesr^   printexit)rf   r   ry   rG   s       r/   r   GGUFWriter.print_plan   s   23yy$$$++DII6	9~T\\!2222 LL9MDKK4&s7|nOJLlLlmp  qW  FM  FT  FT  FV  qW  nW  MX  LY  Z  [ : <<KK45!d "Fr.   c                   [        U R                  5      S:X  a  g [        S U R                   5       5      nU R                  c   e[        U R                  5      nU R                  R                  S [        [        U R                  5      U5       5       5        [        U R                  5       H  u  p4[        U[        R                  5      U[        R                  R                  '   [        U[        R                  5      U[        R                  R                  '   [        U[        R                  5      U[        R                  R                   '   M     g )Nr   c              3  8   #    U  H  n[        U5      v   M     g 7fr   )rr   )r   ts     r/   r   /GGUFWriter.add_shard_kv_data.<locals>.<genexpr>   s     9LqCFFLr   c              3  &   #    U  H  n0 v   M	     g 7fr   r'   )r   _s     r/   r   r      s     O(N1B(Ns   )rr   rG   r   rC   rH   extendr   	enumerater1   r   UINT16r   SplitLLM_KV_SPLIT_NOLLM_KV_SPLIT_COUNTINT32LLM_KV_SPLIT_TENSORS_COUNT)rf   total_tensorstotal_splitsrO   rH   s        r/   add_shard_kv_dataGGUFWriter.add_shard_kv_data   s    t||!9DLL99yy$$$499~Oc$,,.?(NOO#DLL1JA2;A}?S?S2TGDJJ../5>|]MaMa5bGDJJ112=F}VcViVi=jGDJJ99: 2r.   c           	        [        U R                  5      S:X  a5  U R                  S:w  d  U R                  S:w  a  [        R                  S5        U R                  U5        U R                  [        R                  La  [        SU R                   35      eU R                  c   e[        U R                  5      [        U R                  5      :X  d   e[        U R                  5      S:X  d   eU R                  5         [        U R                  U R                  U R                  5       H  u  p#nUR                  U R!                  S["        SS95        UR                  U R!                  S[$        5      5        UR                  U R!                  S	[        U5      5      5        UR                  U R!                  S	[        U5      5      5        UR'                  5         M     [        R(                  U l        g )
Nr   r   z-Model fails split requirements, not splittingz&Expected output file to be empty, got z<ITskip_pack_prefixrN   rQ   )rr   rG   r\   r]   r`   rq   r   rI   r8   r;   r   rC   rH   r   r   write_packr   r   flushr<   )rf   rE   rC   rG   rH   s        r/   write_header_to_fileGGUFWriter.write_header_to_file   si   t||!t'='='BdFYFY]^F^NNJKd#::[...Edjj\RSSyy$$$499~T\\!22224<< A%%% &)$))T\\4<<&P"D7JJtzz$
tzLMJJtzz#|45JJtzz#s7|45JJtzz#s7|45JJL 'Q !''
r.   c           
     6   U R                   [        R                  La  [        SU R                    35      eU R                  c   e[        U R                  U R                  5       H  u  p[        5       nUR                  5        HX  u  pEX0R                  U[        R                  SS9-  nX0R                  UR                  UR                  SUR                  S9-  nMZ     UR                  U5        M     U R!                  5         [        R"                  U l         g )Nz0Expected output file to contain the header, got F	add_vtypeT)r   r6   )rI   r8   r<   r   rC   r   rH   	bytearrayro   	_pack_valr   STRINGr3   r4   r6   r   r   r=   )rf   rC   rH   kv_byteskeyvals         r/   write_kv_data_to_file GGUFWriter.write_kv_data_to_file   s    ::[///OPTPZPZ|\]]yy$$$ DLL9MD {H#MMONN30D0DPUNVVNN399chh$Y\YeYeNff , JJx  : 	

 ((
r.   c           
     \   U R                   [        R                  La  [        SU R                    35      eU R                  c   e[        U R                  U R                  5       GH.  u  p[        5       nSnUR                  5        H  u  pVX0R                  U[        R                  SS9-  n[        UR                  5      nX0R                  SU5      -  n[        U5       H*  nX0R                  SUR                  US-
  U-
     5      -  nM,     X0R                  SUR                   5      -  nX0R                  SU5      -  nU["        R%                  UR&                  U R(                  5      -  nM     UR+                  U5        UR-                  5         GM1     [        R.                  U l         g )Nz-Expected output file to contain KV data, got r   Fr   rN   rQ   r   )rI   r8   r=   r   rC   r   rG   r   ro   r   r   r   rr   r"   r   r   r#   rA   ggml_padr%   rZ   r   r   r>   )	rf   rC   rG   ti_dataoffset_tensorry   r   n_dimsjs	            r/   write_ti_data_to_file GGUFWriter.write_ti_data_to_file   sU   ::[000LTZZLYZZyy$$$ DLL9MDkGM#MMO>>$0D0DPU>VVRXX::c622vAzz#rxx
Q/GHHG '::c28844::c=99!4!4RYY@S@S!TT , JJwJJL :  !((
r.   c                   ^ [        U4S jU R                   5       5      (       a*  [        R                  ST< SU< SUR                   35        [        X#US9U R                  S   T'   g )Nc              3  .   >#    U  H
  nTU;   v   M     g 7fr   r'   )r   rH   r   s     r/   r   +GGUFWriter.add_key_value.<locals>.<genexpr>  s     :\'sg~\   zDuplicated key name z , overwriting it with new value z	 of type )r3   r4   r6   r   )anyrH   r`   rq   ry   r1   )rf   r   r   vtyper6   s    `   r/   add_key_valueGGUFWriter.add_key_value  s]    :T\\:::NN1#8XY\X__hinisishtuv(sRQr.   c                D    U R                  X[        R                  5        g r   )r   r   UINT8rf   r   r   s      r/   	add_uint8GGUFWriter.add_uint8  s    3M$7$78r.   c                D    U R                  X[        R                  5        g r   )r   r   INT8r   s      r/   add_int8GGUFWriter.add_int8      3]%7%78r.   c                D    U R                  X[        R                  5        g r   )r   r   r   r   s      r/   
add_uint16GGUFWriter.add_uint16!      3]%9%9:r.   c                D    U R                  X[        R                  5        g r   )r   r   INT16r   s      r/   	add_int16GGUFWriter.add_int16$      3]%8%89r.   c                D    U R                  X[        R                  5        g r   )r   r   UINT32r   s      r/   
add_uint32GGUFWriter.add_uint32'  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   r   r   s      r/   	add_int32GGUFWriter.add_int32*  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   FLOAT32r   s      r/   add_float32GGUFWriter.add_float32-      3]%:%:;r.   c                D    U R                  X[        R                  5        g r   )r   r   UINT64r   s      r/   
add_uint64GGUFWriter.add_uint640  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   INT64r   s      r/   	add_int64GGUFWriter.add_int643  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   FLOAT64r   s      r/   add_float64GGUFWriter.add_float646  r   r.   c                D    U R                  X[        R                  5        g r   )r   r   BOOLr   s      r/   add_boolGGUFWriter.add_bool9  r   r.   c                T    U(       d  g U R                  X[        R                  5        g r   )r   r   r   r   s      r/   
add_stringGGUFWriter.add_string<  s    3]%9%9:r.   c                d    [        U5      S:X  a  g U R                  X[        R                  5        g Nr   )rr   r   r   ARRAYr   s      r/   	add_arrayGGUFWriter.add_arrayA  s&    s8q=3]%8%89r.   c                    X-   S-
  U-  U-  $ r   r'   )xns     r/   r   GGUFWriter.ggml_padF  s    q A%%r.   c                  ^ U R                   [        R                  La  [        SU R                    35      e[	        U4S jU R
                   5       5      (       a  [        ST< 35      eUGc  U[        R                  :X  a  [        R                  nGO
U[        R                  :X  a  [        R                  nOU[        R                  :X  a  [        R                  nOU[        R                  :X  a  [        R                  nOU[        R                   :X  a  [        R"                  nOvU[        R$                  :X  a  [        R&                  nOQU[        R(                  :X  a  [        R*                  nO,[        S5      eUnU[        R,                  :X  a  [/        X%5      n[1        U R
                  S   5      S:  a  U R2                  S:w  a&  [1        U R
                  S   5      U R2                  :  dN  U R4                  S:w  aY  [7        S U R
                  S   R9                  5        5       5      U-   U R4                  :  a  U R
                  R;                  0 5        [=        X&US9U R
                  S   T'   g )	Nr   c              3  .   >#    U  H
  nTU;   v   M     g 7fr   r'   )r   rG   ry   s     r/   r   -GGUFWriter.add_tensor_info.<locals>.<genexpr>Q  s     ;l7twlr   zDuplicated tensor name zCOnly F16, F32, F64, I8, I16, I32, I64 tensors are supported for nowrj   r   c              3  8   #    U  H  oR                   v   M     g 7fr   r   r   s     r/   r   r  q  s     F,Eb		,Er   )r"   r#   r%   )rI   r8   r:   r   r   rG   npfloat16r   F16float32F32float64F64int8I8int16I16int32I32int64I64uint8r   rr   r\   r]   r   r   rd   r   )rf   ry   tensor_shapetensor_dtypetensor_nbytes	raw_dtyper#   s    `     r/   add_tensor_infoGGUFWriter.add_tensor_infoJ  s    ::[000Ntzzl[\\;dll;;;6th?@@rzz),00+,00+,00(,//),00),00),00 !fggErxx':<S t||B 1$&&!+R()T-C-CC##q(FDLL,<,C,C,EFFVY]YlYll##B'!+,Ta!bRr.   c                z   Uc4  [         R                  S:X  a  [        R                  O[        R                  nXPR
                  :w  a  UR                  SS9nU R                  (       a9  U R                  c,  [        R                  " SSS9nUR                  S5        X`l        Ub  UOUR                  nU R                  XUR                  UR                  US9  U R                  c  X R                   S	   U   l        g UR%                  U R                  5        U R'                  U R                  UR                  5        g )
NbigFinplacezw+bi   )modemax_sizer   )r(  rj   )sys	byteorderr   rc   LITTLErY   byteswapr[   rF   tempfileSpooledTemporaryFileseekr"   r)  r#   r%   rG   r&   tofilewrite_padding)rf   ry   r&   	raw_shaper(  tensor_endianessfpr"   s           r/   
add_tensorGGUFWriter.add_tensorw  s    
 #14%1Gz~~ZM^M^~~-__U_3F$.."8..EDUVBGGAJN,5,Ayv||T&,,QZ[>>!,2LLT")dnn%4>>6==9r.   c                    [         R                  X#b  UOU R                  5      U-
  nUS:w  a  UR                  [	        S/U-  5      5        g g r	  )rA   r   rZ   r   bytes)rf   r<  r  alignpads        r/   r9  GGUFWriter.write_padding  sH    !!!.?UTEXEXY\]]!8HHUA39%& r.   c                j   U R                   [        R                  La5  U R                   [        R                  La  [	        SU R                    35      eU R
                  c   eUc4  [        R                  S:X  a  [        R                  O[        R                  nX R                  :w  a  UR                  SS9nSn[        U R                  5       H  u  pE[        U5      S:  d  M  Un  O   U R
                  U   n[!        [#        U R                  U   5      5      nU R                  U   R%                  U5      nUR&                  UR&                  :X  d   eU R)                  XfR+                  5       5        UR-                  U5        U R)                  XaR&                  5        [        R                  U l         g )Nz<Expected output file to contain tensor info or weights, got r,  Fr-  rj   r   )rI   r8   r>   r?   r   rC   r1  r2  r   rc   r3  rY   r4  r   rG   rr   nextiterpopr%   r9  tellr8  )	rf   r&   r;  file_idrO   rG   rC   first_tensor_namer   s	            r/   write_tensor_dataGGUFWriter.write_tensor_data  sW   ::[000TZZ{GZGZ5Z[\`\f\f[ghiiyy$$$ #14%1Gz~~ZM^M^~~-__U_3F#DLL1JA7|a 2
 yy! !dll7&;!<=\\'"&&'89yyFMM)))4-d4/ ((
r.   )progressc          	        U R                  5         U R                  c   eU R                   H"  nU R                  X"R                  5       5        M$     U R                  Gc  S nS nU(       ad  SSKJn  [        S U R                   5       5      n[        U R                  5      S:  a   U" S[        U R                  5       S3S SSS	9nU" S
USSS	9n[        [        U R                  U R                  5      5       GH6  u  nu  p(Ube  UR                  SUS-    S[        U R                  5       S35        [        S UR                  5        5       5      n	UR                  U	S:  a  U	OS S9  UR                  5        H  n
U
R                  c   eU
R                  R                  U
R                  :X  d   eU
R                  R!                  U5        Ub  UR#                  U
R                  5        Ub  UR#                  U
R                  5        U R                  X*R                  5        S U
l        M     GM9     OU R                  R%                  S5        [&        R(                  " U R                  U R                  U R*                  (       d  SOS   5        U R-                  5         U R                  R/                  5         [0        R2                  U l        g )Nr   )tqdmc              3  f   #    U  H'  oR                  5         H  o"R                  v   M     M)     g 7fr   )r   r%   )r   r   r   s      r/   r   3GGUFWriter.write_tensors_to_file.<locals>.<genexpr>  s     !W\HHJb))J)\s   /1r   z	Shard (0/)byteT)desctotalunit
unit_scaleWritingzShard (/c              3  8   #    U  H  oR                   v   M     g 7fr   r   r   s     r/   r   rQ    s     E4Db		4Dr   )rU  )r   rC   r9  rH  rF   rO  r   rG   rr   r   r   set_descriptionr   resetr&   r%   r8  updater7  shutilcopyfileobjr_   r   closer8   r?   rI   )rf   rM  rC   	shard_barbarrO  total_bytesrO   rG   rU  r   s              r/   write_tensors_to_file GGUFWriter.write_tensors_to_file  s1   ""$yy$$$IIDtYY[1  >>!IC%!!WT\\!WWtyy>A% $Ic$))n5EQ*GtZ`mq rI	6VZ[&/DIIt||0L&M"?D(--AwaDII?Oq.QREGNN4DEEEOOEAI54OI "..*B9900099++ryy888II$$T* ,!((3

299-&&tYY7 $BI + 'N$ NN"t~~tyy$BXBX^_/`aJJLNN  " ((
r.   c                h    U R                   c   eU R                    H  nUR                  5         M     g r   )rC   r   rf   rC   s     r/   r   GGUFWriter.flush  s)    yy$$$IIDJJL r.   c                t    U R                   b+  U R                    H  nUR                  5         M     S U l         g g r   )rC   r`  rg  s     r/   r`  GGUFWriter.close  s/    99 		

 "DI !r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   GeneralTYPE)rf   	type_names     r/   add_typeGGUFWriter.add_type  s    ))95r.   c                l    U R                  [        R                  R                  U R                  5        g r   )r  r   rl  ARCHITECTURErX   )rf   s    r/   re   GGUFWriter.add_architecture  s    11499=r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  QUANTIZATION_VERSION)rf   quantization_versions     r/   add_quantization_version#GGUFWriter.add_quantization_version  s    99;OPr.   c                    US::  d  XS-
  -  S:w  a  [        S5      eXl        U R                  [        R                  R
                  U5        g )Nr   r   z2Invalid alignment: must be a non-zero power of two)r   rZ   r   r   rl  	ALIGNMENT)rf   	alignments     r/   add_custom_alignmentGGUFWriter.add_custom_alignment  sA    >iq=9a?QRR'..	:r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  	FILE_TYPE)rf   ftypes     r/   add_file_typeGGUFWriter.add_file_type  s    ..6r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  SAMPLING_SEQUENCE)rf   sequences     r/   add_sampling_sequence GGUFWriter.add_sampling_sequence  s    66Ar.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_TOP_Krf   top_ks     r/   add_sampling_top_kGGUFWriter.add_sampling_top_k  s    t||22E:r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_TOP_P)rf   top_ps     r/   add_sampling_top_pGGUFWriter.add_sampling_top_p      44e<r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_MIN_P)rf   min_ps     r/   add_sampling_min_pGGUFWriter.add_sampling_min_p  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_XTC_PROBABILITY)rf   xtc_probabilitys     r/   add_sampling_xtc_probability'GGUFWriter.add_sampling_xtc_probability  s    >>Pr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_XTC_THRESHOLD)rf   xtc_thresholds     r/   add_sampling_xtc_threshold%GGUFWriter.add_sampling_xtc_threshold  s    <<mLr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_TEMP)rf   temps     r/   add_sampling_tempGGUFWriter.add_sampling_temp  s    33T:r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_PENALTY_LAST_N)rf   penalty_last_ns     r/   add_sampling_penalty_last_n&GGUFWriter.add_sampling_penalty_last_n  s    t||;;^Lr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_PENALTY_REPEAT)rf   penalty_repeats     r/   add_sampling_penalty_repeat&GGUFWriter.add_sampling_penalty_repeat  s    ==~Nr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_MIROSTAT)rf   mirostats     r/   add_sampling_mirostat GGUFWriter.add_sampling_mirostat  s    t||55x@r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_MIROSTAT_TAU)rf   mirostat_taus     r/   add_sampling_mirostat_tau$GGUFWriter.add_sampling_mirostat_tau       ;;\Jr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  SAMPLING_MIROSTAT_ETA)rf   mirostat_etas     r/   add_sampling_mirostat_eta$GGUFWriter.add_sampling_mirostat_eta#  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  NAME)rf   ry   s     r/   add_nameGGUFWriter.add_name&      ))40r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  AUTHOR)rf   authors     r/   
add_authorGGUFWriter.add_author)  s    ++V4r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  VERSION)rf   versions     r/   add_versionGGUFWriter.add_version,      ,,g6r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  ORGANIZATION)rf   organizations     r/   add_organizationGGUFWriter.add_organization/  s    11<@r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  FINETUNE)rf   finetunes     r/   add_finetuneGGUFWriter.add_finetune2      --x8r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  BASENAME)rf   basenames     r/   add_basenameGGUFWriter.add_basename5  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  DESCRIPTION)rf   descriptions     r/   add_descriptionGGUFWriter.add_description8  s    00+>r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  QUANTIZED_BY)rf   	quantizeds     r/   add_quantized_byGGUFWriter.add_quantized_by;  s    119=r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  
SIZE_LABEL)rf   
size_labels     r/   add_size_labelGGUFWriter.add_size_label>  s    //<r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  LICENSErf   licenses     r/   add_licenseGGUFWriter.add_licenseA  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  LICENSE_NAMEr  s     r/   add_license_nameGGUFWriter.add_license_nameD      117;r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  LICENSE_LINKr  s     r/   add_license_linkGGUFWriter.add_license_linkG  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  URLrf   urls     r/   add_urlGGUFWriter.add_urlJ      ((#.r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  DOIrf   dois     r/   add_doiGGUFWriter.add_doiM  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  UUIDrf   uuids     r/   add_uuidGGUFWriter.add_uuidP  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  REPO_URLrf   repo_urls     r/   add_repo_urlGGUFWriter.add_repo_urlS  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  
SOURCE_URLr  s     r/   add_source_urlGGUFWriter.add_source_urlV      //5r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  
SOURCE_DOIr	  s     r/   add_source_doiGGUFWriter.add_source_doiY  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  SOURCE_UUIDr  s     r/   add_source_uuidGGUFWriter.add_source_uuid\  s    00$7r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  SOURCE_REPO_URLr  s     r/   add_source_repo_urlGGUFWriter.add_source_repo_url_  s    44h?r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  BASE_MODEL_COUNTrf   source_counts     r/   add_base_model_countGGUFWriter.add_base_model_countb  s    55|Dr.   c                r    U R                  [        R                  R                  R	                  US9U5        g N)id)r  r   rl  BASE_MODEL_NAMErb   rf   	source_idry   s      r/   add_base_model_nameGGUFWriter.add_base_model_namee  (    44;;y;I4Pr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_AUTHORrb   rf   r5  r  s      r/   add_base_model_author GGUFWriter.add_base_model_authorh  s(    66===KVTr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_VERSIONrb   rf   r5  r  s      r/   add_base_model_version!GGUFWriter.add_base_model_versionk  s(    77>>)>LgVr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_ORGANIZATIONrb   rf   r5  r  s      r/   add_base_model_organization&GGUFWriter.add_base_model_organizationn  s)    <<CCyCQS_`r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_DESCRIPTIONrb   rf   r5  r  s      r/   add_base_model_description%GGUFWriter.add_base_model_descriptionq  s)    ;;BBiBPR]^r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_URLrb   rf   r5  r  s      r/   add_base_model_urlGGUFWriter.add_base_model_urlt  (    33::i:H#Nr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_DOIrb   rf   r5  r
  s      r/   add_base_model_doiGGUFWriter.add_base_model_doiw  rR  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_UUIDrb   rf   r5  r  s      r/   add_base_model_uuidGGUFWriter.add_base_model_uuidz  r8  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  BASE_MODEL_REPO_URLrb   rf   r5  r  s      r/   add_base_model_repo_url"GGUFWriter.add_base_model_repo_url}  s(    88??9?MxXr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rl  DATASET_COUNTr,  s     r/   add_dataset_countGGUFWriter.add_dataset_count  s    22LAr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_NAMErb   r4  s      r/   add_dataset_nameGGUFWriter.add_dataset_name  (    1188I8FMr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_AUTHORrb   r;  s      r/   add_dataset_authorGGUFWriter.add_dataset_author  s(    33::i:H&Qr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_VERSIONrb   r@  s      r/   add_dataset_versionGGUFWriter.add_dataset_version  s(    44;;y;I7Sr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_ORGANIZATIONrb   rE  s      r/   add_dataset_organization#GGUFWriter.add_dataset_organization  s)    99@@I@NP\]r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_DESCRIPTIONrb   rJ  s      r/   add_dataset_description"GGUFWriter.add_dataset_description  s(    88??9?M{[r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_URLrb   rO  s      r/   add_dataset_urlGGUFWriter.add_dataset_url  (    007797EsKr.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_DOIrb   rU  s      r/   add_dataset_doiGGUFWriter.add_dataset_doi  r  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_UUIDrb   rZ  s      r/   add_dataset_uuidGGUFWriter.add_dataset_uuid  rj  r.   c                r    U R                  [        R                  R                  R	                  US9U5        g r1  )r  r   rl  DATASET_REPO_URLrb   r_  s      r/   add_dataset_repo_urlGGUFWriter.add_dataset_repo_url  s(    55<<	<JHUr.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  TAGS)rf   tagss     r/   add_tagsGGUFWriter.add_tags  s    t||(($/r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   rl  	LANGUAGES)rf   	languagess     r/   add_languagesGGUFWriter.add_languages  s    t||--y9r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g N)rX   )r  r   LLMTENSOR_DATA_LAYOUTrb   rX   )rf   layouts     r/   add_tensor_data_layout!GGUFWriter.add_tensor_data_layout  s,    33::		:JFSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  
VOCAB_SIZErb   rX   rf   rz   s     r/   add_vocab_sizeGGUFWriter.add_vocab_size  s,    ++22		2BDIr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  CONTEXT_LENGTHrb   rX   rf   lengths     r/   add_context_lengthGGUFWriter.add_context_length  s,    //66DII6FOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EMBEDDING_LENGTHrb   rX   r  s     r/   add_embedding_lengthGGUFWriter.add_embedding_length  s,    1188dii8H&Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EMBEDDING_LENGTH_OUTrb   rX   r  s     r/   add_embedding_length_out#GGUFWriter.add_embedding_length_out  s,    55<<$))<LfUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  FEATURES_LENGTHrb   rX   r  s     r/   add_features_lengthGGUFWriter.add_features_length  s,    0077TYY7GPr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   PosNetr  rb   rX   r  s     r/   add_posnet_embedding_length&GGUFWriter.add_posnet_embedding_length  s,    44;;;KVTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  BLOCK_COUNTrb   rX   r  s     r/   add_posnet_block_count!GGUFWriter.add_posnet_block_count  s,    //66DII6FOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   ConvNextr  rb   rX   r  s     r/   add_convnext_embedding_length(GGUFWriter.add_convnext_embedding_length  s,    66==499=MvVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  r  rb   rX   r  s     r/   add_convnext_block_count#GGUFWriter.add_convnext_block_count  s,    1188dii8H&Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   	ShortConvL_CACHErb   rX   r  s     r/   add_shortconv_l_cache GGUFWriter.add_shortconv_l_cache  s,    ..554995EvNr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  r  rb   rX   r  s     r/   add_block_countGGUFWriter.add_block_count  s,    ,,333CVLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  LEADING_DENSE_BLOCK_COUNTrb   rX   r  s     r/   add_leading_dense_block_count(GGUFWriter.add_leading_dense_block_count  s-    ::AAtyyAQSYZr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  FULL_ATTENTION_INTERVALrb   rX   )rf   intervals     r/   add_full_attention_interval&GGUFWriter.add_full_attention_interval  s-    88??TYY?OQYZr.   c                4   [        U[        5      (       aB  U R                  [        R                  R
                  R                  U R                  S9U5        g U R                  [        R                  R
                  R                  U R                  S9U5        g r  )	
isinstancer$   r   r   r  FEED_FORWARD_LENGTHrb   rX   r  r  s     r/   add_feed_forward_length"GGUFWriter.add_feed_forward_length  se    fc""OODHH88??TYY?OQWXNN48877>>DII>NPVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_FEED_FORWARD_LENGTHrb   rX   r  s     r/   add_expert_feed_forward_length)GGUFWriter.add_expert_feed_forward_length  s-    ;;BB		BRTZ[r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  !EXPERT_SHARED_FEED_FORWARD_LENGTHrb   rX   r  s     r/   %add_expert_shared_feed_forward_length0GGUFWriter.add_expert_shared_feed_forward_length  s-    BBIItyyIY[abr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r   EXPERT_CHUNK_FEED_FORWARD_LENGTHrb   rX   r  s     r/   $add_expert_chunk_feed_forward_length/GGUFWriter.add_expert_chunk_feed_forward_length  s-    AAHHdiiHXZ`ar.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  USE_PARALLEL_RESIDUALrb   rX   )rf   uses     r/   add_parallel_residual GGUFWriter.add_parallel_residual  s,    dhh44;;;KSQr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  DECODER_START_TOKEN_IDrb   rX   rf   r2  s     r/   add_decoder_start_token_id%GGUFWriter.add_decoder_start_token_id  s-    77>>DII>NPRSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  DECODER_BLOCK_COUNTrb   rX   rf   r3   s     r/   add_decoder_block_count"GGUFWriter.add_decoder_block_count  ,    44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EMBD_LENGTH_PER_LAYER_INPrb   rX   r  s     r/   $add_embedding_length_per_layer_input/GGUFWriter.add_embedding_length_per_layer_input  -    ::AAtyyAQSXYr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  ALTUP_ACTIVE_IDXrb   rX   rf   r   s     r/   add_altup_active_idxGGUFWriter.add_altup_active_idx  ,    1188dii8H#Nr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  ALTUP_NUM_INPUTSrb   rX   r  s     r/   add_altup_num_inputsGGUFWriter.add_altup_num_inputs  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  ACTIVATION_SPARSITY_SCALErb   rX   rf   r   s     r/   add_activation_sparsity_scale(GGUFWriter.add_activation_sparsity_scale  s-    txx99@@dii@PRXYr.   c                4   [        U[        5      (       aB  U R                  [        R                  R
                  R                  U R                  S9U5        g U R                  [        R                  R
                  R                  U R                  S9U5        g r  )	r  r$   r   r   	Attention
HEAD_COUNTrb   rX   r  rf   counts     r/   add_head_countGGUFWriter.add_head_count  sc    eS!!OODNN55<<$))<LeTNN4>>44;;;KUSr.   c                4   [        U[        5      (       aB  U R                  [        R                  R
                  R                  U R                  S9U5        g U R                  [        R                  R
                  R                  U R                  S9U5        g r  )	r  r$   r   r   r
  HEAD_COUNT_KVrb   rX   r  r  s     r/   add_head_count_kvGGUFWriter.add_head_count_kv  se    eS!!OODNN88??TYY?OQVWNN4>>77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  
KEY_LENGTHrb   rX   r  s     r/   add_key_lengthGGUFWriter.add_key_length  s,    1188dii8H&Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  VALUE_LENGTHrb   rX   r  s     r/   add_value_lengthGGUFWriter.add_value_length  ,    33::		:JFSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  KEY_LENGTH_MLArb   rX   r  s     r/   add_key_length_mlaGGUFWriter.add_key_length_mla  ,    55<<$))<LfUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  VALUE_LENGTH_MLArb   rX   r  s     r/   add_value_length_mlaGGUFWriter.add_value_length_mla  -    77>>DII>NPVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  KEY_LENGTH_SWArb   rX   r  s     r/   add_key_length_swaGGUFWriter.add_key_length_swa
  r!  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  VALUE_LENGTH_SWArb   rX   r  s     r/   add_value_length_swaGGUFWriter.add_value_length_swa  r&  r.   c                    U R                  [        R                  R                  R                  R                  U R                  S9U5        g r  )r   r   r
  Indexerr  rb   rX   r  s     r/   add_indexer_head_count!GGUFWriter.add_indexer_head_count  s3    ..99@@dii@PRWXr.   c                    U R                  [        R                  R                  R                  R                  U R                  S9U5        g r  )r   r   r
  r0  r  rb   rX   r  s     r/   add_indexer_key_length!GGUFWriter.add_indexer_key_length  s3    ..99@@dii@PRXYr.   c                    U R                  [        R                  R                  R                  R                  U R                  S9U5        g r  )r   r   r
  r0  TOP_Krb   rX   r  s     r/   add_indexer_top_kGGUFWriter.add_indexer_top_k  s2    ..44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  MAX_ALIBI_BIASrb   rX   )rf   biass     r/   add_max_alibi_biasGGUFWriter.add_max_alibi_bias  s.    66==499=MtTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  	CLAMP_KQVrb   rX   r  s     r/   add_clamp_kqvGGUFWriter.add_clamp_kqv  s.    1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  SHARED_KV_LAYERSrb   rX   r  s     r/   add_shared_kv_layersGGUFWriter.add_shared_kv_layers  -    77>>DII>NPUVr.   c                    [         R                  R                  R                  U R                  S9n[        U[        5      (       a  U R                  X!5        g U R                  X!5        g r  )	r   r
  SLIDING_WINDOW_PATTERNrb   rX   r  r$   r   r  )rf   r3   r   s      r/   add_sliding_window_pattern%GGUFWriter.add_sliding_window_pattern#  sH    nn33::		:JeS!!OOC'NN3&r.   c                   U R                  [        R                  R                  R	                  U R
                  US9U5        U R                  [        R                  R                  R	                  U R
                  US9U5        g )N)rX   dense)r   r   r  DENSE_FEAT_IN_SIZErb   rX   DENSE_FEAT_OUT_SIZE)rf   rM  in_fout_fs       r/   add_dense_features_dims"GGUFWriter.add_dense_features_dims*  s^    33::		QV:WY]^44;;RW;XZ_`r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  LOGIT_SCALErb   rX   r  s     r/   add_logit_scaleGGUFWriter.add_logit_scale.  s.    --44$))4DeLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  ATTN_LOGIT_SOFTCAPPINGrb   rX   r  s     r/   add_attn_logit_softcapping%GGUFWriter.add_attn_logit_softcapping1  s/    88??TYY?OQVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  ROUTER_LOGIT_SOFTCAPPINGrb   rX   r  s     r/   add_router_logit_softcapping'GGUFWriter.add_router_logit_softcapping4  s/    ::AAtyyAQSXYr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  FINAL_LOGIT_SOFTCAPPINGrb   rX   r  s     r/   add_final_logit_softcapping&GGUFWriter.add_final_logit_softcapping7  s/    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_COUNTrb   rX   r  s     r/   add_expert_countGGUFWriter.add_expert_count:  s,    --44$))4DeLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_USED_COUNTrb   rX   r  s     r/   add_expert_used_count GGUFWriter.add_expert_used_count=  ,    2299tyy9I5Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_SHARED_COUNTrb   rX   r  s     r/   add_expert_shared_count"GGUFWriter.add_expert_shared_count@  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_GROUP_COUNTrb   rX   r  s     r/   add_expert_group_count!GGUFWriter.add_expert_group_countC  ,    33::		:JERr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_GROUP_USED_COUNTrb   rX   r  s     r/   add_expert_group_used_count&GGUFWriter.add_expert_group_used_countF  s-    88??TYY?OQVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_WEIGHTS_SCALErb   rX   r  s     r/   add_expert_weights_scale#GGUFWriter.add_expert_weights_scaleI  s.    66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  EXPERT_WEIGHTS_NORMrb   rX   r  s     r/   add_expert_weights_norm"GGUFWriter.add_expert_weights_normL  s,    dhh2299tyy9I5Qr.   c                    U R                  [        R                  R                  R	                  U R
                  S9UR                  5        g r  )r   r   r  EXPERT_GATING_FUNCrb   rX   r3   r  s     r/   add_expert_gating_func!GGUFWriter.add_expert_gating_funcO  s0    33::		:JEKKXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  SWIGLU_CLAMP_EXPrb   rX   r  s     r/   add_swiglu_clamp_expGGUFWriter.add_swiglu_clamp_expR  s,    txx0077TYY7GPr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  SWIGLU_CLAMP_SHEXPrb   rX   r  s     r/   add_swiglu_clamp_shexp!GGUFWriter.add_swiglu_clamp_shexpU  s,    txx2299tyy9I6Rr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERT_GROUP_SCALErb   rX   r  s     r/   add_expert_group_scale!GGUFWriter.add_expert_group_scaleX  s.    44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EXPERTS_PER_GROUPrb   rX   r  s     r/   add_experts_per_group GGUFWriter.add_experts_per_group[  rl  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  MOE_EVERY_N_LAYERSrb   rX   r  s     r/   add_moe_every_n_layers!GGUFWriter.add_moe_every_n_layers^  ru  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  MOE_LATENT_SIZErb   rX   r  s     r/   add_moe_latent_sizeGGUFWriter.add_moe_latent_sizea  s,    0077TYY7GOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  NEXTN_PREDICT_LAYERSrb   rX   r  s     r/   add_nextn_predict_layers#GGUFWriter.add_nextn_predict_layersd  ,    55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  	SWIN_NORMrb   rX   r  s     r/   add_swin_normGGUFWriter.add_swin_normg  s,    dhh((//TYY/?Gr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  RESCALE_EVERY_N_LAYERSrb   rX   r  s     r/   add_rescale_every_n_layers%GGUFWriter.add_rescale_every_n_layersj  s-    77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  TIME_MIX_EXTRA_DIMrb   rX   rf   dims     r/   add_time_mix_extra_dim!GGUFWriter.add_time_mix_extra_dimm  s,    33::		:JCPr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  TIME_DECAY_EXTRA_DIMrb   rX   r  s     r/   add_time_decay_extra_dim#GGUFWriter.add_time_decay_extra_dimp  s,    55<<$))<LcRr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  RESIDUAL_SCALErb   rX   r  s     r/   add_residual_scaleGGUFWriter.add_residual_scales  s.    0077TYY7GOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  EMBEDDING_SCALErb   rX   r  s     r/   add_embedding_scaleGGUFWriter.add_embedding_scalev  s.    1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   WKV	HEAD_SIZErb   rX   r  s     r/   add_wkv_head_sizeGGUFWriter.add_wkv_head_sizey  s,    **11tyy1A4Hr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  TOKEN_SHIFT_COUNTrb   rX   r  s     r/   add_token_shift_count GGUFWriter.add_token_shift_count|  rl  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  INTERLEAVE_MOE_LAYER_STEPrb   rX   r  s     r/   add_interleave_moe_layer_step(GGUFWriter.add_interleave_moe_layer_step  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  LAYERNORM_EPSrb   rX   r  s     r/   add_layer_norm_epsGGUFWriter.add_layer_norm_eps  .    55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  LAYERNORM_RMS_EPSrb   rX   r  s     r/   add_layer_norm_rms_eps!GGUFWriter.add_layer_norm_rms_eps  /    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  GROUPNORM_EPSrb   rX   r  s     r/   add_group_norm_epsGGUFWriter.add_group_norm_eps  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  GROUPNORM_GROUPSrb   rX   r  s     r/   add_group_norm_groups GGUFWriter.add_group_norm_groups  rG  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r
  CAUSALrb   rX   r  s     r/   add_causal_attentionGGUFWriter.add_causal_attention  s,    dnn++22		2BEJr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  Q_LORA_RANKrb   rX   r  s     r/   add_q_lora_rankGGUFWriter.add_q_lora_rank  s,    2299tyy9I6Rr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  KV_LORA_RANKrb   rX   r  s     r/   add_kv_lora_rankGGUFWriter.add_kv_lora_rank  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  DECAY_LORA_RANKrb   rX   r  s     r/   add_decay_lora_rankGGUFWriter.add_decay_lora_rank  s,    66==499=MvVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  ICLR_LORA_RANKrb   rX   r  s     r/   add_iclr_lora_rankGGUFWriter.add_iclr_lora_rank  r!  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  VALUE_RESIDUAL_MIX_LORA_RANKrb   rX   r  s     r/    add_value_residual_mix_lora_rank+GGUFWriter.add_value_residual_mix_lora_rank  s0    CCJJPTPYPYJZ\bcr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   RopeFREQ_BASE_SWArb   rX   r  s     r/   add_rope_freq_base_swa!GGUFWriter.add_rope_freq_base_swa  .    0077TYY7GOr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  GATE_LORA_RANKrb   rX   r  s     r/   add_gate_lora_rankGGUFWriter.add_gate_lora_rank  r!  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  REL_BUCKETS_COUNTrb   rX   r  s     r/   add_relative_attn_buckets_count*GGUFWriter.add_relative_attn_buckets_count  s-    88??TYY?OQVWr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  SLIDING_WINDOWrb   rX   r  s     r/   add_sliding_windowGGUFWriter.add_sliding_window  s,    55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  SCALErb   rX   r  s     r/   add_attention_scaleGGUFWriter.add_attention_scale  s.    --44$))4DeLr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  OUTPUT_SCALErb   rX   r  s     r/   add_attn_output_scale GGUFWriter.add_attn_output_scale  s.    44;;;KUSr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  TEMPERATURE_LENGTHrb   rX   r  s     r/   add_attn_temperature_length&GGUFWriter.add_attn_temperature_length  s-    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r
  TEMPERATURE_SCALErb   rX   r  s     r/   add_attn_temperature_scale%GGUFWriter.add_attn_temperature_scale  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9UR                  5        g r  )r   r   r  POOLING_TYPErb   rX   r3   r  s     r/   add_pooling_typeGGUFWriter.add_pooling_type  s0    --44$))4DekkRr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  NUM_DEEPSTACK_LAYERSrb   rX   r  s     r/   add_num_deepstack_layers#GGUFWriter.add_num_deepstack_layers  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  DIMENSION_COUNTrb   rX   r  s     r/   add_rope_dimension_count#GGUFWriter.add_rope_dimension_count  s,    		1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  DIMENSION_COUNT_SWArb   rX   r  s     r/   add_rope_dimension_count_swa'GGUFWriter.add_rope_dimension_count_swa  s,    		55<<$))<LeTr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  DIMENSION_SECTIONSrb   rX   )rf   dimss     r/   add_rope_dimension_sections&GGUFWriter.add_rope_dimension_sections  s,    tyy33::		:JDQr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  	FREQ_BASErb   rX   r  s     r/   add_rope_freq_baseGGUFWriter.add_rope_freq_base  s.    ,,333CUKr.   c                    U R                  [        R                  R                  R	                  U R
                  S9UR                  5        g r  )r  r   r  SCALING_TYPErb   rX   r3   r  s     r/   add_rope_scaling_type GGUFWriter.add_rope_scaling_type  s0    		..554995Eu{{Sr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_FACTORrb   rX   r  s     r/   add_rope_scaling_factor"GGUFWriter.add_rope_scaling_factor  s.    1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_ALPHArb   rX   r  s     r/   add_rope_scaling_alpha!GGUFWriter.add_rope_scaling_alpha  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_ATTN_FACTORrb   rX   r  s     r/   add_rope_scaling_attn_factors(GGUFWriter.add_rope_scaling_attn_factors  s.    66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_ORIG_CTX_LENrb   rX   r  s     r/   add_rope_scaling_orig_ctx_len(GGUFWriter.add_rope_scaling_orig_ctx_len  s,    		66==499=MuUr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r  SCALING_FINETUNEDrb   rX   r  s     r/   add_rope_scaling_finetuned%GGUFWriter.add_rope_scaling_finetuned  s,    dii1188dii8H%Pr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_YARN_LOG_MULrb   rX   r  s     r/   add_rope_scaling_yarn_log_mul(GGUFWriter.add_rope_scaling_yarn_log_mul  s/    77>>DII>NPUVr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_YARN_EXT_FACTORrb   rX   r  s     r/    add_rope_scaling_yarn_ext_factor+GGUFWriter.add_rope_scaling_yarn_ext_factor  s/    ::AAtyyAQSXYr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_YARN_ATTN_FACTORrb   rX   r  s     r/   !add_rope_scaling_yarn_attn_factor,GGUFWriter.add_rope_scaling_yarn_attn_factor  s/    ;;BB		BRTYZr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_YARN_BETA_FASTrb   rX   r  s     r/   add_rope_scaling_yarn_beta_fast*GGUFWriter.add_rope_scaling_yarn_beta_fast  /    99@@dii@PRWXr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r  SCALING_YARN_BETA_SLOWrb   rX   r  s     r/   add_rope_scaling_yarn_beta_slow*GGUFWriter.add_rope_scaling_yarn_beta_slow  rW  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   SSMCONV_KERNELrb   rX   r  s     r/   add_ssm_conv_kernelGGUFWriter.add_ssm_conv_kernel  ,    ,,333CUKr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r]  
INNER_SIZErb   rX   r  s     r/   add_ssm_inner_sizeGGUFWriter.add_ssm_inner_size  ,    ++22		2BEJr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r]  
STATE_SIZErb   rX   r  s     r/   add_ssm_state_sizeGGUFWriter.add_ssm_state_size  rf  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r]  TIME_STEP_RANKrb   rX   r  s     r/   add_ssm_time_step_rank!GGUFWriter.add_ssm_time_step_rank  s,    //66DII6FNr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   r]  GROUP_COUNTrb   rX   r  s     r/   add_ssm_group_countGGUFWriter.add_ssm_group_count  ra  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   r]  
DT_B_C_RMSrb   rX   r  s     r/   add_ssm_dt_b_c_rmsGGUFWriter.add_ssm_dt_b_c_rms  s,    dhh))00dii0@%Hr.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r   r   KDAHEAD_DIMrb   rX   r  s     r/   add_kda_head_dimGGUFWriter.add_kda_head_dim  s,    ))00dii0@%Hr.   c                X    U R                  [        R                  R                  U5        g r   )r  r   	TokenizerMODEL)rf   models     r/   add_tokenizer_modelGGUFWriter.add_tokenizer_model   s    ,,e4r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  PRE)rf   pres     r/   add_tokenizer_preGGUFWriter.add_tokenizer_pre  s    **C0r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  LIST)rf   tokenss     r/   add_token_listGGUFWriter.add_token_list  s    t~~**F3r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  MERGES)rf   mergess     r/   add_token_mergesGGUFWriter.add_token_merges	      t~~,,f5r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  
TOKEN_TYPE)rf   typess     r/   add_token_typesGGUFWriter.add_token_types  s    t~~00%8r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  TOKEN_TYPE_COUNTr  s     r/   add_token_type_countGGUFWriter.add_token_type_count      77?r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  SCORES)rf   scoress     r/   add_token_scoresGGUFWriter.add_token_scores  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  BOS_IDr  s     r/   add_bos_token_idGGUFWriter.add_bos_token_id      --r2r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  EOS_IDr  s     r/   add_eos_token_idGGUFWriter.add_eos_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  UNK_IDr  s     r/   add_unk_token_idGGUFWriter.add_unk_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  SEP_IDr  s     r/   add_sep_token_idGGUFWriter.add_sep_token_id  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  PAD_IDr  s     r/   add_pad_token_idGGUFWriter.add_pad_token_id!  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  MASK_IDr  s     r/   add_mask_token_idGGUFWriter.add_mask_token_id$  s    ..3r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  ADD_BOSr  s     r/   add_add_bos_tokenGGUFWriter.add_add_bos_token'      dnn,,e4r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  ADD_EOSr  s     r/   add_add_eos_tokenGGUFWriter.add_add_eos_token*  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  ADD_SEPr  s     r/   add_add_sep_tokenGGUFWriter.add_add_sep_token-  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  
ADD_PREFIXr  s     r/   add_add_space_prefixGGUFWriter.add_add_space_prefix0  s    dnn//7r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  REMOVE_EXTRA_WSr  s     r/   add_remove_extra_whitespaces'GGUFWriter.add_remove_extra_whitespaces3  s    dnn44e<r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r}  PRECOMPILED_CHARSMAP)rf   charsmaps     r/   add_precompiled_charsmap#GGUFWriter.add_precompiled_charsmap6  s    t~~::HEr.   c                b   [        U[        5      (       d  S n[        5       nU H  nUR                  SS5      nUR                  S5      nSR	                  S U 5       5      nU(       d  MG  Uc  ML  US:X  a  UnMV  UR                  U5        U R                  [        R                  R                  R                  US9U5        M     U(       a3  U R                  [        R                  R                  [        U5      5        Uc  g UnU R                  [        R                  R                  U5        g )Nry    templatec              3  J   #    U  H  o[         [        -   ;   a  UOS v   M     g7f)r   Nr   )r   cs     r/   r   /GGUFWriter.add_chat_template.<locals>.<genexpr>C  s!     XSWa-&*@%@c ISWs   !#default)ry   )r  strsetgetjoinaddr  r   r}  CHAT_TEMPLATE_Nrb   r  CHAT_TEMPLATESlistCHAT_TEMPLATE)rf   r3   template_defaulttemplate_nameschoicery   r  s          r/   add_chat_templateGGUFWriter.add_chat_template9  s    %%%# UNzz&"-!::j1 wwXSWXY4H0y(+3(&**40(F(F(M(MSW(M(XZbc   t~~<<d>>RS'$E44e<r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  EOT_IDr  s     r/   add_eot_token_idGGUFWriter.add_eot_token_idV  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r}  EOM_IDr  s     r/   add_eom_token_idGGUFWriter.add_eom_token_idY  r  r.   c                    U R                  [        R                  R                  R	                  U R
                  S9U5        g r  )r  r   
ClassifierOUTPUT_LABELSrb   rX   )rf   labelss     r/   add_classifier_output_labels'GGUFWriter.add_classifier_output_labels\  s,    t44;;;KVTr.   c                X    U R                  [        R                  R                  U5        g r   )r  r   ClipHAS_VISION_ENCODERr  s     r/   add_clip_has_vision_encoder&GGUFWriter.add_clip_has_vision_encodera  s    dii22E:r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  HAS_AUDIO_ENCODERr  s     r/   add_clip_has_audio_encoder%GGUFWriter.add_clip_has_audio_encoderd  s    dii1159r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  PROJECTOR_TYPEr  s     r/   add_clip_projector_type"GGUFWriter.add_clip_projector_typeg  s    		00%8r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   
ClipVisionr  r  s     r/   add_clip_vision_projector_type)GGUFWriter.add_clip_vision_projector_typej      66>r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  PROJECTION_DIMr  s     r/   add_vision_projection_dim$GGUFWriter.add_vision_projection_dimm  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  
PATCH_SIZEr  s     r/   add_vision_patch_size GGUFWriter.add_vision_patch_sizep      22E:r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  r  r  s     r/   add_vision_embedding_length&GGUFWriter.add_vision_embedding_lengths      88%@r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  r  r  s     r/   add_vision_feed_forward_length)GGUFWriter.add_vision_feed_forward_lengthv  s    ;;UCr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  r  r  s     r/   add_vision_block_count!GGUFWriter.add_vision_block_county      33U;r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  r
  r  r  s     r/   add_vision_head_count GGUFWriter.add_vision_head_count|  s     11<<eDr.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  r
  r  r  s     r/   "add_vision_attention_layernorm_eps-GGUFWriter.add_vision_attention_layernorm_eps  s"    22@@%Hr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  
IMAGE_SIZEr  s     r/   add_vision_image_size GGUFWriter.add_vision_image_size  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  IMAGE_MAX_PIXELSr  s     r/   add_vision_max_pixels GGUFWriter.add_vision_max_pixels  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  IMAGE_MIN_PIXELSr  s     r/   add_vision_min_pixels GGUFWriter.add_vision_min_pixels  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  PREPROC_MAX_TILESr  s     r/   add_vision_preproc_max_tiles'GGUFWriter.add_vision_preproc_max_tiles      995Ar.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  PREPROC_MIN_TILESr  s     r/   add_vision_preproc_min_tiles'GGUFWriter.add_vision_preproc_min_tiles  r3  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  PREPROC_IMAGE_SIZEr  s     r/   add_vision_preproc_image_size(GGUFWriter.add_vision_preproc_image_size      ::EBr.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  
IMAGE_MEANr  s     r/   add_vision_image_mean GGUFWriter.add_vision_image_mean  s    t116:r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  	IMAGE_STDr  s     r/   add_vision_image_stdGGUFWriter.add_vision_image_std  s    t00&9r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  SPATIAL_MERGE_SIZEr  s     r/   add_vision_spatial_merge_size(GGUFWriter.add_vision_spatial_merge_size  r<  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  USE_GELUr  s     r/   add_vision_use_geluGGUFWriter.add_vision_use_gelu      doo..6r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  USE_SILUr  s     r/   add_vision_use_siluGGUFWriter.add_vision_use_silu  rM  r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  	ProjectorSCALE_FACTORr  s     r/   !add_vision_projector_scale_factor,GGUFWriter.add_vision_projector_scale_factor  s     11>>Fr.   c                X    U R                  [        R                  R                  U5        g)aX  Add window attention pattern interval for vision models.

This defines the pattern interval for window attention vs full attention layers.
For example, if n_wa_pattern=4, then layers 3, 7, 11, ... use full attention,
while other layers use window attention.

Used by models like Qwen2.5-VL where full attention layers follow a regular pattern.
N)r   r   r  N_WA_PATTERNr  s     r/   add_vision_n_wa_pattern"GGUFWriter.add_vision_n_wa_pattern  s     	44e<r.   c                X    U R                  [        R                  R                  U5        g)a  Add explicit layer indexes that use full attention in vision models.

This specifies the exact layer indices (0-based) that should use full attention
instead of window attention. All other layers will use window attention.

Args:
    layers: List of layer indices that use full attention (e.g., [3, 7, 11, 15])

Used by models like YoutuVL where full attention layers are explicitly specified
rather than following a regular pattern.

Difference from add_vision_n_wa_pattern:
- n_wa_pattern: Defines a regular interval pattern (every Nth layer uses full attention)
- wa_layer_indexes: Explicitly lists which layers use full attention (irregular pattern)
N)r  r   r  WA_LAYER_INDEXESrf   layerss     r/   add_vision_wa_layer_indexes&GGUFWriter.add_vision_wa_layer_indexes  s      	t77@r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  IS_DEEPSTACK_LAYERSr]  s     r/   add_vision_is_deepstack_layers)GGUFWriter.add_vision_is_deepstack_layers  s    t::FCr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   r  WINDOW_SIZEr  s     r/   add_vision_window_size!GGUFWriter.add_vision_window_size  r  r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  SAMr  r  s     r/   add_vision_sam_layers_count&GGUFWriter.add_vision_sam_layers_count  s     ++77?r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  rj  r  r  s     r/   add_vision_sam_embedding_length*GGUFWriter.add_vision_sam_embedding_length  s     ++<<eDr.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   r  rj  r  r  s     r/   add_vision_sam_head_count$GGUFWriter.add_vision_sam_head_count  s     ++66>r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   	ClipAudior  r  s     r/   add_clip_audio_projector_type(GGUFWriter.add_clip_audio_projector_type      55u=r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  r
  r  s     r/   add_audio_projection_dim#GGUFWriter.add_audio_projection_dim  rw  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  r  r  s     r/   add_audio_embedding_length%GGUFWriter.add_audio_embedding_length  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  r  r  s     r/   add_audio_feed_forward_length(GGUFWriter.add_audio_feed_forward_length  s    ::EBr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  r  r  s     r/   add_audio_block_count GGUFWriter.add_audio_block_count      22E:r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rt  r
  r  r  s     r/   add_audio_head_countGGUFWriter.add_audio_head_count       00;;UCr.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rt  r
  r  r  s     r/   !add_audio_attention_layernorm_eps,GGUFWriter.add_audio_attention_layernorm_eps  s"    11??Gr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  NUM_MEL_BINSr  s     r/   add_audio_num_mel_bins!GGUFWriter.add_audio_num_mel_bins  s    33U;r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rt  rS  STACK_FACTORr  s     r/   add_audio_stack_factor!GGUFWriter.add_audio_stack_factor  s     00==uEr.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  
CHUNK_SIZEr  s     r/   add_audio_chunk_sizeGGUFWriter.add_audio_chunk_size  s    1159r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  CONV_KERNEL_SIZEr  s     r/   add_audio_conv_kernel_size%GGUFWriter.add_audio_conv_kernel_size  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r   r   rt  MAX_POS_EMBr  s     r/   add_audio_max_pos_emb GGUFWriter.add_audio_max_pos_emb  r  r.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rt  rS  rf  r  s     r/   add_audio_projector_window_size*GGUFWriter.add_audio_projector_window_size  s     00<<eDr.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rt  rS  DOWNSAMPLE_RATEr  s     r/   #add_audio_projector_downsample_rate.GGUFWriter.add_audio_projector_downsample_rate  s     00@@%Hr.   c                l    U R                  [        R                  R                  R                  U5        g r   )r   r   rt  rS  r  r  s     r/   add_audio_projector_head_count)GGUFWriter.add_audio_projector_head_count  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   xIELUALPHA_Pr  s     r/   add_xielu_alpha_pGGUFWriter.add_xielu_alpha_p      tzz))62r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  ALPHA_Nr  s     r/   add_xielu_alpha_nGGUFWriter.add_xielu_alpha_n  r  r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  BETAr  s     r/   add_xielu_betaGGUFWriter.add_xielu_beta  s    tzz/r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   r  EPSr  s     r/   add_xielu_epsGGUFWriter.add_xielu_eps
  s    tzz~~v.r.   c                X    U R                  [        R                  R                  U5        g r   )r  r   	DiffusionSHIFT_LOGITSr  s     r/   add_diffusion_shift_logits%GGUFWriter.add_diffusion_shift_logits  s    dnn1159r.   c                    SnU(       d"  U R                   [        R                  :X  a  SOSn[        R                  " U U 3U5      $ )Nr  <>)rY   r   r3  structpack)rf   fmtr3   r   pack_prefixs        r/   r   GGUFWriter._pack  s<    !%:3D3D!D##K{{k]3%0%88r.   c                  ^	 [        5       nU(       a  XPR                  SU5      -  nU R                  R                  U5      nUb%  XPR                  XaU[        R
                  :H  S9-  nGOsU[        R                  :X  aK  [        U[        5      (       a  UR                  S5      OUnXPR                  S[        U5      5      -  nXW-  nGOU[        R                  :X  a  [        U[        5      (       d  [        S5      e[        U5      S:X  a  [        S5      eUb  Um	Og[        U[        5      (       a  [        R                  m	OA[        R                   " US   5      m	[#        U	4S jUS	S   5       5      (       d  [        S
5      eXPR                  ST	5      -  nXPR                  S[        U5      5      -  nU H  nXPR%                  UT	SS9-  nM     O[        S5      e[        U5      $ )NrN   r   zutf-8rQ   z/Invalid GGUF metadata array, expecting sequencer   z(Invalid GGUF metadata array. Empty arrayc              3  T   >#    U  H  n[         R                  " U5      TL v   M     g 7fr   )r   get_type)r   rO   ltypes     r/   r   'GGUFWriter._pack_val.<locals>.<genexpr>3  s!     Ow!=11!4=ws   %(r   z4All items in a GGUF array should be of the same typeFr   z)Invalid GGUF metadata value type or value)r   r   _simple_value_packingr  r   r  r   r  r  encoderr   r
  r   r   r@  r   r  allr   )
rf   r   r   r   r6   rH   pack_fmtencoded_valitemr  s
            @r/   r   GGUFWriter._pack_val  s   +zz#u--G--11%8zz(E]M_M_D_z``Gm***1;C1E1E#**W-3Kzz#s;'788G"Gm)))c8,, !RSS3x1} !KLL# C''%++%..s1v6Os12wOOO$%[\\zz#u--Gzz#s3x00G>>$>GG  HIIW~r.   c                ~    U S:X  a  g[        U 5      nS H   n[        U5      S:  a	  US U 3s  $ US-  nM"     US S3$ )Nr   znegligible - metadata only)r  KMGg     @@z3.1fz.1fzT - over 1TB, split recommended)floatabs)numfnumrV  s      r/   r    GGUFWriter.format_n_bytes_to_str>  sW    !8/Sz'D4y6!tTF++FND ( s:;;r.   )rX   rZ   r^   rY   rC   rH   rE   r_   r]   r\   rI   rF   rG   r[   )rE   zos.PathLike[str] | str | NonerX   r  r[   boolrY   r   r\   r$   r]   r$   r^   r  r_   r  )returnztuple[int, int, int, int])rE   r   r  
list[Path]r   )rE   rD   r  None)r  r  )r  r  )
r   r  r   r   r   r   r6   r5   r  r  )r   r  r   r$   r  r  )r   r  r   r  r  r  )r   r  r   r  r  r  )r   r  r   r  r  r  )r   r  r   zSequence[Any]r  r  )r  r$   r  r$   r  r$   )ry   r  r%  r!   r&  znp.dtyper'  r$   r(  GGMLQuantizationType | Noner  r  )NNN)ry   r  r&   np.ndarray[Any, Any]r:  zSequence[int] | Noner(  r  r;  GGUFEndian | Noner  r  )r<  z	IO[bytes]r  r$   rA  z
int | Noner  r  )r&   r  r;  r  r  r  )rM  r  r  r  )rn  r  r  r  )rv  r$   r  r  )r{  r$   r  r  )r  r$   r  r  )r  r  r  r  )r  r$   r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r$   r  r  )r  r  r  r  )r  r$   r  r  )r  r  r  r  )r  r  r  r  )ry   r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r
  r  r  r  )r  r  r  r  )r  r  r  r  )r-  r$   r  r  )r5  r$   ry   r  r  r  )r5  r$   r  r  r  r  )r5  r$   r  r  r  r  )r5  r$   r  r  r  r  )r5  r$   r  r  r  r  )r5  r$   r  r  r  r  )r5  r$   r
  r  r  r  )r5  r$   r  r  r  r  )r5  r$   r  r  r  r  )r  Sequence[str]r  r  )r  r  r  r  )r  r  r  r  )rz   r$   r  r  )r  r$   r  r  )r  r$   r  r  )r  int | Sequence[int]r  r  )r  r  r  r  )r2  r$   r  r  )r3   r$   r  r  )r   r$   r  r  )r   Sequence[float]r  r  )r  r  r  r  )r  r$   r  r  )r<  r  r  r  )r3   r  r  r  )r3   zint | Sequence[bool]r  r  )rM  r  rP  r$   rQ  r$   r  r  )r3   r  r  r  )r3   r   r  r  )r  r$   r  r  )r3   r   r  r  )r(  r!   r  r  )r3   r   r  r  )r  r  r  r  )r  r  r  r  )r  5Sequence[str] | Sequence[bytes] | Sequence[bytearray]r  r  )r  r  r  r  )r  z#Sequence[TokenType] | Sequence[int]r  r  )r  r  r  r  )r  r@  r  r  )r3   z!str | Sequence[Mapping[str, str]]r  r  )r  r  r  r  )r3   r  r  r  )r^  r!   r  r  )r^  zSequence[bool]r  r  )r   r  )F)r  r  r3   r   r   r  r  r@  )
r   r   r   r   r   r  r6   r5   r  r@  )r  r$   r  r  (+  r(   r)   r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r3  rg   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  staticmethodr   r)  r=  r9  rK  rd  r   r`  ro  re   rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r(  r.  r6  r<  rA  rF  rK  rP  rV  r[  r`  rd  rh  rm  rq  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r)  r-  r1  r4  r8  r=  rA  rE  rJ  rR  rV  rZ  r^  rb  rf  rj  ro  rs  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r   r$  r)  r-  r1  r5  r9  r=  rA  rE  rI  rM  rQ  rU  rZ  r_  rd  ri  rm  rq  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r)  r-  r1  r6  r:  r?  rC  rG  rK  rP  rU  rY  r_  rc  rg  rk  rn  rq  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r-   r'   r.   r/   rA   rA   A   s   
%%
::((''sssssssssss UZs}  tE  tE!"!Uns 1 9< MQ fp  47 FJ gk 61HfA
+ +  k( (.)").S S99;:;:<;:<9;
:
 & &
 FJ+c+c'4+cDL+c+c'B+c 
+c\ Z^]a::!5:BV:.:IZ: 
:4' '
) )@ 9> -) -)^
6>Q;7B;==QM;MOAKK157A99?>=7<<//19668@EQUWa_OOQYBNRT^\LLNV0:TJPRVQUPWROM[[X\cbRTTZOOZTWRTVXVXYZTUQW'aMXZYMRTSXVRYQSTRSPUHWQSPQIRZUYUWKSTWVdPVXUMTYYSUQURLTQPVVQWZ[YYLKKOLII51469@63333345558=F=:33U
;:9??;AD<EI;AABBC;:C77G	=A$D<@E?
>>@C;DH<F:@;EID330/
:9 9$ $L < <r.   rA   )3
__future__r   loggingosr^  r  r1  r5  dataclassesr   enumr   r   mathr   pathlibr   ior	   typingr
   r   r   r   stringr   r   numpyr  	constantsr   r   r   r   r   r   r   r   r   r   r   quantsr   	getLoggerr(   r`   r   r   r1   r8   rA   r'   r.   r/   <module>r     s    "  	   
  !     - - (     0			8	$ 1  / / / * * *$ F< F<r.   