ArGrigorov's picture
bump version to 0.6.5
7a7409f verified
Raw
History Blame Contribute Delete
8.71 kB
"""AGIWSNeuralQuant — Universal neural network quantization library.
Unified architecture: one parameterized Quantizer for all formats,
QuantizedWeight/QuantizedActivation containers, dual-path cross-quantization
distillation, chunked dequant for minimal VRAM, QAT with learnable parameters
via STE, SSM-aware exclusion patterns.
Quantization primitives (pure tensor-level functions, no nn.Module wrappers):
- ternary (BitNet 1.58): ternarize_tensor, ternary_dequantize, fake_ternarize
- nf (QLoRA NormalFloat generalized): NF2/NF3/NF4/NF8 LUTs, quantize/dequantize, pack/unpack, double_quant
- fp8 (E4M3/E5M2): FP8 LUTs, quantize/dequantize
- fp4 (E2M1 / NVFP4 / MXFP4): FP4 LUT, quantize/dequantize, pack/unpack, E8M0
- ste (Straight-Through Estimator): STEQuantize, fake_quantize
Layer wrappers live ONLY in base.py (QuantizedModule) — no per-format
nn.Module classes. The unified Quantizer (quantizer.py) + presets (presets.py)
configure all 40+ formats as parameters, not separate classes.
"""
__version__ = "0.6.5"
# Core unified architecture
from agiws_neural_quant.dispatch import quantize_model, count_quantizable_layers, make_quantizer, save_model, load_model
from agiws_neural_quant.base import QuantizedModule, QuantizedWeight, QuantizedActivation
from agiws_neural_quant.quantizer import Quantizer
from agiws_neural_quant.presets import FORMAT_PRESETS, get_preset
# SSM-aware exclusion patterns (KDA / Mamba / RWKV / linear attention)
from agiws_neural_quant.ssm_patterns import (
get_ssm_exclude_patterns,
get_ssm_subtree_patterns,
)
# QAT + dual-path distillation (unified)
from agiws_neural_quant.training_unified import (
UnifiedQATWrapper,
dual_path_loss,
strip_latent,
)
# Quantization primitives (pure functions / LUTs — no nn.Module wrappers)
from agiws_neural_quant.training import fake_quantize, STEQuantize
from agiws_neural_quant.training.ste import STECodebook, fake_codebook_quantize
from agiws_neural_quant.ternary import (
ternarize_tensor,
ternary_dequantize,
fake_ternarize,
)
from agiws_neural_quant.nf import (
make_normalfloat_lut,
NF2_LUT,
NF3_LUT,
NF4_LUT,
NF8_LUT,
quantize_nf,
dequantize_nf,
pack_nf,
unpack_nf,
double_quantize_scales_2d,
dequantize_scales_2d,
)
from agiws_neural_quant.fp8 import (
FP8_E4M3_LUT,
FP8_E5M2_LUT,
quantize_fp8,
dequantize_fp8,
)
from agiws_neural_quant.fp4 import (
FP4_E2M1_LUT,
quantize_fp4,
dequantize_fp4,
pack_fp4,
unpack_fp4,
E8M0_LUT,
)
from agiws_neural_quant.fp6 import (
FP6_E3M2_LUT,
FP6_E2M3_LUT,
quantize_fp6,
dequantize_fp6,
pack_fp6,
unpack_fp6,
)
from agiws_neural_quant import kquant
from agiws_neural_quant.kquant import (
quantize_blocks,
dequantize_blocks,
)
# Subsystem: teacher-cache for distillation
from agiws_neural_quant.cache import (
get_cache_dir,
get_cache_path,
is_cache_valid,
get_sources_needing_cache,
save_cache,
load_cache,
CaptureConfig,
select_modules,
capture_with_hooks,
save_layer_cache,
load_layer_cache,
load_layer_io,
list_cached_names,
validate_cache_contents,
clean_old_cache,
TeacherCache,
)
# Subsystem: checkpoint extraction (vision encoders, submodules, shards)
from agiws_neural_quant.extract import (
extract_subcheckpoint,
extract_vision_encoder,
extract_module_group,
load_subcheckpoint,
list_shards,
find_keys,
ExtractReport,
)
# Subsystem: universal file-to-file converter (low memory)
from agiws_neural_quant.converters import (
convert_model,
detect_format,
list_safetensors_keys,
read_safetensors_tensor,
stream_safetensors,
write_safetensors,
detect_quant_layout,
GGUFReader,
load_gguf_modules,
gguf_to_quantized_modules,
convert_nvfp4_safetensors_tensor,
dequantize_nvfp4_safetensors,
)
# GGUF k-quant packed slice-dequant (on-the-fly chunked, llama.cpp-style VRAM)
from agiws_neural_quant.kquant.gguf_packed import (
dequant_gguf_slice,
bytes_per_row as gguf_bytes_per_row,
)
# Transformers integration — NeuralQuant as quantization plugin for from_pretrained
from agiws_neural_quant.transformers_integration import (
NeuralQuantConfig,
NeuralQuantHfQuantizer,
NEURAL_QUANT_METHOD,
)
# bitsandbytes packed format reader (read bnb safetensors without bnb library)
from agiws_neural_quant.bnb.bnb_packed import (
dequant_bnb_slice,
dequant_bnb_nf4,
dequant_bnb_int8,
)
from agiws_neural_quant.bnb.bnb_loader import load_bnb_model
# Subsystem: layer analysis (per-layer quantization suitability)
from agiws_neural_quant.analysis import LayerAnalyzer, SplitReport, LayerResult, AnomalyReport
# Subsystem: TradingLR scheduler (auto-LR on technical indicators — separate concern)
from agiws_neural_quant.trading_lr import TradingLR, DEMA, ATR, RSI
# Subsystem: architectural replacement via dual-path QAT (Jamba-conversion, Stage 19e)
from agiws_neural_quant.arch_replace import MambaLayer, ReplaceModule, jamba_replace
# Subsystem: Multi-Token Prediction head via dual-path QAT (Stage 24)
from agiws_neural_quant.mtp import MTPHead, attach_mtp
__all__ = [
# Core
"quantize_model",
"count_quantizable_layers",
"make_quantizer",
"save_model",
"load_model",
"QuantizedModule",
"QuantizedWeight",
"QuantizedActivation",
"Quantizer",
"FORMAT_PRESETS",
"get_preset",
# SSM patterns
"get_ssm_exclude_patterns",
"get_ssm_subtree_patterns",
# QAT + dual-path
"UnifiedQATWrapper",
"dual_path_loss",
"strip_latent",
# Primitives: STE
"fake_quantize",
"STEQuantize",
"STECodebook",
"fake_codebook_quantize",
# Primitives: ternary (BitNet 1.58)
"ternarize_tensor",
"ternary_dequantize",
"fake_ternarize",
# Primitives: NormalFloat (NF2/NF3/NF4/NF8 — QLoRA generalized)
"make_normalfloat_lut",
"NF2_LUT",
"NF3_LUT",
"NF4_LUT",
"NF8_LUT",
"quantize_nf",
"dequantize_nf",
"pack_nf",
"unpack_nf",
"double_quantize_scales_2d",
"dequantize_scales_2d",
# Primitives: FP8
"FP8_E4M3_LUT",
"FP8_E5M2_LUT",
"quantize_fp8",
"dequantize_fp8",
# Primitives: FP4 / NVFP4 / MXFP4
"FP4_E2M1_LUT",
"quantize_fp4",
"dequantize_fp4",
"pack_fp4",
"unpack_fp4",
"E8M0_LUT",
# Primitives: FP6 (E3M2 / E2M3)
"FP6_E3M2_LUT",
"FP6_E2M3_LUT",
"quantize_fp6",
"dequantize_fp6",
"pack_fp6",
"unpack_fp6",
# Primitives: kquant (GGUF k-quants super-block layout)
"kquant",
"quantize_blocks",
"dequantize_blocks",
# Teacher cache
"get_cache_dir",
"get_cache_path",
"is_cache_valid",
"get_sources_needing_cache",
"save_cache",
"load_cache",
"CaptureConfig",
"select_modules",
"capture_with_hooks",
"save_layer_cache",
"load_layer_cache",
"load_layer_io",
"list_cached_names",
"validate_cache_contents",
"clean_old_cache",
"TeacherCache",
# Extraction
"extract_subcheckpoint",
"extract_vision_encoder",
"extract_module_group",
"load_subcheckpoint",
"list_shards",
"find_keys",
"ExtractReport",
# Universal converter
"convert_model",
"detect_format",
"list_safetensors_keys",
"read_safetensors_tensor",
"stream_safetensors",
"write_safetensors",
"detect_quant_layout",
"GGUFReader",
"load_gguf_modules",
"gguf_to_quantized_modules",
"convert_nvfp4_safetensors_tensor",
"dequantize_nvfp4_safetensors",
# GGUF k-quant packed slice-dequant
"dequant_gguf_slice",
"gguf_bytes_per_row",
# Transformers integration (from_pretrained quantization plugin)
"NeuralQuantConfig",
"NeuralQuantHfQuantizer",
# bitsandbytes reader
"dequant_bnb_slice",
"dequant_bnb_nf4",
"dequant_bnb_int8",
"load_bnb_model",
# Layer analysis
"LayerAnalyzer",
"SplitReport",
"LayerResult",
"AnomalyReport",
# TradingLR (separate subsystem)
"TradingLR",
"DEMA",
"ATR",
"RSI",
# Architectural replacement (Stage 19e — Jamba via dual-path QAT)
"MambaLayer",
"ReplaceModule",
"jamba_replace",
# MTP head (Stage 24 — Multi-Token Prediction via dual-path QAT)
"MTPHead",
"attach_mtp",
]