kv-cache : fix unified::seq_rm to work with seq_id < 0 (#13985)

ggml-ci
This commit is contained in:
Georgi Gerganov
2025-06-04 09:50:32 +03:00
committed by GitHub
parent 7e00e60ef8
commit e0e806f52e

View File

@ -149,6 +149,7 @@ bool llama_kv_cache_unified::seq_rm(llama_seq_id seq_id, llama_pos p0, llama_pos
p1 = std::numeric_limits<llama_pos>::max(); p1 = std::numeric_limits<llama_pos>::max();
} }
if (seq_id >= 0) {
for (uint32_t i = 0; i < cells.size(); ++i) { for (uint32_t i = 0; i < cells.size(); ++i) {
if (!cells.pos_in(i, p0, p1)) { if (!cells.pos_in(i, p0, p1)) {
continue; continue;
@ -160,6 +161,20 @@ bool llama_kv_cache_unified::seq_rm(llama_seq_id seq_id, llama_pos p0, llama_pos
} }
} }
} }
} else {
// match any sequence
for (uint32_t i = 0; i < cells.size(); ++i) {
if (!cells.pos_in(i, p0, p1)) {
continue;
}
cells.rm(i);
if (new_head == cells.size()) {
new_head = i;
}
}
}
// If we freed up a slot, set head to it so searching can start there. // If we freed up a slot, set head to it so searching can start there.
if (new_head != cells.size() && new_head < head) { if (new_head != cells.size() && new_head < head) {