+
    9i#                     |    ^ RI t ^ RIt^ RIt^ RIt^ RIHt ] P                  ! ]4      tR t	R t
R t ! R R4      tR# )    N)Conv1Dc                 8   V P                   P                  w  r\        P                  P	                  W4      pV P                   P
                  P                  P                  4       VP                   n        V P                  P
                  VP                  n        V# )N)	weightshapetorchnnLineardataT
contiguousbias)modulein_sizeout_sizelinears   &   f/var/www/html/photoedit/myenv/lib/python3.14/site-packages/onnxruntime/transformers/quantize_helper.py_conv1d_to_linearr      sf    ++GXX__W/F++--88:FMM{{''FKKM    c                   \         P                  R4       \        V P                  4       FR  pV P                  V,          p\	        V\
        4      '       d   \        V4      pW0P                  V&   KG  \        V4       KT  	  R# )zkin-place
This is for Dynamic Quantization, as Conv1D is not recognized by PyTorch, convert it to nn.Linear
zreplace Conv1D with LinearN)loggerdebuglist_modules
isinstancer   r   conv1d_to_linear)modelnamer   r   s   &   r   r   r      s]     LL-.U^^$%ff%%&v.F#)NN4 V$ %r   c                     \         P                  ! V P                  4       R 4       \        P                  P                  R 4      R,          p\        P                  ! R 4       V# )ztemp.p   )r   save
state_dictospathgetsizeremove)r   sizes   & r   _get_size_of_pytorch_modelr'   '   sA    	JJu!8,77??8$4DIIhKr   c                   ^   a  ] tR t^.t o ]]P                  3R l4       t]RR l4       tRt	V t
R# )QuantizeHelperc                   \        V 4       \        P                  P                  V \        P                  P
                  0VR7      p\        P                  R\        V 4       24       \        P                  R\        V4       24       V# )zc
Usage: model = quantize_model(model)

TODO: mix of in-place and return, but results are different
)dtypez'Size of full precision Torch model(MB):z"Size of quantized Torch model(MB):)	r   r   quantizationquantize_dynamicr   r	   r   infor'   )r   r+   quantized_models   && r   quantize_torch_model#QuantizeHelper.quantize_torch_model/   ss     	,,==eehhooEV^c=d=>XY^>_=`ab89STc9d8efgr   c                   ^ RI Hp ^ RIHp V! V4      P                  P                  RRR7       \        P                  R\        P                  P                  V 4      R,           24       V! V VVR\        P                  P                  /R7       \        P                  RV 24       \        P                  R	\        P                  P                  V4      R,           24       R
# )r   )Path)r-   T)parentsexist_okz&Size of full precision ONNX model(MB):DefaultTensorType)use_external_data_formatextra_optionszquantized model saved to:z!Size of quantized ONNX model(MB):Nr   )pathlibr3   onnxruntime.quantizationr-   parentmkdirr   r.   r"   r#   r$   onnxTensorProtoFLOAT)onnx_model_pathquantized_model_pathr7   r3   r-   s   &&&  r   quantize_onnx_model"QuantizeHelper.quantize_onnx_model<   s     =!"))//t/L<RWW___=]al=m<nop %=.0@0@0F0FG		
 	/0D/EFG7H\8]al8m7nopr    N)F)__name__
__module____qualname____firstlineno__staticmethodr   qint8r0   rB   __static_attributes____classdictcell__)__classdict__s   @r   r)   r)   .   s4     */++ 
 
 q qr   r)   )loggingr"   r=   r   transformers.modeling_utilsr   	getLoggerrE   r   r   r   r'   r)   rD   r   r   <module>rQ      sA     	   .			8	$%q qr   