pub struct LlamaContextParams { /* private fields */ }Expand description
A safe wrapper around llama_context_params.
Generally this should be created with Default::default() and then modified with with_* methods.
§Examples
let ctx_params = LlamaContextParams::default()
.with_n_ctx(NonZeroU32::new(2048));
assert_eq!(ctx_params.n_ctx(), NonZeroU32::new(2048));Implementations§
Source§impl LlamaContextParams
impl LlamaContextParams
Sourcepub fn with_n_ctx(self, n_ctx: Option<NonZeroU32>) -> Self
pub fn with_n_ctx(self, n_ctx: Option<NonZeroU32>) -> Self
Set the size of the context
§Examples
let params = LlamaContextParams::default();
let params = params.with_n_ctx(NonZeroU32::new(2048));
assert_eq!(params.n_ctx(), NonZeroU32::new(2048));Sourcepub fn n_ctx(&self) -> Option<NonZeroU32>
pub fn n_ctx(&self) -> Option<NonZeroU32>
Sourcepub fn with_n_batch(self, n_batch: u32) -> Self
pub fn with_n_batch(self, n_batch: u32) -> Self
Set the n_batch
§Examples
let params = LlamaContextParams::default()
.with_n_batch(2048);
assert_eq!(params.n_batch(), 2048);Sourcepub fn n_batch(&self) -> u32
pub fn n_batch(&self) -> u32
Get the n_batch
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.n_batch(), 2048);Sourcepub fn with_n_ubatch(self, n_ubatch: u32) -> Self
pub fn with_n_ubatch(self, n_ubatch: u32) -> Self
Set the n_ubatch
§Examples
let params = LlamaContextParams::default()
.with_n_ubatch(512);
assert_eq!(params.n_ubatch(), 512);Sourcepub fn n_ubatch(&self) -> u32
pub fn n_ubatch(&self) -> u32
Get the n_ubatch
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.n_ubatch(), 512);Sourcepub fn with_n_seq_max(self, n_seq_max: u32) -> Self
pub fn with_n_seq_max(self, n_seq_max: u32) -> Self
Set the max number of sequences (i.e. distinct states for recurrent models)
§Examples
let params = LlamaContextParams::default()
.with_n_seq_max(64);
assert_eq!(params.n_seq_max(), 64);Sourcepub fn n_seq_max(&self) -> u32
pub fn n_seq_max(&self) -> u32
Get the max number of sequences (i.e. distinct states for recurrent models)
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.n_seq_max(), 1);Sourcepub fn with_n_rs_seq(self, n_rs_seq: u32) -> Self
pub fn with_n_rs_seq(self, n_rs_seq: u32) -> Self
Set the number of recurrent-state rollback snapshots per sequence.
MTP speculative decoding uses this on the target context so llama.cpp can roll recurrent state back after partially accepted drafts.
Sourcepub fn n_rs_seq(&self) -> u32
pub fn n_rs_seq(&self) -> u32
Get the number of recurrent-state rollback snapshots per sequence.
Sourcepub fn with_context_type(self, context_type: LlamaContextType) -> Self
pub fn with_context_type(self, context_type: LlamaContextType) -> Self
Set the llama.cpp context type.
Sourcepub fn context_type(&self) -> LlamaContextType
pub fn context_type(&self) -> LlamaContextType
Get the llama.cpp context type.
Sourcepub fn with_n_threads(self, n_threads: i32) -> Self
pub fn with_n_threads(self, n_threads: i32) -> Self
Set the number of threads
§Examples
let params = LlamaContextParams::default()
.with_n_threads(8);
assert_eq!(params.n_threads(), 8);Sourcepub fn n_threads(&self) -> i32
pub fn n_threads(&self) -> i32
Get the number of threads
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.n_threads(), 4);Sourcepub fn with_n_threads_batch(self, n_threads: i32) -> Self
pub fn with_n_threads_batch(self, n_threads: i32) -> Self
Set the number of threads allocated for batches
§Examples
let params = LlamaContextParams::default()
.with_n_threads_batch(8);
assert_eq!(params.n_threads_batch(), 8);Sourcepub fn n_threads_batch(&self) -> i32
pub fn n_threads_batch(&self) -> i32
Get the number of threads allocated for batches
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.n_threads_batch(), 4);Sourcepub fn with_rope_scaling_type(self, rope_scaling_type: RopeScalingType) -> Self
pub fn with_rope_scaling_type(self, rope_scaling_type: RopeScalingType) -> Self
Set the type of rope scaling
§Examples
let params = LlamaContextParams::default()
.with_rope_scaling_type(RopeScalingType::Linear);
assert_eq!(params.rope_scaling_type(), RopeScalingType::Linear);Sourcepub fn rope_scaling_type(&self) -> RopeScalingType
pub fn rope_scaling_type(&self) -> RopeScalingType
Get the type of rope scaling
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.rope_scaling_type(), RopeScalingType::Unspecified);Sourcepub fn with_pooling_type(self, pooling_type: LlamaPoolingType) -> Self
pub fn with_pooling_type(self, pooling_type: LlamaPoolingType) -> Self
Set the type of pooling
§Examples
let params = LlamaContextParams::default()
.with_pooling_type(LlamaPoolingType::Last);
assert_eq!(params.pooling_type(), LlamaPoolingType::Last);Sourcepub fn pooling_type(&self) -> LlamaPoolingType
pub fn pooling_type(&self) -> LlamaPoolingType
Get the type of pooling
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.pooling_type(), LlamaPoolingType::Unspecified);Sourcepub fn with_attention_type(self, attention_type: LlamaAttentionType) -> Self
pub fn with_attention_type(self, attention_type: LlamaAttentionType) -> Self
Set the attention type for embeddings
§Examples
let params = LlamaContextParams::default()
.with_attention_type(LlamaAttentionType::Causal);
assert_eq!(params.attention_type(), LlamaAttentionType::Causal);Sourcepub fn attention_type(&self) -> LlamaAttentionType
pub fn attention_type(&self) -> LlamaAttentionType
Get the attention type for embeddings
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.attention_type(), LlamaAttentionType::Unspecified);Sourcepub fn with_flash_attention_policy(self, policy: llama_flash_attn_type) -> Self
pub fn with_flash_attention_policy(self, policy: llama_flash_attn_type) -> Self
Set the flash attention policy using llama.cpp enum
Sourcepub fn flash_attention_policy(&self) -> llama_flash_attn_type
pub fn flash_attention_policy(&self) -> llama_flash_attn_type
Get the flash attention policy
Sourcepub fn with_rope_freq_base(self, rope_freq_base: f32) -> Self
pub fn with_rope_freq_base(self, rope_freq_base: f32) -> Self
Set the rope frequency base
§Examples
let params = LlamaContextParams::default()
.with_rope_freq_base(0.5);
assert_eq!(params.rope_freq_base(), 0.5);Sourcepub fn rope_freq_base(&self) -> f32
pub fn rope_freq_base(&self) -> f32
Get the rope frequency base
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.rope_freq_base(), 0.0);Sourcepub fn with_rope_freq_scale(self, rope_freq_scale: f32) -> Self
pub fn with_rope_freq_scale(self, rope_freq_scale: f32) -> Self
Set the rope frequency scale
§Examples
let params = LlamaContextParams::default()
.with_rope_freq_scale(0.5);
assert_eq!(params.rope_freq_scale(), 0.5);Sourcepub fn rope_freq_scale(&self) -> f32
pub fn rope_freq_scale(&self) -> f32
Get the rope frequency scale
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.rope_freq_scale(), 0.0);Sourcepub fn with_yarn_ext_factor(self, yarn_ext_factor: f32) -> Self
pub fn with_yarn_ext_factor(self, yarn_ext_factor: f32) -> Self
Set the YaRN extrapolation mix factor
§Examples
let params = LlamaContextParams::default().with_yarn_ext_factor(1.0);
assert_eq!(params.yarn_ext_factor(), 1.0);Sourcepub fn yarn_ext_factor(&self) -> f32
pub fn yarn_ext_factor(&self) -> f32
Get the YaRN extrapolation mix factor
Sourcepub fn with_yarn_attn_factor(self, yarn_attn_factor: f32) -> Self
pub fn with_yarn_attn_factor(self, yarn_attn_factor: f32) -> Self
Set the YaRN magnitude scaling factor
§Examples
let params = LlamaContextParams::default().with_yarn_attn_factor(2.0);
assert_eq!(params.yarn_attn_factor(), 2.0);Sourcepub fn yarn_attn_factor(&self) -> f32
pub fn yarn_attn_factor(&self) -> f32
Get the YaRN magnitude scaling factor
Sourcepub fn with_yarn_beta_fast(self, yarn_beta_fast: f32) -> Self
pub fn with_yarn_beta_fast(self, yarn_beta_fast: f32) -> Self
Set the YaRN low correction dim
§Examples
let params = LlamaContextParams::default().with_yarn_beta_fast(16.0);
assert_eq!(params.yarn_beta_fast(), 16.0);Sourcepub fn yarn_beta_fast(&self) -> f32
pub fn yarn_beta_fast(&self) -> f32
Get the YaRN low correction dim
Sourcepub fn with_yarn_beta_slow(self, yarn_beta_slow: f32) -> Self
pub fn with_yarn_beta_slow(self, yarn_beta_slow: f32) -> Self
Set the YaRN high correction dim
§Examples
let params = LlamaContextParams::default().with_yarn_beta_slow(2.0);
assert_eq!(params.yarn_beta_slow(), 2.0);Sourcepub fn yarn_beta_slow(&self) -> f32
pub fn yarn_beta_slow(&self) -> f32
Get the YaRN high correction dim
Sourcepub fn with_yarn_orig_ctx(self, yarn_orig_ctx: u32) -> Self
pub fn with_yarn_orig_ctx(self, yarn_orig_ctx: u32) -> Self
Set the YaRN original context size
§Examples
let params = LlamaContextParams::default().with_yarn_orig_ctx(4096);
assert_eq!(params.yarn_orig_ctx(), 4096);Sourcepub fn yarn_orig_ctx(&self) -> u32
pub fn yarn_orig_ctx(&self) -> u32
Get the YaRN original context size
Sourcepub fn with_defrag_thold(self, defrag_thold: f32) -> Self
pub fn with_defrag_thold(self, defrag_thold: f32) -> Self
Set the KV cache defragmentation threshold
§Examples
let params = LlamaContextParams::default().with_defrag_thold(0.1);
assert_eq!(params.defrag_thold(), 0.1);Sourcepub fn defrag_thold(&self) -> f32
pub fn defrag_thold(&self) -> f32
Get the KV cache defragmentation threshold
Sourcepub fn with_type_k(self, type_k: KvCacheType) -> Self
pub fn with_type_k(self, type_k: KvCacheType) -> Self
Set the KV cache data type for K
§Examples
let params = LlamaContextParams::default().with_type_k(KvCacheType::Q4_0);
assert_eq!(params.type_k(), KvCacheType::Q4_0);Sourcepub fn type_k(&self) -> KvCacheType
pub fn type_k(&self) -> KvCacheType
Get the KV cache data type for K
§Examples
let params = LlamaContextParams::default();
let _ = params.type_k();Sourcepub fn with_type_v(self, type_v: KvCacheType) -> Self
pub fn with_type_v(self, type_v: KvCacheType) -> Self
Set the KV cache data type for V
§Examples
let params = LlamaContextParams::default().with_type_v(KvCacheType::Q4_1);
assert_eq!(params.type_v(), KvCacheType::Q4_1);Sourcepub fn type_v(&self) -> KvCacheType
pub fn type_v(&self) -> KvCacheType
Get the KV cache data type for V
§Examples
let params = LlamaContextParams::default();
let _ = params.type_v();Sourcepub fn with_embeddings(self, embedding: bool) -> Self
pub fn with_embeddings(self, embedding: bool) -> Self
Set whether embeddings are enabled
§Examples
let params = LlamaContextParams::default()
.with_embeddings(true);
assert!(params.embeddings());Sourcepub fn embeddings(&self) -> bool
pub fn embeddings(&self) -> bool
Get whether embeddings are enabled
§Examples
let params = LlamaContextParams::default();
assert!(!params.embeddings());Sourcepub fn with_offload_kqv(self, enabled: bool) -> Self
pub fn with_offload_kqv(self, enabled: bool) -> Self
Set whether to offload KQV ops to GPU
§Examples
let params = LlamaContextParams::default()
.with_offload_kqv(false);
assert_eq!(params.offload_kqv(), false);Sourcepub fn offload_kqv(&self) -> bool
pub fn offload_kqv(&self) -> bool
Get whether KQV ops are offloaded to GPU
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.offload_kqv(), true);Sourcepub fn with_no_perf(self, no_perf: bool) -> Self
pub fn with_no_perf(self, no_perf: bool) -> Self
Set whether to disable performance timings
§Examples
let params = LlamaContextParams::default().with_no_perf(true);
assert!(params.no_perf());Sourcepub fn with_op_offload(self, op_offload: bool) -> Self
pub fn with_op_offload(self, op_offload: bool) -> Self
Set whether to offload ops to GPU
§Examples
let params = LlamaContextParams::default().with_op_offload(false);
assert_eq!(params.op_offload(), false);Sourcepub fn op_offload(&self) -> bool
pub fn op_offload(&self) -> bool
Get whether ops are offloaded to GPU
Sourcepub fn with_swa_full(self, enabled: bool) -> Self
pub fn with_swa_full(self, enabled: bool) -> Self
Set whether to use full sliding window attention
§Examples
let params = LlamaContextParams::default()
.with_swa_full(false);
assert_eq!(params.swa_full(), false);Sourcepub fn swa_full(&self) -> bool
pub fn swa_full(&self) -> bool
Get whether full sliding window attention is enabled
§Examples
let params = LlamaContextParams::default();
assert_eq!(params.swa_full(), true);Sourcepub fn with_kv_unified(self, kv_unified: bool) -> Self
pub fn with_kv_unified(self, kv_unified: bool) -> Self
Set whether to use a unified KV cache buffer across input sequences
§Examples
let params = LlamaContextParams::default().with_kv_unified(true);
assert!(params.kv_unified());Sourcepub fn kv_unified(&self) -> bool
pub fn kv_unified(&self) -> bool
Get whether a unified KV cache buffer is used across input sequences
§Examples
let params = LlamaContextParams::default();
let _ = params.kv_unified();Trait Implementations§
Source§impl Clone for LlamaContextParams
impl Clone for LlamaContextParams
Source§impl Debug for LlamaContextParams
impl Debug for LlamaContextParams
Source§impl Default for LlamaContextParams
Default parameters for LlamaContext. (as defined in llama.cpp by llama_context_default_params)
impl Default for LlamaContextParams
Default parameters for LlamaContext. (as defined in llama.cpp by llama_context_default_params)
let params = LlamaContextParams::default();
assert_eq!(params.n_ctx(), NonZeroU32::new(512), "n_ctx should be 512");
assert_eq!(params.rope_scaling_type(), RopeScalingType::Unspecified);impl Send for LlamaContextParams
SAFETY: we do not currently allow setting or reading the pointers that cause this to not be automatically send or sync.