#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Gdn2Mode {
FusedRecurrent,
Chunk,
}
#[derive(Debug, Clone)]
pub struct Gdn2Config {
pub hidden_size: usize,
pub num_heads: usize,
pub head_dim: usize,
pub expand_v: f32,
pub num_v_heads: Option<usize>,
pub use_short_conv: bool,
pub allow_neg_eigval: bool,
pub norm_eps: f64,
pub mode: Gdn2Mode,
pub chunk_size: usize,
}
impl Default for Gdn2Config {
fn default() -> Self {
Self {
hidden_size: 2048,
num_heads: 16,
head_dim: 128,
expand_v: 1.0,
num_v_heads: None,
use_short_conv: true,
allow_neg_eigval: false,
norm_eps: 1e-5,
mode: Gdn2Mode::FusedRecurrent,
chunk_size: 64,
}
}
}