use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BufferPoolConfig {
pub enabled: bool,
pub text_buffer_sizes: Vec<usize>,
pub vector_buffer_sizes: Vec<usize>,
pub pool_size_per_size: usize,
}
impl Default for BufferPoolConfig {
fn default() -> Self {
Self {
enabled: true,
text_buffer_sizes: vec![16, 32, 64, 128, 256],
vector_buffer_sizes: vec![16, 32, 64, 128, 256],
pool_size_per_size: 8,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelWeightPoolConfig {
pub enabled: bool,
pub max_memory_mb: usize,
pub cache_models: bool,
}
impl Default for ModelWeightPoolConfig {
fn default() -> Self {
Self {
enabled: true,
max_memory_mb: 8192, cache_models: true,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CudaPoolConfig {
pub enabled: bool,
pub max_memory_mb: usize,
}
impl Default for CudaPoolConfig {
fn default() -> Self {
Self {
enabled: true,
max_memory_mb: 4096, }
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct MemoryPoolConfig {
pub buffer_pool: BufferPoolConfig,
pub model_pool: ModelWeightPoolConfig,
pub cuda_pool: CudaPoolConfig,
}