o
    0 i                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	Z
dejvrEeejjjjd  rEejd eeejjj d dlZedZdddZdddZedkrae  dS dS )    )annotationsN)tqdm)PathZNO_LOCAL_GGUFzgguf-pyzgguf-convert-endianreadergguf.GGUFReaderargsargparse.NamespacereturnNonec              
   C  s  | j j}| jdkr|dkrdnd}n|}|jdkr|n|j }td| d| d ||kr>td| d	 td
 td | j	D ]%}|j
tjjtjjtjjtjjtjjfvrktd|j
j dt|j qFtd| d|  |jr|d S td td ||krtd td td td}|dkrtd td
 tdt| j d t| j D ]%\}}td|ddt|j dt|j  |jD ]}	|	jdd qqtd t| j	 d tt| j	d!d" }
D ]W\}}d#t|j d$|j
j d%|j d&}|jjD ]	}	|	jdd q|j
tjjkrmd'}t|j | }tt!|d(d)d* }D ]/}|| }|j ||d+  j"t#j$d,}|jdd |d- d
krj|%d.|| |  d/ q<n|j
tjjkrd0}|j j&D ]}||9 }q{|j '| d1}t|j | }tt!|d(d)d* }D ]E}|| }|j ||d+  j"t#j$d,}|jdd |j |d+ |d2  j"t#j$d,}|jdd |d- d
kr|%d.|| |  d/ qnj|j
tjjkrGd0}|j j&D ]}||9 }q|j '| d3}t|j | }tt!|d(d)d* }D ]1}|| }|j |d4 |d3  j"t#j$d,}|jdd |d- d
krD|%d.|| |  d/ qn|j jdd |
%| qtd5 d S )6NSZLITTLEZBIGnativez
* Host is z endian, GGUF file seems to be z endianz* File is already z endian. Nothing to do.r   z/* Checking tensors for conversion compatibilityzCannot handle type z for tensor z* Preparing to convert from z to z&*** Warning *** Warning *** Warning **zH* This conversion process may damage the file. Ensure you have a backup.z]* Requested endian differs from host, you will not be able to load the model on this machine.zQ* The file will be modified immediately, so if conversion fails or is interruptedzX* the file will be corrupted. Enter exactly YES if you are positive you want to proceed:zYES, I am sure> YESz(You didn't enter YES. Okay then, see ya!z* Converting fields ()z- 4z: Converting field z, part count: T)Zinplacez* Converting tensors (zConverting tensor)desczConverting tensor z, type=z, elements= "   zByte-swapping BlocksF)r   Zleave   )Zdtypei zByte-swapping Blocks []               z* Completion)(Z	endianessnameZ
byte_orderorderupperloggerinfosysexitZtensorsZtensor_typeggufZGGMLQuantizationTypeZF32ZF16ZQ8_0ZQ4_KZQ6_K
ValueErrorreprdry_runwarninginputlenfields	enumeratevaluespartsbyteswapr   Z
n_elementsfielddatarangeviewnpZuint16set_descriptionshaperesize)r   r   Zfile_endianZhost_endianr   Ztensorresponseidxr-   partZpbarZlog_message
block_sizeZn_blocksZ
inner_pbarZ	block_numZ
block_offsdeltaZnewshapei r;   l/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/gguf/scripts/gguf_convert_endian.pyconvert_byteorder   s   










*
   r=   c                  C  s   t jdd} | jdtdd | jdtg ddd	 | jd
ddd | jdddd | ttjdkr4d ndg}tj	|j
r@tjntjd td|j  t|j|jrWdnd}t|| d S )NzConvert GGUF file byte order)descriptionmodelzGGUF format model filename)typehelpr   )biglittler   zRequested byte order)r@   choicesrA   z	--dry-run
store_truezDon't actually change anything)actionrA   z	--verbosezincrease output verbosityr   z--help)levelz* Loading: rzr+)argparseArgumentParseradd_argumentstr
parse_argsr'   r   argvloggingbasicConfigverboseDEBUGINFOr   r   r?   r!   Z
GGUFReaderr$   r=   )parserr   r   r;   r;   r<   main   s&   
rU   __main__)r   r   r   r   r	   r
   )r	   r
   )
__future__r   rO   rI   osr   r   pathlibr   numpyr1   environ__file__parentexistspathinsertrL   r!   	getLoggerr   r=   rU   __name__r;   r;   r;   r<   <module>   s$   "

 

