Highlights
The most important changes in this release cycle:
- (MX)FP quantizers moved out of experimental — floating-point / MX quantizers are now first-class, supported quantizers. (#1488)
- Experimental vLLM export support — new export path targeting vLLM. (#1444)
- Learned Round refactor + documentation — reworked learned round in the common examples with dedicated docs. (#1323, #1485)
- LLM customization plugins — custom trainer support and a custom quantizer plugin to modify the quantized model, plus the ability to pass custom quantizers via the common quantizer API. (#1474, #1508, #1456)
- GGUF improvements — quantize high-impact layers to high precision and attach metadata to GGUF exports. (#1532, #1527)
- PeRQ (formerly MixQuant) — initial MixQuant support added, then renamed to PeRQ throughout the codebase and docs. (#1448, #1521, #1525)
- Python 3.13 support. (#1451)
- Utility to replace weights with quantized ones. (#1505)
- Signed scaling — signed scaling stats in core and signed scales in the LLM entry point. (#1393, #1449)
- Blockwise / block rotations — support for blockwise rotations and the option to disable fused block rotations. (#1434, #1438)
- New search algorithms for LLM experiments (#1357)
Breaking Changes
- LLM: load as much data as needed — data loading behavior changed in the LLM examples. (#1514)
- Removed Python 3.9 support. (#1481)
- Deprecated old Python and Torch versions. (#1392)
- numpy is now an optional extra — installs no longer pull in numpy by default. (#1403)
- Minimum
transformersversion now enforced. (#1510) - CLI rename:
block_rotation_dim→rotation_block_size. (#1464) - Deprecated unused MLIR export in the LLM examples. (#1467)
All Commits
Features
- Feat (benchmark): Allow easy specification of different search algorithms within benchmark scripts (#1357)
- Feat (brevitas_examples/llm): custom trainer support (#1474)
- Feat (ex/axe): improved implementation with extended support/testing (#1181)
- Feat (gguf): enabling quantization of high-impact layers to high precision (#1532)
- Feat (utils): utils to replace weights with quantized ones (#1505)
- Feat (utils): reducing variance on power_iteration func (#1519)
- Feat (ex/llm): custom quantizer plugin allows to modify quant model (#1508)
- Feat (quant/float): move (MX)FP quantizers out of experimental (#1488)
- Feat (brevitas_examples/llm)!: load as much data as needed (#1514)
- Feat (llm): enabling narrow_range for inputs in LLM entry point (#1524)
- Feat (benchmark): Minor tweaks to
run_args_bucket_process(#1523) - Feat (loss): support for high precision loss (#1496)
- Feat (docs): Documentation for Learned Round (#1485)
- Feat (vLLM): experimental support for vLLM export (#1444)
- Feat (ex/common): learned round refactor (#1323)
- Feat (brevitas_examples/llm): better dataset handling (#1461)
- Feat (brevitas_examples/llm): Use dataloader in AWQ (#1489)
- Feat (ex/llm): Signed scales in LLM entrypoint (#1449)
- Feat (brevitas_examples/llm): deprecate unused MLIR export (#1467)
- Feat (cli): rename block_rotation_dim to rotation_block_size (#1464)
- Feat (brevitas_examples/llm): fineweb support (#1459)
- Feat (bit_width): generalize restrict_impl with clamping (#1457)
- Feat (equalize): adding initial support for MixQuant (#1448)
- Feat (common/quantizer): Enable passing custom quantizers (#1456)
- Feat (brevitas_examples/llm): compute perplexity at float32 (#1458)
- Feat (equalize): option to disable fused block rotations (#1438)
- Feat (optim): decoupling dtype of CayleySGD from params (#1443)
- Feat (brevitas_examples/llm): Support for batched inputs in GPXQ/Qronos (#1427)
- Feat (brevitas_examples/llm): better RMSNorm replacement (#1436)
- Feat (brevitas_examples/common): mse scale for weights with float quant (#1433)
- Feat (brevitas_examples/llm): support for blockwise rotations (#1434)
- Feat (graph/equalize): minor refactor (#1432)
- Feat (core/stats): signed scaling stats (#1393)
- Feat (core): module for runtime computation of exp bias (#1418)
- Feat (brevitas_examples/llm): support for distillation loss (#1388)
- Feat (quant/mx): Added midmax scale rounding option to MX types (#1409)
- Feat (nn): add HardSwish activation function (#1406)
- Feat (gpxq): enabling selection of device and dtype (#1405)
- Feat (loss/bit_width): removable hooks (#1407)
- Feat (export/onnx): fallback export to fake quantized weights (#1395)
- Feat (core/float): better max mantissa computation (#1391)
- Feat (quant/float): configurable float bit-width implementations (#1373)
- Feat (brevitas_examples/llm): adding test split (#1375)
Fixes
- Fix (stats): Mix MSE for zero-point (#1491)
- Fix (fx): push support for value_tracer (#1538)
- Fix (tests/permute): use symbolic_trace instead of dynamo (#1539)
- Fix (tests/permute): use symbolic_trace instead of dynamo (#1536)
- Fix (export/onnx): Update ONNX dynamo export for PT2.9 API (#1526)
- Fix (core/float): better handling of continuous mantissa bit-width (#1528)
- Fix (brevitas_examples/llm): patch dynamo FX with torch 2.10+ (#1533)
- Fix (core/stats): typo in variable name in MeanLearnedSigmaStd (#1530)
- Fix (brevitas_examples/gguf): adding metadata to GGUF export (#1527)
- Fix (brevitas_examples/llm): correct zero-shot handling of thinking models (#1518)
- normalization fix and new tests (#1504)
- Fix: restore model_cache_implementation to model.generation_config (#1516)
- Fix (stats): Set correct
reduce_dimforgroup_dim<0(#1512) - Fix (brevitas_examples/data): fix evaluation of wikitext2 (#1495)
- Fix (ex/llm): Allow setting dataset limit for
lighteval(#1492) - Fix (graph/gpxq): ConvTranspose temporarily unsupported (#1490)
- Fix (brevitas_examples/llm): enable wikitest test split with fineweb and pile (#1487)
- Fix (brevitas_examples/llm): remove_hooks after fused_rotation_no_fx (#1480)
- Fix (graph/equalize): general check for fast_hadamard_transform (#1484)
- Fix (fx): bump version guard for value tracer (#1482)
- Fix (rotation): fix extra compile keys in state dict (#1472)
- Fix (brevitas/quant): Fix MX MSE quantizer (#1468)
- Fix (brevitas_examples/llm): fix to RMSNorm context manager (#1471)
- Fix (graph): enable ROCm path in _apply_had_device (#1469)
- Fix (brevitas_examples/llm): args based BOS for lm_eval (#1462)
- Fix (brevitas_examples/llm): compile support with merged rotations (#1429)
- Fix (graph/qronos): Normalize contribution to H and G when buffer is disabled (#1440)
- Fix (brevitas_examples/llm): fix transformers tests (#1446)
- Fix (brevitas_examples/quantizers): correct stats for dynamic quants (#1445)
- Fix (brevitas_examples/llm): more checks for FX-related args (#1441)
- Fix (brevitas_examples/llm): correct batch size for lm_eval (#1430)
- Fix (proxy): preserve training state after tensor_quant re-init (#1419)
- Fix (core): import scaling before zero point to prevent circular import (#1422)
- Fix (src/brevitas/quant_tensor/base_quant_tensor.py): Added torch.float64 to dict of tolerances (#1417)
- Fix (brevitas_examples/imagenet/ptq): DataLoader Fix (#1420)
- Fix (equalize): Fix LayerwiseActivationRotation (#1413)
- Fix (graph/rotation): small refactor and documentation (#1382)
- Fix (nn/bias): propagate runtime_shape from QuantScaleBias (#1385)
- Fix (core/scaling): fix dtype for int threshold (#1404)
- Fix (Notebooks): Corrected typos/small errors in the text cells with explanations (#1399)
- Fix (export/onnx): import GLOBALS from correct location depending on torch version (#1398)
- Fix (ex/llm): Fix integration with Lighteval Python API (#1379)
- Fix (ex/llm): Recursively unwrap equalized layer (#1390)
- Fix (paper/expand): Avoid skipping baseline experiment (#1383)
Setup & Dependencies
- Setup: minimum version for transformers (#1510)
- Setup: support for python 3.13 (#1451)
- Deps (python): remove python 3.9 support (#1481)
- Setup: unpin transformers (#1415)
- Deps (ex/llm): Fixed
perf<0.18to be compatible withtransformers==4.50.0(#1421) - Deps (numpy): switched numpy to be an optional extra (#1403)
- Deps (onnxscript): limit
onnxscript<0.5.4(#1400) - Setup: deprecate old python and torch versions (#1392)
- Setup: pin numexpr version (#1389)
- Setup: fix requirements for HF packages (#1386)
- Deps: comment out GH dep
Docs
- Docs: update dev docs (#1531)
- Docs: update PeRQ and Qronos references in docs (#1525)
- Docs: renaming MixQuant to PeRQ (#1521)
- Docs: documentation for MixQuant (#1470)
- Docs: correct index in Papers section (#1476)
- Docs: post-training expansion documentation (#1465)
- Docs: generate dev and v0.12.1 docs
Tests & CI
- Test (ex/llm): remove redundant mock from lighteval tests (#1493)
- Test (qonnx): Fixes to QONNX export tests when (
dynamo=True) (#1473) - Test: test ONNX dynamo export with torch >= 2.7 (#1455)
- Test (brevitas_examples/llm): new lm_eval tests (#1431)
- Test (brevitas_examples/llm): added test of lighteval with rotation (#1425)
- Test (graph): restore skipped tests (#1374)
- Test (diffusers): skip torch 2.1 due to diffusers incompatibility (#1378)
- CI (periodic): Added periodic tests for the entire suite of supported versions (#1368)
New Contributors
- @surajkarki66 made their first contribution in #1406
- @xkucerak made their first contribution in #1420
Full Changelog: v0.12.1...v0.13.0