Skip to main content

entrenar/quant/granularity/
types.rs

1//! Quantization granularity and mode type definitions
2
3use serde::{Deserialize, Serialize};
4
5/// Quantization granularity options
6#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, Default)]
7pub enum QuantGranularity {
8    /// Single scale/zero-point for entire tensor
9    #[default]
10    PerTensor,
11    /// Separate scale/zero-point per channel (axis 0 for weights)
12    PerChannel,
13    /// Separate scale/zero-point per group of n elements
14    PerGroup(usize),
15}
16
17/// Quantization mode: symmetric or asymmetric
18#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, Default)]
19pub enum QuantMode {
20    /// Symmetric: zero-point = 0, range = [-max_abs, max_abs]
21    #[default]
22    Symmetric,
23    /// Asymmetric: zero-point != 0, range = [min, max]
24    Asymmetric,
25}