pub mod forward;
pub mod gpu;
pub mod mask;
pub mod sampler;
use crate::error::{Result, RullamaError};
use crate::gguf::GgufReader;
use crate::model::config::Gemma4Config;
#[derive(Clone, Debug)]
pub struct DiffusionConfig {
pub base: Gemma4Config,
pub mask_token_id: Option<u32>,
}
impl DiffusionConfig {
pub fn from_gguf(r: &GgufReader) -> Result<Self> {
let arch = r.get("general.architecture")?.as_str()?;
if arch != "diffusion-gemma" {
return Err(RullamaError::Config(format!(
"expected architecture 'diffusion-gemma', got '{arch}'"
)));
}
let base = Gemma4Config::from_gguf_with_prefix(r, "diffusion-gemma")?;
let mask_token_id = r
.get_opt("tokenizer.ggml.mask_token_id")
.map(|v| v.as_u32())
.transpose()?;
Ok(Self {
base,
mask_token_id,
})
}
}