Skip to main content

Models API

The models module provides access to the embedded model database and metadata operations.

Core Types

LlmModel

Represents a single LLM model with all metadata:
Key Fields:
  • name - Model identifier (e.g., “llama-3.1-8b-instruct”)
  • provider - Original provider (“Meta”, “Qwen”, etc.)
  • parameter_count - Human-readable size (“7B”, “8x7B”)
  • parameters_raw - Exact parameter count
  • min_ram_gb - Minimum system RAM for CPU inference
  • recommended_ram_gb - Recommended RAM for best performance
  • min_vram_gb - Minimum VRAM for GPU inference
  • quantization - Default quantization level (“Q4_K_M”, “mlx-4bit”)
  • context_length - Maximum context window
  • use_case - Primary use case category
  • is_moe - Whether this is a Mixture-of-Experts model
  • num_experts / active_experts - MoE expert configuration
  • active_parameters - Active parameter count for MoE models
  • release_date - Release date string (ISO 8601)
  • gguf_sources - Known GGUF download sources

GgufSource

A known GGUF download source:

ModelDatabase

Container for the embedded model database:
Methods:

UseCase

Model use-case categories:
Methods:

Functions

ModelDatabase::new()

Loads the embedded model database:
Returns: ModelDatabase with all models loaded Example:
The database is embedded at compile time from data/hf_models.json. No runtime file I/O occurs.

ModelDatabase::get_all_models()

Returns all models in the database:
Returns: Reference to all models Example:

ModelDatabase::find_model()

Searches models by name, provider, or parameter count:
Parameters:
  • query - Search term (case-insensitive substring match)
Returns: Matching models Example:

ModelDatabase::models_fitting_system()

Filters models that fit on specific hardware:
Parameters:
  • available_ram_gb - Available system RAM
  • has_gpu - Whether GPU is present
  • vram_gb - GPU VRAM if available
Returns: Models that meet hardware requirements Example:

LlmModel Methods

is_mlx_model()

Checks if model is MLX-specific:
Returns: true if model name contains “-MLX-” suffix Example:

params_b()

Parameter count in billions:
Returns: Parameter count in billions Example:

estimate_memory_gb()

Estimates memory required for specific quantization and context:
Parameters:
  • quant - Quantization level (“Q4_K_M”, “Q8_0”, etc.)
  • ctx - Context length in tokens
Returns: Estimated memory in GB Example:

best_quant_for_budget()

Selects best quantization that fits in memory:
Parameters:
  • budget_gb - Available memory
  • ctx - Target context length
Returns: (quantization, estimated_memory) or None if nothing fits Example:
The function tries quantization levels in quality order:
  1. Q8_0 (best quality)
  2. Q6_K
  3. Q5_K_M
  4. Q4_K_M
  5. Q3_K_M
  6. Q2_K (smallest)
If nothing fits, it tries halving the context length once.

MoE-Specific Methods

For Mixture-of-Experts models:
Example:

Quantization Functions

quant_bpp()

Bytes per parameter for quantization level:
Example:

quant_speed_multiplier()

Speed impact of quantization:
Higher values = faster inference (lower precision = faster math).

quant_quality_penalty()

Quality penalty for quantization:
Negative values indicate quality loss relative to F16.

Quantization Hierarchies

Predefined quantization hierarchies (best to worst quality):
Example:

Use Case Inference

Use cases are inferred from model name and metadata:
  • Embedding: “embed”, “bge” in name
  • Coding: “code” in name or use_case
  • Multimodal: “vision” in use_case
  • Reasoning: “reason” or “deepseek-r1” in name
  • Chat: “chat” or “instruction” in use_case
  • General: Default fallback