#3901·candle

qwen3_vl: 没有办法重置 KV 缓存,因此模型实例是一次性使用的

作者: sidd-27创建于 2026年8月17日更新于 2026年8月21日

// Text-only forward: no images, so the vision tower is bypassed. fn forward_text(model: &Qwen3VLModel, tokens: &[u32], offset: usize, device: &Device) -> Tensor { let input = Tensor::new(tokens, device).unwrap().unsqueeze(0).unwrap(); model .forward(&input, None, None, None, None, vec![tokens.len()], vec![vec![]], vec![vec![]], &[offset]) .unwrap() }

fn main() { let device = Device::Cpu; let config: Config = serde_json::from_str(TINY_CONFIG).unwrap(); let varmap = VarMap::new(); let vb = VarBuilder::from_varmap(&varmap, DType::F32, &device);

// Reference: a pristine model answering the second prompt.
let fresh = Qwen3VLModel::new(&config, vb.clone()).unwrap();
let reference = forward_text(&fresh, &[33, 44], 0, &device);

// Same prompt, on a model that already ran a different one.
let reused = Qwen3VLModel::new(&config, vb).unwrap();
let _ = forward_text(&reused, &[11, 22], 0, &device);
let after_reuse = forward_text(&reused, &[33, 44], 0, &device);

let a = reference.clone();
let b = after_reuse.clone();
assert_eq!(a, b);

}

内容来源: huggingface/candle