pub enum ModelVariant {
Bonsai8B,
Bonsai4B,
Bonsai1_7B,
TernaryBonsai8B,
TernaryBonsai4B,
TernaryBonsai1_7B,
FP8Bonsai8B,
FP8Bonsai4B,
FP8Bonsai1_7B,
Custom,
}Expand description
Known Bonsai model variants.
Variants§
Bonsai8B
Bonsai-8B (Qwen3-8B architecture): 36 layers, hidden=4096
Bonsai4B
Bonsai-4B: 24 layers, hidden=2560
Bonsai1_7B
Bonsai-1.7B: 16 layers, hidden=1536
TernaryBonsai8B
Ternary-Bonsai-8B: same Qwen3-8B architecture, {-1,0,+1} weights (TQ2_0_g128).
TernaryBonsai4B
Ternary-Bonsai-4B: same Qwen3-4B architecture, {-1,0,+1} weights (TQ2_0_g128).
TernaryBonsai1_7B
Ternary-Bonsai-1.7B: same Qwen3-1.7B architecture, {-1,0,+1} weights (TQ2_0_g128).
FP8Bonsai8B
FP8-Bonsai-8B: same Qwen3-8B architecture, FP8 weights (F8_E4M3 or F8_E5M2).
FP8Bonsai4B
FP8-Bonsai-4B: same Qwen3-4B architecture, FP8 weights.
FP8Bonsai1_7B
FP8-Bonsai-1.7B: same Qwen3-1.7B architecture, FP8 weights.
Custom
Custom or unrecognized architecture
Implementations§
Source§impl ModelVariant
impl ModelVariant
Sourcepub fn from_config(config: &Qwen3Config) -> Self
pub fn from_config(config: &Qwen3Config) -> Self
Auto-detect variant from model configuration.
Matches on the combination of num_layers and hidden_size
to identify known architectures.
Sourcepub fn from_config_and_sample_tensor_type(
config: &Qwen3Config,
sample_tensor_type: GgufTensorType,
) -> Self
pub fn from_config_and_sample_tensor_type( config: &Qwen3Config, sample_tensor_type: GgufTensorType, ) -> Self
Detect model variant from config + sample tensor type (for ternary vs 1-bit disambiguation).
Architecture match is identical to from_config, but if sample_tensor_type.is_ternary(),
the result is upgraded to the ternary sibling variant.
Sourcepub fn default_config(&self) -> Qwen3Config
pub fn default_config(&self) -> Qwen3Config
Get the default configuration for this variant.
Returns the standard configuration for known variants.
For Custom, returns the 8B configuration as a fallback.
Sourcepub fn param_count(&self) -> u64
pub fn param_count(&self) -> u64
Approximate parameter count for this variant.
Computed as: embedding + attention + ffn + norms + output head. For 1-bit models, each “parameter” is 1 bit + per-group scale. Ternary variants share the same architecture (and thus the same parameter count) as their 1-bit siblings; only the storage format differs.
Sourcepub fn expected_model_size_bytes(&self) -> u64
pub fn expected_model_size_bytes(&self) -> u64
Expected model file size in bytes for the quantized GGUF file.
For 1-bit variants: ~1 bit per param + scale factors + FP16 embeddings. For ternary variants: TQ2_0_g128 uses 34 bytes per 128 weights ≈ 0.266 bytes/param. Embeddings and norms are typically stored in FP16 or FP32.
Sourcepub fn known_variants() -> &'static [ModelVariant]
pub fn known_variants() -> &'static [ModelVariant]
Return all known (non-Custom) variants.
Trait Implementations§
Source§impl Clone for ModelVariant
impl Clone for ModelVariant
Source§fn clone(&self) -> ModelVariant
fn clone(&self) -> ModelVariant
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ModelVariant
impl Debug for ModelVariant
Source§impl Display for ModelVariant
impl Display for ModelVariant
Source§impl Hash for ModelVariant
impl Hash for ModelVariant
Source§impl PartialEq for ModelVariant
impl PartialEq for ModelVariant
Source§fn eq(&self, other: &ModelVariant) -> bool
fn eq(&self, other: &ModelVariant) -> bool
self and other values to be equal, and is used by ==.impl Copy for ModelVariant
impl Eq for ModelVariant
impl StructuralPartialEq for ModelVariant
Auto Trait Implementations§
impl Freeze for ModelVariant
impl RefUnwindSafe for ModelVariant
impl Send for ModelVariant
impl Sync for ModelVariant
impl Unpin for ModelVariant
impl UnsafeUnpin for ModelVariant
impl UnwindSafe for ModelVariant
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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