
    `i                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZmZ d dlZd
dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d
dl(m)Z)  ej*        e+          Z,dZ-e G d d                      Z.e G d d                      Z/ G d de
          Z0 G d d          Z1dS )    )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                  <    e Zd ZU ded<   ded<   ded<   dZded	<   dS )

TensorInfoSequence[int]shaper   dtypeintnbytesNznp.ndarray[Any, Any] | Nonetensor)__name__
__module____qualname____annotations__r%        d/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gguf/gguf_writer.pyr   r   (   sD         KKK*.F......r+   r   c                  2    e Zd ZU ded<   ded<   dZded<   dS )	GGUFValuer   valuer   typeNGGUFValueType | Nonesub_type)r&   r'   r(   r)   r2   r*   r+   r,   r.   r.   0   s8         JJJ%)H))))))r+   r.   c                      e Zd Z e            Z e            Z e            Z e            Z e            Z e            Z	dS )WriterStateN)
r&   r'   r(   r   NO_FILEEMPTYHEADERKV_DATATI_DATAWEIGHTSr*   r+   r,   r4   r4   7   sP        dffGdffEdffFdffGdffGdffGGGr+   r4   c                  	   e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ej        dej        dej        dej        dej	        dej
        dej        dej        dej        dej        dej        diZdej        ddddfdHd&ZdId)ZdJd,ZdKdLd/ZdMd0ZdNd1ZdKdLd2ZdNd3ZdNd4ZdKdOd<ZdPd=ZdPd>ZdPd?ZdPd@Z dPdAZ!dPdBZ"dQdDZ#dPdEZ$dPdFZ%dQdGZ&dRdHZ'dSdIZ(dTdKZ)e*dUdN            Z+	 dKdVdWZ,	 	 dWdXd\Z-dKdYdaZ.dZdbZ/ddcd[deZ0dNdfZ1dNdgZ2d\diZ3dNdjZ4d]dlZ5d^dnZ6d_dpZ7d`dqZ8dadsZ9dbduZ:dcdwZ;dddyZ<ded{Z=dfd}Z>dgdZ?dhdZ@didZAdidZBdidZCdjdZDdkdZEdldZFdmdZGdjdZHdkdZIdldZJdmdZKdndZLdodZMdpdZNdqdZOdrdZPdsdZQdtdZRdudZSdvdZTdwdZUdndZVdodZWdpdZXdqdZYdrdZZdsdZ[dtdZ\dudZ]dvdZ^dwdZ_dxdZ`dydZadzdZbd{dZcd|dZdd|dZed|dZfd|dZgd|dZhd|dZid|dZjd|dZkd|dZld}dZmd|dZnd|dZod~dZpddZqddĄZrddńZsd|dƄZtd|dǄZud|dȄZvd|dɄZwdd˄Zxdd̈́Zydd΄ZzddτZ{ddЄZ|ddфZ}dd҄Z~ddӄZddԄZddՄZddׄZdd؄ZddلZddڄZdd܄Zdd݄ZddބZdd߄Zd{dZddZddZddZddZddZddZddZd|dZd|dZd|dZd|dZd|dZd|dZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZdd ZddZddZddZddZdd	ZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZdd!Zdd"Zdd#Zdd%Zdd&Zdd'Zdd(Zdd)ZÐdd*ZĐdd+ZŐdd,ZƐdd-Zǐdd.ZȐdd/Zɐdd0Zʐdd2Zːdd3Z̐dd4Z͐dd5Zΐdd6Zϐdd7ZАdd8Zѐdd9ZҐdd:ZӐdd;ZԐdd<ZՐdd=Z֐dd>Zאdd?Zؐdd@ZِdddCZڐdKddEZe*ddG            Zd-S (  
GGUFWriterzlist[BufferedWriter] | NonefoutPath | Nonepathz+tempfile.SpooledTemporaryFile[bytes] | None	temp_filezlist[dict[str, TensorInfo]]tensorszlist[dict[str, GGUFValue]]kv_datar4   stateBbHhIifQqd?Fr   os.PathLike[str] | str | Nonearchstruse_temp_filebool	endianessr   split_max_tensorsr#   split_max_sizedry_runsmall_first_shardc	                    d | _         |rt          |          nd | _        || _        || _        t
          | _        || _        d | _        i g| _	        i g| _
        || _        || _        || _        || _        t                              d                    | j        t$          j        k    rdnd                     t(          j        | _        | j        r| j	                            i            |                                  d S )Nz+gguf: This GGUF file is for {0} Endian onlyBigLittle)r=   r   r?   rP   rT   r   data_alignmentrR   r@   rA   rB   rU   rV   rW   rX   loggerinfoformatr   BIGr4   r5   rC   appendadd_architecture)	selfr?   rP   rR   rT   rU   rV   rW   rX   s	            r,   __init__zGGUFWriter.__init__U   s     	"&0DJJJD		"4*tt!2,!2AHH^z~55EE8
 
 	 	 	 !(
! 	$L###r+   returntuple[int, int, int, int]c                $   d}d}d}d}d}d }| j         D ]}|                                D ]\  }}	|	j        }
|                    d          r||	f}&|                    d          rW||d         |d d         dz   k    rt                              d             dS g |
d d         |d         j        d         R }
t          |
          }d	|v r|||
d
         z  z  }||
d
         z  }|dz  }n||z  }||z  }ό|dk    r||z  nd}|| }||||fS )Nr   z.lora_az.lora_baz:can't measure LoRA size correctly, tensor order is unusual)r   r   r   r   r   z_exps.)rA   itemsr!   endswithr]   warningr   )rc   total_paramsshared_paramsexpert_params
expert_sumn_expert_tensorslast_lora_arA   namer^   r!   sizeexpert_counts                r,   get_total_parameter_countz$GGUFWriter.get_total_parameter_countp   s   
59| 	% 	%G%mmoo % %
d
==++ 	H#',K]]9-- H"*k!nSbS	C.O.O'cddd)zzz G%* Gk!n.B2.F G GE{{t##!deBi&78M%)+J$)$$!T)M$1%6 <La;O;O
&666UV "(=L ]M<GGr+   r   
list[Path]c                     t           j                  dk    rgS  fdt          t           j                            D             S )Nr   c                    g | ]K}                     t                              j        |d z   t	          j                                      LS )r   )	with_nameSHARD_NAME_FORMATr_   stemlenrA   ).0rI   r?   rc   s     r,   
<listcomp>z1GGUFWriter.format_shard_names.<locals>.<listcomp>   s[      A  A  Abc077	1q5#dlJ[J[\\]]  A  A  Ar+   )r~   rA   range)rc   r?   s   ``r,   format_shard_nameszGGUFWriter.format_shard_names   sn    t|!!6M A  A  A  A  Aglmpquq}m~m~gg  A  A  A  	Ar+   NNonec                <   | j         t          j        u r| j        ||| j        k    rd S | j         t          j        urt          d| j                    ||| _        | j        8|                                 }d |D             | _        t          j        | _         d S d S )N/Expected output file to be not yet opened, got c                .    g | ]}t          |d           S )wb)open)r   filenames     r,   r   z/GGUFWriter.open_output_file.<locals>.<listcomp>   s"    HHH(h--HHHr+   )rC   r4   r6   r=   r?   r5   
ValueError
print_plan)rc   r?   	filenamess      r,   open_output_filezGGUFWriter.open_output_file   s    :***ty/D$,Z^bfbkZkZkF:[000[tz[[\\\DI9 ))IHHiHHHDI$*DJJJ ! r+   c                j   t                               d           | j        J |                     | j                  }t	          |          t	          | j                  k    sJ t          || j                  D ]u\  }}t                               | dt	          |           dt                              t          d |
                                D                                             v| j        r<t                               d           |D ]}t          |           t                       |S )NzWriting the following files:z: n_tensors = z, total_size = c              3  $   K   | ]}|j         V  d S Nr$   r   tis     r,   	<genexpr>z(GGUFWriter.print_plan.<locals>.<genexpr>   sK        qW  qW  @Bqsqz  qW  qW  qW  qW  qW  qWr+   zDry run, not writing files)r]   r^   r?   r   r~   rA   zipr<   format_n_bytes_to_strsumvaluesrW   printexit)rc   r   rt   rA   s       r,   r   zGGUFWriter.print_plan   s|   2333y$$$++DI66	9~~T\!2!22222 DL99 	[ 	[MD'KK4  Z  Zs7||  Z  ZJLlLlmp  qW  qW  FM  FT  FT  FV  FV  qW  qW  qW  nW  nW  MX  MX  Z  Z  [  [  [  [< 	KK4555!  dFFFr+   c                t   t          | j                  dk    rd S t          d | j        D                       }| j        J t          | j                  }| j                            d t          t          | j                  |          D                        t          | j                  D ]\  }}t          |t          j
                  |t          j        j        <   t          |t          j
                  |t          j        j        <   t          |t          j                  |t          j        j        <   d S )Nr   c              3  4   K   | ]}t          |          V  d S r   )r~   )r   ts     r,   r   z/GGUFWriter.add_shard_kv_data.<locals>.<genexpr>   s(      99qCFF999999r+   c              3     K   | ]}i V  d S r   r*   )r   _s     r,   r   z/GGUFWriter.add_shard_kv_data.<locals>.<genexpr>   s"      OO1BOOOOOOr+   )r~   rA   r   r=   rB   extendr   	enumerater.   r   UINT16r   SplitLLM_KV_SPLIT_NOLLM_KV_SPLIT_COUNTINT32LLM_KV_SPLIT_TENSORS_COUNT)rc   total_tensorstotal_splitsrI   rB   s        r,   add_shard_kv_datazGGUFWriter.add_shard_kv_data   s   t|!!F99DL99999y$$$49~~OOc$,.?.?(N(NOOOOOO#DL11 	k 	kJAw2;A}?S2T2TGDJ./5>|]Ma5b5bGDJ12=F}VcVi=j=jGDJ9::	k 	kr+   c           	        t          | j                  dk    r0| j        dk    s| j        dk    rt                              d           |                     |           | j        t          j	        urt          d| j                   | j        J t          | j                  t          | j                  k    sJ t          | j                  dk    sJ |                                  t          | j        | j        | j                  D ]\  }}}|                    |                     dt"          d                     |                    |                     dt$                               |                    |                     d	t          |                               |                    |                     d	t          |                               |                                 t          j        | _        d S )
Nr   r   z-Model fails split requirements, not splittingz&Expected output file to be empty, got z<ITskip_pack_prefixrH   rK   )r~   rA   rU   rV   r]   rm   r   rC   r4   r6   r   r=   rB   r   r   write_packr   r   flushr7   )rc   r?   r=   rA   rB   s        r,   write_header_to_filezGGUFWriter.write_header_to_file   s   t|!!t'='B'BdFY]^F^F^NNJKKKd###:[...RdjRRSSSy$$$49~~T\!2!222224<  A%%%%   &)$)T\4<&P&P 	 	"D'7JJtzz$
tzLLMMMJJtzz#|44555JJtzz#s7||44555JJtzz#s7||44555JJLLLL '


r+   c           	        | j         t          j        urt          d| j                    | j        J t          | j        | j                  D ]\  }}t                      }|                                D ]U\  }}|| 	                    |t          j        d          z  }|| 	                    |j        |j        d|j                  z  }V|                    |           |                                  t          j        | _         d S )Nz0Expected output file to contain the header, got F	add_vtypeT)r   r2   )rC   r4   r7   r   r=   r   rB   	bytearrayrk   	_pack_valr   STRINGr/   r0   r2   r   r   r8   )rc   r=   rB   kv_byteskeyvals         r,   write_kv_data_to_filez GGUFWriter.write_kv_data_to_file   s    :[///\PTPZ\\]]]y$$$ DL99 	! 	!MD' {{H#MMOO g gSDNN30DPUNVVVDNN39ch$Y\YeNfffJJx    

 (


r+   c           
     R   | j         t          j        urt          d| j                    | j        J t          | j        | j                  D ]F\  }}t                      }d}|                                D ]\  }}|| 	                    |t          j        d          z  }t          |j                  }||                     d|          z  }t          |          D ],}||                     d|j        |dz
  |z
                     z  }-||                     d|j                  z  }||                     d|          z  }|t"                              |j        | j                  z  }|                    |           |                                 Ht          j        | _         d S )Nz-Expected output file to contain KV data, got r   Fr   rH   rK   r   )rC   r4   r8   r   r=   r   rA   r   rk   r   r   r   r~   r!   r   r   r"   r<   ggml_padr$   r\   r   r   r9   )	rc   r=   rA   ti_dataoffset_tensorrt   r   n_dimsjs	            r,   write_ti_data_to_filez GGUFWriter.write_ti_data_to_file   s   :[000YTZYYZZZy$$$ DL99 	 	MD'kkGM#MMOO U Ub4>>$0DPU>VVVRX4::c6222v I IAtzz#rx
Q/GHHHGG4::c284444::c=999!4!4RY@S!T!TTJJwJJLLLL (


r+   r   r   r   vtyper   r2   r1   c                    t          fd| j        D                       r(t                              dd|d|j                    t          |||          | j        d         <   d S )Nc              3      K   | ]}|v V  	d S r   r*   )r   rB   r   s     r,   r   z+GGUFWriter.add_key_value.<locals>.<genexpr>  s'      ::'sg~::::::r+   zDuplicated key name z , overwriting it with new value z	 of type )r/   r0   r2   r   )anyrB   r]   rm   rt   r.   )rc   r   r   r   r2   s    `   r,   add_key_valuezGGUFWriter.add_key_value  s    ::::T\::::: 	wNNu#uuY\uuinisuuvvv(sRRRQr+   c                H    |                      ||t          j                   d S r   )r   r   UINT8rc   r   r   s      r,   	add_uint8zGGUFWriter.add_uint8  s#    3sM$788888r+   c                H    |                      ||t          j                   d S r   )r   r   INT8r   s      r,   add_int8zGGUFWriter.add_int8  #    3]%788888r+   c                H    |                      ||t          j                   d S r   )r   r   r   r   s      r,   
add_uint16zGGUFWriter.add_uint16  #    3]%9:::::r+   c                H    |                      ||t          j                   d S r   )r   r   INT16r   s      r,   	add_int16zGGUFWriter.add_int16  #    3]%899999r+   c                H    |                      ||t          j                   d S r   )r   r   UINT32r   s      r,   
add_uint32zGGUFWriter.add_uint32"  r   r+   c                H    |                      ||t          j                   d S r   )r   r   r   r   s      r,   	add_int32zGGUFWriter.add_int32%  r   r+   floatc                H    |                      ||t          j                   d S r   )r   r   FLOAT32r   s      r,   add_float32zGGUFWriter.add_float32(  #    3]%:;;;;;r+   c                H    |                      ||t          j                   d S r   )r   r   UINT64r   s      r,   
add_uint64zGGUFWriter.add_uint64+  r   r+   c                H    |                      ||t          j                   d S r   )r   r   INT64r   s      r,   	add_int64zGGUFWriter.add_int64.  r   r+   c                H    |                      ||t          j                   d S r   )r   r   FLOAT64r   s      r,   add_float64zGGUFWriter.add_float641  r   r+   c                H    |                      ||t          j                   d S r   )r   r   BOOLr   s      r,   add_boolzGGUFWriter.add_bool4  r   r+   c                P    |sd S |                      ||t          j                   d S r   )r   r   r   r   s      r,   
add_stringzGGUFWriter.add_string7  s0     	F3]%9:::::r+   Sequence[Any]c                r    t          |          dk    rd S |                     ||t          j                   d S Nr   )r~   r   r   ARRAYr   s      r,   	add_arrayzGGUFWriter.add_array<  s7    s88q==F3]%899999r+   xnc                    | |z   dz
  |z  |z  S )Nr   r*   )r   r   s     r,   r   zGGUFWriter.ggml_padA  s    Qq A%%r+   rt   tensor_shaper    tensor_dtypenp.dtypetensor_nbytes	raw_dtypeGGMLQuantizationType | Nonec                b   | j         t          j        urt          d| j                    t	          fd| j        D                       rt          d          ||t          j        k    rt          j	        }n|t          j
        k    rt          j        }n|t          j        k    rt          j        }n|t          j        k    rt          j        }n|t          j        k    rt          j        }nk|t          j        k    rt          j        }nN|t          j        k    rt          j        }n1t          d          |}|t          j        k    rt/          ||          }t1          | j        d                   dk    r| j        dk    r#t1          | j        d                   | j        k    sM| j        dk    r\t7          d | j        d                                         D                       |z   | j        k    r| j                            i            t=          |||          | j        d         <   d S )	Nr   c              3      K   | ]}|v V  	d S r   r*   )r   rA   rt   s     r,   r   z-GGUFWriter.add_tensor_info.<locals>.<genexpr>L  s'      ;;7tw;;;;;;r+   zDuplicated tensor name zCOnly F16, F32, F64, I8, I16, I32, I64 tensors are supported for nowrh   r   c              3  $   K   | ]}|j         V  d S r   r   r   s     r,   r   z-GGUFWriter.add_tensor_info.<locals>.<genexpr>l  s$      FFb	FFFFFFr+   )r!   r"   r$   )rC   r4   r5   r   r   rA   npfloat16r   F16float32F32float64F64int8I8int16I16int32I32int64I64uint8r   r~   rU   rV   r   r   ra   r   )rc   rt   r   r   r   r   r"   s    `     r,   add_tensor_infozGGUFWriter.add_tensor_infoE  s    :[000[tz[[\\\;;;;dl;;;;; 	A?t??@@@rz)),0++,0++,0((,/)),0)),0)),0 !fgggErx'':<SS t|B  1$$&!++R())T-CCC#q((FFDL,<,C,C,E,EFFFFFVY]Ylll##B'''!+,eTa!b!b!bRr+   r%   np.ndarray[Any, Any]	raw_shapeSequence[int] | Nonec                   | j         t          j        k    r|                    d           | j        r9| j        2t          j        dd          }|                    d           || _        ||n|j	        }| 
                    |||j        |j        |           | j        || j        d         |         _        d S |                    | j                   |                     | j        |j                   d S )	NTinplacezw+bi   )modemax_sizer   )r   rh   )rT   r   r`   byteswaprR   r@   tempfileSpooledTemporaryFileseekr!   r  r"   r$   rA   r%   tofilewrite_padding)rc   rt   r%   r  r   fpr!   s          r,   
add_tensorzGGUFWriter.add_tensorr  s     >Z^++OODO))) 	 $."8.EDUVVVBGGAJJJDN,5,Ayyv|T5&,QZ[[[>!,2DLT")Fdn%%%4>6=99999r+   r  	IO[bytes]align
int | Nonec                    t                               |||n| j                  |z
  }|dk    r(|                    t	          dg|z                       d S d S r   )r<   r   r\   r   bytes)rc   r  r   r"  pads        r,   r  zGGUFWriter.write_padding  s_    !!!e.?UUTEXYY\]]!88HHUA39%%&&&&& 8r+   c                2   | j         t          j        ur*| j         t          j        urt	          d| j                    | j        J | j        t          j        k    r|	                    d           d}t          | j                  D ]\  }}t          |          dk    r|} n| j        |         }d t          | j        |                                         t          d                    D             d         }| j        |                             |          }|j        |j        k    sJ |                     ||                                           |                    |           |                     ||j                   t          j        | _         d S )Nz<Expected output file to contain tensor info or weights, got Tr  rh   r   c                    g | ]\  }}|S r*   r*   )r   rt   r   s      r,   r   z0GGUFWriter.write_tensor_data.<locals>.<listcomp>  s    ]]]gdAT]]]r+   r   )rC   r4   r9   r:   r   r=   rT   r   r`   r  r   rA   r~   r   keysr   popr$   r  tellr  )rc   r%   file_idrI   rA   r=   first_tensor_namer   s           r,   write_tensor_datazGGUFWriter.write_tensor_data  s   :[000TZ{GZ5Z5Zh\`\fhhiiiy$$$>Z^++OODO)))#DL11 	 	JAw7||a   y! ^]T\'5J5O5O5Q5QSXYZS[S[1\1\]]]^_`\'"&&'899yFM))))4---d4/// (


r+   )progressr/  c          	     `   |                                   | j        J | j        D ]*}|                     ||                                           +| j        d }d }|rpddlm} t          d | j        D                       }t          | j                  dk    r% |dt          | j                   dd dd	          } |d
|dd	          }t          t          | j        | j                            D ]0\  }\  }}|z|                    d|dz    dt          | j                   d           t          d |                                D                       }	|                    |	dk    r|	nd            |                                D ]}
|
j        J |
j        j        |
j        k    sJ |
j                            |           ||                    |
j                   ||                    |
j                   |                     ||
j                   d |
_        2nu| j                            d           t'          j        | j        | j        | j        sdnd                    |                                  | j                                         t0          j        | _        d S )Nr   )tqdmc              3  R   K   | ]"}|                                 D ]}|j        V  #d S r   )r   r$   )r   r   r   s      r,   r   z3GGUFWriter.write_tensors_to_file.<locals>.<genexpr>  s9      !W!WAHHJJ!W!Wb")!W!W!W!W!W!W!Wr+   r   z	Shard (0/)byteT)desctotalunit
unit_scaleWritingzShard (/c              3  $   K   | ]}|j         V  d S r   r   r   s     r,   r   z3GGUFWriter.write_tensors_to_file.<locals>.<genexpr>  s$      EEb	EEEEEEr+   )r6  )r   r=   r  r+  r@   r1  r   rA   r~   r   r   set_descriptionr   resetr%   r$   r  updater  shutilcopyfileobjrX   r   closer4   r:   rC   )rc   r/  r=   	shard_barbarr1  total_bytesrI   rA   r6  r   s              r,   write_tensors_to_filez GGUFWriter.write_tensors_to_file  s   ""$$$y$$$I 	2 	2DtTYY[[1111>!IC \%%%%%%!!W!WT\!W!W!WWWty>>A%% $*Gc$)nn*G*G*GtZ`mq r r rId	6VZ[[[&/DIt|0L0L&M&M % %"?D'(--.QA.Q.QDI.Q.Q.QRRREEGNN4D4DEEEEEEOOEAII554OIII "..** 	% 	%B90009+ry8888I$$T*** ,!((333

29---&&tRY777 $BII	%%$ N"""t~ty$BX9_^_/`aaaJJLLLN  """ (


r+   c                T    | j         J | j         D ]}|                                 d S r   )r=   r   rc   r=   s     r,   r   zGGUFWriter.flush  s:    y$$$I 	 	DJJLLLL	 	r+   c                b    | j         '| j         D ]}|                                 d | _         d S d S r   )r=   rA  rG  s     r,   rA  zGGUFWriter.close  s=    9 	  

DIII ! r+   	type_namec                P    |                      t          j        j        |           d S r   )r   r   GeneralTYPE)rc   rI  s     r,   add_typezGGUFWriter.add_type  s!    )955555r+   c                Z    |                      t          j        j        | j                   d S r   )r   r   rK  ARCHITECTURErP   )rc   s    r,   rb   zGGUFWriter.add_architecture  s#    149=====r+   quantization_versionc                P    |                      t          j        j        |           d S r   )r   r   rK  QUANTIZATION_VERSION)rc   rP  s     r,   add_quantization_versionz#GGUFWriter.add_quantization_version  s"    9;OPPPPPr+   	alignmentc                ^    || _         |                     t          j        j        |           d S r   )r\   r   r   rK  	ALIGNMENT)rc   rT  s     r,   add_custom_alignmentzGGUFWriter.add_custom_alignment  s)    '.	:::::r+   ftypec                P    |                      t          j        j        |           d S r   )r   r   rK  	FILE_TYPE)rc   rX  s     r,   add_file_typezGGUFWriter.add_file_type  s!    .66666r+   c                P    |                      t          j        j        |           d S r   )r   r   rK  NAME)rc   rt   s     r,   add_namezGGUFWriter.add_name  !    )400000r+   authorc                P    |                      t          j        j        |           d S r   )r   r   rK  AUTHOR)rc   r`  s     r,   
add_authorzGGUFWriter.add_author  s!    +V44444r+   versionc                P    |                      t          j        j        |           d S r   )r   r   rK  VERSION)rc   rd  s     r,   add_versionzGGUFWriter.add_version  !    ,g66666r+   organizationc                P    |                      t          j        j        |           d S r   )r   r   rK  ORGANIZATION)rc   ri  s     r,   add_organizationzGGUFWriter.add_organization  s!    1<@@@@@r+   finetunec                P    |                      t          j        j        |           d S r   )r   r   rK  FINETUNE)rc   rm  s     r,   add_finetunezGGUFWriter.add_finetune  !    -x88888r+   basenamec                P    |                      t          j        j        |           d S r   )r   r   rK  BASENAME)rc   rr  s     r,   add_basenamezGGUFWriter.add_basename  rq  r+   descriptionc                P    |                      t          j        j        |           d S r   )r   r   rK  DESCRIPTION)rc   rv  s     r,   add_descriptionzGGUFWriter.add_description  s!    0+>>>>>r+   	quantizedc                P    |                      t          j        j        |           d S r   )r   r   rK  QUANTIZED_BY)rc   rz  s     r,   add_quantized_byzGGUFWriter.add_quantized_by  s!    19=====r+   
size_labelc                P    |                      t          j        j        |           d S r   )r   r   rK  
SIZE_LABEL)rc   r~  s     r,   add_size_labelzGGUFWriter.add_size_label
  s!    /<<<<<r+   licensec                P    |                      t          j        j        |           d S r   )r   r   rK  LICENSErc   r  s     r,   add_licensezGGUFWriter.add_license  rh  r+   c                P    |                      t          j        j        |           d S r   )r   r   rK  LICENSE_NAMEr  s     r,   add_license_namezGGUFWriter.add_license_name  !    17;;;;;r+   c                P    |                      t          j        j        |           d S r   )r   r   rK  LICENSE_LINKr  s     r,   add_license_linkzGGUFWriter.add_license_link  r  r+   urlc                P    |                      t          j        j        |           d S r   )r   r   rK  URLrc   r  s     r,   add_urlzGGUFWriter.add_url  !    (#.....r+   doic                P    |                      t          j        j        |           d S r   )r   r   rK  DOIrc   r  s     r,   add_doizGGUFWriter.add_doi  r  r+   uuidc                P    |                      t          j        j        |           d S r   )r   r   rK  UUIDrc   r  s     r,   add_uuidzGGUFWriter.add_uuid  r_  r+   repo_urlc                P    |                      t          j        j        |           d S r   )r   r   rK  REPO_URLrc   r  s     r,   add_repo_urlzGGUFWriter.add_repo_url  rq  r+   c                P    |                      t          j        j        |           d S r   )r   r   rK  
SOURCE_URLr  s     r,   add_source_urlzGGUFWriter.add_source_url"  !    /55555r+   c                P    |                      t          j        j        |           d S r   )r   r   rK  
SOURCE_DOIr  s     r,   add_source_doizGGUFWriter.add_source_doi%  r  r+   c                P    |                      t          j        j        |           d S r   )r   r   rK  SOURCE_UUIDr  s     r,   add_source_uuidzGGUFWriter.add_source_uuid(  s!    0$77777r+   c                P    |                      t          j        j        |           d S r   )r   r   rK  SOURCE_REPO_URLr  s     r,   add_source_repo_urlzGGUFWriter.add_source_repo_url+  s!    4h?????r+   source_countc                P    |                      t          j        j        |           d S r   )r   r   rK  BASE_MODEL_COUNTrc   r  s     r,   add_base_model_countzGGUFWriter.add_base_model_count.  s!    5|DDDDDr+   	source_idc                x    |                      t          j        j                            |          |           d S N)id)r   r   rK  BASE_MODEL_NAMEr_   rc   r  rt   s      r,   add_base_model_namezGGUFWriter.add_base_model_name1  2    4;;y;II4PPPPPr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_AUTHORr_   rc   r  r`  s      r,   add_base_model_authorz GGUFWriter.add_base_model_author4  s2    6===KKVTTTTTr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_VERSIONr_   rc   r  rd  s      r,   add_base_model_versionz!GGUFWriter.add_base_model_version7  s2    7>>)>LLgVVVVVr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_ORGANIZATIONr_   rc   r  ri  s      r,   add_base_model_organizationz&GGUFWriter.add_base_model_organization:  s3    <CCyCQQS_`````r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_DESCRIPTIONr_   rc   r  rv  s      r,   add_base_model_descriptionz%GGUFWriter.add_base_model_description=  s3    ;BBiBPPR]^^^^^r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_URLr_   rc   r  r  s      r,   add_base_model_urlzGGUFWriter.add_base_model_url@  2    3::i:HH#NNNNNr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_DOIr_   rc   r  r  s      r,   add_base_model_doizGGUFWriter.add_base_model_doiC  r  r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_UUIDr_   rc   r  r  s      r,   add_base_model_uuidzGGUFWriter.add_base_model_uuidF  r  r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  BASE_MODEL_REPO_URLr_   rc   r  r  s      r,   add_base_model_repo_urlz"GGUFWriter.add_base_model_repo_urlI  s2    8??9?MMxXXXXXr+   c                P    |                      t          j        j        |           d S r   )r   r   rK  DATASET_COUNTr  s     r,   add_dataset_countzGGUFWriter.add_dataset_countL  s!    2LAAAAAr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_NAMEr_   r  s      r,   add_dataset_namezGGUFWriter.add_dataset_nameO  2    188I8FFMMMMMr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_AUTHORr_   r  s      r,   add_dataset_authorzGGUFWriter.add_dataset_authorR  s2    3::i:HH&QQQQQr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_VERSIONr_   r  s      r,   add_dataset_versionzGGUFWriter.add_dataset_versionU  s2    4;;y;II7SSSSSr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_ORGANIZATIONr_   r  s      r,   add_dataset_organizationz#GGUFWriter.add_dataset_organizationX  s3    9@@I@NNP\]]]]]r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_DESCRIPTIONr_   r  s      r,   add_dataset_descriptionz"GGUFWriter.add_dataset_description[  s2    8??9?MM{[[[[[r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_URLr_   r  s      r,   add_dataset_urlzGGUFWriter.add_dataset_url^  2    07797EEsKKKKKr+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_DOIr_   r  s      r,   add_dataset_doizGGUFWriter.add_dataset_doia  r  r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_UUIDr_   r  s      r,   add_dataset_uuidzGGUFWriter.add_dataset_uuidd  r  r+   c                x    |                      t          j        j                            |          |           d S r  )r   r   rK  DATASET_REPO_URLr_   r  s      r,   add_dataset_repo_urlzGGUFWriter.add_dataset_repo_urlg  s2    5<<	<JJHUUUUUr+   tagsSequence[str]c                P    |                      t          j        j        |           d S r   )r   r   rK  TAGS)rc   r  s     r,   add_tagszGGUFWriter.add_tagsj  s!    t|($/////r+   	languagesc                P    |                      t          j        j        |           d S r   )r   r   rK  	LANGUAGES)rc   r  s     r,   add_languageszGGUFWriter.add_languagesm  s!    t|-y99999r+   layoutc                    |                      t          j        j                            | j                  |           d S N)rP   )r   r   LLMTENSOR_DATA_LAYOUTr_   rP   )rc   r  s     r,   add_tensor_data_layoutz!GGUFWriter.add_tensor_data_layoutp  s4    3::	:JJFSSSSSr+   ru   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  
VOCAB_SIZEr_   rP   rc   ru   s     r,   add_vocab_sizezGGUFWriter.add_vocab_sizes  s4    +22	2BBDIIIIIr+   lengthc                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  CONTEXT_LENGTHr_   rP   rc   r  s     r,   add_context_lengthzGGUFWriter.add_context_lengthv  s4    /66DI6FFOOOOOr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EMBEDDING_LENGTHr_   rP   r  s     r,   add_embedding_lengthzGGUFWriter.add_embedding_lengthy  s4    188di8HH&QQQQQr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  FEATURES_LENGTHr_   rP   r  s     r,   add_features_lengthzGGUFWriter.add_features_length|  s4    077TY7GGPPPPPr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   PosNetr  r_   rP   r  s     r,   add_posnet_embedding_lengthz&GGUFWriter.add_posnet_embedding_length  s4    4;;;KKVTTTTTr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  BLOCK_COUNTr_   rP   r  s     r,   add_posnet_block_countz!GGUFWriter.add_posnet_block_count  s4    /66DI6FFOOOOOr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   ConvNextr  r_   rP   r  s     r,   add_convnext_embedding_lengthz(GGUFWriter.add_convnext_embedding_length  s4    6==49=MMvVVVVVr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r#  r   r_   rP   r  s     r,   add_convnext_block_countz#GGUFWriter.add_convnext_block_count  s4    188di8HH&QQQQQr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  r   r_   rP   r  s     r,   add_block_countzGGUFWriter.add_block_count  s4    ,333CCVLLLLLr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  LEADING_DENSE_BLOCK_COUNTr_   rP   r  s     r,   add_leading_dense_block_countz(GGUFWriter.add_leading_dense_block_count  s5    :AAtyAQQSYZZZZZr+   int | Sequence[int]c                ,   t          |t                    r@|                     t          j        j                            | j                  |           d S |                     t          j        j                            | j                  |           d S r	  )	
isinstancer#   r   r   r
  FEED_FORWARD_LENGTHr_   rP   r   r  s     r,   add_feed_forward_lengthz"GGUFWriter.add_feed_forward_length  s{    fc"" 	XOODH8??TY?OOQWXXXXXNN487>>DI>NNPVWWWWWr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EXPERT_FEED_FORWARD_LENGTHr_   rP   r  s     r,   add_expert_feed_forward_lengthz)GGUFWriter.add_expert_feed_forward_length  s5    ;BB	BRRTZ[[[[[r+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  !EXPERT_SHARED_FEED_FORWARD_LENGTHr_   rP   r  s     r,   %add_expert_shared_feed_forward_lengthz0GGUFWriter.add_expert_shared_feed_forward_length  s5    BIItyIYY[abbbbbr+   usec                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  USE_PARALLEL_RESIDUALr_   rP   )rc   r7  s     r,   add_parallel_residualz GGUFWriter.add_parallel_residual  s4    dh4;;;KKSQQQQQr+   r  c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  DECODER_START_TOKEN_IDr_   rP   rc   r  s     r,   add_decoder_start_token_idz%GGUFWriter.add_decoder_start_token_id  s5    7>>DI>NNPRSSSSSr+   countc                ,   t          |t                    r@|                     t          j        j                            | j                  |           d S |                     t          j        j                            | j                  |           d S r	  )	r.  r#   r   r   	Attention
HEAD_COUNTr_   rP   r   rc   r?  s     r,   add_head_countzGGUFWriter.add_head_count  sy    eS!! 	TOODN5<<$)<LLeTTTTTNN4>4;;;KKUSSSSSr+   c                ,   t          |t                    r@|                     t          j        j                            | j                  |           d S |                     t          j        j                            | j                  |           d S r	  )	r.  r#   r   r   rA  HEAD_COUNT_KVr_   rP   r   rC  s     r,   add_head_count_kvzGGUFWriter.add_head_count_kv  s{    eS!! 	WOODN8??TY?OOQVWWWWWNN4>7>>DI>NNPUVVVVVr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  
KEY_LENGTHr_   rP   r  s     r,   add_key_lengthzGGUFWriter.add_key_length  s4    188di8HH&QQQQQr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  VALUE_LENGTHr_   rP   r  s     r,   add_value_lengthzGGUFWriter.add_value_length  4    3::	:JJFSSSSSr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  KEY_LENGTH_MLAr_   rP   r  s     r,   add_key_length_mlazGGUFWriter.add_key_length_mla  4    5<<$)<LLfUUUUUr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  VALUE_LENGTH_MLAr_   rP   r  s     r,   add_value_length_mlazGGUFWriter.add_value_length_mla  s5    7>>DI>NNPVWWWWWr+   biasc                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  MAX_ALIBI_BIASr_   rP   )rc   rV  s     r,   add_max_alibi_biaszGGUFWriter.add_max_alibi_bias  s6    6==49=MMtTTTTTr+   r/   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  	CLAMP_KQVr_   rP   rc   r/   s     r,   add_clamp_kqvzGGUFWriter.add_clamp_kqv  s6    188di8HH%PPPPPr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  LOGIT_SCALEr_   rP   r\  s     r,   add_logit_scalezGGUFWriter.add_logit_scale  s6    -44$)4DDeLLLLLr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  ATTN_LOGIT_SOFTCAPPINGr_   rP   r\  s     r,   add_attn_logit_softcappingz%GGUFWriter.add_attn_logit_softcapping  s7    8??TY?OOQVWWWWWr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  FINAL_LOGIT_SOFTCAPPINGr_   rP   r\  s     r,   add_final_logit_softcappingz&GGUFWriter.add_final_logit_softcapping  s7    9@@di@PPRWXXXXXr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EXPERT_COUNTr_   rP   rC  s     r,   add_expert_countzGGUFWriter.add_expert_count  s4    -44$)4DDeLLLLLr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EXPERT_USED_COUNTr_   rP   rC  s     r,   add_expert_used_countz GGUFWriter.add_expert_used_count  4    299ty9II5QQQQQr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EXPERT_SHARED_COUNTr_   rP   rC  s     r,   add_expert_shared_countz"GGUFWriter.add_expert_shared_count  s4    4;;;KKUSSSSSr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EXPERT_WEIGHTS_SCALEr_   rP   r\  s     r,   add_expert_weights_scalez#GGUFWriter.add_expert_weights_scale  s6    6==49=MMuUUUUUr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EXPERT_WEIGHTS_NORMr_   rP   r\  s     r,   add_expert_weights_normz"GGUFWriter.add_expert_weights_norm  s4    dh299ty9II5QQQQQr+   r   c                    |                      t          j        j                            | j                  |j                   d S r	  )r   r   r
  EXPERT_GATING_FUNCr_   rP   r/   r\  s     r,   add_expert_gating_funcz!GGUFWriter.add_expert_gating_func  s6    3::	:JJEKXXXXXr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  MOE_EVERY_N_LAYERSr_   rP   r\  s     r,   add_moe_every_n_layersz!GGUFWriter.add_moe_every_n_layers  s4    3::	:JJERRRRRr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  	SWIN_NORMr_   rP   r\  s     r,   add_swin_normzGGUFWriter.add_swin_norm  s4    dh(//TY/??GGGGGr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  RESCALE_EVERY_N_LAYERSr_   rP   rC  s     r,   add_rescale_every_n_layersz%GGUFWriter.add_rescale_every_n_layers  s5    7>>DI>NNPUVVVVVr+   dimc                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  TIME_MIX_EXTRA_DIMr_   rP   rc   r  s     r,   add_time_mix_extra_dimz!GGUFWriter.add_time_mix_extra_dim  s4    3::	:JJCPPPPPr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  TIME_DECAY_EXTRA_DIMr_   rP   r  s     r,   add_time_decay_extra_dimz#GGUFWriter.add_time_decay_extra_dim  s4    5<<$)<LLcRRRRRr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  RESIDUAL_SCALEr_   rP   r\  s     r,   add_residual_scalezGGUFWriter.add_residual_scale  s6    077TY7GGOOOOOr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  EMBEDDING_SCALEr_   rP   r\  s     r,   add_embedding_scalezGGUFWriter.add_embedding_scale  s6    188di8HH%PPPPPr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   WKV	HEAD_SIZEr_   rP   r  s     r,   add_wkv_head_sizezGGUFWriter.add_wkv_head_size  s4    *11ty1AA4HHHHHr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  TOKEN_SHIFT_COUNTr_   rP   rC  s     r,   add_token_shift_countz GGUFWriter.add_token_shift_count  rm  r+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r
  INTERLEAVE_MOE_LAYER_STEPr_   rP   r\  s     r,   add_interleave_moe_layer_stepz(GGUFWriter.add_interleave_moe_layer_step  s5    :AAtyAQQSXYYYYYr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  LAYERNORM_EPSr_   rP   r\  s     r,   add_layer_norm_epszGGUFWriter.add_layer_norm_eps  6    5<<$)<LLeTTTTTr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  LAYERNORM_RMS_EPSr_   rP   r\  s     r,   add_layer_norm_rms_epsz!GGUFWriter.add_layer_norm_rms_eps  s7    9@@di@PPRWXXXXXr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  GROUPNORM_EPSr_   rP   r\  s     r,   add_group_norm_epszGGUFWriter.add_group_norm_eps   r  r+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  GROUPNORM_GROUPSr_   rP   r\  s     r,   add_group_norm_groupsz GGUFWriter.add_group_norm_groups  s5    7>>DI>NNPUVVVVVr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  CAUSALr_   rP   r\  s     r,   add_causal_attentionzGGUFWriter.add_causal_attention  s4    dn+22	2BBEJJJJJr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  Q_LORA_RANKr_   rP   r  s     r,   add_q_lora_rankzGGUFWriter.add_q_lora_rank	  s4    299ty9II6RRRRRr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  KV_LORA_RANKr_   rP   r  s     r,   add_kv_lora_rankzGGUFWriter.add_kv_lora_rank  rN  r+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  DECAY_LORA_RANKr_   rP   r  s     r,   add_decay_lora_rankzGGUFWriter.add_decay_lora_rank  s4    6==49=MMvVVVVVr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  ICLR_LORA_RANKr_   rP   r  s     r,   add_iclr_lora_rankzGGUFWriter.add_iclr_lora_rank  rR  r+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  VALUE_RESIDUAL_MIX_LORA_RANKr_   rP   r  s     r,    add_value_residual_mix_lora_rankz+GGUFWriter.add_value_residual_mix_lora_rank  s7    CJJPTPYJZZ\bcccccr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  GATE_LORA_RANKr_   rP   r  s     r,   add_gate_lora_rankzGGUFWriter.add_gate_lora_rank  rR  r+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  REL_BUCKETS_COUNTr_   rP   r\  s     r,   add_relative_attn_buckets_countz*GGUFWriter.add_relative_attn_buckets_count  s5    8??TY?OOQVWWWWWr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  SLIDING_WINDOWr_   rP   r\  s     r,   add_sliding_windowzGGUFWriter.add_sliding_window  s4    5<<$)<LLeTTTTTr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   rA  SCALEr_   rP   r\  s     r,   add_attention_scalezGGUFWriter.add_attention_scale!  s6    -44$)4DDeLLLLLr+   r   c                    |                      t          j        j                            | j                  |j                   d S r	  )r   r   r
  POOLING_TYPEr_   rP   r/   r\  s     r,   add_pooling_typezGGUFWriter.add_pooling_type$  s6    -44$)4DDekRRRRRr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   RopeDIMENSION_COUNTr_   rP   rC  s     r,   add_rope_dimension_countz#GGUFWriter.add_rope_dimension_count'  s4    	188di8HH%PPPPPr+   dimsc                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  DIMENSION_SECTIONSr_   rP   )rc   r  s     r,   add_rope_dimension_sectionsz&GGUFWriter.add_rope_dimension_sections*  s4    ty3::	:JJDQQQQQr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  	FREQ_BASEr_   rP   r\  s     r,   add_rope_freq_basezGGUFWriter.add_rope_freq_base-  s6    ,333CCUKKKKKr+   r   c                    |                      t          j        j                            | j                  |j                   d S r	  )r   r   r  SCALING_TYPEr_   rP   r/   r\  s     r,   add_rope_scaling_typez GGUFWriter.add_rope_scaling_type0  s6    	.55495EEu{SSSSSr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  SCALING_FACTORr_   rP   r\  s     r,   add_rope_scaling_factorz"GGUFWriter.add_rope_scaling_factor3  s6    188di8HH%PPPPPr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  SCALING_ATTN_FACTORr_   rP   r\  s     r,   add_rope_scaling_attn_factorsz(GGUFWriter.add_rope_scaling_attn_factors6  s6    6==49=MMuUUUUUr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  SCALING_ORIG_CTX_LENr_   rP   r\  s     r,   add_rope_scaling_orig_ctx_lenz(GGUFWriter.add_rope_scaling_orig_ctx_len9  s4    	6==49=MMuUUUUUr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  SCALING_FINETUNEDr_   rP   r\  s     r,   add_rope_scaling_finetunedz%GGUFWriter.add_rope_scaling_finetuned<  s4    di188di8HH%PPPPPr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  SCALING_YARN_LOG_MULr_   rP   r\  s     r,   add_rope_scaling_yarn_log_mulz(GGUFWriter.add_rope_scaling_yarn_log_mul?  s7    7>>DI>NNPUVVVVVr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   SSMCONV_KERNELr_   rP   r\  s     r,   add_ssm_conv_kernelzGGUFWriter.add_ssm_conv_kernelB  s4    ,333CCUKKKKKr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  
INNER_SIZEr_   rP   r\  s     r,   add_ssm_inner_sizezGGUFWriter.add_ssm_inner_sizeE  4    +22	2BBEJJJJJr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  
STATE_SIZEr_   rP   r\  s     r,   add_ssm_state_sizezGGUFWriter.add_ssm_state_sizeH  r  r+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  TIME_STEP_RANKr_   rP   r\  s     r,   add_ssm_time_step_rankz!GGUFWriter.add_ssm_time_step_rankK  s4    /66DI6FFNNNNNr+   c                    |                      t          j        j                            | j                  |           d S r	  )r   r   r  
DT_B_C_RMSr_   rP   r\  s     r,   add_ssm_dt_b_c_rmszGGUFWriter.add_ssm_dt_b_c_rmsN  s4    dh)00di0@@%HHHHHr+   modelc                P    |                      t          j        j        |           d S r   )r   r   	TokenizerMODEL)rc   r  s     r,   add_tokenizer_modelzGGUFWriter.add_tokenizer_modelQ  s!    ,e44444r+   prec                P    |                      t          j        j        |           d S r   )r   r   r  PRE)rc   r  s     r,   add_tokenizer_prezGGUFWriter.add_tokenizer_preT  s!    *C00000r+   tokens5Sequence[str] | Sequence[bytes] | Sequence[bytearray]c                P    |                      t          j        j        |           d S r   )r   r   r  LIST)rc   r   s     r,   add_token_listzGGUFWriter.add_token_listW  s!    t~*F33333r+   mergesc                P    |                      t          j        j        |           d S r   )r   r   r  MERGES)rc   r  s     r,   add_token_mergeszGGUFWriter.add_token_mergesZ  !    t~,f55555r+   types#Sequence[TokenType] | Sequence[int]c                P    |                      t          j        j        |           d S r   )r   r   r  
TOKEN_TYPE)rc   r
  s     r,   add_token_typeszGGUFWriter.add_token_types]  s!    t~0%88888r+   c                P    |                      t          j        j        |           d S r   )r   r   r  TOKEN_TYPE_COUNTr\  s     r,   add_token_type_countzGGUFWriter.add_token_type_count`  !    7?????r+   scoresSequence[float]c                P    |                      t          j        j        |           d S r   )r   r   r  SCORES)rc   r  s     r,   add_token_scoreszGGUFWriter.add_token_scoresc  r	  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  BOS_IDr=  s     r,   add_bos_token_idzGGUFWriter.add_bos_token_idf  !    -r22222r+   c                P    |                      t          j        j        |           d S r   )r   r   r  EOS_IDr=  s     r,   add_eos_token_idzGGUFWriter.add_eos_token_idi  r  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  UNK_IDr=  s     r,   add_unk_token_idzGGUFWriter.add_unk_token_idl  r  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  SEP_IDr=  s     r,   add_sep_token_idzGGUFWriter.add_sep_token_ido  r  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  PAD_IDr=  s     r,   add_pad_token_idzGGUFWriter.add_pad_token_idr  r  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  MASK_IDr=  s     r,   add_mask_token_idzGGUFWriter.add_mask_token_idu  s!    .33333r+   c                P    |                      t          j        j        |           d S r   )r   r   r  ADD_BOSr\  s     r,   add_add_bos_tokenzGGUFWriter.add_add_bos_tokenx  !    dn,e44444r+   c                P    |                      t          j        j        |           d S r   )r   r   r  ADD_EOSr\  s     r,   add_add_eos_tokenzGGUFWriter.add_add_eos_token{  r.  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  
ADD_PREFIXr\  s     r,   add_add_space_prefixzGGUFWriter.add_add_space_prefix~  s!    dn/77777r+   c                P    |                      t          j        j        |           d S r   )r   r   r  REMOVE_EXTRA_WSr\  s     r,   add_remove_extra_whitespacesz'GGUFWriter.add_remove_extra_whitespaces  s!    dn4e<<<<<r+   charsmapr%  c                P    |                      t          j        j        |           d S r   )r   r   r  PRECOMPILED_CHARSMAP)rc   r8  s     r,   add_precompiled_charsmapz#GGUFWriter.add_precompiled_charsmap  s!    t~:HEEEEEr+   !str | Sequence[Mapping[str, str]]c                b   t          |t                    sd }t                      }|D ]}|                    dd          }|                    d          }d                    d |D                       }|rY|W|dk    r|}Y|                    |           |                     t          j        j	        
                    |          |           |r2|                     t          j        j        t          |                     |d S |}|                     t          j        j        |           d S )Nrt    templatec              3  @   K   | ]}|t           t          z   v r|nd V  dS )r   Nr   )r   cs     r,   r   z/GGUFWriter.add_chat_template.<locals>.<genexpr>  s5      XXaQ-&*@%@%@cXXXXXXr+   default)rt   )r.  rQ   setgetjoinaddr   r   r  CHAT_TEMPLATE_Nr_   r   CHAT_TEMPLATESlistCHAT_TEMPLATE)rc   r/   template_defaulttemplate_nameschoicert   r?  s          r,   add_chat_templatezGGUFWriter.add_chat_template  s7   %%% 	%# UUN d dzz&"--!::j11 wwXXSWXXXYY dH0y((+3((&**4000(F(M(MSW(M(X(XZbccc Tt~<d>>R>RSSS'$E4e<<<<<r+   c                P    |                      t          j        j        |           d S r   )r   r   r  EOT_IDr=  s     r,   add_eot_token_idzGGUFWriter.add_eot_token_id  r  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  EOM_IDr=  s     r,   add_eom_token_idzGGUFWriter.add_eom_token_id  r  r+   labelsc                    |                      t          j        j                            | j                  |           d S r	  )r   r   
ClassifierOUTPUT_LABELSr_   rP   )rc   rU  s     r,   add_classifier_output_labelsz'GGUFWriter.add_classifier_output_labels  s4    t4;;;KKVTTTTTr+   c                P    |                      t          j        j        |           d S r   )r   r   ClipHAS_VISION_ENCODERr\  s     r,   add_clip_has_vision_encoderz&GGUFWriter.add_clip_has_vision_encoder  s!    di2E:::::r+   c                P    |                      t          j        j        |           d S r   )r   r   r[  HAS_AUDIO_ENCODERr\  s     r,   add_clip_has_audio_encoderz%GGUFWriter.add_clip_has_audio_encoder  s!    di1599999r+   c                P    |                      t          j        j        |           d S r   )r   r   r[  PROJECTOR_TYPEr\  s     r,   add_clip_projector_typez"GGUFWriter.add_clip_projector_type  s!    	0%88888r+   c                P    |                      t          j        j        |           d S r   )r   r   
ClipVisionPROJECTION_DIMr\  s     r,   add_vision_projection_dimz$GGUFWriter.add_vision_projection_dim  s!    6>>>>>r+   c                P    |                      t          j        j        |           d S r   )r   r   re  
PATCH_SIZEr\  s     r,   add_vision_patch_sizez GGUFWriter.add_vision_patch_size  !    2E:::::r+   c                P    |                      t          j        j        |           d S r   )r   r   re  r  r\  s     r,   add_vision_embedding_lengthz&GGUFWriter.add_vision_embedding_length  s!    8%@@@@@r+   c                P    |                      t          j        j        |           d S r   )r   r   re  r/  r\  s     r,   add_vision_feed_forward_lengthz)GGUFWriter.add_vision_feed_forward_length  s!    ;UCCCCCr+   c                P    |                      t          j        j        |           d S r   )r   r   re  r   r\  s     r,   add_vision_block_countz!GGUFWriter.add_vision_block_count  s!    3U;;;;;r+   c                Z    |                      t          j        j        j        |           d S r   )r   r   re  rA  rB  r\  s     r,   add_vision_head_countz GGUFWriter.add_vision_head_count  s$    1<eDDDDDr+   c                Z    |                      t          j        j        j        |           d S r   )r   r   re  rA  r  r\  s     r,   "add_vision_attention_layernorm_epsz-GGUFWriter.add_vision_attention_layernorm_eps  s&    2@%HHHHHr+   c                P    |                      t          j        j        |           d S r   )r   r   re  
IMAGE_SIZEr\  s     r,   add_vision_image_sizez GGUFWriter.add_vision_image_size  rk  r+   r   c                P    |                      t          j        j        |           d S r   )r   r   re  
IMAGE_MEANrc   r   s     r,   add_vision_image_meanz GGUFWriter.add_vision_image_mean  s!    t16:::::r+   c                P    |                      t          j        j        |           d S r   )r   r   re  	IMAGE_STDr{  s     r,   add_vision_image_stdzGGUFWriter.add_vision_image_std  s!    t0&99999r+   c                P    |                      t          j        j        |           d S r   )r   r   re  SPATIAL_MERGE_SIZEr\  s     r,   add_vision_spatial_merge_sizez(GGUFWriter.add_vision_spatial_merge_size  s!    :EBBBBBr+   c                P    |                      t          j        j        |           d S r   )r   r   re  USE_GELUr\  s     r,   add_vision_use_geluzGGUFWriter.add_vision_use_gelu  !    do.66666r+   c                P    |                      t          j        j        |           d S r   )r   r   re  USE_SILUr\  s     r,   add_vision_use_siluzGGUFWriter.add_vision_use_silu  r  r+   c                Z    |                      t          j        j        j        |           d S r   )r   r   re  	ProjectorSCALE_FACTORr\  s     r,   !add_vision_projector_scale_factorz,GGUFWriter.add_vision_projector_scale_factor  s$    1>FFFFFr+   c                P    |                      t          j        j        |           d S r   )r   r   re  N_WA_PATTERNr\  s     r,   add_vision_n_wa_patternz"GGUFWriter.add_vision_n_wa_pattern  s!    4e<<<<<r+   c                P    |                      t          j        j        |           d S r   )r   r   	ClipAudiorf  r\  s     r,   add_audio_projection_dimz#GGUFWriter.add_audio_projection_dim  s!    5u=====r+   c                P    |                      t          j        j        |           d S r   )r   r   r  r  r\  s     r,   add_audio_embedding_lengthz%GGUFWriter.add_audio_embedding_length  r  r+   c                P    |                      t          j        j        |           d S r   )r   r   r  r/  r\  s     r,   add_audio_feed_forward_lengthz(GGUFWriter.add_audio_feed_forward_length  s!    :EBBBBBr+   c                P    |                      t          j        j        |           d S r   )r   r   r  r   r\  s     r,   add_audio_block_countz GGUFWriter.add_audio_block_count  s!    2E:::::r+   c                Z    |                      t          j        j        j        |           d S r   )r   r   r  rA  rB  r\  s     r,   add_audio_head_countzGGUFWriter.add_audio_head_count  s$    0;UCCCCCr+   c                Z    |                      t          j        j        j        |           d S r   )r   r   r  rA  r  r\  s     r,   !add_audio_attention_layernorm_epsz,GGUFWriter.add_audio_attention_layernorm_eps  s&    1?GGGGGr+   c                P    |                      t          j        j        |           d S r   )r   r   r  NUM_MEL_BINSr\  s     r,   add_audio_num_mel_binsz!GGUFWriter.add_audio_num_mel_bins  s!    3U;;;;;r+   c                Z    |                      t          j        j        j        |           d S r   )r   r   r  r  STACK_FACTORr\  s     r,   add_audio_stack_factorz!GGUFWriter.add_audio_stack_factor  s$    0=uEEEEEr+   fmtr   c                n    d}|s| j         t          j        k    rdnd}t          j        | | |          S )Nr>  <>)rT   r   LITTLEstructpack)rc   r  r/   r   pack_prefixs        r,   r   zGGUFWriter._pack  sE     	N!%:3D!D!D###K{k0300%888r+   r   c                ,  	 t                      }|r||                     d|          z  }| j                            |          }|+||                     |||t          j        k              z  }n|t          j        k    rYt          |t                    r|	                    d          n|}||                     dt          |                    z  }||z  }n9|t          j        k    rt          |t                    st          d          t          |          dk    rt          d          ||	nnt          |t                    rt          j        	nLt	          j        |d                   	t#          	fd|d	d          D                       st          d
          ||                     d	          z  }||                     dt          |                    z  }|D ]}||                     |	d          z  }nt          d          |S )NrH   r   zutf-8rK   z/Invalid GGUF metadata array, expecting sequencer   z(Invalid GGUF metadata array. Empty arrayc              3  D   K   | ]}t          j        |          u V  d S r   )r   get_type)r   rI   ltypes     r,   r   z'GGUFWriter._pack_val.<locals>.<genexpr>   s3      OO!=1!44=OOOOOOr+   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_packingrD  r   r   r   r.  rQ   encoder~   r   r   r   r%  r   r  allr   )
rc   r   r   r   r2   rB   pack_fmtencoded_valitemr  s
            @r,   r   zGGUFWriter._pack_val  s   ++ 	.tzz#u---G-11%88tzz(CE]M_D_z```GGm***1;C1E1EN#**W---3Ktzz#s;'7'7888G{"GGm)))c8,, T !RSSS3xx1}} !KLLL# C'' ]%+%.s1v66OOOOs122wOOOOO ]$%[\\\tzz#u---Gtzz#s3xx000G H H4>>$>GGGH HIIIr+   numc                    | dk    rdS t          |           }dD ]#}t          |          dk     r	|d| c S |dz  }$|ddS )Nr   znegligible - metadata only)r>  KMGg     @@z3.1fz.1fzT - over 1TB, split recommended)r   abs)r  fnumr7  s      r,   r   z GGUFWriter.format_n_bytes_to_str+  ss    !88//Szz' 	 	D4yy6!!++T+++++FNDD;;;;;r+   )r?   rO   rP   rQ   rR   rS   rT   r   rU   r#   rV   r#   rW   rS   rX   rS   )re   rf   )r?   r   re   rx   r   )r?   r>   re   r   )re   rx   )re   r   )
r   rQ   r   r   r   r   r2   r1   re   r   )r   rQ   r   r#   re   r   )r   rQ   r   r   re   r   )r   rQ   r   rS   re   r   )r   rQ   r   rQ   re   r   )r   rQ   r   r   re   r   )r   r#   r   r#   re   r#   )rt   rQ   r   r    r   r   r   r#   r   r   re   r   )NN)
rt   rQ   r%   r  r  r  r   r   re   r   )r  r!  r   r#   r"  r#  re   r   )r%   r  re   r   )r/  rS   re   r   )rI  rQ   re   r   )rP  r#   re   r   )rT  r#   re   r   )rX  r#   re   r   )rt   rQ   re   r   )r`  rQ   re   r   )rd  rQ   re   r   )ri  rQ   re   r   )rm  rQ   re   r   )rr  rQ   re   r   )rv  rQ   re   r   )rz  rQ   re   r   )r~  rQ   re   r   )r  rQ   re   r   )r  rQ   re   r   )r  rQ   re   r   )r  rQ   re   r   )r  rQ   re   r   )r  r#   re   r   )r  r#   rt   rQ   re   r   )r  r#   r`  rQ   re   r   )r  r#   rd  rQ   re   r   )r  r#   ri  rQ   re   r   )r  r#   rv  rQ   re   r   )r  r#   r  rQ   re   r   )r  r#   r  rQ   re   r   )r  r#   r  rQ   re   r   )r  r#   r  rQ   re   r   )r  r  re   r   )r  r  re   r   )r  rQ   re   r   )ru   r#   re   r   )r  r#   re   r   )r  r,  re   r   )r7  rS   re   r   )r  r#   re   r   )r?  r,  re   r   )rV  r   re   r   )r/   r   re   r   )r?  r#   re   r   )r/   rS   re   r   )r/   r   re   r   )r/   r#   re   r   )r  r#   re   r   )r/   r   re   r   )r  r    re   r   )r/   r   re   r   )r  rQ   re   r   )r  rQ   re   r   )r   r  re   r   )r  r  re   r   )r
  r  re   r   )r  r  re   r   )r8  r%  re   r   )r/   r<  re   r   )rU  r  re   r   )r/   rQ   re   r   )r   r  re   r   )F)r  rQ   r/   r   r   rS   re   r%  )
r   r   r   r   r   rS   r2   r1   re   r%  )r  r#   re   rQ   )r&   r'   r(   r)   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  rd   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   staticmethodr   r  r   r  r.  rE  r   rA  rM  rb   rS  rW  r[  r^  rc  rg  rl  rp  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  r  r  r!  r$  r&  r(  r+  r0  r3  r6  r:  r>  rD  rG  rJ  rM  rQ  rU  rY  r]  r`  rc  rf  ri  rl  rp  rs  rv  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-  r1  r4  r7  r;  rN  rQ  rT  rY  r]  r`  rc  rg  rj  rm  ro  rq  rs  ru  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r*   r+   r,   r<   r<   @   s        %%%%::::((((''''sssssssssss UZs}  tE!"!Uns         6-H -H -H -H^A A A A
+ + + + +     k k k k( ( ( ( (.) ) ) )") ) ) ).S S S S S9 9 9 99 9 9 9; ; ; ;: : : :; ; ; ;: : : :< < < <; ; ; ;: : : :< < < <9 9 9 9; ; ; ;
: : : :
 & & & \&
 FJ+c +c +c +c +c\ Z^15: : : : :*' ' ' ' '
) ) ) )8 9> -) -) -) -) -) -)^   
   6 6 6 6> > > >Q Q Q Q; ; ; ;7 7 7 71 1 1 15 5 5 57 7 7 7A A A A9 9 9 99 9 9 9? ? ? ?> > > >= = = =7 7 7 7< < < << < < </ / / // / / /1 1 1 19 9 9 96 6 6 66 6 6 68 8 8 8@ @ @ @E E E EQ Q Q QU U U UW W W Wa a a a_ _ _ _O O O OO O O OQ Q Q QY Y Y YB B B BN N N NR R R RT T T T^ ^ ^ ^\ \ \ \L L L LL L L LN N N NV V V V0 0 0 0: : : :T T T TJ J J JP P P PR R R RQ Q Q QU U U UP P P PW W W WR R R RM M M M[ [ [ [X X X X\ \ \ \c c c cR R R RT T T TT T T TW W W WR R R RT T T TV V V VX X X XU U U UQ Q Q QM M M MX X X XY Y Y YM M M MR R R RT T T TV V V VR R R RY Y Y YS S S SH H H HW W W WQ Q Q QS S S SP P P PQ Q Q QI I I IR R R RZ Z Z ZU U U UY Y Y YU U U UW W W WK K K KS S S ST T T TW W W WV V V Vd d d dV V V VX X X XU U U UM M M MS S S SQ Q Q QR R R RL L L LT T T TQ Q Q QV V V VV V V VQ Q Q QW W W WL L L LK K K KK K K KO O O OI I I I5 5 5 51 1 1 14 4 4 46 6 6 69 9 9 9@ @ @ @6 6 6 63 3 3 33 3 3 33 3 3 33 3 3 33 3 3 34 4 4 45 5 5 55 5 5 58 8 8 8= = = =F F F F= = = =:3 3 3 33 3 3 3U U U U
; ; ; ;: : : :9 9 9 9? ? ? ?; ; ; ;A A A AD D D D< < < <E E E EI I I I; ; ; ;; ; ; ;: : : :C C C C7 7 7 77 7 7 7G G G G= = = =
> > > >@ @ @ @C C C C; ; ; ;D D D DH H H H< < < <F F F F9 9 9 9 9$ $ $ $ $L < < < \< < <r+   r<   )2
__future__r   loggingosr?  r  r  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   r.   r4   r<   r*   r+   r,   <module>r     sj   " " " " " "  				    ! ! ! ! ! !                           - - - - - - - - - - - - ( ( ( ( ( ( ( (                              0 / / / / /		8	$	$ 1  / / / / / / / / * * * * * * * *    $   t< t< t< t< t< t< t< t< t< t<r+   