pub mod autoregressive;
pub mod bert;
pub mod single_shot;
pub mod tts;
pub mod whisper;
pub use autoregressive::execute_autoregressive_stage;
pub use bert::execute_bert_inference;
pub use single_shot::execute_single_shot_stage;
pub use tts::execute_tts_inference;
pub use whisper::execute_whisper_decoder_stage;
pub fn parse_kv_cache_name(name: &str) -> Option<(usize, bool, bool)> {
let parts: Vec<&str> = name.split('.').collect();
if parts.len() < 4 || parts[0] != "past_key_values" {
return None;
}
let layer = parts[1].parse::<usize>().ok()?;
let is_encoder = parts[2] == "encoder";
let is_key = parts[3] == "key";
Some((layer, is_encoder, is_key))
}
pub fn parse_present_name_full(name: &str) -> Option<(usize, bool, bool)> {
let parts: Vec<&str> = name.split('.').collect();
if parts.len() < 4 || parts[0] != "present" {
return None;
}
let layer = parts[1].parse::<usize>().ok()?;
let is_encoder = parts[2] == "encoder";
let is_key = parts[3] == "key";
Some((layer, is_encoder, is_key))
}