Skip to main content

Quantization

Struct Quantization 

Source
pub struct Quantization {
    pub bits: Option<u8>,
    pub scheme: QuantScheme,
    pub group_size: Option<u32>,
    pub label: String,
}
Expand description

Structured quantization descriptor.

This replaces a free-text string that mixed two vocabularies — MLX’s 4bit/6bit and GGUF’s Q4_K_M/Q8_0 — under one field, so nothing could tell a group-quantized integer checkpoint from a mixed k-quant one. It also threw away what the ingest paths already had in hand: MLX config.json declares {bits, group_size, mode} and only bits survived.

Deserializes from either the legacy bare string or the structured object, so catalogs, user models.json files, and models.register payloads written before this change keep loading unchanged. The object form requires label and rejects unknown fields: a misspelled key is a producer bug, and accepting it silently is how the field it replaced lost information in the first place.

Writes the bare label back whenever that is lossless, and the object only when it carries something parsing cannot recover — a group_size, or a scheme that disambiguates a label the parser reads as Unknown. Two reasons, both about blast radius rather than taste. This value is inside catalog_identity::row_digest, so an unconditional shape change would move the digest of every quantized row and hard-fail any client that pinned expected_catalog_revision. And registry::load_user_config fails a models.json whole, with its only production caller discarding the error — so an older daemon meeting an object it cannot parse boots with zero registered models and says nothing. Emitting the object only where it adds information keeps both costs proportional to what actually changed.

Fields§

§bits: Option<u8>

Weight bit width. None when the label names none.

§scheme: QuantScheme

Which quantization family this is.

§group_size: Option<u32>

Elements sharing one scale/zero point (MLX: 32, 64, 128). None when the scheme has no group concept, or the source declared none.

§label: String

The label exactly as published. Never synthesized: it is what the user sees, what Hugging Face repos are named after, and the only thing that survives a scheme CAR does not recognize yet.

Implementations§

Source§

impl Quantization

Source

pub fn parse(label: &str) -> Self

Best-effort structure from a published label.

Never fails and never invents: an unrecognized label yields QuantScheme::Unknown with the label intact.

Source

pub fn from_gguf_filename(filename: &str) -> Option<Self>

Recover the quantization a GGUF file names in its own filename (Qwen3-8B-Q4_K_M.gguf, ggml-large-v3-turbo-q5_0.gguf).

Scans the hyphen-separated segments from the right and takes the first that classifies, so a model whose name contains something quant-shaped does not outrank the real suffix. Returns None rather than guessing when nothing in the name is recognizable.

Source

pub fn from_mlx_config( bits: Option<u8>, group_size: Option<u32>, mode: Option<&str>, ) -> Option<Self>

Descriptor for an MLX checkpoint, from the quantization block of its config.json. mode is MLX’s own name for the format (affine, mxfp4, mxfp8); absent means affine, which is MLX’s default.

Returns None when the block carried nothing usable — declaring AffineGroupInt on the strength of an empty object would assert exactly the thing this type exists to establish.

Trait Implementations§

Source§

impl Clone for Quantization

Source§

fn clone(&self) -> Quantization

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Quantization

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Quantization

Source§

fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Quantization

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Quantization

Source§

impl PartialEq for Quantization

Source§

fn eq(&self, other: &Quantization) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Quantization

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Quantization

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToCompactString for T
where T: Display,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more