Skip to main content

ferrox_models/
lib.rs

1//! ferrox-models: GGUF decoder, architecture registry, and structural
2//! presets for frontier stacks (GLM / DeepSeek V4 / Kimi).
3//!
4//! Unconfirmed preset fields go in `best_effort_fields` and must be
5//! overwritten from real `config.json` / GGUF metadata. Status of what
6//! actually runs: `docs/MODELS.md`. Presets `glm_5_2` / `deepseek_v4_pro`
7//! / `kimi_k3` are sketches for synthetic tests — not real-checkpoint
8//! support. Dedicated primitives live in `glm52_*`, `deepseek_v4_*`,
9//! `kimi_*` modules.
10
11pub mod block_residual;
12pub mod capability;
13pub mod chat_template;
14pub mod config;
15pub mod decoder;
16pub mod deepseek_v4_budget;
17pub mod deepseek_v4_decoder;
18pub mod device_budget;
19pub mod engine;
20pub mod engine_factory;
21pub mod execution_plan;
22pub mod gdn;
23pub mod gemma4_engine;
24pub mod gemma4_gguf_loader;
25pub mod glm52_decoder;
26pub mod glm52_gguf_loader;
27pub mod glm_dsa;
28pub mod grammar;
29pub mod grammar_sampler;
30pub mod hf_pull;
31#[cfg(feature = "hub")]
32pub mod hub;
33pub mod hybrid_engine;
34pub mod hybrid_gguf_loader;
35pub mod hyper_connections;
36pub mod kda;
37pub mod kimi_decoder;
38pub mod kimi_generate;
39pub mod kimi_gguf_loader;
40pub mod kimi_loader;
41pub mod kimi_tokenizer;
42pub mod kimi_validate;
43pub mod kv_budget;
44pub mod latent_moe;
45pub mod llama4_engine;
46pub mod loader;
47pub mod minimax_engine;
48pub mod mla;
49pub mod mla_gguf_loader;
50pub mod mmproj;
51pub mod output_projection;
52pub mod prefix_cache;
53pub mod recurrent_engine;
54pub mod residency_report;
55pub(crate) mod sampler_chain;
56pub mod sampling;
57pub mod speculative;
58pub mod t5_engine;
59pub mod tensor_role;
60pub mod tokenizer;
61pub mod vision;
62pub mod vl_engine;
63
64pub use capability::{
65    architecture_catalog, coverage_report_markdown, resolve_architecture, resolve_profile,
66    ArchPath, ArchProfile, ArchScope, DecoderFamily, MemoryKind, QkNormStyle,
67};
68pub use config::{deepseek_v4_pro, glm_5_2, kimi_k3, FfnActivation, ModelConfig, RopeLayout};
69pub use decoder::{Decoder, MultiSeqKv};
70pub use device_budget::{BudgetBackend, DeviceBudget};
71pub use engine::{
72    DeepseekV4Engine, Engine, Glm52Engine, KimiEngine, MlaDenseFfn, MlaEngine, MlaLayerFfn,
73    MlaLayerWeights, MlaMoeFfn, MlaMoeRuntime, TextTokenizer,
74};
75pub use engine_factory::{
76    ensure_generic_decoder, load_gemma4_engine_from_path, load_glm52_engine_from_path,
77    load_mla_engine_from_path, select_engine_kind, EngineSelectError, SelectedEngineKind,
78    ServedEngine,
79};
80pub use execution_plan::{ExecutionPlan, FusedOpCaps, MemoryPlan, PlanGeometry};
81pub use gemma4_engine::{Gemma4Engine, Gemma4Hparams, GEMMA4_ARCHES};
82pub use kv_budget::{
83    Ceiling, ContextCap, ContextFit, KvBudget, KvBudgetError, KvElem, KvLayout, KvShape,
84    SlidingWindow, CTX_AUTO_GRANULARITY,
85};
86pub use loader::LoadError;
87pub use output_projection::grouped_output_projection;
88pub use prefix_cache::{PrefixCache, PrefixCacheStats, PrefixMatch};
89pub use sampling::{sampling_distribution, Sampler, SamplingParams};
90pub use speculative::{
91    accept_or_resample, speculative_decode, speculative_decode_with, DraftBlock, DraftDist,
92    Drafter, PromptLookupSpeculator, SpeculativeDecodeResult, SpeculativeOptions,
93};
94pub use tensor_role::TensorRole;
95pub use tokenizer::{
96    ByteTokenizer, GgufBpeTokenizer, GgufSpmTokenizer, GgufUnigramTokenizer,
97    GgufWordPieceTokenizer, NormalizerOptions, TokenizerLoadError,
98};
99
100#[cfg(feature = "metal")]
101pub use ferrox_metal::attn::{metal_greedy_argmax_active, set_metal_greedy_argmax};