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 bert_encoder;
12pub mod bert_gguf_loader;
13pub mod block_residual;
14pub mod capability;
15pub mod chat_template;
16pub mod config;
17pub mod decoder;
18pub mod deepseek_v4_budget;
19pub mod deepseek_v4_decoder;
20pub mod device_budget;
21pub mod embedding_model;
22pub mod encoder;
23pub mod engine;
24pub mod engine_factory;
25pub mod execution_plan;
26pub mod gdn;
27pub mod gemma4_engine;
28pub mod gemma4_gguf_loader;
29pub mod glm52_decoder;
30pub mod glm52_gguf_loader;
31pub mod glm_dsa;
32pub mod grammar;
33pub mod grammar_sampler;
34pub mod hf_pull;
35#[cfg(feature = "hub")]
36pub mod hub;
37pub mod hybrid_engine;
38pub mod hybrid_gguf_loader;
39pub mod hyper_connections;
40pub mod kda;
41pub mod kimi_decoder;
42pub mod kimi_generate;
43pub mod kimi_gguf_loader;
44pub mod kimi_loader;
45pub mod kimi_tokenizer;
46pub mod kimi_validate;
47pub mod kv_budget;
48pub mod latent_moe;
49pub mod llama4_engine;
50pub mod loader;
51pub mod minimax_engine;
52pub mod mla;
53pub mod mla_gguf_loader;
54pub mod mmproj;
55pub mod output_projection;
56pub mod pooling;
57pub mod prefix_cache;
58pub mod rank_head;
59pub mod recurrent_engine;
60pub mod residency_report;
61pub(crate) mod sampler_chain;
62pub mod sampling;
63pub mod speculative;
64pub mod t5_engine;
65pub mod tensor_role;
66pub mod tokenizer;
67pub mod vision;
68pub mod vl_engine;
69
70pub use bert_encoder::{BertEncoder, BertHparams, BertLayer};
71pub use bert_gguf_loader::{load_bert_encoder_from_path, read_bert_hparams, BERT_ARCH};
72pub use capability::{
73    architecture_catalog, coverage_report_markdown, resolve_architecture, resolve_profile,
74    ArchPath, ArchProfile, ArchScope, DecoderFamily, MemoryKind, QkNormStyle,
75};
76pub use config::{deepseek_v4_pro, glm_5_2, kimi_k3, FfnActivation, ModelConfig, RopeLayout};
77pub use decoder::{Decoder, MultiSeqKv};
78pub use device_budget::{BudgetBackend, DeviceBudget};
79pub use embedding_model::{is_embedding_arch, EmbedError, EmbeddingModel};
80pub use encoder::{EncodeError, TextEncoder};
81pub use engine::{
82    DeepseekV4Engine, Engine, Glm52Engine, KimiEngine, MlaDenseFfn, MlaEngine, MlaLayerFfn,
83    MlaLayerWeights, MlaMoeFfn, MlaMoeRuntime, TextTokenizer,
84};
85pub use engine_factory::{
86    ensure_generic_decoder, load_gemma4_engine_from_path, load_glm52_engine_from_path,
87    load_mla_engine_from_path, select_engine_kind, EngineSelectError, SelectedEngineKind,
88    ServedEngine,
89};
90pub use execution_plan::{ExecutionPlan, FusedOpCaps, MemoryPlan, PlanGeometry};
91pub use gemma4_engine::{Gemma4Engine, Gemma4Hparams, GEMMA4_ARCHES};
92pub use kv_budget::{
93    Ceiling, ContextCap, ContextFit, KvBudget, KvBudgetError, KvElem, KvLayout, KvShape,
94    SlidingWindow, CTX_AUTO_GRANULARITY,
95};
96pub use loader::LoadError;
97pub use output_projection::grouped_output_projection;
98pub use pooling::{l2_normalize, pool, PoolingError, PoolingType};
99pub use prefix_cache::{PrefixCache, PrefixCacheStats, PrefixMatch};
100pub use rank_head::{load_rank_head, RankHead};
101pub use sampling::{sampling_distribution, Sampler, SamplingParams};
102pub use speculative::{
103    accept_or_resample, speculative_decode, speculative_decode_with, DraftBlock, DraftDist,
104    Drafter, PromptLookupSpeculator, SpeculativeDecodeResult, SpeculativeOptions,
105};
106pub use tensor_role::TensorRole;
107pub use tokenizer::{
108    ByteTokenizer, GgufBpeTokenizer, GgufSpmTokenizer, GgufUnigramTokenizer,
109    GgufWordPieceTokenizer, NormalizerOptions, TokenizerLoadError,
110};
111
112#[cfg(feature = "metal")]
113pub use ferrox_metal::attn::{metal_greedy_argmax_active, set_metal_greedy_argmax};