Files
2026-11-03 15:23:48 -05:00

171 lines
5.6 KiB
Groff

.TH CTQ 1 "November 2026" "convert_to_quant" "User Commands"
.SH NAME
ctq \- convert safetensors model weights to scaled FP8, NVFP4, INT8, and MXFP8 formats
.SH SYNOPSIS
.B ctq
\fB\-i\fR \fIINPUT\fR
[\fB\-o\fR \fIOUTPUT\fR]
[\fB\-\-comfy_quant\fR]
[\fB\-\-simple\fR]
[\fB\-\-device\fR \fIDEVICE\fR]
[\fB\-\-low\-memory\fR]
[\fB\-\-nvfp4\fR|\fB\-\-int8\fR|\fB\-\-mxfp8\fR]
[\fIoptions...\fR]
.SH DESCRIPTION
.B ctq
(\fBconvert_to_quant\fR) quantizes neural network weights stored in \fI.safetensors\fR
format into scaled lower-precision representations, primarily targeting
\fBComfyUI\fR and hardware-accelerated inference runtimes.
.PP
By default, \fBctq\fR performs Scaled FP8 quantization using SVD-guided learned rounding
(Prodigy optimizer) and per-tensor scaling. It supports multiple quantization formats:
.IP \(bu 2
\fBFP8\fR (Float8 E4M3 / E5M2) with tensor-wise, row-wise, or block-wise scaling.
.IP \(bu 2
\fBNVFP4\fR (NVIDIA 4-bit floating point, E2M1 with dual-level block scaling).
.IP \(bu 2
\fBINT8\fR block-wise quantization with optional group-wise Hadamard rotation (\fIConvRot\fR).
.IP \(bu 2
\fBMXFP8\fR (Microscaling FP8) and Hybrid MXFP8 formats.
.PP
Quantization error can optionally be extracted into a companion Error Correction LoRA
adapter (\fB\-\-extract\-lora\fR) to restore high-precision fidelity.
.SH OPTIONS
.SS Standard Options
.TP
.BI \-i " " INPUT ", " \-\-input " " INPUT
Path to the input \fI.safetensors\fR weight file (required).
.TP
.BI \-o " " OUTPUT ", " \-\-output " " OUTPUT
Path to the output \fI.safetensors\fR destination file. Auto-generated if omitted.
.TP
.BR \-\-comfy_quant ", " \-\-comfy\-quant
Write ComfyUI-compatible quantization tensors and metadata (\fI.comfy_quant\fR).
.TP
.B \-\-simple
Skip SVD learned rounding and apply fast, direct grid quantization.
.TP
.BR \-fpmm ", " \-\-full_precision_matrix_mult
Add \fIfull_precision_matrix_mult=True\fR to \fI.comfy_quant\fR metadata.
.TP
.B \-\-heur
Skip layers with poor quantization characteristics (aspect ratio, size).
.TP
.BI \-\-device " " DEVICE
Execution device (e.g. \fBcuda\fR, \fBcuda:0\fR, \fBcpu\fR). Overrides auto-detection.
.TP
.BR \-lm ", " \-\-low\-memory
Stream tensor loading to minimize RAM consumption (recommended for models exceeding 50% available memory).
.TP
.BI \-\-verbose " " {DEBUG,VERBOSE,NORMAL,MINIMAL}
Logging verbosity level (default: \fBNORMAL\fR).
.TP
.BI \-\-manual_seed " " SEED
Random seed for reproducibility. Set to \-1 for non-deterministic execution.
.TP
.B \-\-save\-quant\-metadata
Write quantization metadata directly into safetensors file header (\fI_quantization_metadata\fR).
.SS Quantization Formats & Modes
.TP
.B \-\-nvfp4
Quantize to NVIDIA FP4 (E2M1) with dual-level block scaling (Blackwell architecture).
.TP
.B \-\-int8
Quantize to INT8 block-wise format instead of FP8.
.TP
.B \-\-convrot
Enable group-wise Hadamard rotation (ConvRot) for INT8 row-wise quantization to mitigate activation outliers.
.TP
.BI \-\-convrot\-group\-size " " SIZE
Group size for ConvRot (must be a power of 4, e.g. 64, 256, 1024; default: 256).
.TP
.B \-\-mxfp8
Quantize to MXFP8 (Microscaling FP8) format.
.TP
.BI \-\-scaling_mode " " {tensor,row,block}
FP8 scaling granularity: \fBtensor\fR (single scale), \fBrow\fR (per-row), or \fBblock\fR (2D tile). Default: \fBtensor\fR.
.TP
.BI \-\-block_size " " SIZE
Block size for block-wise scaling (default: 128).
.SS Learned Rounding & Optimization
.TP
.BI \-\-optimizer " " {prodigy,adamw,radam,original}
Optimization algorithm for learned rounding (default: \fBprodigy\fR).
.TP
.BI \-\-num_iter " " N
Optimization iterations per tensor (default: 4000).
.TP
.BI \-\-lr " " LR
Initial learning rate for AdamW/RAdam/Original (default: 1.0).
.TP
.BI \-\-lr_schedule " " {plateau,exponential,adaptive}
Learning rate decay schedule (default: \fBplateau\fR).
.TP
.B \-\-use_speed
Enable Prodigy's \fIuse_speed\fR acceleration parameter.
.TP
.BI \-\-top_p " " P
Cumulative energy proportion of principal components for SVD (default: 0.2).
.TP
.BI \-\-min_k " " K ", " \-\-max_k " " K
Minimum and maximum SVD rank bounds (default: 256 and 1280).
.TP
.B \-\-full_matrix
Compute full SVD instead of low-rank SVD.
.TP
.BI \-\-scale\-optimization " " {fixed,iterative,joint,dualround}
Block scale tuning strategy (default: \fBfixed\fR).
.SS Error Correction LoRA
.TP
.B \-\-extract\-lora
Extract quantization residual error into a separate LoRA adapter file.
.TP
.BI \-\-lora\-rank " " RANK
Rank for extracted LoRA layers (default: 32).
.TP
.BI \-\-lora\-target " " REGEX
Regex matching layers to target for LoRA extraction.
.TP
.BI \-\-lora\-output " " PATH
Output file path for the extracted LoRA adapter (\fI.safetensors\fR).
.SS Model Filters
.B ctq
includes pre-tuned layer exclusion filters for common architecture families:
.TP
.BR \-\-gemma4 ", " \-\-qwen_vlm ", " \-\-t5xxl ", " \-\-wan ", " \-\-hunyuan ", " \-\-ltxv2 ", " \-\-qwen ", " \-\-zimage
Keep architecture-critical layers (embeddings, layernorms, vision towers, cross-attention) in native precision.
.SH EXAMPLES
.TP
.B Standard FP8 quantization for ComfyUI:
.RS
.nf
ctq -i model.safetensors -o model-fp8.safetensors --comfy_quant
.fi
.RE
.TP
.B NVFP4 quantization using learned rounding:
.RS
.nf
ctq -i model.safetensors -o model-nvfp4.safetensors --nvfp4 --scale-optimization joint
.fi
.RE
.TP
.B Fast INT8 conversion with ConvRot outlier mitigation:
.RS
.nf
ctq -i model.safetensors --int8 --convrot --simple -o model-int8.safetensors
.fi
.RE
.TP
.B Quantize with Error Correction LoRA extraction:
.RS
.nf
ctq -i model.safetensors --nvfp4 --extract-lora --lora-rank 32 --lora-output model-ec-lora.safetensors
.fi
.RE
.SH SEE ALSO
.BR hf_to_nvfp4_safetensors (1),
.BR safetensors_to_nvfp4_gguf (1),
.BR heretic (1)