
    `iU                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 dej        vrp ee          j        j        j        j        dz                                  r<ej                            d  e ee          j        j        j                             d dlmZmZmZ  ej        d          Zd dZd!dZd!dZd"dZd#dZd Zd!dZd$dZe dk    r e             dS dS )%    )annotationsN)Path)AnyNO_LOCAL_GGUFzgguf-py)
GGUFReaderGGUFValueTypeReaderTensorz	gguf-dumpreaderr   returntuple[str, str]c                R    | j         j        }| j        dk    r|dk    rdnd}n|}||fS )NSLITTLEBIG)	endianessname
byte_order)r
   file_endianhost_endians      j/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gguf/scripts/gguf_dump.pyget_file_host_endianr      s@    "'KC*h66eeH!%%    argsargparse.NamespaceNonec                N   t          |           \  }}t          d| d| d           t          dt          | j                   d           t	          | j                                        d          D ]\  }}|j        sd}n}|j        d         t          j        k    rCt          |j                  dz
  }d	|z  t          |j        d
         j
                  z   d|z  z   }nt          |j        d
         j
                  }d|dd|ddt          |j                  dd|j
         }|j        r|j        d         }	|	t          j        k    rZ|                                }
t          |
          dk    r|
d d         dz   }
|d                    t          |
                    z  }n|	| j        v r+|d                    |                                          z  }nlt          |                    t#          d                              }
t          |j                  dk    r|
d d
         dz   }
|d                    |
          z  }t          |           |j        rd S t          dt          | j                   d           t	          | j        d          D ]\  }}d                    d t+          |j                  dgdt          |j                  z
  z  z   D                       }t          d|dd|j        dd| d|j        j
        dd|j
         
           d S )Nz
* File is z  endian, script is running on a z endian host.z
* Dumping z key/value pair(s)   N/Ar   []z  5z: 10z | 8<   9   z...z = {0}   z, ...]z
 tensor(s), c              3  @   K   | ]}d                      |          V  dS )z{0:5}N)format).0ds     r   	<genexpr>z dump_metadata.<locals>.<genexpr>A   s.      mmQw~~a00mmmmmmr      7)r   printlenfields	enumeratevaluestypesr   ARRAYstrr   dataSTRINGcontentsr*   reprgguf_scalar_to_npslice
no_tensorstensorsjoinlistshape
n_elementstensor_type)r
   r   r   r   nfieldpretty_type
nest_countlog_message	curr_typecontenttensor
prettydimss                r   dump_metadatarN       s@   3F;;K	
^{
^
^K
^
^
^___	
=s6=))
=
=
=>>>fm2244a88  5{ 	4KK[^}222U[))A-J
*SR1E-F-FFzIYYKKek"o233KW1WWW+WWWS__WWW5:WW; 	8AIM000..**w<<"$$%crclU2GxtG}}===f666xu~~/?/?@@@u~~eAhh7788uz??Q&&%crclX5Gxw777k 	
6s6>**
6
6
6777v~q11 o o	6YYmm$v|:L:LPQsVWZ]^d^jZkZkVkOl:lmmmmm
m1mmm&+mmm:mm&BTBYmmm`f`kmmnnnno or   c                   dd l }t          |           \  }}i }i }|j        |||d}t          | j                                                  D ]\  }}	||	j        r|	j        d         j        nd|	j        d}
|
||	j        <   |	j        d d         t          j
        gk    r<d |	j        D             dd          |
d<   |j        su|	                                |
d<   |	                                |
d<   |j        sTt          | j                  D ]?\  }}||j                                        |j        j        |j        j        d	||j        <   @|                    |t(          j                   d S )
Nr   )filenameendianmetadatar?   UNKNOWN)indextypeoffsetr   c                    g | ]	}|j         
S  )r   )r+   ts     r   
<listcomp>z&dump_metadata_json.<locals>.<listcomp>X   s    "?"?"?a16"?"?"?r   array_typesvalue)rT   rB   rU   rV   )jsonr   modelr3   r2   r4   r5   r   rV   r   r6   
json_arrayr:   r>   r?   rB   tolistrD   rF   dumpsysstdout)r
   r   r]   r   r   rR   r?   resultidxrF   currrL   s               r   dump_metadata_jsonrg   E   s   KKK3F;;K!H GJ	 F   4 4 6 677 - -
U+0;EEKN''Il 
  

  $;rr?}2333"?"?5;"?"?"?"CD? !NN,,DMM!NN,,DMM? $V^44 	 	KC,,..*/ ,-	$ $GFK   	IIfcj!!!!!r   
header_maplist[dict[str, str]]r8   list[dict[str, Any]]c           	       	
 dddd	i t          |           D ]J\  }t          fd	|D             d
          dz   }t          d                   dz   }||k    r|n||<   Kg }|                    d                    fdt          |           D                                  |                    d                    	fdt          |           D                                  |D ]E
|                    d                    
fdt          |           D                                  Fd}|D ]}|d| dz  }|S )Npaddingint	alignMode
str | NonestrValr7   c                    |dk    r|                     |           S |dk    r|                    | dz
            dz   S |dk    rd|                    | dz
            z   S d|                    | dz
            z   S )Ncenterrightr    left)rr   rjustljust)rl   rn   rp   s      r   strAlignz7markdown_table_with_alignment_support.<locals>.strAlignm   s      ==)))'!!<<!,,s22&  gk2222gk2222r   c                x    |dk    rdd| dz
  z  z   dz   S |dk    rd| dz
  z  dz   S |dk    rdd| dz
  z  z   S d| z  S )Nrr   :-   rs   r   ru   rX   )rl   rn   s     r   	dashAlignz8markdown_table_with_alignment_support.<locals>.dashAlignw   sn      !,,s22'!!'A+&,,&  !,,,'?"r   c                    g | ]D}|                                 D ]-\  }}|d          k    t          t          |                    .ES )key_name)itemsr1   r7   )r+   r,   kvcolumnEntrys       r   rZ   z9markdown_table_with_alignment_support.<locals>.<listcomp>   sO    hhhaggiihhda1P[\fPgKgKgCFFKgKgKgKgr   r   defaultr|   header_name|c           	   3     K   | ]@\  }} |         |                     d           t          |d                             V  AdS )alignr   Ngetr7   )r+   rT   r   rowsPaddingrx   s      r   r-   z8markdown_table_with_alignment_support.<locals>.<genexpr>   sy        b  b  vHuz  }H+e"4koog6N6NPST_`mTnPoPopp  b  b  b  b  b  br   c              3  h   K   | ],\  }} |         |                     d                     V  -dS )r   N)r   )r+   rT   r   r}   r   s      r   r-   z8markdown_table_with_alignment_support.<locals>.<genexpr>   s_        B  BUgUZ\g;u#5{w7O7OPP  B  B  B  B  B  Br   c           
   3     K   | ]F\  }} |         |                     d           t          |d                                      V  GdS )r   r   Nr   )r+   rT   r   itemr   rx   s      r   r-   z8markdown_table_with_alignment_support.<locals>.<genexpr>   s        i  i  }O  }B  DOXXk%&8+//':R:RTWX\]his]tXuTvTvww  i  i  i  i  i  ir    z|
)rl   rm   rn   ro   rp   r7   )rl   rm   rn   ro   )r3   maxr1   appendr@   )rh   r8   rT   padCountheaderPadCountrowstableStringrowr   r}   r   r   rx   s           @@@@@r   %markdown_table_with_alignment_supportr   i   sg   3 3 3 3# # # # K'
33 X X{hhhhThhhrstttwxx[7881</7>/I/I^^xE DKK  b  b  b  b  b  LU  V`  La  La  b  b  b  b  b  c  c  cKK  B  B  B  B  Bktu  lA  lA  B  B  B  B  B  C  C  C  j jCHH  i  i  i  i  i  i  S\  ]g  Sh  Sh  i  i  i  i  i  	j  	j  	j  	j K $ $|3|||#r   countrm   r7   c                    | dk    r| dz  }d}n<| dk    r| dz  }d}n.| dk    r| dz  }d	}n | d
k    r| dz  }d}n| dk    r| dz  }d}n| }d}| dk    rdnd t          |           | S )Ng  4&kCgV瞯<Qg   mBg-q=Tg    eAg&.>Bg    .Agư>Mg     @@gMbP?Kr   ~)round)r   scaled_amountscale_suffixs      r   element_count_rounded_notationr      s    t||				 S[[ccbN%*>*>NNNNr   c                   |                      d          }i dddddddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/}g }|D ]}|                                                                }||v r.|                    ||                                                    Z|                    |                                           d0                    |          S )1N.
token_embdzToken embeddingpos_embdzPosition embeddingoutput_normzOutput normalizationoutputOutput	attn_normzAttention normalizationattn_norm_2attn_qkvzAttention query-key-valueattn_qzAttention queryattn_kzAttention keyattn_vzAttention valueattn_outputzAttention outputffn_normz"Feed-forward network normalizationffn_upzFeed-forward network "up"ffn_gatezFeed-forward network "gate"ffn_downzFeed-forward network "down"ffn_gate_inpzMExpert-routing layer for the Feed-forward network in Mixture of Expert modelsffn_gate_expzHFeed-forward network "gate" layer per expert in Mixture of Expert modelszHFeed-forward network "down" layer per expert in Mixture of Expert modelszFFeed-forward network "up" layer per expert in Mixture of Expert modelsz#State space model input projectionszState space model rolling/shiftz+State space model selective parametrizationz#State space model state compressionz!State space model skip connectionzState space model time stepz#State space model output projectionBlockEncoderDecoder)ffn_down_exp
ffn_up_expssm_in
ssm_conv1dssm_xssm_assm_dssm_dtssm_outblkencdecrt   )splitstriplowerr   titler@   )r   wordsabbreviation_dictionaryexpanded_wordsword	word_norms         r   translate_tensor_namer      s   JJsOOE'( 	- 	(	
 	. 	0 	/ 	# 	/ 	# 	) 	8 	- 	1 	1  	g!" 	b#$ c^77>64/8;  @ N 0 0JJLL&&((	///!!"9)"D"J"J"L"LMMMM!!$**,,////88N###r   c                  0 t          |           \  }}d}|d|j         dz  }|d| dz  }|dz  }|dz  }|dt          | j                   d	z  }|dz  }g }t	          | j                                        d
          D ]m\  }}|j        sd}n}|j        d         t          j        k    rCt          |j                  d
z
  }	d|	z  t          |j        d         j
                  z   d|	z  z   }nt          |j        d         j
                  }d }
t          |j                  }d}t          |j                  d
k    r|j        d         }|t          j        k    rd}t          t          |j        d                   d          }t          |          |k    rF |
|d |dz                     } |
|| dz  d                    }d                    ||          }n |
|          }n|| j        v r t          |j        d         d                   }n|j        d         t          j        k    r|j        d
         }g }|t          j        k    rt#          d|          }t%          |          D ]}d}t          t          |j        d||z
  d
z
  dz  z
                     d          }t          |          |k    rE |
|d |dz                     } |
|| dz  d                    }d                    ||          }n |
|          }|                    |           ng|| j        v r^t#          d|          }t%          |          D ]>}|                    t          |j        d||z
  d
z
  z
           d                              ?dd                    |                                           |t          |          k    rdnd d}|                    ||||j
        |d           odd d!d"d#d$d%d"d&d'd!d"d(d)d%d"d*d+d%d"g}|t-          ||          z  }|dz  }|j        sg }i }i }t1          d, | j        D                       }t	          | j                  D ]\  }}|j
                            d-          }d.}|d         d/k    r|d          d-|d
          }nF|d         d0v r)|d
         d/k    r|d          d-|d
          d-|d          }n|d         d0v r	|d          }||vrg ||<   |                    |           ||                             |           |||j
        <   |d1t7          |           d2z  }|d3| d4z  }|dz  }|D ]`}||         }t1          d5 |D                       }|d6t9          |           d7t7          |           d8|                    d-d9           d:z  }a|dz  }|d;z  }|dz  }|d<z  }|dz  }g } t	          | j                  D ]X\  }}d=                    |j                  }!d=                    |j                  }"|                     ||j
        |!|"d>           Yd?d@d!d"dAdBd%d"dCdDd!d"dEdFd!d"g}#|t-          |#|           z  }|dz  }|D ]}||         }t1          dG |D                       }||z  dHz  }$|dI|                    d-d9           dJt9          |           dKt7          |           dLz  }d
}%d
}&i 0|D ]}tA          |%t          t          t7          |j!                                                }%tA          |&t          t          |j!                                      }&t	          tE          |j#                  d
gdMt          |j#                  z
  z  z             D ]F\  }'}(tA          0$                    |'d
          t          t          |(                              0|'<   Gg })|D ] }t9          |j
                            dNdO                              dPdQ                    }*dR                    0fdSt	          tE          |j#                  d
gdMt          |j#                  z
  z  z             D                       }+dTt7          |j!                  dU|% dV},|, dW|j!        dU|& }-|j%        j
         }.|)                    ||j
                 |j
        |*|-|+|.dX           d?d@d!d"dAdBd%d"dYdZd%d"d[d\d%d"d]d^d%d"d_d`d%d"g}/|t-          |/|)          z  }|dz  }|da| dbt7          |          dcdd| dz  }|de|$dfdgz  }|dhz  }tM          |           d S )iNr   z# z - GGUF Internal File Dump

z
- Endian: z endian

z## Key Value Metadata Store

z
There are z key-value pairs in this file
r   r   r   r   r    r!   c                    t          d t          j        d|           D             d          }d|dz   z  }|                     d          s|                     d          rd|  d} | |  | S )Nc              3  Z   K   | ]&}t          |                    d                     V  'dS )r   N)r1   group)r+   matchs     r   r-   zNdump_markdown_metadata.<locals>.escape_markdown_inline_code.<locals>.<genexpr>   s4       c cU[[^^!4!4 c c c c c cr   z`+r   r   `r   rt   )r   refinditer
startswithendswith)value_stringmax_backticksinline_code_markers      r   escape_markdown_inline_codez;dump_markdown_metadata.<locals>.escape_markdown_inline_code   s       c c"+eUaBbBb c c cmnoooM!$(9!: &&s++ 3|/D/DS/I/I 32<222(L,L8JLLLr   r%   zutf-8)encodingr|   z{head}...{tail})headtail         z[ r(   z, ...z ])rE   rG   total_elements
field_namer\   rE   POSrs   )r   r   r   rG   TYPEru   r   Countr   Keyr\   Valuec              3  $   K   | ]}|j         V  d S NrC   r+   rL   s     r   r-   z)dump_markdown_metadata.<locals>.<genexpr>?  s%      LL6V.LLLLLLr   r   baser   )r   r   z## Tensors Overview z Elements

z)Total number of elements in all tensors: z
 Elements
c              3  $   K   | ]}|j         V  d S r   r   r   s     r   r-   z)dump_markdown_metadata.<locals>.<genexpr>^  %       I Iv!2 I I I I I Ir   z- [z Tensor Group - z Elements](#_z)
z### Tensor Data Offset
zJThis table contains the offset and data segment relative to start of file
z{0:#16x})t_id
layer_namedata_offset	data_sizer   T_IDr   zTensor Layer Namer   zData Offset (B)r   zData Size (B)c              3  $   K   | ]}|j         V  d S r   r   r   s     r   r-   z)dump_markdown_metadata.<locals>.<genexpr>z  r   r   d   z### <a name="z">z Tensor Group : z Elements</a>

r.   z.weightz.(W)z.biasz.(B)z x c              3  R   K   | ]!\  }}t          |          d |          V  "dS )>N)r7   )r+   ir,   prettify_dimension_max_widthss      r   r-   z)dump_markdown_metadata.<locals>.<genexpr>  s]        .i  .ibfbcefQ.]:WXY:Z.].].]  .i  .i  .i  .i  .i  .ir   (r   )rt   )r   r   human_layer_nameelement_countpretty_dimensionrD   r  z Human Friendly Tensor Layer Namer  Elementsr  ShaperD   Typez- Total elements in z: (z>4z) z - Percentage of total elements: z.2fz%
z

)'r   r^   r1   r2   r3   r4   r5   r   r6   r7   r   r8   r9   bytespartsr*   r<   minranger   r@   r   r   r>   sumr?   r   r   r   replacer   n_bytesr   rC   rA   rB   r   rD   r0   )1r
   r   r   r   markdown_contentkv_dump_tablerE   rF   rG   rH   r   r   r\   rJ   truncate_lengthr   r   r   array_elementsrender_elementelement_poskv_dump_table_header_maptensor_prefix_ordertensor_name_to_keytensor_groupskeyrL   tensor_componentstensor_group_namer   r?   group_elementstensor_mapping_tabledata_offset_prettydata_size_pretty tensors_mapping_table_header_mapgroup_percentageprettify_element_est_count_sizeprettify_element_count_sizer   dimension_sizetensor_dump_tablehuman_friendly_namer  element_count_estelement_count_stringtype_name_stringtensor_dump_table_header_mapr   s1                                                   @r   dump_markdown_metadatar,     sk   3F;;KGTZGGGG;[;;;;99XS%7%7XXXX02Mfm2244a88 =J =J5{ 	4KK[^}222U[))A-J
*SR1E-F-FFzIYYKKek"o233K
	M 
	M 
	M UZu{q  AIM000"$"5R#9#9GLLL|$$6666|DY_XYEYDY7Z[[D66|_DTXYDYDZDZ7[\\D-44$T4JJEE77EEEEf666EKOA.//{1~!444!KN	!# 444%(N%;%;N',^'<'< 	5 	5*,'*5R>T_C_bcCcghBh=h1i+j+ju|'}'}'}|,,>>#>#>|La_`aMaLa?b#c#cD#>#>|_L\`aLaLbLb?c#d#dD$5$<$<$T$<$R$REE$?$?$M$ME&--e4444	5 &":::%(N%;%;N',^'<'< l l&--c%+bNU`D`cdDd>e2fgh2i.j.jkkkk{TYY~66<<>>{>\_`n\o\oKoKouw{{{!;Q_nsnx  CH  I  I  	J  	J  	J  	J e'RR!f&QQ$g'RR e&QQg&QQ  =>VXefff? f')+-/79LLV^LLLLL %V^44 	2 	2KC & 1 1# 6 6 !' #u,,'8';$T$T>OPQ>R$T$T!!"1%77<Ma<PTY<Y<Y'8';$k$k>OPQ>R$k$kUfghUi$k$k!!"1%77'8';$=! !5535/0#**+<=== +,33F;;;.1v{++ 	p3QR`3a3appppcccccD ( 	m 	mE#E*G  I I I I IIIN  !m&;E&B&B  !m  !mTr  tB  UC  UC  !m  !m  QV  Q^  Q^  _b  dg  Qh  Qh  !m  !m  !m  mD 66D iiD ;=$V^44 	P 	PKC!+!2!263E!F!F)00@@ ''&+]o  ~N  )O  )O  P  P  P  P fT[\\$6ITZ[[%6GT[\\#oT[\\	,
( 	ABbdxyyyD ( (	' (	'E#E*G  I I I I IIIN->D  !}sC1H1H  !}  !}MbchMiMi  !}  !}  |Z  [i  |j  |j  !}  !}  !}  } 45+/0'<>)! } }256UWZ[^_}  E  P  `Q  `Q  \R  \R  XS  XS  3T  3T/.12MsSVW]WhSiSiOjOj.k.k+)243E3EqSVW]WcSdSdOdHe3e)f)f } }%A~7:;X;\;\]^_`;a;acfgjkygzgzc{c{7|7|1!44} =?! @ @&;FK<O<OPY[a<b<b<j<jkrtz<{<{&|&|##(::  .i  .i  .i  .ijstxy  zF  uG  uG  KL  JM  QR  UX  Y_  Ye  Uf  Uf  Qf  Jg  ug  kh  kh  .i  .i  .i  $i  $i $(FvGX(Y(Y$\{$$$$$!*;'p'pf>O'pRm'p'p'p'p$&,&8&=#? !((1CFK1P_e_j  @S  ey  N^  n~  *  *  @  @  @  @ #fjqrr(>Qjpqq.>`jpqq+jjpqq.gjpqq)fjpqq,(  EFbdu v vv$  !Iu  !I  !IA_`nAoAo  !I  !I  !I  wE  !I  !I  !I  I \CS \ \ \ \\&	
r   c                 &   t          j        d          } |                     dt          d           |                     ddd	           |                     d
dd	           |                     ddd	           |                     ddd	           |                     ddd	           |                     ddd	           |                     ddd	           |                     t          t          j                  dk    rd ndg          }t          j	        |j
        rt          j        nt          j                   |j        s7|j        s0|j        s)|j        s"t"                              d|j                    t)          |j        d          }|j        rt+          ||           d S |j        rt-          ||           d S |j        rt/          |j                   d S |j        rt/          |j                   d S t3          ||           d S )NzDump GGUF file metadata)descriptionr^   zGGUF format model filename)rU   helpz--no-tensors
store_truezDon't dump tensor metadata)actionr/  z--jsonzProduce JSON outputz--json-arrayz/Include full array values in JSON output (long)z--data-offsetzStart of data offsetz--data-alignmentz-Data alignment applied globally to data fieldz
--markdownzProduce markdown outputz	--verbosezincrease output verbosityr   z--help)levelz* Loading: r)argparseArgumentParseradd_argumentr7   
parse_argsr1   rb   argvloggingbasicConfigverboseDEBUGINFOr]   markdownr   data_alignmentloggerinfor^   r   rg   r,  r0   	alignmentrN   )parserr   r
   s      r   mainrD    s4   $1JKKKF
Eabbb
|B^___
|BWXXX
|Bsttt
<F\]]]
*<Fuvvv
|B[\\\
|B]^^^S]]Q%6%6TTXJGGDt|MgmmNNNN9 0T] 043C 0DL_ 0.$*..///
C((Fy 	$64(((((	 $vt,,,,,		 $f !!!!!		 $ffd#####r   __main__)r
   r   r   r   )r
   r   r   r   r   r   )rh   ri   r8   rj   )r   rm   r   r7   )r   r   )!
__future__r   r9  r4  osr   rb   pathlibr   typingr   environ__file__parentexistspathinsertr7   ggufr   r   r	   	getLoggerr@  r   rN   rg   r   r   r   r,  rD  __name__rX   r   r   <module>rS     s   " " " " " "   				 				 



             "*$$$$x..*?*F*M*TW`*`)h)h)j)j$HOOAss44>>07>??@@@ 8 8 8 8 8 8 8 8 8 8		;	'	'& & & &"o "o "o "oJ!" !" !" !"H- - - -`O O O O8,$ ,$ ,$^~ ~ ~ ~B$ $ $ $@ zDFFFFF r   