#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum InferenceTool {
Ollama,
Vllm,
LlamaCpp,
}
impl InferenceTool {
pub fn as_str(self) -> &'static str {
match self {
Self::Ollama => "ollama",
Self::Vllm => "vllm",
Self::LlamaCpp => "llama_cpp",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ModelVariant {
pub name: &'static str,
pub format: &'static str,
pub gib: f64,
pub tool: InferenceTool,
pub quality_score: u32,
}
pub const HEADROOM_FACTOR: f64 = 0.85;
pub const REGISTRY: &[ModelVariant] = &[
ModelVariant {
name: "Ornith-1.0-35B",
format: "Q4_GGUF",
gib: 21.0,
tool: InferenceTool::Ollama,
quality_score: 20,
},
ModelVariant {
name: "Ornith-1.0-35B",
format: "FP8",
gib: 35.0,
tool: InferenceTool::Vllm,
quality_score: 25,
},
ModelVariant {
name: "Ornith-1.0-35B",
format: "FP16",
gib: 70.0,
tool: InferenceTool::Vllm,
quality_score: 30,
},
ModelVariant {
name: "Ornith-1.0-397B",
format: "Q2_K_GGUF",
gib: 104.0,
tool: InferenceTool::LlamaCpp,
quality_score: 50,
},
ModelVariant {
name: "Ornith-1.0-397B",
format: "Q4_GGUF",
gib: 200.0,
tool: InferenceTool::Vllm,
quality_score: 55,
},
ModelVariant {
name: "Ornith-1.0-397B",
format: "FP8",
gib: 400.0,
tool: InferenceTool::Vllm,
quality_score: 60,
},
];
pub fn usable_budget_gib(budget_gib: f64, node_count: u32) -> f64 {
budget_gib * f64::from(node_count) * HEADROOM_FACTOR
}
pub fn strongest_model(budget_gib: f64, node_count: u32) -> Option<&'static ModelVariant> {
select_strongest(REGISTRY, budget_gib, node_count)
}
pub fn select_strongest(
table: &[ModelVariant],
budget_gib: f64,
node_count: u32,
) -> Option<&ModelVariant> {
let usable = usable_budget_gib(budget_gib, node_count);
table
.iter()
.filter(|v| v.gib <= usable)
.max_by(|a, b| a.quality_score.cmp(&b.quality_score))
}
fn size_token(name: &str) -> String {
name.rsplit('-').next().unwrap_or(name).to_ascii_lowercase()
}
fn format_token(format: &str) -> String {
format
.split('_')
.next()
.unwrap_or(format)
.to_ascii_lowercase()
}
pub fn variant_slug(v: &ModelVariant) -> String {
format!("ornith-{}-{}", size_token(v.name), format_token(v.format))
}
pub fn script_name(v: &ModelVariant) -> String {
format!("~/{}.sh", variant_slug(v))
}
pub fn find_variant(slug: &str) -> Option<&'static ModelVariant> {
let want = slug.trim().to_ascii_lowercase();
REGISTRY.iter().find(|v| variant_slug(v) == want)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn registry_is_nonempty() {
assert!(!REGISTRY.is_empty());
}
#[test]
fn registry_entries_are_well_formed() {
for v in REGISTRY {
assert!(!v.name.is_empty(), "empty name: {v:?}");
assert!(!v.format.is_empty(), "empty format: {v:?}");
assert!(v.gib > 0.0, "non-positive gib: {v:?}");
assert!(v.quality_score > 0, "non-positive quality: {v:?}");
assert!(v.name.starts_with("Ornith"), "unexpected identity: {v:?}");
}
}
#[test]
fn registry_quality_scores_are_unique() {
let mut scores: Vec<u32> = REGISTRY.iter().map(|v| v.quality_score).collect();
scores.sort_unstable();
scores.dedup();
assert_eq!(
scores.len(),
REGISTRY.len(),
"quality scores must be unique"
);
}
#[test]
fn inference_tool_tokens_are_stable() {
assert_eq!(InferenceTool::Ollama.as_str(), "ollama");
assert_eq!(InferenceTool::Vllm.as_str(), "vllm");
assert_eq!(InferenceTool::LlamaCpp.as_str(), "llama_cpp");
}
#[test]
fn usable_budget_applies_headroom_and_nodes() {
assert!((usable_budget_gib(100.0, 1) - 85.0).abs() < 1e-9);
assert!((usable_budget_gib(100.0, 3) - 255.0).abs() < 1e-9);
}
#[test]
fn usable_budget_zero_nodes_is_zero() {
assert_eq!(usable_budget_gib(128.0, 0), 0.0);
}
#[test]
fn small_budget_picks_smallest_fitting() {
let v = strongest_model(25.0, 1).expect("Q4 should fit");
assert_eq!(v.name, "Ornith-1.0-35B");
assert_eq!(v.format, "Q4_GGUF");
assert_eq!(v.tool, InferenceTool::Ollama);
}
#[test]
fn mid_budget_picks_best_format_of_fitting_family() {
let v = strongest_model(85.0, 1).expect("FP16 should fit");
assert_eq!(v.name, "Ornith-1.0-35B");
assert_eq!(v.format, "FP16");
}
#[test]
fn large_budget_many_nodes_picks_strongest_overall() {
let v = strongest_model(200.0, 3).expect("everything fits");
assert_eq!(v.name, "Ornith-1.0-397B");
assert_eq!(v.format, "FP8");
assert_eq!(v.quality_score, 60);
}
#[test]
fn headroom_rejects_a_model_that_would_fit_without_it() {
assert!(strongest_model(22.0, 1).is_none());
}
#[test]
fn headroom_boundary_just_fits_and_just_misses() {
assert!(strongest_model(24.0, 1).is_none());
let v = strongest_model(24.8, 1).expect("just over the boundary");
assert_eq!(v.format, "Q4_GGUF");
}
#[test]
fn nothing_fits_returns_none() {
assert!(strongest_model(10.0, 1).is_none());
}
#[test]
fn zero_nodes_returns_none() {
assert!(strongest_model(1000.0, 0).is_none());
}
#[test]
fn empty_table_returns_none() {
assert!(select_strongest(&[], 1000.0, 10).is_none());
}
#[test]
fn variant_slug_follows_the_convention() {
let fp8 = REGISTRY
.iter()
.find(|v| v.name == "Ornith-1.0-35B" && v.format == "FP8")
.expect("35B FP8 present");
assert_eq!(variant_slug(fp8), "ornith-35b-fp8");
}
#[test]
fn variant_slug_normalizes_size_and_format_tokens() {
let cases = [
("Ornith-1.0-35B", "Q4_GGUF", "ornith-35b-q4"),
("Ornith-1.0-35B", "FP16", "ornith-35b-fp16"),
("Ornith-1.0-397B", "Q2_K_GGUF", "ornith-397b-q2"),
("Ornith-1.0-397B", "FP8", "ornith-397b-fp8"),
];
for (name, format, want) in cases {
let v = ModelVariant {
name,
format,
gib: 1.0,
tool: InferenceTool::Vllm,
quality_score: 1,
};
assert_eq!(variant_slug(&v), want, "{name} {format}");
}
}
#[test]
fn every_registry_slug_is_unique() {
let mut slugs: Vec<String> = REGISTRY.iter().map(variant_slug).collect();
let count = slugs.len();
slugs.sort();
slugs.dedup();
assert_eq!(slugs.len(), count, "registry slugs must be unique");
}
#[test]
fn script_name_is_the_tilde_convention_path() {
let fp8 = REGISTRY
.iter()
.find(|v| v.name == "Ornith-1.0-35B" && v.format == "FP8")
.expect("35B FP8 present");
assert_eq!(script_name(fp8), "~/ornith-35b-fp8.sh");
assert!(script_name(fp8).starts_with("~/"));
assert!(script_name(fp8).ends_with(".sh"));
}
#[test]
fn find_variant_round_trips_every_slug_case_insensitively() {
for v in REGISTRY {
let slug = variant_slug(v);
assert_eq!(find_variant(&slug), Some(v), "lower {slug}");
assert_eq!(
find_variant(&slug.to_ascii_uppercase()),
Some(v),
"upper {slug}"
);
assert_eq!(
find_variant(&format!(" {slug} ")),
Some(v),
"padded {slug}"
);
}
}
#[test]
fn find_variant_unknown_is_none() {
assert!(find_variant("ornith-99b-fp4").is_none());
assert!(find_variant("").is_none());
assert!(find_variant("not-a-slug").is_none());
}
#[test]
fn select_strongest_is_pure_over_a_custom_table() {
let table = [
ModelVariant {
name: "tiny",
format: "Q4",
gib: 1.0,
tool: InferenceTool::Ollama,
quality_score: 1,
},
ModelVariant {
name: "huge",
format: "FP16",
gib: 1000.0,
tool: InferenceTool::Vllm,
quality_score: 99,
},
];
let v = select_strongest(&table, 2.0, 1).expect("tiny fits");
assert_eq!(v.name, "tiny");
let v = select_strongest(&table, 2000.0, 1).expect("both fit");
assert_eq!(v.name, "huge");
}
}