diff --git a/crates/llm/src/lib.rs b/crates/llm/src/lib.rs index 5ab36fa..4897e7a 100644 --- a/crates/llm/src/lib.rs +++ b/crates/llm/src/lib.rs @@ -9,6 +9,7 @@ use llama_cpp_2::llama_batch::LlamaBatch; use llama_cpp_2::model::params::LlamaModelParams; use llama_cpp_2::model::{AddBos, LlamaChatMessage, LlamaChatTemplate, LlamaModel}; use llama_cpp_2::sampling::LlamaSampler; +use magnotia_core::tuning::{inference_thread_count, Workload}; use serde::{Deserialize, Serialize}; pub mod grammars; @@ -163,7 +164,10 @@ impl LlmEngine { } let n_ctx = preflight_context_window(prompt_tokens.len(), config.max_tokens)?; - let thread_count = i32::try_from(magnotia_core::constants::inference_thread_count()) + let use_gpu = self.loaded_model().map(|s| s.use_gpu).unwrap_or(false); + let gpu_layers = if use_gpu { u32::MAX } else { 0u32 }; + let gpu_offloaded = use_gpu && gpu_layers >= model.n_layer(); + let thread_count = i32::try_from(inference_thread_count(Workload::Llm, gpu_offloaded)) .unwrap_or(4); let ctx_params = LlamaContextParams::default() .with_n_ctx(Some(