Skip to main content

No project description provided

Project description

Quantizers

PyPI version License Tests Coverage

Hardware-oriented numerical quantizers for deep learning models, implemented in Keras v3 and NumPy. Provides bit-accurate precision matching with Vivado/Vitis HLS implementations.

Features

Supported Quantizers

Fixed-Point Quantizer

Parameters:

  • k (keep_negative): Enable negative numbers
  • i (integer_bits): Number of bits before decimal point (excludes sign bit)
  • f (fractional_bits): Number of bits after decimal point
  • For C++: W = k + i + f, I = k + i, S = k

Supported modes:

  • Rounding: TRN, RND, RND_CONV, TRN_ZERO, RND_ZERO, RND_MIN_INF, RND_INF
    • S_RND and S_RND_CONV for stochastic rounding; Not available in NumPy implementation as it is for training only
  • Overflow: WRAP, SAT, SAT_SYM, WRAP_SM

Limitations:

  • WRAP_SM only works with RND or RND_CONV rounding
  • WRAP* modes don't provide surrogate gradients for integer bits
  • Saturation bit forced to zero for WRAP and WRAP_SM

Minifloat Quantizer

Parameters:

  • m (mantissa_bits): Mantissa width
  • e (exponent_bits): Exponent width
  • e0 (exponent_zero): Exponent bias (default: 0)
  • Range: [-2^(e-1) + e0, 2^(e-1) - 1 + e0]

Features:

  • Supports subnormal numbers
  • Uses RND_CONV rounding and SAT overflow
  • HLS-synthesizable implementation in test/cpp_source/ap_types/ap_float.h

Simplified Quantizers

  • Binary: Maps to {-1,1} with 0 to -1. (preliminary implementation)
  • Ternary: Shorthand for fixed-point fixed<2, 1, RND_CONV, SAT_SYM>

Installation

requires python>=3.10

pip install quantizers

keras>=3.0 and at least one compatible backend (pytorch, jax, or tensorflow) is required for training.

Usage

Stateless Quantizers

from quantizers import (
  float_quantize(_np), # add _np for NumPy implementation
  get_fixed_quantizer(_np),
  binary_quantize(_np),
  ternary_quantize(_np),
)

# Fixed-point quantizer
fixed_quantizer = get_fixed_quantizer(round_mode, overflow_mode)
fixedp_qtensor = fixed_quantizer(
    x,
    integer_bits,
    fractional_bits,
    keep_negative,
    training, # For stochastic rounding, and WRAP does not happen during training
    seed, # For stochastic rounding only
)

# Minifloat quantizer
floatp_qtensor = float_quantize(x, mantissa_bits, exponent_bits, exponent_zero)

# Simplified quantizers
binary_qtensor = binary_quantize(x)
ternary_qtensor = ternary_quantize(x)

Stateful Quantizers

# Can be used for, but not intended for training
fixed_q = FixedQ(
    width,
    integer_bits, # including the sign bit)
    keep_negative,
    fixed_round_mode, # No stochastic rounding
    fixed_overflow_mode
)
quantized = fixed_q(x)

mfloat_q = MinifloatQ(mantissa_bits, exponent_bits, exponent_zero)
quantized = mfloat_q(x)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quantizers-1.2.2.tar.gz (118.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quantizers-1.2.2-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file quantizers-1.2.2.tar.gz.

File metadata

  • Download URL: quantizers-1.2.2.tar.gz
  • Upload date:
  • Size: 118.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for quantizers-1.2.2.tar.gz
Algorithm Hash digest
SHA256 cb76c4e273a96dd6735c33c9a3b0f7f688206aad4774cd7b9ee5effb9d9d6fab
MD5 b128fd5affcfc298af23351d9b33a5cb
BLAKE2b-256 73565a240db3b16101dce9c3fca296f6806aa9b523d5bf43388293bf69fbe537

See more details on using hashes here.

File details

Details for the file quantizers-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: quantizers-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for quantizers-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 de6b6f9033fcd71593afd203dff68d5ee72563997b5426c6ecb2236fd11c9ef5
MD5 28cfdf836c1a5aba386ac05ce52901bf
BLAKE2b-256 0798f1db1cf7ffea7e73767d5a816ca36dfd4cd9761127cb0545c945dc680272

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page